Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ng-cloudimage-responsive

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ng-cloudimage-responsive - npm Package Compare versions

Comparing version 2.0.1 to 2.0.2

786

bundles/ng-cloudimage-responsive.umd.js
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/platform-browser'), require('rxjs'), require('rxjs/operators'), require('ng-lazyload-image')) :
typeof define === 'function' && define.amd ? define('ng-cloudimage-responsive', ['exports', '@angular/core', '@angular/common', '@angular/platform-browser', 'rxjs', 'rxjs/operators', 'ng-lazyload-image'], factory) :
(global = global || self, factory(global['ng-cloudimage-responsive'] = {}, global.ng.core, global.ng.common, global.ng.platformBrowser, global.rxjs, global.rxjs.operators, global.ngLazyloadImage));
}(this, function (exports, core, common, platformBrowser, rxjs, operators, ngLazyloadImage) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/platform-browser'), require('rxjs'), require('rxjs/operators'), require('ng-lazyload-image')) :
typeof define === 'function' && define.amd ? define('ng-cloudimage-responsive', ['exports', '@angular/common', '@angular/core', '@angular/platform-browser', 'rxjs', 'rxjs/operators', 'ng-lazyload-image'], factory) :
(factory((global['ng-cloudimage-responsive'] = {}),global.ng.common,global.ng.core,global.ng.platformBrowser,global.rxjs,global.rxjs.operators,global.ngLazyloadImage));
}(this, (function (exports,common,i0,platformBrowser,rxjs,operators,ngLazyloadImage) { 'use strict';

@@ -21,8 +21,9 @@ /*! *****************************************************************************

***************************************************************************** */
var __assign = function() {
var __assign = function () {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}

@@ -33,20 +34,26 @@ return t;

};
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) { e = { error: error }; }
catch (error) {
e = { error: error };
}
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally { if (e) throw e.error; }
finally {
if (e)
throw e.error;
}
}
return ar;
}
function __spread() {

@@ -60,3 +67,3 @@ for (var ar = [], i = 0; i < arguments.length; i++)

* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -71,3 +78,3 @@ var CIConfig = /** @class */ (function () {

* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -119,22 +126,22 @@ var CIService = /** @class */ (function () {

*/
function (img, config) {
if (!(img && img.parentElement && img.parentElement.getBoundingClientRect) && !(img && img.width)) {
return config.width;
}
/** @type {?} */
var parentContainer = this.getParentContainerWithWidth(img);
/** @type {?} */
var currentWidth = parseInt('' + parentContainer, 10);
/** @type {?} */
var computedWidth = Number(window.getComputedStyle(img).width);
if ((computedWidth && (computedWidth < currentWidth && computedWidth > 15) || !currentWidth)) {
return this.getSizeLimit(computedWidth);
}
else {
if (!currentWidth) {
return img.width || config.width;
function (img, config) {
if (!(img && img.parentElement && img.parentElement.getBoundingClientRect) && !(img && img.width)) {
return config.width;
}
return this.getSizeLimit(currentWidth);
}
};
/** @type {?} */
var parentContainer = this.getParentContainerWithWidth(img);
/** @type {?} */
var currentWidth = parseInt('' + parentContainer, 10);
/** @type {?} */
var computedWidth = Number(window.getComputedStyle(img).width);
if ((computedWidth && (computedWidth < currentWidth && computedWidth > 15) || !currentWidth)) {
return this.getSizeLimit(computedWidth);
}
else {
if (!currentWidth) {
return img.width || config.width;
}
return this.getSizeLimit(currentWidth);
}
};
/**

@@ -148,17 +155,17 @@ * @param {?} img

*/
function (img) {
/** @type {?} */
var parentNode = null;
/** @type {?} */
var width = 0;
do {
parentNode = (parentNode && parentNode.parentNode) || img.parentNode;
width = parentNode.getBoundingClientRect().width;
} while (parentNode && !width);
/** @type {?} */
var letPadding = width && parentNode && parseInt(window.getComputedStyle(parentNode).paddingLeft, 10);
/** @type {?} */
var rightPadding = parseInt(window.getComputedStyle(parentNode).paddingRight, 10);
return width + (width ? (-letPadding - rightPadding) : 0);
};
function (img) {
/** @type {?} */
var parentNode = null;
/** @type {?} */
var width = 0;
do {
parentNode = (parentNode && parentNode.parentNode) || img.parentNode;
width = parentNode.getBoundingClientRect().width;
} while (parentNode && !width);
/** @type {?} */
var letPadding = width && parentNode && parseInt(window.getComputedStyle(parentNode).paddingLeft, 10);
/** @type {?} */
var rightPadding = parseInt(window.getComputedStyle(parentNode).paddingRight, 10);
return width + (width ? (-letPadding - rightPadding) : 0);
};
/**

@@ -172,11 +179,11 @@ * @param {?} currentSize

*/
function (currentSize) {
if (currentSize <= 25) {
return '25';
}
if (currentSize <= 50) {
return '50';
}
return (Math.ceil(currentSize / 100) * 100).toString();
};
function (currentSize) {
if (currentSize <= 25) {
return '25';
}
if (currentSize <= 50) {
return '50';
}
return (Math.ceil(currentSize / 100) * 100).toString();
};
/**

@@ -190,12 +197,12 @@ * @param {?} size

*/
function (size) {
try {
/** @type {?} */
var array = size.split(',');
return array.length > 1;
}
catch (e) {
return false;
}
};
function (size) {
try {
/** @type {?} */
var array = size.split(',');
return array.length > 1;
}
catch (e) {
return false;
}
};
/**

@@ -209,8 +216,8 @@ * @param {?} src

*/
function (src) {
if (src.indexOf('//') === 0) {
src = window.location.protocol + src;
}
return (src.indexOf('http://') !== 0 && src.indexOf('https://') !== 0 && src.indexOf('//') !== 0);
};
function (src) {
if (src.indexOf('//') === 0) {
src = window.location.protocol + src;
}
return (src.indexOf('http://') !== 0 && src.indexOf('https://') !== 0 && src.indexOf('//') !== 0);
};
/**

@@ -228,10 +235,14 @@ * @param {?} src

*/
function (src, isRelativeUrlPath, baseUrl) {
if (isRelativeUrlPath === void 0) { isRelativeUrlPath = false; }
if (baseUrl === void 0) { baseUrl = ''; }
if (isRelativeUrlPath) {
return baseUrl + src;
}
return src;
};
function (src, isRelativeUrlPath, baseUrl) {
if (isRelativeUrlPath === void 0) {
isRelativeUrlPath = false;
}
if (baseUrl === void 0) {
baseUrl = '';
}
if (isRelativeUrlPath) {
return baseUrl + src;
}
return src;
};
/**

@@ -245,16 +256,15 @@ * @param {?} size

*/
function (size) {
/** @type {?} */
var splittedSizes = size.toString().split('x');
/** @type {?} */
var result = [];
[].forEach.call(splittedSizes, (/**
* @param {?} item
* @return {?}
*/
function (item) {
result.push(item * Math.round(window.devicePixelRatio || 1));
}));
return result.join('x');
};
function (size) {
/** @type {?} */
var splittedSizes = size.toString().split('x');
/** @type {?} */
var result = [];
[].forEach.call(splittedSizes, ( /**
* @param {?} item
* @return {?}
*/function (item) {
result.push(item * Math.round(window.devicePixelRatio || 1));
}));
return result.join('x');
};
/**

@@ -276,10 +286,10 @@ * @param {?} operation

*/
function (operation, size, filters, imgSrc, config) {
var ultraFast = config.ultraFast, token = config.token, container = config.container, queryString = config.queryString;
/** @type {?} */
var isUltraFast = ultraFast ? 'https://scaleflex.ultrafast.io/' : 'https://';
/** @type {?} */
var cloudUrl = isUltraFast + token + '.' + container + '/';
return cloudUrl + operation + '/' + size + '/' + filters + '/' + imgSrc + queryString;
};
function (operation, size, filters, imgSrc, config) {
var ultraFast = config.ultraFast, token = config.token, container = config.container, queryString = config.queryString;
/** @type {?} */
var isUltraFast = ultraFast ? 'https://scaleflex.ultrafast.io/' : 'https://';
/** @type {?} */
var cloudUrl = isUltraFast + token + '.' + container + '/';
return cloudUrl + operation + '/' + size + '/' + filters + '/' + imgSrc + queryString;
};
/**

@@ -305,38 +315,35 @@ * @param {?} operation

*/
function (operation, size, filters, imgSrc, isAdaptive, config, isPreview) {
var _this = this;
var previewQualityFactor = config.previewQualityFactor;
/** @type {?} */
var sources = [];
if (isAdaptive) {
size.forEach((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var nextSize = _a.size, mediaQuery = _a.media;
function (operation, size, filters, imgSrc, isAdaptive, config, isPreview) {
var _this = this;
var previewQualityFactor = config.previewQualityFactor;
/** @type {?} */
var sources = [];
if (isAdaptive) {
size.forEach(( /**
* @param {?} __0
* @return {?}
*/function (_a) {
var nextSize = _a.size, mediaQuery = _a.media;
if (isPreview) {
nextSize = nextSize.split('x').map(( /**
* @param {?} sizeNext
* @return {?}
*/function (sizeNext) { return Math.floor(sizeNext / previewQualityFactor); })).join('x');
}
sources.push({ mediaQuery: mediaQuery, srcSet: _this.generateSrcset(operation, nextSize, filters, imgSrc, config) });
}));
}
else {
if (isPreview) {
nextSize = nextSize.split('x').map((/**
size = size.split('x').map(( /**
* @param {?} sizeNext
* @return {?}
*/
function (sizeNext) { return Math.floor(sizeNext / previewQualityFactor); })).join('x');
*/function (sizeNext) { return Math.floor(sizeNext / previewQualityFactor); })).join('x');
}
sources.push({ mediaQuery: mediaQuery, srcSet: _this.generateSrcset(operation, nextSize, filters, imgSrc, config) });
}));
}
else {
if (isPreview) {
size = size.split('x').map((/**
* @param {?} sizeNext
* @return {?}
*/
function (sizeNext) { return Math.floor(sizeNext / previewQualityFactor); })).join('x');
sources.push({
srcSet: this.generateSrcset(operation, size, filters, imgSrc, config)
});
}
sources.push({
srcSet: this.generateSrcset(operation, size, filters, imgSrc, config)
});
}
return sources;
};
return sources;
};
/**

@@ -352,20 +359,19 @@ * @param {?} size

*/
function (size, config) {
/** @type {?} */
var arrayOfSizes = size.split(',');
/** @type {?} */
var sizes = [];
arrayOfSizes.forEach((/**
* @param {?} string
* @return {?}
*/
function (string) {
function (size, config) {
/** @type {?} */
var groups = string.match(/(([a-z_][a-z_]*)|(\([\S\s]*\)))\s*([0-9xp]*)/);
var arrayOfSizes = size.split(',');
/** @type {?} */
var media = groups[3] ? groups[3] : config.presets[groups[2]];
sizes.push({ media: media, size: groups[4] });
}));
return sizes;
};
var sizes = [];
arrayOfSizes.forEach(( /**
* @param {?} string
* @return {?}
*/function (string) {
/** @type {?} */
var groups = string.match(/(([a-z_][a-z_]*)|(\([\S\s]*\)))\s*([0-9xp]*)/);
/** @type {?} */
var media = groups[3] ? groups[3] : config.presets[groups[2]];
sizes.push({ media: media, size: groups[4] });
}));
return sizes;
};
/**

@@ -387,6 +393,6 @@ * @param {?} operation

*/
function (operation, size, filters, imgSrc, config) {
var _a = __read(size.toString().split('x'), 2), imgWidth = _a[0], imgHeight = _a[1];
return this.generateImgSrc(operation, filters, imgSrc, imgWidth, imgHeight, 1, config);
};
function (operation, size, filters, imgSrc, config) {
var _a = __read(size.toString().split('x'), 2), imgWidth = _a[0], imgHeight = _a[1];
return this.generateImgSrc(operation, filters, imgSrc, imgWidth, imgHeight, 1, config);
};
/**

@@ -412,14 +418,14 @@ * @param {?} operation

*/
function (operation, filters, imgSrc, imgWidth, imgHeight, factor, config) {
/** @type {?} */
var imgSize = '' + Math.trunc(imgWidth * factor);
if (imgHeight) {
imgSize += 'x' + Math.trunc(imgHeight * factor);
}
return this.generateUrl(operation, this.getSizeAccordingToPixelRatio(imgSize), filters, imgSrc, config)
.replace('http://scaleflex.ultrafast.io/', '')
.replace('https://scaleflex.ultrafast.io/', '')
.replace('//scaleflex.ultrafast.io/', '')
.replace('///', '/');
};
function (operation, filters, imgSrc, imgWidth, imgHeight, factor, config) {
/** @type {?} */
var imgSize = '' + Math.trunc(imgWidth * factor);
if (imgHeight) {
imgSize += 'x' + Math.trunc(imgHeight * factor);
}
return this.generateUrl(operation, this.getSizeAccordingToPixelRatio(imgSize), filters, imgSrc, config)
.replace('http://scaleflex.ultrafast.io/', '')
.replace('https://scaleflex.ultrafast.io/', '')
.replace('//scaleflex.ultrafast.io/', '')
.replace('///', '/');
};
/**

@@ -435,23 +441,23 @@ * @param {?} size

*/
function (size, config) {
var _a, _b;
/** @type {?} */
var width;
/** @type {?} */
var height;
if (typeof size === 'object') {
function (size, config) {
var _a, _b;
/** @type {?} */
var breakPointSource = this.getBreakPoint(size);
var width;
/** @type {?} */
var breakPointSize = breakPointSource ? breakPointSource.size : size[0].size;
_a = __read(breakPointSize.toString().split('x'), 2), width = _a[0], height = _a[1];
}
else {
_b = __read(size.toString().split('x'), 2), width = _b[0], height = _b[1];
}
if (width && height) {
return width / height;
}
return null;
};
var height;
if (typeof size === 'object') {
/** @type {?} */
var breakPointSource = this.getBreakPoint(size);
/** @type {?} */
var breakPointSize = breakPointSource ? breakPointSource.size : size[0].size;
_a = __read(breakPointSize.toString().split('x'), 2), width = _a[0], height = _a[1];
}
else {
_b = __read(size.toString().split('x'), 2), width = _b[0], height = _b[1];
}
if (width && height) {
return width / height;
}
return null;
};
/**

@@ -465,11 +471,10 @@ * @param {?} size

*/
function (size) {
return __spread(size).reverse().find((/**
* @param {?} item
* @return {?}
*/
function (item) { return matchMedia(item.media).matches; }));
};
function (size) {
return __spread(size).reverse().find(( /**
* @param {?} item
* @return {?}
*/function (item) { return matchMedia(item.media).matches; }));
};
CIService.decorators = [
{ type: core.Injectable, args: [{
{ type: i0.Injectable, args: [{
providedIn: 'root'

@@ -479,6 +484,8 @@ },] }

/** @nocollapse */
CIService.ctorParameters = function () { return [
{ type: CIConfig }
]; };
/** @nocollapse */ CIService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function CIService_Factory() { return new CIService(core.ɵɵinject(CIConfig)); }, token: CIService, providedIn: "root" });
CIService.ctorParameters = function () {
return [
{ type: CIConfig }
];
};
/** @nocollapse */ CIService.ngInjectableDef = i0.defineInjectable({ factory: function CIService_Factory() { return new CIService(i0.inject(CIConfig)); }, token: CIService, providedIn: "root" });
return CIService;

@@ -489,3 +496,3 @@ }());

* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -499,3 +506,3 @@ var ImgComponent = /** @class */ (function () {

this.offset = 100;
this.imageLoaded = new core.EventEmitter();
this.imageLoaded = new i0.EventEmitter();
this.cloudimageUrl = '';

@@ -516,5 +523,5 @@ this.sources = [];

*/
function () {
this.resizeSubscription$.unsubscribe();
};
function () {
this.resizeSubscription$.unsubscribe();
};
/**

@@ -526,15 +533,14 @@ * @return {?}

*/
function () {
var _this = this;
this.resizeObservable$ = rxjs.fromEvent(window, 'resize').pipe(operators.debounceTime(500));
this.resizeSubscription$ = this.resizeObservable$.subscribe((/**
* @return {?}
*/
function () {
if (_this.isAdaptive || _this.windowInnerWidth < window.innerWidth) {
_this.processImage();
}
_this.windowInnerWidth = window.innerWidth;
}));
};
var _this = this;
this.resizeObservable$ = rxjs.fromEvent(window, 'resize').pipe(operators.debounceTime(500));
this.resizeSubscription$ = this.resizeObservable$.subscribe(( /**
* @return {?}
*/function () {
if (_this.isAdaptive || _this.windowInnerWidth < window.innerWidth) {
_this.processImage();
}
_this.windowInnerWidth = window.innerWidth;
}));
};
/**

@@ -546,5 +552,5 @@ * @return {?}

*/
function () {
this.processImage();
};
function () {
this.processImage();
};
/**

@@ -556,60 +562,59 @@ * @return {?}

*/
function () {
/** @type {?} */
var imgNode = (this.imgElem || this.pictureElem).nativeElement;
var _a = this.ciService.config, config = _a === void 0 ? {} : _a;
var previewQualityFactor = config.previewQualityFactor;
/** @type {?} */
var operation = this.operation || this.o || config.operation;
/** @type {?} */
var parentContainerWidth = this.ciService.getParentWidth(imgNode, config);
/** @type {?} */
var size = this.size || this.s || config.size || parentContainerWidth;
/** @type {?} */
var filters = this.filters || this.f || config.filters;
/** @type {?} */
var isAdaptive = this.ciService.checkOnMedia(size);
size = isAdaptive ? this.ciService.getAdaptiveSize(size, config) : size;
/** @type {?} */
var isRelativeUrlPath = this.ciService.checkIfRelativeUrlPath(this.src);
/** @type {?} */
var imgSrc = this.ciService.getImgSrc(this.src, isRelativeUrlPath, config.baseUrl);
/** @type {?} */
var resultSize = isAdaptive ? size : this.ciService.getSizeAccordingToPixelRatio(size);
this.isPreview = !config.isChrome && (parentContainerWidth > 400) && config.lazyLoading;
this.cloudimageUrl = isAdaptive ?
this.ciService.generateUrl('width', this.ciService.getSizeAccordingToPixelRatio(parentContainerWidth), filters, imgSrc, config) :
this.ciService.generateUrl(operation, resultSize, filters, imgSrc, config);
this.sources = isAdaptive ?
this.ciService.generateSources(operation, resultSize, filters, imgSrc, isAdaptive, config, false) : [];
/** @type {?} */
var previewCloudimageUrl;
/** @type {?} */
var previewSources;
if (this.isPreview) {
function () {
/** @type {?} */
var previewConfig = __assign({}, config, { queryString: '' });
previewCloudimageUrl = isAdaptive ?
this.ciService.generateUrl('width', (Math.floor(parentContainerWidth / previewQualityFactor)), filters, imgSrc, previewConfig) :
this.ciService.generateUrl(operation, resultSize.split('x').map((/**
* @param {?} item
* @return {?}
*/
function (item) { return Math.floor(item / previewQualityFactor); })).join('x'), filters, imgSrc, previewConfig);
previewSources = isAdaptive ?
this.ciService.generateSources(operation, resultSize, filters, imgSrc, isAdaptive, previewConfig, true) : [];
}
this.previewCloudimageUrl = previewCloudimageUrl;
this.previewSources = previewSources;
this.isAdaptive = isAdaptive;
this.actualSize = size;
this.parentContainerWidth = parentContainerWidth;
/** @type {?} */
var ratioBySize = this.ciService.getRatioBySize(size, config);
this.imageHeight = Math.floor(parentContainerWidth / (ratioBySize || this.ratio || 1.5));
this.isRatio = !!(ratioBySize || this.ratio);
this.ratioBySize = ratioBySize;
this.isProcessed = true;
this.cd.detectChanges();
};
var imgNode = (this.imgElem || this.pictureElem).nativeElement;
var _a = this.ciService.config, config = _a === void 0 ? {} : _a;
var previewQualityFactor = config.previewQualityFactor;
/** @type {?} */
var operation = this.operation || this.o || config.operation;
/** @type {?} */
var parentContainerWidth = this.ciService.getParentWidth(imgNode, config);
/** @type {?} */
var size = this.size || this.s || config.size || parentContainerWidth;
/** @type {?} */
var filters = this.filters || this.f || config.filters;
/** @type {?} */
var isAdaptive = this.ciService.checkOnMedia(size);
size = isAdaptive ? this.ciService.getAdaptiveSize(size, config) : size;
/** @type {?} */
var isRelativeUrlPath = this.ciService.checkIfRelativeUrlPath(this.src);
/** @type {?} */
var imgSrc = this.ciService.getImgSrc(this.src, isRelativeUrlPath, config.baseUrl);
/** @type {?} */
var resultSize = isAdaptive ? size : this.ciService.getSizeAccordingToPixelRatio(size);
this.isPreview = !config.isChrome && (parentContainerWidth > 400) && config.lazyLoading;
this.cloudimageUrl = isAdaptive ?
this.ciService.generateUrl('width', this.ciService.getSizeAccordingToPixelRatio(parentContainerWidth), filters, imgSrc, config) :
this.ciService.generateUrl(operation, resultSize, filters, imgSrc, config);
this.sources = isAdaptive ?
this.ciService.generateSources(operation, resultSize, filters, imgSrc, isAdaptive, config, false) : [];
/** @type {?} */
var previewCloudimageUrl;
/** @type {?} */
var previewSources;
if (this.isPreview) {
/** @type {?} */
var previewConfig = __assign({}, config, { queryString: '' });
previewCloudimageUrl = isAdaptive ?
this.ciService.generateUrl('width', (Math.floor(parentContainerWidth / previewQualityFactor)), filters, imgSrc, previewConfig) :
this.ciService.generateUrl(operation, resultSize.split('x').map(( /**
* @param {?} item
* @return {?}
*/function (item) { return Math.floor(item / previewQualityFactor); })).join('x'), filters, imgSrc, previewConfig);
previewSources = isAdaptive ?
this.ciService.generateSources(operation, resultSize, filters, imgSrc, isAdaptive, previewConfig, true) : [];
}
this.previewCloudimageUrl = previewCloudimageUrl;
this.previewSources = previewSources;
this.isAdaptive = isAdaptive;
this.actualSize = size;
this.parentContainerWidth = parentContainerWidth;
/** @type {?} */
var ratioBySize = this.ciService.getRatioBySize(size, config);
this.imageHeight = Math.floor(parentContainerWidth / (ratioBySize || this.ratio || 1.5));
this.isRatio = !!(ratioBySize || this.ratio);
this.ratioBySize = ratioBySize;
this.isProcessed = true;
this.cd.detectChanges();
};
/**

@@ -623,15 +628,15 @@ * @param {?} $event

*/
function ($event) {
if (!this.isPreview) {
this.isPreviewLoaded = true;
this.isLoaded = true;
}
else if (this.isPreviewLoaded) {
this.isLoaded = true;
}
else {
this.isPreviewLoaded = true;
}
this.imageLoaded.emit($event);
};
function ($event) {
if (!this.isPreview) {
this.isPreviewLoaded = true;
this.isLoaded = true;
}
else if (this.isPreviewLoaded) {
this.isLoaded = true;
}
else {
this.isPreviewLoaded = true;
}
this.imageLoaded.emit($event);
};
/**

@@ -643,7 +648,7 @@ * @return {?}

*/
function () {
/** @type {?} */
var resultSources = __spread((!this.isPreview ? this.sources : (this.isPreviewLoaded ? this.sources : this.previewSources)));
return resultSources.slice(1).reverse();
};
function () {
/** @type {?} */
var resultSources = __spread((!this.isPreview ? this.sources : (this.isPreviewLoaded ? this.sources : this.previewSources)));
return resultSources.slice(1).reverse();
};
/**

@@ -655,8 +660,8 @@ * @return {?}

*/
function () {
/** @type {?} */
var resultSources = __spread((!this.isPreview ? this.sources : (this.isPreviewLoaded ? this.sources : this.previewSources)));
this.firstSource = resultSources[0];
return resultSources[0];
};
function () {
/** @type {?} */
var resultSources = __spread((!this.isPreview ? this.sources : (this.isPreviewLoaded ? this.sources : this.previewSources)));
this.firstSource = resultSources[0];
return resultSources[0];
};
/**

@@ -668,5 +673,5 @@ * @return {?}

*/
function () {
return this._sanitizer.bypassSecurityTrustStyle(this.isRatio ? 'absolute' : 'relative');
};
function () {
return this._sanitizer.bypassSecurityTrustStyle(this.isRatio ? 'absolute' : 'relative');
};
/**

@@ -678,7 +683,7 @@ * @return {?}

*/
function () {
// todo check if we need 100% height
// return this._sanitizer.bypassSecurityTrustStyle(this.isRatio ? '100%' : 'auto');
return this._sanitizer.bypassSecurityTrustStyle(this.isRatio ? 'auto' : 'auto');
};
function () {
// todo check if we need 100% height
// return this._sanitizer.bypassSecurityTrustStyle(this.isRatio ? '100%' : 'auto');
return this._sanitizer.bypassSecurityTrustStyle(this.isRatio ? 'auto' : 'auto');
};
/**

@@ -690,14 +695,14 @@ * @return {?}

*/
function () {
var config = this.ciService.config;
/** @type {?} */
var result = 'none';
if (config.imgLoadingAnimation) {
result = 'scale3d(1.1, 1.1, 1)';
}
if (this.isLoaded && config.imgLoadingAnimation) {
result = 'translateZ(0) scale3d(1, 1, 1)';
}
return this._sanitizer.bypassSecurityTrustStyle(result);
};
function () {
var config = this.ciService.config;
/** @type {?} */
var result = 'none';
if (config.imgLoadingAnimation) {
result = 'scale3d(1.1, 1.1, 1)';
}
if (this.isLoaded && config.imgLoadingAnimation) {
result = 'translateZ(0) scale3d(1, 1, 1)';
}
return this._sanitizer.bypassSecurityTrustStyle(result);
};
/**

@@ -709,11 +714,11 @@ * @return {?}

*/
function () {
var config = this.ciService.config;
/** @type {?} */
var result = 'none';
if (this.isLoaded && config.imgLoadingAnimation) {
result = 'all 0.3s ease-in-out';
}
return this._sanitizer.bypassSecurityTrustStyle(result);
};
function () {
var config = this.ciService.config;
/** @type {?} */
var result = 'none';
if (this.isLoaded && config.imgLoadingAnimation) {
result = 'all 0.3s ease-in-out';
}
return this._sanitizer.bypassSecurityTrustStyle(result);
};
/**

@@ -725,14 +730,14 @@ * @return {?}

*/
function () {
var config = this.ciService.config;
/** @type {?} */
var result = 'none';
if (config.imgLoadingAnimation) {
result = "blur(" + Math.floor(parseInt(this.parentContainerWidth, 10) / 100) + "px)";
}
if (this.isLoaded && config.imgLoadingAnimation) {
result = 'blur(0px)';
}
return this._sanitizer.bypassSecurityTrustStyle(result);
};
function () {
var config = this.ciService.config;
/** @type {?} */
var result = 'none';
if (config.imgLoadingAnimation) {
result = "blur(" + Math.floor(parseInt(this.parentContainerWidth, 10) / 100) + "px)";
}
if (this.isLoaded && config.imgLoadingAnimation) {
result = 'blur(0px)';
}
return this._sanitizer.bypassSecurityTrustStyle(result);
};
/**

@@ -744,10 +749,10 @@ * @return {?}

*/
function () {
/** @type {?} */
var result = '';
if (this.isRatio) {
result = (100 / (this.ratioBySize || this.ratio)) + '%';
}
return this._sanitizer.bypassSecurityTrustStyle(result);
};
function () {
/** @type {?} */
var result = '';
if (this.isRatio) {
result = (100 / (this.ratioBySize || this.ratio)) + '%';
}
return this._sanitizer.bypassSecurityTrustStyle(result);
};
/**

@@ -759,13 +764,13 @@ * @return {?}

*/
function () {
var config = this.ciService.config;
/** @type {?} */
var result = 'transparent';
if (this.isRatio && !this.isPreviewLoaded && !this.isLoaded) {
result = config.placeholderBackground;
}
return this._sanitizer.bypassSecurityTrustStyle(result);
};
function () {
var config = this.ciService.config;
/** @type {?} */
var result = 'transparent';
if (this.isRatio && !this.isPreviewLoaded && !this.isLoaded) {
result = config.placeholderBackground;
}
return this._sanitizer.bypassSecurityTrustStyle(result);
};
ImgComponent.decorators = [
{ type: core.Component, args: [{
{ type: i0.Component, args: [{
selector: 'ci-img',

@@ -776,23 +781,25 @@ template: "\n <picture #pictureElem *ngIf=\"!isProcessed\"></picture>\n\n <ng-container [ngSwitch]=\"lazyLoading\">\n <ng-container *ngSwitchCase=\"true\">\n <picture\n [class]=\"class + ' cloudimage-image-picture cloudimage-image-' + (isLoaded ? 'loaded' : 'loading')\"\n style=\"display:block;width:100%;overflow:hidden;position:relative;\"\n [style.paddingBottom]=\"getPicturePaddingBottom()\"\n [style.background]=\"getPictureBackground()\"\n #imgElem\n *ngIf=\"isProcessed\">\n <source\n *ngFor=\"let source of getRestSources()\"\n [media]=\"source.mediaQuery || ''\"\n [attr.lazyLoad]=\"source.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <source\n *ngIf=\"getFirstSource()\"\n [attr.lazyLoad]=\"firstSource.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <img\n style=\"display:block;width:100%;opacity:1;top:0;left:0;\"\n [style.position]=\"getPositionStyle()\"\n [style.height]=\"getImgHeight()\"\n [style.transform]=\"getTransformStyle()\"\n [style.transition]=\"getTransitionStyle()\"\n [style.filter]=\"getFilterStyle()\"\n (load)=\"onImageLoad($event)\"\n [lazyLoad]=\"!isPreview ? cloudimageUrl : (isPreviewLoaded ? cloudimageUrl : previewCloudimageUrl)\"\n [offset]=\"offset\"\n [alt]=\"\">\n </picture>\n </ng-container>\n <div *ngSwitchCase=\"false\">\n <picture\n [class]=\"class + ' cloudimage-image-picture cloudimage-image-' + (isLoaded ? 'loaded' : 'loading')\"\n style=\"display:block;width:100%;overflow:hidden;position:relative;\"\n [style.paddingBottom]=\"getPicturePaddingBottom()\"\n [style.background]=\"getPictureBackground()\"\n #imgElem\n *ngIf=\"isProcessed\">\n <source\n *ngFor=\"let source of restSources\"\n [media]=\"source.mediaQuery || ''\"\n [srcset]=\"source.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <source\n *ngIf=\"firstSource\"\n [srcset]=\"firstSource.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <img\n style=\"display:block;width:100%;opacity:1;top:0;left:0;\"\n [style.position]=\"getPositionStyle()\"\n [style.height]=\"getImgHeight()\"\n [style.transform]=\"getTransformStyle()\"\n [style.transition]=\"getTransitionStyle()\"\n [style.filter]=\"getFilterStyle()\"\n (load)=\"onImageLoad($event)\"\n [src]=\"!isPreview ? cloudimageUrl : (isPreviewLoaded ? cloudimageUrl : previewCloudimageUrl)\"\n [alt]=\"\">\n </picture>\n </div>\n </ng-container>\n "

/** @nocollapse */
ImgComponent.ctorParameters = function () { return [
{ type: CIService },
{ type: platformBrowser.DomSanitizer },
{ type: core.ChangeDetectorRef }
]; };
ImgComponent.ctorParameters = function () {
return [
{ type: CIService },
{ type: platformBrowser.DomSanitizer },
{ type: i0.ChangeDetectorRef }
];
};
ImgComponent.propDecorators = {
imgElem: [{ type: core.ViewChild, args: ['imgElem', { static: false },] }],
pictureElem: [{ type: core.ViewChild, args: ['pictureElem', { static: false },] }],
src: [{ type: core.Input }],
class: [{ type: core.Input }],
alt: [{ type: core.Input }],
operation: [{ type: core.Input }],
o: [{ type: core.Input }],
size: [{ type: core.Input }],
s: [{ type: core.Input }],
filters: [{ type: core.Input }],
f: [{ type: core.Input }],
ratio: [{ type: core.Input }],
offset: [{ type: core.Input }],
ngSwitch: [{ type: core.Input }],
imageLoaded: [{ type: core.Output }]
imgElem: [{ type: i0.ViewChild, args: ['imgElem',] }],
pictureElem: [{ type: i0.ViewChild, args: ['pictureElem',] }],
src: [{ type: i0.Input }],
class: [{ type: i0.Input }],
alt: [{ type: i0.Input }],
operation: [{ type: i0.Input }],
o: [{ type: i0.Input }],
size: [{ type: i0.Input }],
s: [{ type: i0.Input }],
filters: [{ type: i0.Input }],
f: [{ type: i0.Input }],
ratio: [{ type: i0.Input }],
offset: [{ type: i0.Input }],
ngSwitch: [{ type: i0.Input }],
imageLoaded: [{ type: i0.Output }]
};

@@ -804,3 +811,3 @@ return ImgComponent;

* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -811,3 +818,3 @@ var CIModule = /** @class */ (function () {

CIModule.decorators = [
{ type: core.NgModule, args: [{
{ type: i0.NgModule, args: [{
declarations: [ImgComponent],

@@ -822,5 +829,15 @@ imports: [common.CommonModule, ngLazyloadImage.LazyLoadImageModule],

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
exports.CIService = CIService;
exports.CIConfig = CIConfig;
exports.CIModule = CIModule;
exports.CIService = CIService;
exports.ImgComponent = ImgComponent;

@@ -830,3 +847,4 @@

}));
//# sourceMappingURL=ng-cloudimage-responsive.umd.js.map
})));
//# sourceMappingURL=ng-cloudimage-responsive.umd.js.map

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@angular/platform-browser"),require("rxjs"),require("rxjs/operators"),require("ng-lazyload-image")):"function"==typeof define&&define.amd?define("ng-cloudimage-responsive",["exports","@angular/core","@angular/common","@angular/platform-browser","rxjs","rxjs/operators","ng-lazyload-image"],t):t((e=e||self)["ng-cloudimage-responsive"]={},e.ng.core,e.ng.common,e.ng.platformBrowser,e.rxjs,e.rxjs.operators,e.ngLazyloadImage)}(this,function(e,t,i,r,n,o,s){"use strict";var a=function(){return(a=Object.assign||function(e){for(var t,i=1,r=arguments.length;i<r;i++)for(var n in t=arguments[i])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function c(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var r,n,o=i.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(a){n={error:a}}finally{try{r&&!r.done&&(i=o["return"])&&i.call(o)}finally{if(n)throw n.error}}return s}function l(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(c(arguments[t]));return e}var d=function(){},u=function(){function e(e){this.config={};var t=e.token,i=void 0===t?"":t,r=e.container,n=void 0===r?"cloudimg.io":r,o=e.ultraFast,s=void 0!==o&&o,a=e.lazyLoading,c=void 0===a||a,l=e.imgLoadingAnimation,d=void 0===l||l,u=e.lazyLoadOffset,p=void 0===u?100:u,g=e.width,h=void 0===g?"400":g,f=e.height,y=void 0===f?"300":f,m=e.operation,v=void 0===m?"width":m,S=e.filters,w=void 0===S?"foil1":S,I=e.placeholderBackground,z=void 0===I?"#f4f4f4":I,L=e.baseUrl,P=void 0===L?"/":L,x=e.presets,b=e.queryString,C=void 0===b?"":b;this.config={token:i,container:n,ultraFast:s,lazyLoading:c,imgLoadingAnimation:d,lazyLoadOffset:p,width:h,height:y,operation:v,filters:w,placeholderBackground:z,baseUrl:P,presets:x||{xs:"(max-width: 575px)",sm:"(min-width: 576px)",md:"(min-width: 768px)",lg:"(min-width: 992px)",xl:"(min-width: 1200px)"},queryString:C,innerWidth:window.innerWidth,previewQualityFactor:10}}return e.prototype.getParentWidth=function(e,t){if(!(e&&e.parentElement&&e.parentElement.getBoundingClientRect||e&&e.width))return t.width;var i=this.getParentContainerWithWidth(e),r=parseInt(""+i,10),n=Number(window.getComputedStyle(e).width);return n&&n<r&&n>15||!r?this.getSizeLimit(n):r?this.getSizeLimit(r):e.width||t.width},e.prototype.getParentContainerWithWidth=function(e){var t=null,i=0;do{i=(t=t&&t.parentNode||e.parentNode).getBoundingClientRect().width}while(t&&!i);var r=i&&t&&parseInt(window.getComputedStyle(t).paddingLeft,10),n=parseInt(window.getComputedStyle(t).paddingRight,10);return i+(i?-r-n:0)},e.prototype.getSizeLimit=function(e){return e<=25?"25":e<=50?"50":(100*Math.ceil(e/100)).toString()},e.prototype.checkOnMedia=function(e){try{return e.split(",").length>1}catch(t){return!1}},e.prototype.checkIfRelativeUrlPath=function(e){return 0===e.indexOf("//")&&(e=window.location.protocol+e),0!==e.indexOf("http://")&&0!==e.indexOf("https://")&&0!==e.indexOf("//")},e.prototype.getImgSrc=function(e,t,i){return void 0===t&&(t=!1),void 0===i&&(i=""),t?i+e:e},e.prototype.getSizeAccordingToPixelRatio=function(e){var t=e.toString().split("x"),i=[];return[].forEach.call(t,function(e){i.push(e*Math.round(window.devicePixelRatio||1))}),i.join("x")},e.prototype.generateUrl=function(e,t,i,r,n){return(n.ultraFast?"https://scaleflex.ultrafast.io/":"https://")+n.token+"."+n.container+"/"+e+"/"+t+"/"+i+"/"+r+n.queryString},e.prototype.generateSources=function(e,t,i,r,n,o,s){var a=this,c=o.previewQualityFactor,l=[];return n?t.forEach(function(t){var n=t.size,d=t.media;s&&(n=n.split("x").map(function(e){return Math.floor(e/c)}).join("x")),l.push({mediaQuery:d,srcSet:a.generateSrcset(e,n,i,r,o)})}):(s&&(t=t.split("x").map(function(e){return Math.floor(e/c)}).join("x")),l.push({srcSet:this.generateSrcset(e,t,i,r,o)})),l},e.prototype.getAdaptiveSize=function(e,t){var i=e.split(","),r=[];return i.forEach(function(e){var i=e.match(/(([a-z_][a-z_]*)|(\([\S\s]*\)))\s*([0-9xp]*)/),n=i[3]?i[3]:t.presets[i[2]];r.push({media:n,size:i[4]})}),r},e.prototype.generateSrcset=function(e,t,i,r,n){var o=c(t.toString().split("x"),2),s=o[0],a=o[1];return this.generateImgSrc(e,i,r,s,a,1,n)},e.prototype.generateImgSrc=function(e,t,i,r,n,o,s){var a=""+Math.trunc(r*o);return n&&(a+="x"+Math.trunc(n*o)),this.generateUrl(e,this.getSizeAccordingToPixelRatio(a),t,i,s).replace("http://scaleflex.ultrafast.io/","").replace("https://scaleflex.ultrafast.io/","").replace("//scaleflex.ultrafast.io/","").replace("///","/")},e.prototype.getRatioBySize=function(e,t){var i,r,n,o;if("object"==typeof e){var s=this.getBreakPoint(e);n=(i=c((s?s.size:e[0].size).toString().split("x"),2))[0],o=i[1]}else n=(r=c(e.toString().split("x"),2))[0],o=r[1];return n&&o?n/o:null},e.prototype.getBreakPoint=function(e){return l(e).reverse().find(function(e){return matchMedia(e.media).matches})},e.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:d}]},e.ngInjectableDef=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(d))},token:e,providedIn:"root"}),e}(),p=function(){function e(e,i,r){this.ciService=e,this._sanitizer=i,this.cd=r,this["class"]="",this.offset=100,this.imageLoaded=new t.EventEmitter,this.cloudimageUrl="",this.sources=[],this.firstSource=null,this.restSources=[],this.isLoaded=!1,this.isProcessed=!1,this.windowInnerWidth=window.innerWidth,this.lazyLoading=e.config.lazyLoading}return e.prototype.ngOnDestroy=function(){this.resizeSubscription$.unsubscribe()},e.prototype.ngOnInit=function(){var e=this;this.resizeObservable$=n.fromEvent(window,"resize").pipe(o.debounceTime(500)),this.resizeSubscription$=this.resizeObservable$.subscribe(function(){(e.isAdaptive||e.windowInnerWidth<window.innerWidth)&&e.processImage(),e.windowInnerWidth=window.innerWidth})},e.prototype.ngAfterViewInit=function(){this.processImage()},e.prototype.processImage=function(){var e=(this.imgElem||this.pictureElem).nativeElement,t=this.ciService.config,i=void 0===t?{}:t,r=i.previewQualityFactor,n=this.operation||this.o||i.operation,o=this.ciService.getParentWidth(e,i),s=this.size||this.s||i.size||o,c=this.filters||this.f||i.filters,l=this.ciService.checkOnMedia(s);s=l?this.ciService.getAdaptiveSize(s,i):s;var d,u,p=this.ciService.checkIfRelativeUrlPath(this.src),g=this.ciService.getImgSrc(this.src,p,i.baseUrl),h=l?s:this.ciService.getSizeAccordingToPixelRatio(s);if(this.isPreview=!i.isChrome&&o>400&&i.lazyLoading,this.cloudimageUrl=l?this.ciService.generateUrl("width",this.ciService.getSizeAccordingToPixelRatio(o),c,g,i):this.ciService.generateUrl(n,h,c,g,i),this.sources=l?this.ciService.generateSources(n,h,c,g,l,i,!1):[],this.isPreview){var f=a({},i,{queryString:""});d=l?this.ciService.generateUrl("width",Math.floor(o/r),c,g,f):this.ciService.generateUrl(n,h.split("x").map(function(e){return Math.floor(e/r)}).join("x"),c,g,f),u=l?this.ciService.generateSources(n,h,c,g,l,f,!0):[]}this.previewCloudimageUrl=d,this.previewSources=u,this.isAdaptive=l,this.actualSize=s,this.parentContainerWidth=o;var y=this.ciService.getRatioBySize(s,i);this.imageHeight=Math.floor(o/(y||this.ratio||1.5)),this.isRatio=!(!y&&!this.ratio),this.ratioBySize=y,this.isProcessed=!0,this.cd.detectChanges()},e.prototype.onImageLoad=function(e){this.isPreview?this.isPreviewLoaded?this.isLoaded=!0:this.isPreviewLoaded=!0:(this.isPreviewLoaded=!0,this.isLoaded=!0),this.imageLoaded.emit(e)},e.prototype.getRestSources=function(){return l(this.isPreview?this.isPreviewLoaded?this.sources:this.previewSources:this.sources).slice(1).reverse()},e.prototype.getFirstSource=function(){var e=l(this.isPreview?this.isPreviewLoaded?this.sources:this.previewSources:this.sources);return this.firstSource=e[0],e[0]},e.prototype.getPositionStyle=function(){return this._sanitizer.bypassSecurityTrustStyle(this.isRatio?"absolute":"relative")},e.prototype.getImgHeight=function(){return this._sanitizer.bypassSecurityTrustStyle((this.isRatio,"auto"))},e.prototype.getTransformStyle=function(){var e=this.ciService.config,t="none";return e.imgLoadingAnimation&&(t="scale3d(1.1, 1.1, 1)"),this.isLoaded&&e.imgLoadingAnimation&&(t="translateZ(0) scale3d(1, 1, 1)"),this._sanitizer.bypassSecurityTrustStyle(t)},e.prototype.getTransitionStyle=function(){var e=this.ciService.config,t="none";return this.isLoaded&&e.imgLoadingAnimation&&(t="all 0.3s ease-in-out"),this._sanitizer.bypassSecurityTrustStyle(t)},e.prototype.getFilterStyle=function(){var e=this.ciService.config,t="none";return e.imgLoadingAnimation&&(t="blur("+Math.floor(parseInt(this.parentContainerWidth,10)/100)+"px)"),this.isLoaded&&e.imgLoadingAnimation&&(t="blur(0px)"),this._sanitizer.bypassSecurityTrustStyle(t)},e.prototype.getPicturePaddingBottom=function(){var e="";return this.isRatio&&(e=100/(this.ratioBySize||this.ratio)+"%"),this._sanitizer.bypassSecurityTrustStyle(e)},e.prototype.getPictureBackground=function(){var e=this.ciService.config,t="transparent";return!this.isRatio||this.isPreviewLoaded||this.isLoaded||(t=e.placeholderBackground),this._sanitizer.bypassSecurityTrustStyle(t)},e.decorators=[{type:t.Component,args:[{selector:"ci-img",template:'\n <picture #pictureElem *ngIf="!isProcessed"></picture>\n\n <ng-container [ngSwitch]="lazyLoading">\n <ng-container *ngSwitchCase="true">\n <picture\n [class]="class + \' cloudimage-image-picture cloudimage-image-\' + (isLoaded ? \'loaded\' : \'loading\')"\n style="display:block;width:100%;overflow:hidden;position:relative;"\n [style.paddingBottom]="getPicturePaddingBottom()"\n [style.background]="getPictureBackground()"\n #imgElem\n *ngIf="isProcessed">\n <source\n *ngFor="let source of getRestSources()"\n [media]="source.mediaQuery || \'\'"\n [attr.lazyLoad]="source.srcSet || \'\'"\n (load)="onImageLoad($event)"\n />\n <source\n *ngIf="getFirstSource()"\n [attr.lazyLoad]="firstSource.srcSet || \'\'"\n (load)="onImageLoad($event)"\n />\n <img\n style="display:block;width:100%;opacity:1;top:0;left:0;"\n [style.position]="getPositionStyle()"\n [style.height]="getImgHeight()"\n [style.transform]="getTransformStyle()"\n [style.transition]="getTransitionStyle()"\n [style.filter]="getFilterStyle()"\n (load)="onImageLoad($event)"\n [lazyLoad]="!isPreview ? cloudimageUrl : (isPreviewLoaded ? cloudimageUrl : previewCloudimageUrl)"\n [offset]="offset"\n [alt]="">\n </picture>\n </ng-container>\n <div *ngSwitchCase="false">\n <picture\n [class]="class + \' cloudimage-image-picture cloudimage-image-\' + (isLoaded ? \'loaded\' : \'loading\')"\n style="display:block;width:100%;overflow:hidden;position:relative;"\n [style.paddingBottom]="getPicturePaddingBottom()"\n [style.background]="getPictureBackground()"\n #imgElem\n *ngIf="isProcessed">\n <source\n *ngFor="let source of restSources"\n [media]="source.mediaQuery || \'\'"\n [srcset]="source.srcSet || \'\'"\n (load)="onImageLoad($event)"\n />\n <source\n *ngIf="firstSource"\n [srcset]="firstSource.srcSet || \'\'"\n (load)="onImageLoad($event)"\n />\n <img\n style="display:block;width:100%;opacity:1;top:0;left:0;"\n [style.position]="getPositionStyle()"\n [style.height]="getImgHeight()"\n [style.transform]="getTransformStyle()"\n [style.transition]="getTransitionStyle()"\n [style.filter]="getFilterStyle()"\n (load)="onImageLoad($event)"\n [src]="!isPreview ? cloudimageUrl : (isPreviewLoaded ? cloudimageUrl : previewCloudimageUrl)"\n [alt]="">\n </picture>\n </div>\n </ng-container>\n '}]}],e.ctorParameters=function(){return[{type:u},{type:r.DomSanitizer},{type:t.ChangeDetectorRef}]},e.propDecorators={imgElem:[{type:t.ViewChild,args:["imgElem",{"static":!1}]}],pictureElem:[{type:t.ViewChild,args:["pictureElem",{"static":!1}]}],src:[{type:t.Input}],"class":[{type:t.Input}],alt:[{type:t.Input}],operation:[{type:t.Input}],o:[{type:t.Input}],size:[{type:t.Input}],s:[{type:t.Input}],filters:[{type:t.Input}],f:[{type:t.Input}],ratio:[{type:t.Input}],offset:[{type:t.Input}],ngSwitch:[{type:t.Input}],imageLoaded:[{type:t.Output}]},e}(),g=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{declarations:[p],imports:[i.CommonModule,s.LazyLoadImageModule],exports:[p],providers:[]}]}],e}();e.CIConfig=d,e.CIModule=g,e.CIService=u,e.ImgComponent=p,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/common"),require("@angular/core"),require("@angular/platform-browser"),require("rxjs"),require("rxjs/operators"),require("ng-lazyload-image")):"function"==typeof define&&define.amd?define("ng-cloudimage-responsive",["exports","@angular/common","@angular/core","@angular/platform-browser","rxjs","rxjs/operators","ng-lazyload-image"],t):t(e["ng-cloudimage-responsive"]={},e.ng.common,e.ng.core,e.ng.platformBrowser,e.rxjs,e.rxjs.operators,e.ngLazyloadImage)}(this,function(e,t,r,i,n,o,s){"use strict";var y=function(){return(y=Object.assign||function(e){for(var t,i=1,r=arguments.length;i<r;i++)for(var n in t=arguments[i])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function c(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var r,n,o=i.call(e),s=[];try{for(;(void 0===t||0<t--)&&!(r=o.next()).done;)s.push(r.value)}catch(a){n={error:a}}finally{try{r&&!r.done&&(i=o["return"])&&i.call(o)}finally{if(n)throw n.error}}return s}function a(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(c(arguments[t]));return e}function l(){}var d=(u.prototype.getParentWidth=function(e,t){if(!(e&&e.parentElement&&e.parentElement.getBoundingClientRect||e&&e.width))return t.width;var i=this.getParentContainerWithWidth(e),r=parseInt(""+i,10),n=Number(window.getComputedStyle(e).width);return n&&n<r&&15<n||!r?this.getSizeLimit(n):r?this.getSizeLimit(r):e.width||t.width},u.prototype.getParentContainerWithWidth=function(e){for(var t=null,i=0;i=(t=t&&t.parentNode||e.parentNode).getBoundingClientRect().width,t&&!i;);var r=i&&t&&parseInt(window.getComputedStyle(t).paddingLeft,10),n=parseInt(window.getComputedStyle(t).paddingRight,10);return i+(i?-r-n:0)},u.prototype.getSizeLimit=function(e){return e<=25?"25":e<=50?"50":(100*Math.ceil(e/100)).toString()},u.prototype.checkOnMedia=function(e){try{return 1<e.split(",").length}catch(t){return!1}},u.prototype.checkIfRelativeUrlPath=function(e){return 0===e.indexOf("//")&&(e=window.location.protocol+e),0!==e.indexOf("http://")&&0!==e.indexOf("https://")&&0!==e.indexOf("//")},u.prototype.getImgSrc=function(e,t,i){return void 0===t&&(t=!1),void 0===i&&(i=""),t?i+e:e},u.prototype.getSizeAccordingToPixelRatio=function(e){var t=e.toString().split("x"),i=[];return[].forEach.call(t,function(e){i.push(e*Math.round(window.devicePixelRatio||1))}),i.join("x")},u.prototype.generateUrl=function(e,t,i,r,n){return(n.ultraFast?"https://scaleflex.ultrafast.io/":"https://")+n.token+"."+n.container+"/"+e+"/"+t+"/"+i+"/"+r+n.queryString},u.prototype.generateSources=function(r,e,n,o,t,s,a){var c=this,l=s.previewQualityFactor,d=[];return t?e.forEach(function(e){var t=e.size,i=e.media;a&&(t=t.split("x").map(function(e){return Math.floor(e/l)}).join("x")),d.push({mediaQuery:i,srcSet:c.generateSrcset(r,t,n,o,s)})}):(a&&(e=e.split("x").map(function(e){return Math.floor(e/l)}).join("x")),d.push({srcSet:this.generateSrcset(r,e,n,o,s)})),d},u.prototype.getAdaptiveSize=function(e,r){var t=e.split(","),n=[];return t.forEach(function(e){var t=e.match(/(([a-z_][a-z_]*)|(\([\S\s]*\)))\s*([0-9xp]*)/),i=t[3]?t[3]:r.presets[t[2]];n.push({media:i,size:t[4]})}),n},u.prototype.generateSrcset=function(e,t,i,r,n){var o=c(t.toString().split("x"),2),s=o[0],a=o[1];return this.generateImgSrc(e,i,r,s,a,1,n)},u.prototype.generateImgSrc=function(e,t,i,r,n,o,s){var a=""+Math.trunc(r*o);return n&&(a+="x"+Math.trunc(n*o)),this.generateUrl(e,this.getSizeAccordingToPixelRatio(a),t,i,s).replace("http://scaleflex.ultrafast.io/","").replace("https://scaleflex.ultrafast.io/","").replace("//scaleflex.ultrafast.io/","").replace("///","/")},u.prototype.getRatioBySize=function(e,t){var i,r,n,o;if("object"==typeof e){var s=this.getBreakPoint(e);n=(i=c((s?s.size:e[0].size).toString().split("x"),2))[0],o=i[1]}else n=(r=c(e.toString().split("x"),2))[0],o=r[1];return n&&o?n/o:null},u.prototype.getBreakPoint=function(e){return a(e).reverse().find(function(e){return matchMedia(e.media).matches})},u.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],u.ctorParameters=function(){return[{type:l}]},u.ngInjectableDef=r.defineInjectable({factory:function(){return new u(r.inject(l))},token:u,providedIn:"root"}),u);function u(e){this.config={};var t=e.token,i=void 0===t?"":t,r=e.container,n=void 0===r?"cloudimg.io":r,o=e.ultraFast,s=void 0!==o&&o,a=e.lazyLoading,c=void 0===a||a,l=e.imgLoadingAnimation,d=void 0===l||l,u=e.lazyLoadOffset,p=void 0===u?100:u,g=e.width,h=void 0===g?"400":g,f=e.height,y=void 0===f?"300":f,m=e.operation,v=void 0===m?"width":m,S=e.filters,w=void 0===S?"foil1":S,I=e.placeholderBackground,z=void 0===I?"#f4f4f4":I,L=e.baseUrl,P=void 0===L?"/":L,x=e.presets,b=e.queryString,C=void 0===b?"":b;this.config={token:i,container:n,ultraFast:s,lazyLoading:c,imgLoadingAnimation:d,lazyLoadOffset:p,width:h,height:y,operation:v,filters:w,placeholderBackground:z,baseUrl:P,presets:x||{xs:"(max-width: 575px)",sm:"(min-width: 576px)",md:"(min-width: 768px)",lg:"(min-width: 992px)",xl:"(min-width: 1200px)"},queryString:C,innerWidth:window.innerWidth,previewQualityFactor:10}}var p=(g.prototype.ngOnDestroy=function(){this.resizeSubscription$.unsubscribe()},g.prototype.ngOnInit=function(){var e=this;this.resizeObservable$=n.fromEvent(window,"resize").pipe(o.debounceTime(500)),this.resizeSubscription$=this.resizeObservable$.subscribe(function(){(e.isAdaptive||e.windowInnerWidth<window.innerWidth)&&e.processImage(),e.windowInnerWidth=window.innerWidth})},g.prototype.ngAfterViewInit=function(){this.processImage()},g.prototype.processImage=function(){var e=(this.imgElem||this.pictureElem).nativeElement,t=this.ciService.config,i=void 0===t?{}:t,r=i.previewQualityFactor,n=this.operation||this.o||i.operation,o=this.ciService.getParentWidth(e,i),s=this.size||this.s||i.size||o,a=this.filters||this.f||i.filters,c=this.ciService.checkOnMedia(s);s=c?this.ciService.getAdaptiveSize(s,i):s;var l,d,u=this.ciService.checkIfRelativeUrlPath(this.src),p=this.ciService.getImgSrc(this.src,u,i.baseUrl),g=c?s:this.ciService.getSizeAccordingToPixelRatio(s);if(this.isPreview=!i.isChrome&&400<o&&i.lazyLoading,this.cloudimageUrl=c?this.ciService.generateUrl("width",this.ciService.getSizeAccordingToPixelRatio(o),a,p,i):this.ciService.generateUrl(n,g,a,p,i),this.sources=c?this.ciService.generateSources(n,g,a,p,c,i,!1):[],this.isPreview){var h=y({},i,{queryString:""});l=c?this.ciService.generateUrl("width",Math.floor(o/r),a,p,h):this.ciService.generateUrl(n,g.split("x").map(function(e){return Math.floor(e/r)}).join("x"),a,p,h),d=c?this.ciService.generateSources(n,g,a,p,c,h,!0):[]}this.previewCloudimageUrl=l,this.previewSources=d,this.isAdaptive=c,this.actualSize=s,this.parentContainerWidth=o;var f=this.ciService.getRatioBySize(s,i);this.imageHeight=Math.floor(o/(f||this.ratio||1.5)),this.isRatio=!(!f&&!this.ratio),this.ratioBySize=f,this.isProcessed=!0,this.cd.detectChanges()},g.prototype.onImageLoad=function(e){this.isPreview?this.isPreviewLoaded?this.isLoaded=!0:this.isPreviewLoaded=!0:(this.isPreviewLoaded=!0,this.isLoaded=!0),this.imageLoaded.emit(e)},g.prototype.getRestSources=function(){return a(this.isPreview?this.isPreviewLoaded?this.sources:this.previewSources:this.sources).slice(1).reverse()},g.prototype.getFirstSource=function(){var e=a(this.isPreview?this.isPreviewLoaded?this.sources:this.previewSources:this.sources);return this.firstSource=e[0],e[0]},g.prototype.getPositionStyle=function(){return this._sanitizer.bypassSecurityTrustStyle(this.isRatio?"absolute":"relative")},g.prototype.getImgHeight=function(){return this._sanitizer.bypassSecurityTrustStyle((this.isRatio,"auto"))},g.prototype.getTransformStyle=function(){var e=this.ciService.config,t="none";return e.imgLoadingAnimation&&(t="scale3d(1.1, 1.1, 1)"),this.isLoaded&&e.imgLoadingAnimation&&(t="translateZ(0) scale3d(1, 1, 1)"),this._sanitizer.bypassSecurityTrustStyle(t)},g.prototype.getTransitionStyle=function(){var e=this.ciService.config,t="none";return this.isLoaded&&e.imgLoadingAnimation&&(t="all 0.3s ease-in-out"),this._sanitizer.bypassSecurityTrustStyle(t)},g.prototype.getFilterStyle=function(){var e=this.ciService.config,t="none";return e.imgLoadingAnimation&&(t="blur("+Math.floor(parseInt(this.parentContainerWidth,10)/100)+"px)"),this.isLoaded&&e.imgLoadingAnimation&&(t="blur(0px)"),this._sanitizer.bypassSecurityTrustStyle(t)},g.prototype.getPicturePaddingBottom=function(){var e="";return this.isRatio&&(e=100/(this.ratioBySize||this.ratio)+"%"),this._sanitizer.bypassSecurityTrustStyle(e)},g.prototype.getPictureBackground=function(){var e=this.ciService.config,t="transparent";return!this.isRatio||this.isPreviewLoaded||this.isLoaded||(t=e.placeholderBackground),this._sanitizer.bypassSecurityTrustStyle(t)},g.decorators=[{type:r.Component,args:[{selector:"ci-img",template:'\n <picture #pictureElem *ngIf="!isProcessed"></picture>\n\n <ng-container [ngSwitch]="lazyLoading">\n <ng-container *ngSwitchCase="true">\n <picture\n [class]="class + \' cloudimage-image-picture cloudimage-image-\' + (isLoaded ? \'loaded\' : \'loading\')"\n style="display:block;width:100%;overflow:hidden;position:relative;"\n [style.paddingBottom]="getPicturePaddingBottom()"\n [style.background]="getPictureBackground()"\n #imgElem\n *ngIf="isProcessed">\n <source\n *ngFor="let source of getRestSources()"\n [media]="source.mediaQuery || \'\'"\n [attr.lazyLoad]="source.srcSet || \'\'"\n (load)="onImageLoad($event)"\n />\n <source\n *ngIf="getFirstSource()"\n [attr.lazyLoad]="firstSource.srcSet || \'\'"\n (load)="onImageLoad($event)"\n />\n <img\n style="display:block;width:100%;opacity:1;top:0;left:0;"\n [style.position]="getPositionStyle()"\n [style.height]="getImgHeight()"\n [style.transform]="getTransformStyle()"\n [style.transition]="getTransitionStyle()"\n [style.filter]="getFilterStyle()"\n (load)="onImageLoad($event)"\n [lazyLoad]="!isPreview ? cloudimageUrl : (isPreviewLoaded ? cloudimageUrl : previewCloudimageUrl)"\n [offset]="offset"\n [alt]="">\n </picture>\n </ng-container>\n <div *ngSwitchCase="false">\n <picture\n [class]="class + \' cloudimage-image-picture cloudimage-image-\' + (isLoaded ? \'loaded\' : \'loading\')"\n style="display:block;width:100%;overflow:hidden;position:relative;"\n [style.paddingBottom]="getPicturePaddingBottom()"\n [style.background]="getPictureBackground()"\n #imgElem\n *ngIf="isProcessed">\n <source\n *ngFor="let source of restSources"\n [media]="source.mediaQuery || \'\'"\n [srcset]="source.srcSet || \'\'"\n (load)="onImageLoad($event)"\n />\n <source\n *ngIf="firstSource"\n [srcset]="firstSource.srcSet || \'\'"\n (load)="onImageLoad($event)"\n />\n <img\n style="display:block;width:100%;opacity:1;top:0;left:0;"\n [style.position]="getPositionStyle()"\n [style.height]="getImgHeight()"\n [style.transform]="getTransformStyle()"\n [style.transition]="getTransitionStyle()"\n [style.filter]="getFilterStyle()"\n (load)="onImageLoad($event)"\n [src]="!isPreview ? cloudimageUrl : (isPreviewLoaded ? cloudimageUrl : previewCloudimageUrl)"\n [alt]="">\n </picture>\n </div>\n </ng-container>\n '}]}],g.ctorParameters=function(){return[{type:d},{type:i.DomSanitizer},{type:r.ChangeDetectorRef}]},g.propDecorators={imgElem:[{type:r.ViewChild,args:["imgElem"]}],pictureElem:[{type:r.ViewChild,args:["pictureElem"]}],src:[{type:r.Input}],"class":[{type:r.Input}],alt:[{type:r.Input}],operation:[{type:r.Input}],o:[{type:r.Input}],size:[{type:r.Input}],s:[{type:r.Input}],filters:[{type:r.Input}],f:[{type:r.Input}],ratio:[{type:r.Input}],offset:[{type:r.Input}],ngSwitch:[{type:r.Input}],imageLoaded:[{type:r.Output}]},g);function g(e,t,i){this.ciService=e,this._sanitizer=t,this.cd=i,this["class"]="",this.offset=100,this.imageLoaded=new r.EventEmitter,this.cloudimageUrl="",this.sources=[],this.firstSource=null,this.restSources=[],this.isLoaded=!1,this.isProcessed=!1,this.windowInnerWidth=window.innerWidth,this.lazyLoading=e.config.lazyLoading}var h=(f.decorators=[{type:r.NgModule,args:[{declarations:[p],imports:[t.CommonModule,s.LazyLoadImageModule],exports:[p],providers:[]}]}],f);function f(){}e.CIService=d,e.CIConfig=l,e.CIModule=h,e.ImgComponent=p,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ng-cloudimage-responsive.umd.min.js.map
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ export class CIConfig {

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -315,4 +315,4 @@ import { Component, Input, ViewChild, ElementRef, EventEmitter, Output, ChangeDetectorRef } from '@angular/core';

ImgComponent.propDecorators = {
imgElem: [{ type: ViewChild, args: ['imgElem', { static: false },] }],
pictureElem: [{ type: ViewChild, args: ['pictureElem', { static: false },] }],
imgElem: [{ type: ViewChild, args: ['imgElem',] }],
pictureElem: [{ type: ViewChild, args: ['pictureElem',] }],
src: [{ type: Input }],

@@ -419,2 +419,2 @@ class: [{ type: Input }],

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWNsb3VkaW1hZ2UtcmVzcG9uc2l2ZS8iLCJzb3VyY2VzIjpbImxpYi9pbWcvaW1nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFBeUIsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQWEsWUFBWSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFDbkgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsU0FBUyxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUEwRTVDLE1BQU0sT0FBTyxZQUFZOzs7Ozs7SUFzQ3ZCLFlBQ1UsU0FBb0IsRUFDcEIsVUFBd0IsRUFDeEIsRUFBcUI7UUFGckIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBckN0QixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBU25CLFdBQU0sR0FBRyxHQUFHLENBQUM7UUFFWixnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBSW5FLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBWXBCLHFCQUFnQixHQUFXLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFPM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsTUFB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QUFxQjs7SUFDckIsaUNBQTJCOztJQUMzQix5QkFBbUI7O0lBQ25CLDRCQUEyQjs7SUFDM0IseUJBQXdCOztJQUN4QiwrQkFBeUI7O0lBQ3pCLHlCQUFtQjs7SUFDbkIsNkJBQXVCOztJQUN2Qiw4QkFBc0I7O0lBQ3RCLGdDQUF1Qjs7SUFDdkIsbUNBQW1FOztJQUVuRSx5Q0FBcUM7O0lBQ3JDLDJDQUFrQzs7SUFDbEMscUNBQW1COztJQUNuQiwrQkFBYTs7SUFDYixtQ0FBbUI7O0lBQ25CLG1DQUFpQjs7SUFDakIsZ0NBQWlCOztJQUNqQixtQ0FBb0I7O0lBQ3BCLGlDQUFtQjs7SUFDbkIsNENBQTZCOztJQUM3QixzQ0FBdUI7O0lBQ3ZCLGtDQUFvQjs7SUFDcEIsa0NBQW1COztJQUNuQiw0Q0FBNkI7O0lBQzdCLHVDQUF5Qjs7SUFDekIsK0JBQWlCOztJQUNqQixtQ0FBb0I7O0lBQ3BCLG1DQUFxQjs7SUFDckIsbUNBQW9COztJQUNwQix3Q0FBNkM7Ozs7O0lBRzNDLGlDQUE0Qjs7Ozs7SUFDNUIsa0NBQWdDOzs7OztJQUNoQywwQkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NJU2VydmljZX0gZnJvbSAnLi4vbGliLnNlcnZpY2UnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtmcm9tRXZlbnQsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjaS1pbWcnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxwaWN0dXJlICNwaWN0dXJlRWxlbSAqbmdJZj1cIiFpc1Byb2Nlc3NlZFwiPjwvcGljdHVyZT5cblxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImxhenlMb2FkaW5nXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XG4gICAgICAgIDxwaWN0dXJlXG4gICAgICAgICAgW2NsYXNzXT1cImNsYXNzICsgJyBjbG91ZGltYWdlLWltYWdlLXBpY3R1cmUgY2xvdWRpbWFnZS1pbWFnZS0nICsgKGlzTG9hZGVkID8gJ2xvYWRlZCcgOiAnbG9hZGluZycpXCJcbiAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7XCJcbiAgICAgICAgICBbc3R5bGUucGFkZGluZ0JvdHRvbV09XCJnZXRQaWN0dXJlUGFkZGluZ0JvdHRvbSgpXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRQaWN0dXJlQmFja2dyb3VuZCgpXCJcbiAgICAgICAgICAjaW1nRWxlbVxuICAgICAgICAgICpuZ0lmPVwiaXNQcm9jZXNzZWRcIj5cbiAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc291cmNlIG9mIGdldFJlc3RTb3VyY2VzKClcIlxuICAgICAgICAgICAgW21lZGlhXT1cInNvdXJjZS5tZWRpYVF1ZXJ5IHx8ICcnXCJcbiAgICAgICAgICAgIFthdHRyLmxhenlMb2FkXT1cInNvdXJjZS5zcmNTZXQgfHwgJydcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAqbmdJZj1cImdldEZpcnN0U291cmNlKClcIlxuICAgICAgICAgICAgW2F0dHIubGF6eUxvYWRdPVwiZmlyc3RTb3VyY2Uuc3JjU2V0IHx8ICcnXCJcbiAgICAgICAgICAgIChsb2FkKT1cIm9uSW1hZ2VMb2FkKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7b3BhY2l0eToxO3RvcDowO2xlZnQ6MDtcIlxuICAgICAgICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cImdldFBvc2l0aW9uU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImdldEltZ0hlaWdodCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNmb3JtU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUudHJhbnNpdGlvbl09XCJnZXRUcmFuc2l0aW9uU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUuZmlsdGVyXT1cImdldEZpbHRlclN0eWxlKClcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbGF6eUxvYWRdPVwiIWlzUHJldmlldyA/IGNsb3VkaW1hZ2VVcmwgOiAoaXNQcmV2aWV3TG9hZGVkID8gY2xvdWRpbWFnZVVybCA6IHByZXZpZXdDbG91ZGltYWdlVXJsKVwiXG4gICAgICAgICAgICBbb2Zmc2V0XT1cIm9mZnNldFwiXG4gICAgICAgICAgICBbYWx0XT1cIlwiPlxuICAgICAgICA8L3BpY3R1cmU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCI+XG4gICAgICAgIDxwaWN0dXJlXG4gICAgICAgICAgW2NsYXNzXT1cImNsYXNzICsgJyBjbG91ZGltYWdlLWltYWdlLXBpY3R1cmUgY2xvdWRpbWFnZS1pbWFnZS0nICsgKGlzTG9hZGVkID8gJ2xvYWRlZCcgOiAnbG9hZGluZycpXCJcbiAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7XCJcbiAgICAgICAgICBbc3R5bGUucGFkZGluZ0JvdHRvbV09XCJnZXRQaWN0dXJlUGFkZGluZ0JvdHRvbSgpXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRQaWN0dXJlQmFja2dyb3VuZCgpXCJcbiAgICAgICAgICAjaW1nRWxlbVxuICAgICAgICAgICpuZ0lmPVwiaXNQcm9jZXNzZWRcIj5cbiAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc291cmNlIG9mIHJlc3RTb3VyY2VzXCJcbiAgICAgICAgICAgIFttZWRpYV09XCJzb3VyY2UubWVkaWFRdWVyeSB8fCAnJ1wiXG4gICAgICAgICAgICBbc3Jjc2V0XT1cInNvdXJjZS5zcmNTZXQgfHwgJydcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAqbmdJZj1cImZpcnN0U291cmNlXCJcbiAgICAgICAgICAgIFtzcmNzZXRdPVwiZmlyc3RTb3VyY2Uuc3JjU2V0IHx8ICcnXCJcbiAgICAgICAgICAgIChsb2FkKT1cIm9uSW1hZ2VMb2FkKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7b3BhY2l0eToxO3RvcDowO2xlZnQ6MDtcIlxuICAgICAgICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cImdldFBvc2l0aW9uU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImdldEltZ0hlaWdodCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNmb3JtU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUudHJhbnNpdGlvbl09XCJnZXRUcmFuc2l0aW9uU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUuZmlsdGVyXT1cImdldEZpbHRlclN0eWxlKClcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbc3JjXT1cIiFpc1ByZXZpZXcgPyBjbG91ZGltYWdlVXJsIDogKGlzUHJldmlld0xvYWRlZCA/IGNsb3VkaW1hZ2VVcmwgOiBwcmV2aWV3Q2xvdWRpbWFnZVVybClcIlxuICAgICAgICAgICAgW2FsdF09XCJcIj5cbiAgICAgICAgPC9waWN0dXJlPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgSW1nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdpbWdFbGVtJywge3N0YXRpYzogZmFsc2V9KSBpbWdFbGVtOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwaWN0dXJlRWxlbScsIHtzdGF0aWM6IGZhbHNlfSkgcGljdHVyZUVsZW06IEVsZW1lbnRSZWY7XG4gIEBJbnB1dCgpIHNyYzogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGFsdDogc3RyaW5nO1xuICBASW5wdXQoKSBvcGVyYXRpb246IHN0cmluZztcbiAgQElucHV0KCkgbzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBzdHJpbmcgfCB7fTtcbiAgQElucHV0KCkgczogc3RyaW5nIHwge307XG4gIEBJbnB1dCgpIGZpbHRlcnM6IHN0cmluZztcbiAgQElucHV0KCkgZjogc3RyaW5nO1xuICBASW5wdXQoKSByYXRpbzogbnVtYmVyO1xuICBASW5wdXQoKSBvZmZzZXQgPSAxMDA7XG4gIEBJbnB1dCgpIG5nU3dpdGNoOiBhbnk7XG4gIEBPdXRwdXQoKSBpbWFnZUxvYWRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICByZXNpemVPYnNlcnZhYmxlJDogT2JzZXJ2YWJsZTxFdmVudD47XG4gIHJlc2l6ZVN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbjtcbiAgY2xvdWRpbWFnZVVybCA9ICcnO1xuICBzb3VyY2VzID0gW107XG4gIGZpcnN0U291cmNlID0gbnVsbDtcbiAgcmVzdFNvdXJjZXMgPSBbXTtcbiAgaXNMb2FkZWQgPSBmYWxzZTtcbiAgaXNQcm9jZXNzZWQgPSBmYWxzZTtcbiAgaXNQcmV2aWV3OiBib29sZWFuO1xuICBwcmV2aWV3Q2xvdWRpbWFnZVVybDogc3RyaW5nO1xuICBwcmV2aWV3U291cmNlczogc3RyaW5nO1xuICBpc0FkYXB0aXZlOiBib29sZWFuO1xuICBhY3R1YWxTaXplOiBzdHJpbmc7XG4gIHBhcmVudENvbnRhaW5lcldpZHRoOiBzdHJpbmc7XG4gIGlzUHJldmlld0xvYWRlZDogYm9vbGVhbjtcbiAgaXNSYXRpbzogYm9vbGVhbjtcbiAgcmF0aW9CeVNpemU6IG51bWJlcjtcbiAgbGF6eUxvYWRpbmc6IGJvb2xlYW47XG4gIGltYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHdpbmRvd0lubmVyV2lkdGg6IG51bWJlciA9IHdpbmRvdy5pbm5lcldpZHRoO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2lTZXJ2aWNlOiBDSVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMubGF6eUxvYWRpbmcgPSBjaVNlcnZpY2UuY29uZmlnLmxhenlMb2FkaW5nO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24kLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmFibGUkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpO1xuICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uJCA9IHRoaXMucmVzaXplT2JzZXJ2YWJsZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzQWRhcHRpdmUgfHwgdGhpcy53aW5kb3dJbm5lcldpZHRoIDwgd2luZG93LmlubmVyV2lkdGgpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzSW1hZ2UoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMud2luZG93SW5uZXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucHJvY2Vzc0ltYWdlKCk7XG4gIH1cblxuICBwcm9jZXNzSW1hZ2UoKSB7XG4gICAgY29uc3QgaW1nTm9kZSA9ICh0aGlzLmltZ0VsZW0gfHwgdGhpcy5waWN0dXJlRWxlbSkubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB7Y29uZmlnID0ge319ID0gdGhpcy5jaVNlcnZpY2U7XG4gICAgY29uc3Qge3ByZXZpZXdRdWFsaXR5RmFjdG9yfSA9IGNvbmZpZztcbiAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLm9wZXJhdGlvbiB8fCB0aGlzLm8gfHwgY29uZmlnLm9wZXJhdGlvbjtcbiAgICBjb25zdCBwYXJlbnRDb250YWluZXJXaWR0aCA9IHRoaXMuY2lTZXJ2aWNlLmdldFBhcmVudFdpZHRoKGltZ05vZGUsIGNvbmZpZyk7XG4gICAgbGV0IHNpemUgPSB0aGlzLnNpemUgfHwgdGhpcy5zIHx8IGNvbmZpZy5zaXplIHx8IHBhcmVudENvbnRhaW5lcldpZHRoO1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRlcnMgfHwgdGhpcy5mIHx8IGNvbmZpZy5maWx0ZXJzO1xuICAgIGNvbnN0IGlzQWRhcHRpdmUgPSB0aGlzLmNpU2VydmljZS5jaGVja09uTWVkaWEoc2l6ZSk7XG5cbiAgICBzaXplID0gaXNBZGFwdGl2ZSA/IHRoaXMuY2lTZXJ2aWNlLmdldEFkYXB0aXZlU2l6ZShzaXplLCBjb25maWcpIDogc2l6ZTtcblxuICAgIGNvbnN0IGlzUmVsYXRpdmVVcmxQYXRoID0gdGhpcy5jaVNlcnZpY2UuY2hlY2tJZlJlbGF0aXZlVXJsUGF0aCh0aGlzLnNyYyk7XG4gICAgY29uc3QgaW1nU3JjID0gdGhpcy5jaVNlcnZpY2UuZ2V0SW1nU3JjKHRoaXMuc3JjLCBpc1JlbGF0aXZlVXJsUGF0aCwgY29uZmlnLmJhc2VVcmwpO1xuICAgIGNvbnN0IHJlc3VsdFNpemUgPSBpc0FkYXB0aXZlID8gc2l6ZSA6IHRoaXMuY2lTZXJ2aWNlLmdldFNpemVBY2NvcmRpbmdUb1BpeGVsUmF0aW8oc2l6ZSk7XG4gICAgdGhpcy5pc1ByZXZpZXcgPSAhY29uZmlnLmlzQ2hyb21lICYmIChwYXJlbnRDb250YWluZXJXaWR0aCA+IDQwMCkgJiYgY29uZmlnLmxhenlMb2FkaW5nO1xuICAgIHRoaXMuY2xvdWRpbWFnZVVybCA9IGlzQWRhcHRpdmUgP1xuICAgICAgdGhpcy5jaVNlcnZpY2UuZ2VuZXJhdGVVcmwoJ3dpZHRoJywgdGhpcy5jaVNlcnZpY2UuZ2V0U2l6ZUFjY29yZGluZ1RvUGl4ZWxSYXRpbyhwYXJlbnRDb250YWluZXJXaWR0aCksIGZpbHRlcnMsIGltZ1NyYywgY29uZmlnKSA6XG4gICAgICB0aGlzLmNpU2VydmljZS5nZW5lcmF0ZVVybChvcGVyYXRpb24sIHJlc3VsdFNpemUsIGZpbHRlcnMsIGltZ1NyYywgY29uZmlnKTtcbiAgICB0aGlzLnNvdXJjZXMgPSBpc0FkYXB0aXZlID9cbiAgICAgIHRoaXMuY2lTZXJ2aWNlLmdlbmVyYXRlU291cmNlcyhvcGVyYXRpb24sIHJlc3VsdFNpemUsIGZpbHRlcnMsIGltZ1NyYywgaXNBZGFwdGl2ZSwgY29uZmlnLCBmYWxzZSkgOiBbXTtcbiAgICBsZXQgcHJldmlld0Nsb3VkaW1hZ2VVcmwsIHByZXZpZXdTb3VyY2VzO1xuXG4gICAgaWYgKHRoaXMuaXNQcmV2aWV3KSB7XG4gICAgICBjb25zdCBwcmV2aWV3Q29uZmlnID0gey4uLmNvbmZpZywgcXVlcnlTdHJpbmc6ICcnfTtcbiAgICAgIHByZXZpZXdDbG91ZGltYWdlVXJsID0gaXNBZGFwdGl2ZSA/XG4gICAgICAgIHRoaXMuY2lTZXJ2aWNlLmdlbmVyYXRlVXJsKCd3aWR0aCcsIChNYXRoLmZsb29yKHBhcmVudENvbnRhaW5lcldpZHRoIC8gcHJldmlld1F1YWxpdHlGYWN0b3IpKSwgZmlsdGVycywgaW1nU3JjLCBwcmV2aWV3Q29uZmlnKSA6XG4gICAgICAgIHRoaXMuY2lTZXJ2aWNlLmdlbmVyYXRlVXJsKFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICByZXN1bHRTaXplLnNwbGl0KCd4JykubWFwKGl0ZW0gPT4gTWF0aC5mbG9vcihpdGVtIC8gcHJldmlld1F1YWxpdHlGYWN0b3IpKS5qb2luKCd4JyksXG4gICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICBpbWdTcmMsXG4gICAgICAgICAgcHJldmlld0NvbmZpZ1xuICAgICAgICApO1xuICAgICAgcHJldmlld1NvdXJjZXMgPSBpc0FkYXB0aXZlID9cbiAgICAgICAgdGhpcy5jaVNlcnZpY2UuZ2VuZXJhdGVTb3VyY2VzKG9wZXJhdGlvbiwgcmVzdWx0U2l6ZSwgZmlsdGVycywgaW1nU3JjLCBpc0FkYXB0aXZlLCBwcmV2aWV3Q29uZmlnLCB0cnVlKSA6IFtdO1xuICAgIH1cblxuICAgIHRoaXMucHJldmlld0Nsb3VkaW1hZ2VVcmwgPSBwcmV2aWV3Q2xvdWRpbWFnZVVybDtcbiAgICB0aGlzLnByZXZpZXdTb3VyY2VzID0gcHJldmlld1NvdXJjZXM7XG4gICAgdGhpcy5pc0FkYXB0aXZlID0gaXNBZGFwdGl2ZTtcbiAgICB0aGlzLmFjdHVhbFNpemUgPSBzaXplO1xuICAgIHRoaXMucGFyZW50Q29udGFpbmVyV2lkdGggPSBwYXJlbnRDb250YWluZXJXaWR0aDtcbiAgICBjb25zdCByYXRpb0J5U2l6ZSA9IHRoaXMuY2lTZXJ2aWNlLmdldFJhdGlvQnlTaXplKHNpemUsIGNvbmZpZyk7XG4gICAgdGhpcy5pbWFnZUhlaWdodCA9IE1hdGguZmxvb3IocGFyZW50Q29udGFpbmVyV2lkdGggLyAocmF0aW9CeVNpemUgfHwgdGhpcy5yYXRpbyB8fCAxLjUpKTtcbiAgICB0aGlzLmlzUmF0aW8gPSAhIShyYXRpb0J5U2l6ZSB8fCB0aGlzLnJhdGlvKTtcbiAgICB0aGlzLnJhdGlvQnlTaXplID0gcmF0aW9CeVNpemU7XG5cbiAgICB0aGlzLmlzUHJvY2Vzc2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uSW1hZ2VMb2FkKCRldmVudCkge1xuICAgIGlmICghdGhpcy5pc1ByZXZpZXcpIHtcbiAgICAgIHRoaXMuaXNQcmV2aWV3TG9hZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1ByZXZpZXdMb2FkZWQpIHtcbiAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzUHJldmlld0xvYWRlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuaW1hZ2VMb2FkZWQuZW1pdCgkZXZlbnQpO1xuICB9XG5cbiAgZ2V0UmVzdFNvdXJjZXMoKSB7XG4gICAgY29uc3QgcmVzdWx0U291cmNlcyA9IFsuLi4oIXRoaXMuaXNQcmV2aWV3ID8gdGhpcy5zb3VyY2VzIDogKHRoaXMuaXNQcmV2aWV3TG9hZGVkID8gdGhpcy5zb3VyY2VzIDogdGhpcy5wcmV2aWV3U291cmNlcykpXTtcblxuICAgIHJldHVybiByZXN1bHRTb3VyY2VzLnNsaWNlKDEpLnJldmVyc2UoKTtcbiAgfVxuXG4gIGdldEZpcnN0U291cmNlKCkge1xuICAgIGNvbnN0IHJlc3VsdFNvdXJjZXMgPSBbLi4uKCF0aGlzLmlzUHJldmlldyA/IHRoaXMuc291cmNlcyA6ICh0aGlzLmlzUHJldmlld0xvYWRlZCA/IHRoaXMuc291cmNlcyA6IHRoaXMucHJldmlld1NvdXJjZXMpKV07XG4gICAgdGhpcy5maXJzdFNvdXJjZSA9IHJlc3VsdFNvdXJjZXNbMF07XG5cbiAgICByZXR1cm4gcmVzdWx0U291cmNlc1swXTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uU3R5bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodGhpcy5pc1JhdGlvID8gJ2Fic29sdXRlJyA6ICdyZWxhdGl2ZScpO1xuICB9XG5cbiAgZ2V0SW1nSGVpZ2h0KCkge1xuICAgIC8vIHRvZG8gY2hlY2sgaWYgd2UgbmVlZCAxMDAlIGhlaWdodFxuICAgIC8vIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHRoaXMuaXNSYXRpbyA/ICcxMDAlJyA6ICdhdXRvJyk7XG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodGhpcy5pc1JhdGlvID8gJ2F1dG8nIDogJ2F1dG8nKTtcbiAgfVxuXG4gIGdldFRyYW5zZm9ybVN0eWxlKCkge1xuICAgIGNvbnN0IHtjb25maWd9ID0gdGhpcy5jaVNlcnZpY2U7XG4gICAgbGV0IHJlc3VsdCA9ICdub25lJztcblxuICAgIGlmIChjb25maWcuaW1nTG9hZGluZ0FuaW1hdGlvbikge1xuICAgICAgcmVzdWx0ID0gJ3NjYWxlM2QoMS4xLCAxLjEsIDEpJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0xvYWRlZCAmJiBjb25maWcuaW1nTG9hZGluZ0FuaW1hdGlvbikge1xuICAgICAgcmVzdWx0ID0gJ3RyYW5zbGF0ZVooMCkgc2NhbGUzZCgxLCAxLCAxKSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUocmVzdWx0KTtcbiAgfVxuXG4gIGdldFRyYW5zaXRpb25TdHlsZSgpIHtcbiAgICBjb25zdCB7Y29uZmlnfSA9IHRoaXMuY2lTZXJ2aWNlO1xuICAgIGxldCByZXN1bHQgPSAnbm9uZSc7XG5cbiAgICBpZiAodGhpcy5pc0xvYWRlZCAmJiBjb25maWcuaW1nTG9hZGluZ0FuaW1hdGlvbikge1xuICAgICAgcmVzdWx0ID0gJ2FsbCAwLjNzIGVhc2UtaW4tb3V0JztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShyZXN1bHQpO1xuICB9XG5cbiAgZ2V0RmlsdGVyU3R5bGUoKSB7XG4gICAgY29uc3Qge2NvbmZpZ30gPSB0aGlzLmNpU2VydmljZTtcbiAgICBsZXQgcmVzdWx0ID0gJ25vbmUnO1xuXG4gICAgaWYgKGNvbmZpZy5pbWdMb2FkaW5nQW5pbWF0aW9uKSB7XG4gICAgICByZXN1bHQgPSBgYmx1cigke01hdGguZmxvb3IocGFyc2VJbnQodGhpcy5wYXJlbnRDb250YWluZXJXaWR0aCwgMTApIC8gMTAwKX1weClgO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTG9hZGVkICYmIGNvbmZpZy5pbWdMb2FkaW5nQW5pbWF0aW9uKSB7XG4gICAgICByZXN1bHQgPSAnYmx1cigwcHgpJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShyZXN1bHQpO1xuICB9XG5cbiAgZ2V0UGljdHVyZVBhZGRpbmdCb3R0b20oKSB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuXG4gICAgaWYgKHRoaXMuaXNSYXRpbykge1xuICAgICAgcmVzdWx0ID0gKDEwMCAvICh0aGlzLnJhdGlvQnlTaXplIHx8IHRoaXMucmF0aW8pKSArICclJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShyZXN1bHQpO1xuICB9XG5cbiAgZ2V0UGljdHVyZUJhY2tncm91bmQoKSB7XG4gICAgY29uc3Qge2NvbmZpZ30gPSB0aGlzLmNpU2VydmljZTtcbiAgICBsZXQgcmVzdWx0ID0gJ3RyYW5zcGFyZW50JztcblxuICAgIGlmICh0aGlzLmlzUmF0aW8gJiYgIXRoaXMuaXNQcmV2aWV3TG9hZGVkICYmICF0aGlzLmlzTG9hZGVkKSB7XG4gICAgICByZXN1bHQgPSBjb25maWcucGxhY2Vob2xkZXJCYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHJlc3VsdCk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWNsb3VkaW1hZ2UtcmVzcG9uc2l2ZS8iLCJzb3VyY2VzIjpbImxpYi9pbWcvaW1nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFBeUIsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQWEsWUFBWSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFDbkgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsU0FBUyxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUEwRTVDLE1BQU0sT0FBTyxZQUFZOzs7Ozs7SUFzQ3ZCLFlBQ1UsU0FBb0IsRUFDcEIsVUFBd0IsRUFDeEIsRUFBcUI7UUFGckIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBckN0QixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBU25CLFdBQU0sR0FBRyxHQUFHLENBQUM7UUFFWixnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFBO1FBSWxFLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBWXBCLHFCQUFnQixHQUFXLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFPM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsTUFB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O0lBQ3hCLCtCQUF5Qjs7SUFDekIseUJBQW1COztJQUNuQiw2QkFBdUI7O0lBQ3ZCLDhCQUFzQjs7SUFDdEIsZ0NBQXVCOztJQUN2QixtQ0FBa0U7O0lBRWxFLHlDQUFxQzs7SUFDckMsMkNBQWtDOztJQUNsQyxxQ0FBbUI7O0lBQ25CLCtCQUFhOztJQUNiLG1DQUFtQjs7SUFDbkIsbUNBQWlCOztJQUNqQixnQ0FBaUI7O0lBQ2pCLG1DQUFvQjs7SUFDcEIsaUNBQW1COztJQUNuQiw0Q0FBNkI7O0lBQzdCLHNDQUF1Qjs7SUFDdkIsa0NBQW9COztJQUNwQixrQ0FBbUI7O0lBQ25CLDRDQUE2Qjs7SUFDN0IsdUNBQXlCOztJQUN6QiwrQkFBaUI7O0lBQ2pCLG1DQUFvQjs7SUFDcEIsbUNBQXFCOztJQUNyQixtQ0FBb0I7O0lBQ3BCLHdDQUE2Qzs7Ozs7SUFHM0MsaUNBQTRCOzs7OztJQUM1QixrQ0FBZ0M7Ozs7O0lBQ2hDLDBCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q0lTZXJ2aWNlfSBmcm9tICcuLi9saWIuc2VydmljZSc7XG5pbXBvcnQge0RvbVNhbml0aXplcn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge2Zyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NpLWltZycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHBpY3R1cmUgI3BpY3R1cmVFbGVtICpuZ0lmPVwiIWlzUHJvY2Vzc2VkXCI+PC9waWN0dXJlPlxuXG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibGF6eUxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInRydWVcIj5cbiAgICAgICAgPHBpY3R1cmVcbiAgICAgICAgICBbY2xhc3NdPVwiY2xhc3MgKyAnIGNsb3VkaW1hZ2UtaW1hZ2UtcGljdHVyZSBjbG91ZGltYWdlLWltYWdlLScgKyAoaXNMb2FkZWQgPyAnbG9hZGVkJyA6ICdsb2FkaW5nJylcIlxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtcIlxuICAgICAgICAgIFtzdHlsZS5wYWRkaW5nQm90dG9tXT1cImdldFBpY3R1cmVQYWRkaW5nQm90dG9tKClcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImdldFBpY3R1cmVCYWNrZ3JvdW5kKClcIlxuICAgICAgICAgICNpbWdFbGVtXG4gICAgICAgICAgKm5nSWY9XCJpc1Byb2Nlc3NlZFwiPlxuICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzb3VyY2Ugb2YgZ2V0UmVzdFNvdXJjZXMoKVwiXG4gICAgICAgICAgICBbbWVkaWFdPVwic291cmNlLm1lZGlhUXVlcnkgfHwgJydcIlxuICAgICAgICAgICAgW2F0dHIubGF6eUxvYWRdPVwic291cmNlLnNyY1NldCB8fCAnJ1wiXG4gICAgICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICpuZ0lmPVwiZ2V0Rmlyc3RTb3VyY2UoKVwiXG4gICAgICAgICAgICBbYXR0ci5sYXp5TG9hZF09XCJmaXJzdFNvdXJjZS5zcmNTZXQgfHwgJydcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtvcGFjaXR5OjE7dG9wOjA7bGVmdDowO1wiXG4gICAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiZ2V0UG9zaXRpb25TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiZ2V0SW1nSGVpZ2h0KClcIlxuICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJnZXRUcmFuc2Zvcm1TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2l0aW9uXT1cImdldFRyYW5zaXRpb25TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5maWx0ZXJdPVwiZ2V0RmlsdGVyU3R5bGUoKVwiXG4gICAgICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtsYXp5TG9hZF09XCIhaXNQcmV2aWV3ID8gY2xvdWRpbWFnZVVybCA6IChpc1ByZXZpZXdMb2FkZWQgPyBjbG91ZGltYWdlVXJsIDogcHJldmlld0Nsb3VkaW1hZ2VVcmwpXCJcbiAgICAgICAgICAgIFtvZmZzZXRdPVwib2Zmc2V0XCJcbiAgICAgICAgICAgIFthbHRdPVwiXCI+XG4gICAgICAgIDwvcGljdHVyZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIj5cbiAgICAgICAgPHBpY3R1cmVcbiAgICAgICAgICBbY2xhc3NdPVwiY2xhc3MgKyAnIGNsb3VkaW1hZ2UtaW1hZ2UtcGljdHVyZSBjbG91ZGltYWdlLWltYWdlLScgKyAoaXNMb2FkZWQgPyAnbG9hZGVkJyA6ICdsb2FkaW5nJylcIlxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtcIlxuICAgICAgICAgIFtzdHlsZS5wYWRkaW5nQm90dG9tXT1cImdldFBpY3R1cmVQYWRkaW5nQm90dG9tKClcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImdldFBpY3R1cmVCYWNrZ3JvdW5kKClcIlxuICAgICAgICAgICNpbWdFbGVtXG4gICAgICAgICAgKm5nSWY9XCJpc1Byb2Nlc3NlZFwiPlxuICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzb3VyY2Ugb2YgcmVzdFNvdXJjZXNcIlxuICAgICAgICAgICAgW21lZGlhXT1cInNvdXJjZS5tZWRpYVF1ZXJ5IHx8ICcnXCJcbiAgICAgICAgICAgIFtzcmNzZXRdPVwic291cmNlLnNyY1NldCB8fCAnJ1wiXG4gICAgICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICpuZ0lmPVwiZmlyc3RTb3VyY2VcIlxuICAgICAgICAgICAgW3NyY3NldF09XCJmaXJzdFNvdXJjZS5zcmNTZXQgfHwgJydcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtvcGFjaXR5OjE7dG9wOjA7bGVmdDowO1wiXG4gICAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiZ2V0UG9zaXRpb25TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiZ2V0SW1nSGVpZ2h0KClcIlxuICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJnZXRUcmFuc2Zvcm1TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2l0aW9uXT1cImdldFRyYW5zaXRpb25TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5maWx0ZXJdPVwiZ2V0RmlsdGVyU3R5bGUoKVwiXG4gICAgICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtzcmNdPVwiIWlzUHJldmlldyA/IGNsb3VkaW1hZ2VVcmwgOiAoaXNQcmV2aWV3TG9hZGVkID8gY2xvdWRpbWFnZVVybCA6IHByZXZpZXdDbG91ZGltYWdlVXJsKVwiXG4gICAgICAgICAgICBbYWx0XT1cIlwiPlxuICAgICAgICA8L3BpY3R1cmU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBJbWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2ltZ0VsZW0nKSBpbWdFbGVtOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwaWN0dXJlRWxlbScpIHBpY3R1cmVFbGVtOiBFbGVtZW50UmVmO1xuICBASW5wdXQoKSBzcmM6IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBhbHQ6IHN0cmluZztcbiAgQElucHV0KCkgb3BlcmF0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG86IHN0cmluZztcbiAgQElucHV0KCkgc2l6ZTogc3RyaW5nIHwge307XG4gIEBJbnB1dCgpIHM6IHN0cmluZyB8IHt9O1xuICBASW5wdXQoKSBmaWx0ZXJzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGY6IHN0cmluZztcbiAgQElucHV0KCkgcmF0aW86IG51bWJlcjtcbiAgQElucHV0KCkgb2Zmc2V0ID0gMTAwO1xuICBASW5wdXQoKSBuZ1N3aXRjaDogYW55O1xuICBAT3V0cHV0KCkgaW1hZ2VMb2FkZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcblxuICByZXNpemVPYnNlcnZhYmxlJDogT2JzZXJ2YWJsZTxFdmVudD47XG4gIHJlc2l6ZVN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbjtcbiAgY2xvdWRpbWFnZVVybCA9ICcnO1xuICBzb3VyY2VzID0gW107XG4gIGZpcnN0U291cmNlID0gbnVsbDtcbiAgcmVzdFNvdXJjZXMgPSBbXTtcbiAgaXNMb2FkZWQgPSBmYWxzZTtcbiAgaXNQcm9jZXNzZWQgPSBmYWxzZTtcbiAgaXNQcmV2aWV3OiBib29sZWFuO1xuICBwcmV2aWV3Q2xvdWRpbWFnZVVybDogc3RyaW5nO1xuICBwcmV2aWV3U291cmNlczogc3RyaW5nO1xuICBpc0FkYXB0aXZlOiBib29sZWFuO1xuICBhY3R1YWxTaXplOiBzdHJpbmc7XG4gIHBhcmVudENvbnRhaW5lcldpZHRoOiBzdHJpbmc7XG4gIGlzUHJldmlld0xvYWRlZDogYm9vbGVhbjtcbiAgaXNSYXRpbzogYm9vbGVhbjtcbiAgcmF0aW9CeVNpemU6IG51bWJlcjtcbiAgbGF6eUxvYWRpbmc6IGJvb2xlYW47XG4gIGltYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHdpbmRvd0lubmVyV2lkdGg6IG51bWJlciA9IHdpbmRvdy5pbm5lcldpZHRoO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2lTZXJ2aWNlOiBDSVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMubGF6eUxvYWRpbmcgPSBjaVNlcnZpY2UuY29uZmlnLmxhenlMb2FkaW5nO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24kLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmFibGUkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpO1xuICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uJCA9IHRoaXMucmVzaXplT2JzZXJ2YWJsZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzQWRhcHRpdmUgfHwgdGhpcy53aW5kb3dJbm5lcldpZHRoIDwgd2luZG93LmlubmVyV2lkdGgpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzSW1hZ2UoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMud2luZG93SW5uZXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucHJvY2Vzc0ltYWdlKCk7XG4gIH1cblxuICBwcm9jZXNzSW1hZ2UoKSB7XG4gICAgY29uc3QgaW1nTm9kZSA9ICh0aGlzLmltZ0VsZW0gfHwgdGhpcy5waWN0dXJlRWxlbSkubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB7Y29uZmlnID0ge319ID0gdGhpcy5jaVNlcnZpY2U7XG4gICAgY29uc3QgeyBwcmV2aWV3UXVhbGl0eUZhY3RvciB9ID0gY29uZmlnO1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMub3BlcmF0aW9uIHx8IHRoaXMubyB8fCBjb25maWcub3BlcmF0aW9uO1xuICAgIGNvbnN0IHBhcmVudENvbnRhaW5lcldpZHRoID0gdGhpcy5jaVNlcnZpY2UuZ2V0UGFyZW50V2lkdGgoaW1nTm9kZSwgY29uZmlnKTtcbiAgICBsZXQgc2l6ZSA9IHRoaXMuc2l6ZSB8fCB0aGlzLnMgfHwgY29uZmlnLnNpemUgfHwgcGFyZW50Q29udGFpbmVyV2lkdGg7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZmlsdGVycyB8fCB0aGlzLmYgfHwgY29uZmlnLmZpbHRlcnM7XG4gICAgY29uc3QgaXNBZGFwdGl2ZSA9IHRoaXMuY2lTZXJ2aWNlLmNoZWNrT25NZWRpYShzaXplKTtcblxuICAgIHNpemUgPSBpc0FkYXB0aXZlID8gdGhpcy5jaVNlcnZpY2UuZ2V0QWRhcHRpdmVTaXplKHNpemUsIGNvbmZpZykgOiBzaXplO1xuXG4gICAgY29uc3QgaXNSZWxhdGl2ZVVybFBhdGggPSB0aGlzLmNpU2VydmljZS5jaGVja0lmUmVsYXRpdmVVcmxQYXRoKHRoaXMuc3JjKTtcbiAgICBjb25zdCBpbWdTcmMgPSB0aGlzLmNpU2VydmljZS5nZXRJbWdTcmModGhpcy5zcmMsIGlzUmVsYXRpdmVVcmxQYXRoLCBjb25maWcuYmFzZVVybCk7XG4gICAgY29uc3QgcmVzdWx0U2l6ZSA9IGlzQWRhcHRpdmUgPyBzaXplIDogdGhpcy5jaVNlcnZpY2UuZ2V0U2l6ZUFjY29yZGluZ1RvUGl4ZWxSYXRpbyhzaXplKTtcbiAgICB0aGlzLmlzUHJldmlldyA9ICFjb25maWcuaXNDaHJvbWUgJiYgKHBhcmVudENvbnRhaW5lcldpZHRoID4gNDAwKSAmJiBjb25maWcubGF6eUxvYWRpbmc7XG4gICAgdGhpcy5jbG91ZGltYWdlVXJsID0gaXNBZGFwdGl2ZSA/XG4gICAgICB0aGlzLmNpU2VydmljZS5nZW5lcmF0ZVVybCgnd2lkdGgnLCB0aGlzLmNpU2VydmljZS5nZXRTaXplQWNjb3JkaW5nVG9QaXhlbFJhdGlvKHBhcmVudENvbnRhaW5lcldpZHRoKSwgZmlsdGVycywgaW1nU3JjLCBjb25maWcpIDpcbiAgICAgIHRoaXMuY2lTZXJ2aWNlLmdlbmVyYXRlVXJsKG9wZXJhdGlvbiwgcmVzdWx0U2l6ZSwgZmlsdGVycywgaW1nU3JjLCBjb25maWcpO1xuICAgIHRoaXMuc291cmNlcyA9IGlzQWRhcHRpdmUgP1xuICAgICAgdGhpcy5jaVNlcnZpY2UuZ2VuZXJhdGVTb3VyY2VzKG9wZXJhdGlvbiwgcmVzdWx0U2l6ZSwgZmlsdGVycywgaW1nU3JjLCBpc0FkYXB0aXZlLCBjb25maWcsIGZhbHNlKSA6IFtdO1xuICAgIGxldCBwcmV2aWV3Q2xvdWRpbWFnZVVybCwgcHJldmlld1NvdXJjZXM7XG5cbiAgICBpZiAodGhpcy5pc1ByZXZpZXcpIHtcbiAgICAgIGNvbnN0IHByZXZpZXdDb25maWcgPSB7Li4uY29uZmlnLCBxdWVyeVN0cmluZzogJyd9O1xuICAgICAgcHJldmlld0Nsb3VkaW1hZ2VVcmwgPSBpc0FkYXB0aXZlID9cbiAgICAgICAgdGhpcy5jaVNlcnZpY2UuZ2VuZXJhdGVVcmwoJ3dpZHRoJywgKE1hdGguZmxvb3IocGFyZW50Q29udGFpbmVyV2lkdGggLyBwcmV2aWV3UXVhbGl0eUZhY3RvcikpLCBmaWx0ZXJzLCBpbWdTcmMsIHByZXZpZXdDb25maWcpIDpcbiAgICAgICAgdGhpcy5jaVNlcnZpY2UuZ2VuZXJhdGVVcmwob3BlcmF0aW9uLCByZXN1bHRTaXplLnNwbGl0KCd4JykubWFwKGl0ZW0gPT4gTWF0aC5mbG9vcihpdGVtIC8gcHJldmlld1F1YWxpdHlGYWN0b3IpKS5qb2luKCd4JyksIGZpbHRlcnMsIGltZ1NyYywgcHJldmlld0NvbmZpZyk7XG4gICAgICBwcmV2aWV3U291cmNlcyA9IGlzQWRhcHRpdmUgP1xuICAgICAgICB0aGlzLmNpU2VydmljZS5nZW5lcmF0ZVNvdXJjZXMob3BlcmF0aW9uLCByZXN1bHRTaXplLCBmaWx0ZXJzLCBpbWdTcmMsIGlzQWRhcHRpdmUsIHByZXZpZXdDb25maWcsIHRydWUpIDogW107XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2aWV3Q2xvdWRpbWFnZVVybCA9IHByZXZpZXdDbG91ZGltYWdlVXJsO1xuICAgIHRoaXMucHJldmlld1NvdXJjZXMgPSBwcmV2aWV3U291cmNlcztcbiAgICB0aGlzLmlzQWRhcHRpdmUgPSBpc0FkYXB0aXZlO1xuICAgIHRoaXMuYWN0dWFsU2l6ZSA9IHNpemU7XG4gICAgdGhpcy5wYXJlbnRDb250YWluZXJXaWR0aCA9IHBhcmVudENvbnRhaW5lcldpZHRoO1xuICAgIGNvbnN0IHJhdGlvQnlTaXplID0gdGhpcy5jaVNlcnZpY2UuZ2V0UmF0aW9CeVNpemUoc2l6ZSwgY29uZmlnKTtcbiAgICB0aGlzLmltYWdlSGVpZ2h0ID0gTWF0aC5mbG9vcihwYXJlbnRDb250YWluZXJXaWR0aCAvIChyYXRpb0J5U2l6ZSB8fCB0aGlzLnJhdGlvIHx8IDEuNSkpO1xuICAgIHRoaXMuaXNSYXRpbyA9ICEhKHJhdGlvQnlTaXplIHx8IHRoaXMucmF0aW8pO1xuICAgIHRoaXMucmF0aW9CeVNpemUgPSByYXRpb0J5U2l6ZTtcblxuICAgIHRoaXMuaXNQcm9jZXNzZWQgPSB0cnVlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25JbWFnZUxvYWQoJGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzUHJldmlldykge1xuICAgICAgdGhpcy5pc1ByZXZpZXdMb2FkZWQgPSB0cnVlO1xuICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzUHJldmlld0xvYWRlZCkge1xuICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNQcmV2aWV3TG9hZGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pbWFnZUxvYWRlZC5lbWl0KCRldmVudCk7XG4gIH1cblxuICBnZXRSZXN0U291cmNlcygpIHtcbiAgICBjb25zdCByZXN1bHRTb3VyY2VzID0gWy4uLighdGhpcy5pc1ByZXZpZXcgPyB0aGlzLnNvdXJjZXMgOiAodGhpcy5pc1ByZXZpZXdMb2FkZWQgPyB0aGlzLnNvdXJjZXMgOiB0aGlzLnByZXZpZXdTb3VyY2VzKSldO1xuXG4gICAgcmV0dXJuIHJlc3VsdFNvdXJjZXMuc2xpY2UoMSkucmV2ZXJzZSgpO1xuICB9XG5cbiAgZ2V0Rmlyc3RTb3VyY2UoKSB7XG4gICAgY29uc3QgcmVzdWx0U291cmNlcyA9IFsuLi4oIXRoaXMuaXNQcmV2aWV3ID8gdGhpcy5zb3VyY2VzIDogKHRoaXMuaXNQcmV2aWV3TG9hZGVkID8gdGhpcy5zb3VyY2VzIDogdGhpcy5wcmV2aWV3U291cmNlcykpXTtcbiAgICB0aGlzLmZpcnN0U291cmNlID0gcmVzdWx0U291cmNlc1swXTtcblxuICAgIHJldHVybiByZXN1bHRTb3VyY2VzWzBdO1xuICB9XG5cbiAgZ2V0UG9zaXRpb25TdHlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh0aGlzLmlzUmF0aW8gPyAnYWJzb2x1dGUnIDogJ3JlbGF0aXZlJyk7XG4gIH1cblxuICBnZXRJbWdIZWlnaHQoKSB7XG4gICAgLy8gdG9kbyBjaGVjayBpZiB3ZSBuZWVkIDEwMCUgaGVpZ2h0XG4gICAgLy8gcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodGhpcy5pc1JhdGlvID8gJzEwMCUnIDogJ2F1dG8nKTtcbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh0aGlzLmlzUmF0aW8gPyAnYXV0bycgOiAnYXV0bycpO1xuICB9XG5cbiAgZ2V0VHJhbnNmb3JtU3R5bGUoKSB7XG4gICAgY29uc3Qge2NvbmZpZ30gPSB0aGlzLmNpU2VydmljZTtcbiAgICBsZXQgcmVzdWx0ID0gJ25vbmUnO1xuXG4gICAgaWYgKGNvbmZpZy5pbWdMb2FkaW5nQW5pbWF0aW9uKSB7XG4gICAgICByZXN1bHQgPSAnc2NhbGUzZCgxLjEsIDEuMSwgMSknO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTG9hZGVkICYmIGNvbmZpZy5pbWdMb2FkaW5nQW5pbWF0aW9uKSB7XG4gICAgICByZXN1bHQgPSAndHJhbnNsYXRlWigwKSBzY2FsZTNkKDEsIDEsIDEpJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShyZXN1bHQpO1xuICB9XG5cbiAgZ2V0VHJhbnNpdGlvblN0eWxlKCkge1xuICAgIGNvbnN0IHtjb25maWd9ID0gdGhpcy5jaVNlcnZpY2U7XG4gICAgbGV0IHJlc3VsdCA9ICdub25lJztcblxuICAgIGlmICh0aGlzLmlzTG9hZGVkICYmIGNvbmZpZy5pbWdMb2FkaW5nQW5pbWF0aW9uKSB7XG4gICAgICByZXN1bHQgPSAnYWxsIDAuM3MgZWFzZS1pbi1vdXQnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHJlc3VsdCk7XG4gIH1cblxuICBnZXRGaWx0ZXJTdHlsZSgpIHtcbiAgICBjb25zdCB7Y29uZmlnfSA9IHRoaXMuY2lTZXJ2aWNlO1xuICAgIGxldCByZXN1bHQgPSAnbm9uZSc7XG5cbiAgICBpZiAoY29uZmlnLmltZ0xvYWRpbmdBbmltYXRpb24pIHtcbiAgICAgIHJlc3VsdCA9IGBibHVyKCR7TWF0aC5mbG9vcihwYXJzZUludCh0aGlzLnBhcmVudENvbnRhaW5lcldpZHRoLCAxMCkgLyAxMDApfXB4KWA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNMb2FkZWQgJiYgY29uZmlnLmltZ0xvYWRpbmdBbmltYXRpb24pIHtcbiAgICAgIHJlc3VsdCA9ICdibHVyKDBweCknO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHJlc3VsdCk7XG4gIH1cblxuICBnZXRQaWN0dXJlUGFkZGluZ0JvdHRvbSgpIHtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG5cbiAgICBpZiAodGhpcy5pc1JhdGlvKSB7XG4gICAgICByZXN1bHQgPSAoMTAwIC8gKHRoaXMucmF0aW9CeVNpemUgfHwgdGhpcy5yYXRpbykpICsgJyUnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHJlc3VsdCk7XG4gIH1cblxuICBnZXRQaWN0dXJlQmFja2dyb3VuZCgpIHtcbiAgICBjb25zdCB7Y29uZmlnfSA9IHRoaXMuY2lTZXJ2aWNlO1xuICAgIGxldCByZXN1bHQgPSAndHJhbnNwYXJlbnQnO1xuXG4gICAgaWYgKHRoaXMuaXNSYXRpbyAmJiAhdGhpcy5pc1ByZXZpZXdMb2FkZWQgJiYgIXRoaXMuaXNMb2FkZWQpIHtcbiAgICAgIHJlc3VsdCA9IGNvbmZpZy5wbGFjZWhvbGRlckJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUocmVzdWx0KTtcbiAgfVxufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { NgModule } from '@angular/core';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -321,3 +321,3 @@ import { Injectable } from '@angular/core';

];
/** @nocollapse */ CIService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function CIService_Factory() { return new CIService(i0.ɵɵinject(i1.CIConfig)); }, token: CIService, providedIn: "root" });
/** @nocollapse */ CIService.ngInjectableDef = i0.defineInjectable({ factory: function CIService_Factory() { return new CIService(i0.inject(i1.CIConfig)); }, token: CIService, providedIn: "root" });
if (false) {

@@ -324,0 +324,0 @@ /** @type {?} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /*

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ var CIConfig = /** @class */ (function () {

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -286,4 +286,4 @@ import * as tslib_1 from "tslib";

ImgComponent.propDecorators = {
imgElem: [{ type: ViewChild, args: ['imgElem', { static: false },] }],
pictureElem: [{ type: ViewChild, args: ['pictureElem', { static: false },] }],
imgElem: [{ type: ViewChild, args: ['imgElem',] }],
pictureElem: [{ type: ViewChild, args: ['pictureElem',] }],
src: [{ type: Input }],

@@ -393,2 +393,2 @@ class: [{ type: Input }],

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWNsb3VkaW1hZ2UtcmVzcG9uc2l2ZS8iLCJzb3VyY2VzIjpbImxpYi9pbWcvaW1nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQXlCLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFhLFlBQVksRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQ25ILE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVDO0lBOEdFLHNCQUNVLFNBQW9CLEVBQ3BCLFVBQXdCLEVBQ3hCLEVBQXFCO1FBRnJCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXJDdEIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQVNuQixXQUFNLEdBQUcsR0FBRyxDQUFDO1FBRVosZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUluRSxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQVlwQixxQkFBZ0IsR0FBVyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBTzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFD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eUI7O0lBQ3pCLHlCQUFtQjs7SUFDbkIsNkJBQXVCOztJQUN2Qiw4QkFBc0I7O0lBQ3RCLGdDQUF1Qjs7SUFDdkIsbUNBQW1FOztJQUVuRSx5Q0FBcUM7O0lBQ3JDLDJDQUFrQzs7SUFDbEMscUNBQW1COztJQUNuQiwrQkFBYTs7SUFDYixtQ0FBbUI7O0lBQ25CLG1DQUFpQjs7SUFDakIsZ0NBQWlCOztJQUNqQixtQ0FBb0I7O0lBQ3BCLGlDQUFtQjs7SUFDbkIsNENBQTZCOztJQUM3QixzQ0FBdUI7O0lBQ3ZCLGtDQUFvQjs7SUFDcEIsa0NBQW1COztJQUNuQiw0Q0FBNkI7O0lBQzdCLHVDQUF5Qjs7SUFDekIsK0JBQWlCOztJQUNqQixtQ0FBb0I7O0lBQ3BCLG1DQUFxQjs7SUFDckIsbUNBQW9COztJQUNwQix3Q0FBNkM7Ozs7O0lBRzNDLGlDQUE0Qjs7Ozs7SUFDNUIsa0NBQWdDOzs7OztJQUNoQywwQkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NJU2VydmljZX0gZnJvbSAnLi4vbGliLnNlcnZpY2UnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtmcm9tRXZlbnQsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjaS1pbWcnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxwaWN0dXJlICNwaWN0dXJlRWxlbSAqbmdJZj1cIiFpc1Byb2Nlc3NlZFwiPjwvcGljdHVyZT5cblxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImxhenlMb2FkaW5nXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XG4gICAgICAgIDxwaWN0dXJlXG4gICAgICAgICAgW2NsYXNzXT1cImNsYXNzICsgJyBjbG91ZGltYWdlLWltYWdlLXBpY3R1cmUgY2xvdWRpbWFnZS1pbWFnZS0nICsgKGlzTG9hZGVkID8gJ2xvYWRlZCcgOiAnbG9hZGluZycpXCJcbiAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7XCJcbiAgICAgICAgICBbc3R5bGUucGFkZGluZ0JvdHRvbV09XCJnZXRQaWN0dXJlUGFkZGluZ0JvdHRvbSgpXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRQaWN0dXJlQmFja2dyb3VuZCgpXCJcbiAgICAgICAgICAjaW1nRWxlbVxuICAgICAgICAgICpuZ0lmPVwiaXNQcm9jZXNzZWRcIj5cbiAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc291cmNlIG9mIGdldFJlc3RTb3VyY2VzKClcIlxuICAgICAgICAgICAgW21lZGlhXT1cInNvdXJjZS5tZWRpYVF1ZXJ5IHx8ICcnXCJcbiAgICAgICAgICAgIFthdHRyLmxhenlMb2FkXT1cInNvdXJjZS5zcmNTZXQgfHwgJydcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAqbmdJZj1cImdldEZpcnN0U291cmNlKClcIlxuICAgICAgICAgICAgW2F0dHIubGF6eUxvYWRdPVwiZmlyc3RTb3VyY2Uuc3JjU2V0IHx8ICcnXCJcbiAgICAgICAgICAgIChsb2FkKT1cIm9uSW1hZ2VMb2FkKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7b3BhY2l0eToxO3RvcDowO2xlZnQ6MDtcIlxuICAgICAgICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cImdldFBvc2l0aW9uU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImdldEltZ0hlaWdodCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNmb3JtU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUudHJhbnNpdGlvbl09XCJnZXRUcmFuc2l0aW9uU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUuZmlsdGVyXT1cImdldEZpbHRlclN0eWxlKClcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbGF6eUxvYWRdPVwiIWlzUHJldmlldyA/IGNsb3VkaW1hZ2VVcmwgOiAoaXNQcmV2aWV3TG9hZGVkID8gY2xvdWRpbWFnZVVybCA6IHByZXZpZXdDbG91ZGltYWdlVXJsKVwiXG4gICAgICAgICAgICBbb2Zmc2V0XT1cIm9mZnNldFwiXG4gICAgICAgICAgICBbYWx0XT1cIlwiPlxuICAgICAgICA8L3BpY3R1cmU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCI+XG4gICAgICAgIDxwaWN0dXJlXG4gICAgICAgICAgW2NsYXNzXT1cImNsYXNzICsgJyBjbG91ZGltYWdlLWltYWdlLXBpY3R1cmUgY2xvdWRpbWFnZS1pbWFnZS0nICsgKGlzTG9hZGVkID8gJ2xvYWRlZCcgOiAnbG9hZGluZycpXCJcbiAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7XCJcbiAgICAgICAgICBbc3R5bGUucGFkZGluZ0JvdHRvbV09XCJnZXRQaWN0dXJlUGFkZGluZ0JvdHRvbSgpXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRQaWN0dXJlQmFja2dyb3VuZCgpXCJcbiAgICAgICAgICAjaW1nRWxlbVxuICAgICAgICAgICpuZ0lmPVwiaXNQcm9jZXNzZWRcIj5cbiAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc291cmNlIG9mIHJlc3RTb3VyY2VzXCJcbiAgICAgICAgICAgIFttZWRpYV09XCJzb3VyY2UubWVkaWFRdWVyeSB8fCAnJ1wiXG4gICAgICAgICAgICBbc3Jjc2V0XT1cInNvdXJjZS5zcmNTZXQgfHwgJydcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAqbmdJZj1cImZpcnN0U291cmNlXCJcbiAgICAgICAgICAgIFtzcmNzZXRdPVwiZmlyc3RTb3VyY2Uuc3JjU2V0IHx8ICcnXCJcbiAgICAgICAgICAgIChsb2FkKT1cIm9uSW1hZ2VMb2FkKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7b3BhY2l0eToxO3RvcDowO2xlZnQ6MDtcIlxuICAgICAgICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cImdldFBvc2l0aW9uU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImdldEltZ0hlaWdodCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNmb3JtU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUudHJhbnNpdGlvbl09XCJnZXRUcmFuc2l0aW9uU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUuZmlsdGVyXT1cImdldEZpbHRlclN0eWxlKClcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbc3JjXT1cIiFpc1ByZXZpZXcgPyBjbG91ZGltYWdlVXJsIDogKGlzUHJldmlld0xvYWRlZCA/IGNsb3VkaW1hZ2VVcmwgOiBwcmV2aWV3Q2xvdWRpbWFnZVVybClcIlxuICAgICAgICAgICAgW2FsdF09XCJcIj5cbiAgICAgICAgPC9waWN0dXJlPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgSW1nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdpbWdFbGVtJywge3N0YXRpYzogZmFsc2V9KSBpbWdFbGVtOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwaWN0dXJlRWxlbScsIHtzdGF0aWM6IGZhbHNlfSkgcGljdHVyZUVsZW06IEVsZW1lbnRSZWY7XG4gIEBJbnB1dCgpIHNyYzogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGFsdDogc3RyaW5nO1xuICBASW5wdXQoKSBvcGVyYXRpb246IHN0cmluZztcbiAgQElucHV0KCkgbzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBzdHJpbmcgfCB7fTtcbiAgQElucHV0KCkgczogc3RyaW5nIHwge307XG4gIEBJbnB1dCgpIGZpbHRlcnM6IHN0cmluZztcbiAgQElucHV0KCkgZjogc3RyaW5nO1xuICBASW5wdXQoKSByYXRpbzogbnVtYmVyO1xuICBASW5wdXQoKSBvZmZzZXQgPSAxMDA7XG4gIEBJbnB1dCgpIG5nU3dpdGNoOiBhbnk7XG4gIEBPdXRwdXQoKSBpbWFnZUxvYWRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICByZXNpemVPYnNlcnZhYmxlJDogT2JzZXJ2YWJsZTxFdmVudD47XG4gIHJlc2l6ZVN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbjtcbiAgY2xvdWRpbWFnZVVybCA9ICcnO1xuICBzb3VyY2VzID0gW107XG4gIGZpcnN0U291cmNlID0gbnVsbDtcbiAgcmVzdFNvdXJjZXMgPSBbXTtcbiAgaXNMb2FkZWQgPSBmYWxzZTtcbiAgaXNQcm9jZXNzZWQgPSBmYWxzZTtcbiAgaXNQcmV2aWV3OiBib29sZWFuO1xuICBwcmV2aWV3Q2xvdWRpbWFnZVVybDogc3RyaW5nO1xuICBwcmV2aWV3U291cmNlczogc3RyaW5nO1xuICBpc0FkYXB0aXZlOiBib29sZWFuO1xuICBhY3R1YWxTaXplOiBzdHJpbmc7XG4gIHBhcmVudENvbnRhaW5lcldpZHRoOiBzdHJpbmc7XG4gIGlzUHJldmlld0xvYWRlZDogYm9vbGVhbjtcbiAgaXNSYXRpbzogYm9vbGVhbjtcbiAgcmF0aW9CeVNpemU6IG51bWJlcjtcbiAgbGF6eUxvYWRpbmc6IGJvb2xlYW47XG4gIGltYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHdpbmRvd0lubmVyV2lkdGg6IG51bWJlciA9IHdpbmRvdy5pbm5lcldpZHRoO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2lTZXJ2aWNlOiBDSVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMubGF6eUxvYWRpbmcgPSBjaVNlcnZpY2UuY29uZmlnLmxhenlMb2FkaW5nO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24kLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmFibGUkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpO1xuICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uJCA9IHRoaXMucmVzaXplT2JzZXJ2YWJsZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzQWRhcHRpdmUgfHwgdGhpcy53aW5kb3dJbm5lcldpZHRoIDwgd2luZG93LmlubmVyV2lkdGgpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzSW1hZ2UoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMud2luZG93SW5uZXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucHJvY2Vzc0ltYWdlKCk7XG4gIH1cblxuICBwcm9jZXNzSW1hZ2UoKSB7XG4gICAgY29uc3QgaW1nTm9kZSA9ICh0aGlzLmltZ0VsZW0gfHwgdGhpcy5waWN0dXJlRWxlbSkubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB7Y29uZmlnID0ge319ID0gdGhpcy5jaVNlcnZpY2U7XG4gICAgY29uc3Qge3ByZXZpZXdRdWFsaXR5RmFjdG9yfSA9IGNvbmZpZztcbiAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLm9wZXJhdGlvbiB8fCB0aGlzLm8gfHwgY29uZmlnLm9wZXJhdGlvbjtcbiAgICBjb25zdCBwYXJlbnRDb250YWluZXJXaWR0aCA9IHRoaXMuY2lTZXJ2aWNlLmdldFBhcmVudFdpZHRoKGltZ05vZGUsIGNvbmZpZyk7XG4gICAgbGV0IHNpemUgPSB0aGlzLnNpemUgfHwgdGhpcy5zIHx8IGNvbmZpZy5zaXplIHx8IHBhcmVudENvbnRhaW5lcldpZHRoO1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRlcnMgfHwgdGhpcy5mIHx8IGNvbmZpZy5maWx0ZXJzO1xuICAgIGNvbnN0IGlzQWRhcHRpdmUgPSB0aGlzLmNpU2VydmljZS5jaGVja09uTWVkaWEoc2l6ZSk7XG5cbiAgICBzaXplID0gaXNBZGFwdGl2ZSA/IHRoaXMuY2lTZXJ2aWNlLmdldEFkYXB0aXZlU2l6ZShzaXplLCBjb25maWcpIDogc2l6ZTtcblxuICAgIGNvbnN0IGlzUmVsYXRpdmVVcmxQYXRoID0gdGhpcy5jaVNlcnZpY2UuY2hlY2tJZlJlbGF0aXZlVXJsUGF0aCh0aGlzLnNyYyk7XG4gICAgY29uc3QgaW1nU3JjID0gdGhpcy5jaVNlcnZpY2UuZ2V0SW1nU3JjKHRoaXMuc3JjLCBpc1JlbGF0aXZlVXJsUGF0aCwgY29uZmlnLmJhc2VVcmwpO1xuICAgIGNvbnN0IHJlc3VsdFNpemUgPSBpc0FkYXB0aXZlID8gc2l6ZSA6IHRoaXMuY2lTZXJ2aWNlLmdldFNpemVBY2NvcmRpbmdUb1BpeGVsUmF0aW8oc2l6ZSk7XG4gICAgdGhpcy5pc1ByZXZpZXcgPSAhY29uZmlnLmlzQ2hyb21lICYmIChwYXJlbnRDb250YWluZXJXaWR0aCA+IDQwMCkgJiYgY29uZmlnLmxhenlMb2FkaW5nO1xuICAgIHRoaXMuY2xvdWRpbWFnZVVybCA9IGlzQWRhcHRpdmUgP1xuICAgICAgdGhpcy5jaVNlcnZpY2UuZ2VuZXJhdGVVcmwoJ3dpZHRoJywgdGhpcy5jaVNlcnZpY2UuZ2V0U2l6ZUFjY29yZGluZ1RvUGl4ZWxSYXRpbyhwYXJlbnRDb250YWluZXJXaWR0aCksIGZpbHRlcnMsIGltZ1NyYywgY29uZmlnKSA6XG4gICAgICB0aGlzLmNpU2VydmljZS5nZW5lcmF0ZVVybChvcGVyYXRpb24sIHJlc3VsdFNpemUsIGZpbHRlcnMsIGltZ1NyYywgY29uZmlnKTtcbiAgICB0aGlzLnNvdXJjZXMgPSBpc0FkYXB0aXZlID9cbiAgICAgIHRoaXMuY2lTZXJ2aWNlLmdlbmVyYXRlU291cmNlcyhvcGVyYXRpb24sIHJlc3VsdFNpemUsIGZpbHRlcnMsIGltZ1NyYywgaXNBZGFwdGl2ZSwgY29uZmlnLCBmYWxzZSkgOiBbXTtcbiAgICBsZXQgcHJldmlld0Nsb3VkaW1hZ2VVcmwsIHByZXZpZXdTb3VyY2VzO1xuXG4gICAgaWYgKHRoaXMuaXNQcmV2aWV3KSB7XG4gICAgICBjb25zdCBwcmV2aWV3Q29uZmlnID0gey4uLmNvbmZpZywgcXVlcnlTdHJpbmc6ICcnfTtcbiAgICAgIHByZXZpZXdDbG91ZGltYWdlVXJsID0gaXNBZGFwdGl2ZSA/XG4gICAgICAgIHRoaXMuY2lTZXJ2aWNlLmdlbmVyYXRlVXJsKCd3aWR0aCcsIChNYXRoLmZsb29yKHBhcmVudENvbnRhaW5lcldpZHRoIC8gcHJldmlld1F1YWxpdHlGYWN0b3IpKSwgZmlsdGVycywgaW1nU3JjLCBwcmV2aWV3Q29uZmlnKSA6XG4gICAgICAgIHRoaXMuY2lTZXJ2aWNlLmdlbmVyYXRlVXJsKFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICByZXN1bHRTaXplLnNwbGl0KCd4JykubWFwKGl0ZW0gPT4gTWF0aC5mbG9vcihpdGVtIC8gcHJldmlld1F1YWxpdHlGYWN0b3IpKS5qb2luKCd4JyksXG4gICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICBpbWdTcmMsXG4gICAgICAgICAgcHJldmlld0NvbmZpZ1xuICAgICAgICApO1xuICAgICAgcHJldmlld1NvdXJjZXMgPSBpc0FkYXB0aXZlID9cbiAgICAgICAgdGhpcy5jaVNlcnZpY2UuZ2VuZXJhdGVTb3VyY2VzKG9wZXJhdGlvbiwgcmVzdWx0U2l6ZSwgZmlsdGVycywgaW1nU3JjLCBpc0FkYXB0aXZlLCBwcmV2aWV3Q29uZmlnLCB0cnVlKSA6IFtdO1xuICAgIH1cblxuICAgIHRoaXMucHJldmlld0Nsb3VkaW1hZ2VVcmwgPSBwcmV2aWV3Q2xvdWRpbWFnZVVybDtcbiAgICB0aGlzLnByZXZpZXdTb3VyY2VzID0gcHJldmlld1NvdXJjZXM7XG4gICAgdGhpcy5pc0FkYXB0aXZlID0gaXNBZGFwdGl2ZTtcbiAgICB0aGlzLmFjdHVhbFNpemUgPSBzaXplO1xuICAgIHRoaXMucGFyZW50Q29udGFpbmVyV2lkdGggPSBwYXJlbnRDb250YWluZXJXaWR0aDtcbiAgICBjb25zdCByYXRpb0J5U2l6ZSA9IHRoaXMuY2lTZXJ2aWNlLmdldFJhdGlvQnlTaXplKHNpemUsIGNvbmZpZyk7XG4gICAgdGhpcy5pbWFnZUhlaWdodCA9IE1hdGguZmxvb3IocGFyZW50Q29udGFpbmVyV2lkdGggLyAocmF0aW9CeVNpemUgfHwgdGhpcy5yYXRpbyB8fCAxLjUpKTtcbiAgICB0aGlzLmlzUmF0aW8gPSAhIShyYXRpb0J5U2l6ZSB8fCB0aGlzLnJhdGlvKTtcbiAgICB0aGlzLnJhdGlvQnlTaXplID0gcmF0aW9CeVNpemU7XG5cbiAgICB0aGlzLmlzUHJvY2Vzc2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uSW1hZ2VMb2FkKCRldmVudCkge1xuICAgIGlmICghdGhpcy5pc1ByZXZpZXcpIHtcbiAgICAgIHRoaXMuaXNQcmV2aWV3TG9hZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1ByZXZpZXdMb2FkZWQpIHtcbiAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzUHJldmlld0xvYWRlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuaW1hZ2VMb2FkZWQuZW1pdCgkZXZlbnQpO1xuICB9XG5cbiAgZ2V0UmVzdFNvdXJjZXMoKSB7XG4gICAgY29uc3QgcmVzdWx0U291cmNlcyA9IFsuLi4oIXRoaXMuaXNQcmV2aWV3ID8gdGhpcy5zb3VyY2VzIDogKHRoaXMuaXNQcmV2aWV3TG9hZGVkID8gdGhpcy5zb3VyY2VzIDogdGhpcy5wcmV2aWV3U291cmNlcykpXTtcblxuICAgIHJldHVybiByZXN1bHRTb3VyY2VzLnNsaWNlKDEpLnJldmVyc2UoKTtcbiAgfVxuXG4gIGdldEZpcnN0U291cmNlKCkge1xuICAgIGNvbnN0IHJlc3VsdFNvdXJjZXMgPSBbLi4uKCF0aGlzLmlzUHJldmlldyA/IHRoaXMuc291cmNlcyA6ICh0aGlzLmlzUHJldmlld0xvYWRlZCA/IHRoaXMuc291cmNlcyA6IHRoaXMucHJldmlld1NvdXJjZXMpKV07XG4gICAgdGhpcy5maXJzdFNvdXJjZSA9IHJlc3VsdFNvdXJjZXNbMF07XG5cbiAgICByZXR1cm4gcmVzdWx0U291cmNlc1swXTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uU3R5bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodGhpcy5pc1JhdGlvID8gJ2Fic29sdXRlJyA6ICdyZWxhdGl2ZScpO1xuICB9XG5cbiAgZ2V0SW1nSGVpZ2h0KCkge1xuICAgIC8vIHRvZG8gY2hlY2sgaWYgd2UgbmVlZCAxMDAlIGhlaWdodFxuICAgIC8vIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHRoaXMuaXNSYXRpbyA/ICcxMDAlJyA6ICdhdXRvJyk7XG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodGhpcy5pc1JhdGlvID8gJ2F1dG8nIDogJ2F1dG8nKTtcbiAgfVxuXG4gIGdldFRyYW5zZm9ybVN0eWxlKCkge1xuICAgIGNvbnN0IHtjb25maWd9ID0gdGhpcy5jaVNlcnZpY2U7XG4gICAgbGV0IHJlc3VsdCA9ICdub25lJztcblxuICAgIGlmIChjb25maWcuaW1nTG9hZGluZ0FuaW1hdGlvbikge1xuICAgICAgcmVzdWx0ID0gJ3NjYWxlM2QoMS4xLCAxLjEsIDEpJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0xvYWRlZCAmJiBjb25maWcuaW1nTG9hZGluZ0FuaW1hdGlvbikge1xuICAgICAgcmVzdWx0ID0gJ3RyYW5zbGF0ZVooMCkgc2NhbGUzZCgxLCAxLCAxKSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUocmVzdWx0KTtcbiAgfVxuXG4gIGdldFRyYW5zaXRpb25TdHlsZSgpIHtcbiAgICBjb25zdCB7Y29uZmlnfSA9IHRoaXMuY2lTZXJ2aWNlO1xuICAgIGxldCByZXN1bHQgPSAnbm9uZSc7XG5cbiAgICBpZiAodGhpcy5pc0xvYWRlZCAmJiBjb25maWcuaW1nTG9hZGluZ0FuaW1hdGlvbikge1xuICAgICAgcmVzdWx0ID0gJ2FsbCAwLjNzIGVhc2UtaW4tb3V0JztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShyZXN1bHQpO1xuICB9XG5cbiAgZ2V0RmlsdGVyU3R5bGUoKSB7XG4gICAgY29uc3Qge2NvbmZpZ30gPSB0aGlzLmNpU2VydmljZTtcbiAgICBsZXQgcmVzdWx0ID0gJ25vbmUnO1xuXG4gICAgaWYgKGNvbmZpZy5pbWdMb2FkaW5nQW5pbWF0aW9uKSB7XG4gICAgICByZXN1bHQgPSBgYmx1cigke01hdGguZmxvb3IocGFyc2VJbnQodGhpcy5wYXJlbnRDb250YWluZXJXaWR0aCwgMTApIC8gMTAwKX1weClgO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTG9hZGVkICYmIGNvbmZpZy5pbWdMb2FkaW5nQW5pbWF0aW9uKSB7XG4gICAgICByZXN1bHQgPSAnYmx1cigwcHgpJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShyZXN1bHQpO1xuICB9XG5cbiAgZ2V0UGljdHVyZVBhZGRpbmdCb3R0b20oKSB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuXG4gICAgaWYgKHRoaXMuaXNSYXRpbykge1xuICAgICAgcmVzdWx0ID0gKDEwMCAvICh0aGlzLnJhdGlvQnlTaXplIHx8IHRoaXMucmF0aW8pKSArICclJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShyZXN1bHQpO1xuICB9XG5cbiAgZ2V0UGljdHVyZUJhY2tncm91bmQoKSB7XG4gICAgY29uc3Qge2NvbmZpZ30gPSB0aGlzLmNpU2VydmljZTtcbiAgICBsZXQgcmVzdWx0ID0gJ3RyYW5zcGFyZW50JztcblxuICAgIGlmICh0aGlzLmlzUmF0aW8gJiYgIXRoaXMuaXNQcmV2aWV3TG9hZGVkICYmICF0aGlzLmlzTG9hZGVkKSB7XG4gICAgICByZXN1bHQgPSBjb25maWcucGxhY2Vob2xkZXJCYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHJlc3VsdCk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWNsb3VkaW1hZ2UtcmVzcG9uc2l2ZS8iLCJzb3VyY2VzIjpbImxpYi9pbWcvaW1nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQXlCLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFhLFlBQVksRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQ25ILE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVDO0lBOEdFLHNCQUNVLFNBQW9CLEVBQ3BCLFVBQXdCLEVBQ3hCLEVBQXFCO1FBRnJCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXJDdEIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQVNuQixXQUFNLEdBQUcsR0FBRyxDQUFDO1FBRVosZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQTtRQUlsRSxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQVlwQixxQkFBZ0IsR0FBVyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBTzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFD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QUN2QixtQ0FBa0U7O0lBRWxFLHlDQUFxQzs7SUFDckMsMkNBQWtDOztJQUNsQyxxQ0FBbUI7O0lBQ25CLCtCQUFhOztJQUNiLG1DQUFtQjs7SUFDbkIsbUNBQWlCOztJQUNqQixnQ0FBaUI7O0lBQ2pCLG1DQUFvQjs7SUFDcEIsaUNBQW1COztJQUNuQiw0Q0FBNkI7O0lBQzdCLHNDQUF1Qjs7SUFDdkIsa0NBQW9COztJQUNwQixrQ0FBbUI7O0lBQ25CLDRDQUE2Qjs7SUFDN0IsdUNBQXlCOztJQUN6QiwrQkFBaUI7O0lBQ2pCLG1DQUFvQjs7SUFDcEIsbUNBQXFCOztJQUNyQixtQ0FBb0I7O0lBQ3BCLHdDQUE2Qzs7Ozs7SUFHM0MsaUNBQTRCOzs7OztJQUM1QixrQ0FBZ0M7Ozs7O0lBQ2hDLDBCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q0lTZXJ2aWNlfSBmcm9tICcuLi9saWIuc2VydmljZSc7XG5pbXBvcnQge0RvbVNhbml0aXplcn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge2Zyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NpLWltZycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHBpY3R1cmUgI3BpY3R1cmVFbGVtICpuZ0lmPVwiIWlzUHJvY2Vzc2VkXCI+PC9waWN0dXJlPlxuXG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibGF6eUxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInRydWVcIj5cbiAgICAgICAgPHBpY3R1cmVcbiAgICAgICAgICBbY2xhc3NdPVwiY2xhc3MgKyAnIGNsb3VkaW1hZ2UtaW1hZ2UtcGljdHVyZSBjbG91ZGltYWdlLWltYWdlLScgKyAoaXNMb2FkZWQgPyAnbG9hZGVkJyA6ICdsb2FkaW5nJylcIlxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtcIlxuICAgICAgICAgIFtzdHlsZS5wYWRkaW5nQm90dG9tXT1cImdldFBpY3R1cmVQYWRkaW5nQm90dG9tKClcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImdldFBpY3R1cmVCYWNrZ3JvdW5kKClcIlxuICAgICAgICAgICNpbWdFbGVtXG4gICAgICAgICAgKm5nSWY9XCJpc1Byb2Nlc3NlZFwiPlxuICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzb3VyY2Ugb2YgZ2V0UmVzdFNvdXJjZXMoKVwiXG4gICAgICAgICAgICBbbWVkaWFdPVwic291cmNlLm1lZGlhUXVlcnkgfHwgJydcIlxuICAgICAgICAgICAgW2F0dHIubGF6eUxvYWRdPVwic291cmNlLnNyY1NldCB8fCAnJ1wiXG4gICAgICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICpuZ0lmPVwiZ2V0Rmlyc3RTb3VyY2UoKVwiXG4gICAgICAgICAgICBbYXR0ci5sYXp5TG9hZF09XCJmaXJzdFNvdXJjZS5zcmNTZXQgfHwgJydcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtvcGFjaXR5OjE7dG9wOjA7bGVmdDowO1wiXG4gICAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiZ2V0UG9zaXRpb25TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiZ2V0SW1nSGVpZ2h0KClcIlxuICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJnZXRUcmFuc2Zvcm1TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2l0aW9uXT1cImdldFRyYW5zaXRpb25TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5maWx0ZXJdPVwiZ2V0RmlsdGVyU3R5bGUoKVwiXG4gICAgICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtsYXp5TG9hZF09XCIhaXNQcmV2aWV3ID8gY2xvdWRpbWFnZVVybCA6IChpc1ByZXZpZXdMb2FkZWQgPyBjbG91ZGltYWdlVXJsIDogcHJldmlld0Nsb3VkaW1hZ2VVcmwpXCJcbiAgICAgICAgICAgIFtvZmZzZXRdPVwib2Zmc2V0XCJcbiAgICAgICAgICAgIFthbHRdPVwiXCI+XG4gICAgICAgIDwvcGljdHVyZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIj5cbiAgICAgICAgPHBpY3R1cmVcbiAgICAgICAgICBbY2xhc3NdPVwiY2xhc3MgKyAnIGNsb3VkaW1hZ2UtaW1hZ2UtcGljdHVyZSBjbG91ZGltYWdlLWltYWdlLScgKyAoaXNMb2FkZWQgPyAnbG9hZGVkJyA6ICdsb2FkaW5nJylcIlxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtcIlxuICAgICAgICAgIFtzdHlsZS5wYWRkaW5nQm90dG9tXT1cImdldFBpY3R1cmVQYWRkaW5nQm90dG9tKClcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImdldFBpY3R1cmVCYWNrZ3JvdW5kKClcIlxuICAgICAgICAgICNpbWdFbGVtXG4gICAgICAgICAgKm5nSWY9XCJpc1Byb2Nlc3NlZFwiPlxuICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzb3VyY2Ugb2YgcmVzdFNvdXJjZXNcIlxuICAgICAgICAgICAgW21lZGlhXT1cInNvdXJjZS5tZWRpYVF1ZXJ5IHx8ICcnXCJcbiAgICAgICAgICAgIFtzcmNzZXRdPVwic291cmNlLnNyY1NldCB8fCAnJ1wiXG4gICAgICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICpuZ0lmPVwiZmlyc3RTb3VyY2VcIlxuICAgICAgICAgICAgW3NyY3NldF09XCJmaXJzdFNvdXJjZS5zcmNTZXQgfHwgJydcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtvcGFjaXR5OjE7dG9wOjA7bGVmdDowO1wiXG4gICAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiZ2V0UG9zaXRpb25TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiZ2V0SW1nSGVpZ2h0KClcIlxuICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJnZXRUcmFuc2Zvcm1TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2l0aW9uXT1cImdldFRyYW5zaXRpb25TdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5maWx0ZXJdPVwiZ2V0RmlsdGVyU3R5bGUoKVwiXG4gICAgICAgICAgICAobG9hZCk9XCJvbkltYWdlTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtzcmNdPVwiIWlzUHJldmlldyA/IGNsb3VkaW1hZ2VVcmwgOiAoaXNQcmV2aWV3TG9hZGVkID8gY2xvdWRpbWFnZVVybCA6IHByZXZpZXdDbG91ZGltYWdlVXJsKVwiXG4gICAgICAgICAgICBbYWx0XT1cIlwiPlxuICAgICAgICA8L3BpY3R1cmU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBJbWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2ltZ0VsZW0nKSBpbWdFbGVtOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwaWN0dXJlRWxlbScpIHBpY3R1cmVFbGVtOiBFbGVtZW50UmVmO1xuICBASW5wdXQoKSBzcmM6IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBhbHQ6IHN0cmluZztcbiAgQElucHV0KCkgb3BlcmF0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG86IHN0cmluZztcbiAgQElucHV0KCkgc2l6ZTogc3RyaW5nIHwge307XG4gIEBJbnB1dCgpIHM6IHN0cmluZyB8IHt9O1xuICBASW5wdXQoKSBmaWx0ZXJzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGY6IHN0cmluZztcbiAgQElucHV0KCkgcmF0aW86IG51bWJlcjtcbiAgQElucHV0KCkgb2Zmc2V0ID0gMTAwO1xuICBASW5wdXQoKSBuZ1N3aXRjaDogYW55O1xuICBAT3V0cHV0KCkgaW1hZ2VMb2FkZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcblxuICByZXNpemVPYnNlcnZhYmxlJDogT2JzZXJ2YWJsZTxFdmVudD47XG4gIHJlc2l6ZVN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbjtcbiAgY2xvdWRpbWFnZVVybCA9ICcnO1xuICBzb3VyY2VzID0gW107XG4gIGZpcnN0U291cmNlID0gbnVsbDtcbiAgcmVzdFNvdXJjZXMgPSBbXTtcbiAgaXNMb2FkZWQgPSBmYWxzZTtcbiAgaXNQcm9jZXNzZWQgPSBmYWxzZTtcbiAgaXNQcmV2aWV3OiBib29sZWFuO1xuICBwcmV2aWV3Q2xvdWRpbWFnZVVybDogc3RyaW5nO1xuICBwcmV2aWV3U291cmNlczogc3RyaW5nO1xuICBpc0FkYXB0aXZlOiBib29sZWFuO1xuICBhY3R1YWxTaXplOiBzdHJpbmc7XG4gIHBhcmVudENvbnRhaW5lcldpZHRoOiBzdHJpbmc7XG4gIGlzUHJldmlld0xvYWRlZDogYm9vbGVhbjtcbiAgaXNSYXRpbzogYm9vbGVhbjtcbiAgcmF0aW9CeVNpemU6IG51bWJlcjtcbiAgbGF6eUxvYWRpbmc6IGJvb2xlYW47XG4gIGltYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHdpbmRvd0lubmVyV2lkdGg6IG51bWJlciA9IHdpbmRvdy5pbm5lcldpZHRoO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2lTZXJ2aWNlOiBDSVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMubGF6eUxvYWRpbmcgPSBjaVNlcnZpY2UuY29uZmlnLmxhenlMb2FkaW5nO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24kLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmFibGUkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpO1xuICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uJCA9IHRoaXMucmVzaXplT2JzZXJ2YWJsZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzQWRhcHRpdmUgfHwgdGhpcy53aW5kb3dJbm5lcldpZHRoIDwgd2luZG93LmlubmVyV2lkdGgpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzSW1hZ2UoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMud2luZG93SW5uZXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucHJvY2Vzc0ltYWdlKCk7XG4gIH1cblxuICBwcm9jZXNzSW1hZ2UoKSB7XG4gICAgY29uc3QgaW1nTm9kZSA9ICh0aGlzLmltZ0VsZW0gfHwgdGhpcy5waWN0dXJlRWxlbSkubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB7Y29uZmlnID0ge319ID0gdGhpcy5jaVNlcnZpY2U7XG4gICAgY29uc3QgeyBwcmV2aWV3UXVhbGl0eUZhY3RvciB9ID0gY29uZmlnO1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMub3BlcmF0aW9uIHx8IHRoaXMubyB8fCBjb25maWcub3BlcmF0aW9uO1xuICAgIGNvbnN0IHBhcmVudENvbnRhaW5lcldpZHRoID0gdGhpcy5jaVNlcnZpY2UuZ2V0UGFyZW50V2lkdGgoaW1nTm9kZSwgY29uZmlnKTtcbiAgICBsZXQgc2l6ZSA9IHRoaXMuc2l6ZSB8fCB0aGlzLnMgfHwgY29uZmlnLnNpemUgfHwgcGFyZW50Q29udGFpbmVyV2lkdGg7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZmlsdGVycyB8fCB0aGlzLmYgfHwgY29uZmlnLmZpbHRlcnM7XG4gICAgY29uc3QgaXNBZGFwdGl2ZSA9IHRoaXMuY2lTZXJ2aWNlLmNoZWNrT25NZWRpYShzaXplKTtcblxuICAgIHNpemUgPSBpc0FkYXB0aXZlID8gdGhpcy5jaVNlcnZpY2UuZ2V0QWRhcHRpdmVTaXplKHNpemUsIGNvbmZpZykgOiBzaXplO1xuXG4gICAgY29uc3QgaXNSZWxhdGl2ZVVybFBhdGggPSB0aGlzLmNpU2VydmljZS5jaGVja0lmUmVsYXRpdmVVcmxQYXRoKHRoaXMuc3JjKTtcbiAgICBjb25zdCBpbWdTcmMgPSB0aGlzLmNpU2VydmljZS5nZXRJbWdTcmModGhpcy5zcmMsIGlzUmVsYXRpdmVVcmxQYXRoLCBjb25maWcuYmFzZVVybCk7XG4gICAgY29uc3QgcmVzdWx0U2l6ZSA9IGlzQWRhcHRpdmUgPyBzaXplIDogdGhpcy5jaVNlcnZpY2UuZ2V0U2l6ZUFjY29yZGluZ1RvUGl4ZWxSYXRpbyhzaXplKTtcbiAgICB0aGlzLmlzUHJldmlldyA9ICFjb25maWcuaXNDaHJvbWUgJiYgKHBhcmVudENvbnRhaW5lcldpZHRoID4gNDAwKSAmJiBjb25maWcubGF6eUxvYWRpbmc7XG4gICAgdGhpcy5jbG91ZGltYWdlVXJsID0gaXNBZGFwdGl2ZSA/XG4gICAgICB0aGlzLmNpU2VydmljZS5nZW5lcmF0ZVVybCgnd2lkdGgnLCB0aGlzLmNpU2VydmljZS5nZXRTaXplQWNjb3JkaW5nVG9QaXhlbFJhdGlvKHBhcmVudENvbnRhaW5lcldpZHRoKSwgZmlsdGVycywgaW1nU3JjLCBjb25maWcpIDpcbiAgICAgIHRoaXMuY2lTZXJ2aWNlLmdlbmVyYXRlVXJsKG9wZXJhdGlvbiwgcmVzdWx0U2l6ZSwgZmlsdGVycywgaW1nU3JjLCBjb25maWcpO1xuICAgIHRoaXMuc291cmNlcyA9IGlzQWRhcHRpdmUgP1xuICAgICAgdGhpcy5jaVNlcnZpY2UuZ2VuZXJhdGVTb3VyY2VzKG9wZXJhdGlvbiwgcmVzdWx0U2l6ZSwgZmlsdGVycywgaW1nU3JjLCBpc0FkYXB0aXZlLCBjb25maWcsIGZhbHNlKSA6IFtdO1xuICAgIGxldCBwcmV2aWV3Q2xvdWRpbWFnZVVybCwgcHJldmlld1NvdXJjZXM7XG5cbiAgICBpZiAodGhpcy5pc1ByZXZpZXcpIHtcbiAgICAgIGNvbnN0IHByZXZpZXdDb25maWcgPSB7Li4uY29uZmlnLCBxdWVyeVN0cmluZzogJyd9O1xuICAgICAgcHJldmlld0Nsb3VkaW1hZ2VVcmwgPSBpc0FkYXB0aXZlID9cbiAgICAgICAgdGhpcy5jaVNlcnZpY2UuZ2VuZXJhdGVVcmwoJ3dpZHRoJywgKE1hdGguZmxvb3IocGFyZW50Q29udGFpbmVyV2lkdGggLyBwcmV2aWV3UXVhbGl0eUZhY3RvcikpLCBmaWx0ZXJzLCBpbWdTcmMsIHByZXZpZXdDb25maWcpIDpcbiAgICAgICAgdGhpcy5jaVNlcnZpY2UuZ2VuZXJhdGVVcmwob3BlcmF0aW9uLCByZXN1bHRTaXplLnNwbGl0KCd4JykubWFwKGl0ZW0gPT4gTWF0aC5mbG9vcihpdGVtIC8gcHJldmlld1F1YWxpdHlGYWN0b3IpKS5qb2luKCd4JyksIGZpbHRlcnMsIGltZ1NyYywgcHJldmlld0NvbmZpZyk7XG4gICAgICBwcmV2aWV3U291cmNlcyA9IGlzQWRhcHRpdmUgP1xuICAgICAgICB0aGlzLmNpU2VydmljZS5nZW5lcmF0ZVNvdXJjZXMob3BlcmF0aW9uLCByZXN1bHRTaXplLCBmaWx0ZXJzLCBpbWdTcmMsIGlzQWRhcHRpdmUsIHByZXZpZXdDb25maWcsIHRydWUpIDogW107XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2aWV3Q2xvdWRpbWFnZVVybCA9IHByZXZpZXdDbG91ZGltYWdlVXJsO1xuICAgIHRoaXMucHJldmlld1NvdXJjZXMgPSBwcmV2aWV3U291cmNlcztcbiAgICB0aGlzLmlzQWRhcHRpdmUgPSBpc0FkYXB0aXZlO1xuICAgIHRoaXMuYWN0dWFsU2l6ZSA9IHNpemU7XG4gICAgdGhpcy5wYXJlbnRDb250YWluZXJXaWR0aCA9IHBhcmVudENvbnRhaW5lcldpZHRoO1xuICAgIGNvbnN0IHJhdGlvQnlTaXplID0gdGhpcy5jaVNlcnZpY2UuZ2V0UmF0aW9CeVNpemUoc2l6ZSwgY29uZmlnKTtcbiAgICB0aGlzLmltYWdlSGVpZ2h0ID0gTWF0aC5mbG9vcihwYXJlbnRDb250YWluZXJXaWR0aCAvIChyYXRpb0J5U2l6ZSB8fCB0aGlzLnJhdGlvIHx8IDEuNSkpO1xuICAgIHRoaXMuaXNSYXRpbyA9ICEhKHJhdGlvQnlTaXplIHx8IHRoaXMucmF0aW8pO1xuICAgIHRoaXMucmF0aW9CeVNpemUgPSByYXRpb0J5U2l6ZTtcblxuICAgIHRoaXMuaXNQcm9jZXNzZWQgPSB0cnVlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25JbWFnZUxvYWQoJGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzUHJldmlldykge1xuICAgICAgdGhpcy5pc1ByZXZpZXdMb2FkZWQgPSB0cnVlO1xuICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzUHJldmlld0xvYWRlZCkge1xuICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNQcmV2aWV3TG9hZGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pbWFnZUxvYWRlZC5lbWl0KCRldmVudCk7XG4gIH1cblxuICBnZXRSZXN0U291cmNlcygpIHtcbiAgICBjb25zdCByZXN1bHRTb3VyY2VzID0gWy4uLighdGhpcy5pc1ByZXZpZXcgPyB0aGlzLnNvdXJjZXMgOiAodGhpcy5pc1ByZXZpZXdMb2FkZWQgPyB0aGlzLnNvdXJjZXMgOiB0aGlzLnByZXZpZXdTb3VyY2VzKSldO1xuXG4gICAgcmV0dXJuIHJlc3VsdFNvdXJjZXMuc2xpY2UoMSkucmV2ZXJzZSgpO1xuICB9XG5cbiAgZ2V0Rmlyc3RTb3VyY2UoKSB7XG4gICAgY29uc3QgcmVzdWx0U291cmNlcyA9IFsuLi4oIXRoaXMuaXNQcmV2aWV3ID8gdGhpcy5zb3VyY2VzIDogKHRoaXMuaXNQcmV2aWV3TG9hZGVkID8gdGhpcy5zb3VyY2VzIDogdGhpcy5wcmV2aWV3U291cmNlcykpXTtcbiAgICB0aGlzLmZpcnN0U291cmNlID0gcmVzdWx0U291cmNlc1swXTtcblxuICAgIHJldHVybiByZXN1bHRTb3VyY2VzWzBdO1xuICB9XG5cbiAgZ2V0UG9zaXRpb25TdHlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh0aGlzLmlzUmF0aW8gPyAnYWJzb2x1dGUnIDogJ3JlbGF0aXZlJyk7XG4gIH1cblxuICBnZXRJbWdIZWlnaHQoKSB7XG4gICAgLy8gdG9kbyBjaGVjayBpZiB3ZSBuZWVkIDEwMCUgaGVpZ2h0XG4gICAgLy8gcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodGhpcy5pc1JhdGlvID8gJzEwMCUnIDogJ2F1dG8nKTtcbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh0aGlzLmlzUmF0aW8gPyAnYXV0bycgOiAnYXV0bycpO1xuICB9XG5cbiAgZ2V0VHJhbnNmb3JtU3R5bGUoKSB7XG4gICAgY29uc3Qge2NvbmZpZ30gPSB0aGlzLmNpU2VydmljZTtcbiAgICBsZXQgcmVzdWx0ID0gJ25vbmUnO1xuXG4gICAgaWYgKGNvbmZpZy5pbWdMb2FkaW5nQW5pbWF0aW9uKSB7XG4gICAgICByZXN1bHQgPSAnc2NhbGUzZCgxLjEsIDEuMSwgMSknO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTG9hZGVkICYmIGNvbmZpZy5pbWdMb2FkaW5nQW5pbWF0aW9uKSB7XG4gICAgICByZXN1bHQgPSAndHJhbnNsYXRlWigwKSBzY2FsZTNkKDEsIDEsIDEpJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShyZXN1bHQpO1xuICB9XG5cbiAgZ2V0VHJhbnNpdGlvblN0eWxlKCkge1xuICAgIGNvbnN0IHtjb25maWd9ID0gdGhpcy5jaVNlcnZpY2U7XG4gICAgbGV0IHJlc3VsdCA9ICdub25lJztcblxuICAgIGlmICh0aGlzLmlzTG9hZGVkICYmIGNvbmZpZy5pbWdMb2FkaW5nQW5pbWF0aW9uKSB7XG4gICAgICByZXN1bHQgPSAnYWxsIDAuM3MgZWFzZS1pbi1vdXQnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHJlc3VsdCk7XG4gIH1cblxuICBnZXRGaWx0ZXJTdHlsZSgpIHtcbiAgICBjb25zdCB7Y29uZmlnfSA9IHRoaXMuY2lTZXJ2aWNlO1xuICAgIGxldCByZXN1bHQgPSAnbm9uZSc7XG5cbiAgICBpZiAoY29uZmlnLmltZ0xvYWRpbmdBbmltYXRpb24pIHtcbiAgICAgIHJlc3VsdCA9IGBibHVyKCR7TWF0aC5mbG9vcihwYXJzZUludCh0aGlzLnBhcmVudENvbnRhaW5lcldpZHRoLCAxMCkgLyAxMDApfXB4KWA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNMb2FkZWQgJiYgY29uZmlnLmltZ0xvYWRpbmdBbmltYXRpb24pIHtcbiAgICAgIHJlc3VsdCA9ICdibHVyKDBweCknO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHJlc3VsdCk7XG4gIH1cblxuICBnZXRQaWN0dXJlUGFkZGluZ0JvdHRvbSgpIHtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG5cbiAgICBpZiAodGhpcy5pc1JhdGlvKSB7XG4gICAgICByZXN1bHQgPSAoMTAwIC8gKHRoaXMucmF0aW9CeVNpemUgfHwgdGhpcy5yYXRpbykpICsgJyUnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHJlc3VsdCk7XG4gIH1cblxuICBnZXRQaWN0dXJlQmFja2dyb3VuZCgpIHtcbiAgICBjb25zdCB7Y29uZmlnfSA9IHRoaXMuY2lTZXJ2aWNlO1xuICAgIGxldCByZXN1bHQgPSAndHJhbnNwYXJlbnQnO1xuXG4gICAgaWYgKHRoaXMuaXNSYXRpbyAmJiAhdGhpcy5pc1ByZXZpZXdMb2FkZWQgJiYgIXRoaXMuaXNMb2FkZWQpIHtcbiAgICAgIHJlc3VsdCA9IGNvbmZpZy5wbGFjZWhvbGRlckJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUocmVzdWx0KTtcbiAgfVxufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { NgModule } from '@angular/core';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -404,3 +404,3 @@ import * as tslib_1 from "tslib";

]; };
/** @nocollapse */ CIService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function CIService_Factory() { return new CIService(i0.ɵɵinject(i1.CIConfig)); }, token: CIService, providedIn: "root" });
/** @nocollapse */ CIService.ngInjectableDef = i0.defineInjectable({ factory: function CIService_Factory() { return new CIService(i0.inject(i1.CIConfig)); }, token: CIService, providedIn: "root" });
return CIService;

@@ -407,0 +407,0 @@ }());

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /*

@@ -1,3 +0,3 @@

import { Injectable, ɵɵdefineInjectable, ɵɵinject, EventEmitter, Component, ChangeDetectorRef, ViewChild, Input, Output, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Injectable, NgModule, Component, Input, ViewChild, EventEmitter, Output, ChangeDetectorRef, defineInjectable, inject } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';

@@ -10,3 +10,3 @@ import { fromEvent } from 'rxjs';

* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -18,3 +18,3 @@ class CIConfig {

* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -333,7 +333,7 @@ class CIService {

];
/** @nocollapse */ CIService.ngInjectableDef = ɵɵdefineInjectable({ factory: function CIService_Factory() { return new CIService(ɵɵinject(CIConfig)); }, token: CIService, providedIn: "root" });
/** @nocollapse */ CIService.ngInjectableDef = defineInjectable({ factory: function CIService_Factory() { return new CIService(inject(CIConfig)); }, token: CIService, providedIn: "root" });
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -645,4 +645,4 @@ class ImgComponent {

ImgComponent.propDecorators = {
imgElem: [{ type: ViewChild, args: ['imgElem', { static: false },] }],
pictureElem: [{ type: ViewChild, args: ['pictureElem', { static: false },] }],
imgElem: [{ type: ViewChild, args: ['imgElem',] }],
pictureElem: [{ type: ViewChild, args: ['pictureElem',] }],
src: [{ type: Input }],

@@ -665,3 +665,3 @@ class: [{ type: Input }],

* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -679,3 +679,14 @@ class CIModule {

export { CIConfig, CIModule, CIService, ImgComponent };
//# sourceMappingURL=ng-cloudimage-responsive.js.map
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { CIService, CIConfig, CIModule, ImgComponent };
//# sourceMappingURL=ng-cloudimage-responsive.js.map

@@ -0,4 +1,4 @@

import { CommonModule } from '@angular/common';
import { __read, __spread, __assign } from 'tslib';
import { Injectable, ɵɵdefineInjectable, ɵɵinject, Component, ChangeDetectorRef, ViewChild, Input, Output, EventEmitter, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Injectable, NgModule, defineInjectable, inject, EventEmitter, Component, ChangeDetectorRef, ViewChild, Input, Output } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';

@@ -11,3 +11,3 @@ import { fromEvent } from 'rxjs';

* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -22,3 +22,3 @@ var CIConfig = /** @class */ (function () {

* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -419,3 +419,3 @@ var CIService = /** @class */ (function () {

]; };
/** @nocollapse */ CIService.ngInjectableDef = ɵɵdefineInjectable({ factory: function CIService_Factory() { return new CIService(ɵɵinject(CIConfig)); }, token: CIService, providedIn: "root" });
/** @nocollapse */ CIService.ngInjectableDef = defineInjectable({ factory: function CIService_Factory() { return new CIService(inject(CIConfig)); }, token: CIService, providedIn: "root" });
return CIService;

@@ -426,3 +426,3 @@ }());

* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -704,4 +704,4 @@ var ImgComponent = /** @class */ (function () {

ImgComponent.propDecorators = {
imgElem: [{ type: ViewChild, args: ['imgElem', { static: false },] }],
pictureElem: [{ type: ViewChild, args: ['pictureElem', { static: false },] }],
imgElem: [{ type: ViewChild, args: ['imgElem',] }],
pictureElem: [{ type: ViewChild, args: ['pictureElem',] }],
src: [{ type: Input }],

@@ -726,3 +726,3 @@ class: [{ type: Input }],

* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -743,3 +743,14 @@ var CIModule = /** @class */ (function () {

export { CIConfig, CIModule, CIService, ImgComponent };
//# sourceMappingURL=ng-cloudimage-responsive.js.map
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { CIService, CIConfig, CIModule, ImgComponent };
//# sourceMappingURL=ng-cloudimage-responsive.js.map

@@ -52,9 +52,9 @@ import { OnInit, AfterViewInit, ElementRef, OnDestroy, EventEmitter, ChangeDetectorRef } from '@angular/core';

getFirstSource(): any;
getPositionStyle(): import("@angular/platform-browser").SafeStyle;
getImgHeight(): import("@angular/platform-browser").SafeStyle;
getTransformStyle(): import("@angular/platform-browser").SafeStyle;
getTransitionStyle(): import("@angular/platform-browser").SafeStyle;
getFilterStyle(): import("@angular/platform-browser").SafeStyle;
getPicturePaddingBottom(): import("@angular/platform-browser").SafeStyle;
getPictureBackground(): import("@angular/platform-browser").SafeStyle;
getPositionStyle(): import("@angular/platform-browser/src/security/dom_sanitization_service").SafeStyle;
getImgHeight(): import("@angular/platform-browser/src/security/dom_sanitization_service").SafeStyle;
getTransformStyle(): import("@angular/platform-browser/src/security/dom_sanitization_service").SafeStyle;
getTransitionStyle(): import("@angular/platform-browser/src/security/dom_sanitization_service").SafeStyle;
getFilterStyle(): import("@angular/platform-browser/src/security/dom_sanitization_service").SafeStyle;
getPicturePaddingBottom(): import("@angular/platform-browser/src/security/dom_sanitization_service").SafeStyle;
getPictureBackground(): import("@angular/platform-browser/src/security/dom_sanitization_service").SafeStyle;
}

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"CIService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"CIConfig"}]}],"getParentWidth":[{"__symbolic":"method"}],"getParentContainerWithWidth":[{"__symbolic":"method"}],"getSizeLimit":[{"__symbolic":"method"}],"checkOnMedia":[{"__symbolic":"method"}],"checkIfRelativeUrlPath":[{"__symbolic":"method"}],"getImgSrc":[{"__symbolic":"method"}],"getSizeAccordingToPixelRatio":[{"__symbolic":"method"}],"generateUrl":[{"__symbolic":"method"}],"generateSources":[{"__symbolic":"method"}],"getAdaptiveSize":[{"__symbolic":"method"}],"generateSrcset":[{"__symbolic":"method"}],"generateImgSrc":[{"__symbolic":"method"}],"getRatioBySize":[{"__symbolic":"method"}],"getBreakPoint":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"CIConfig":{"__symbolic":"class","members":{}},"CIModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ImgComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":12},{"__symbolic":"reference","module":"ng-lazyload-image","name":"LazyLoadImageModule","line":7,"character":26}],"exports":[{"__symbolic":"reference","name":"ImgComponent"}],"providers":[]}]}],"members":{}},"ImgComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"ci-img","template":"\n <picture #pictureElem *ngIf=\"!isProcessed\"></picture>\n\n <ng-container [ngSwitch]=\"lazyLoading\">\n <ng-container *ngSwitchCase=\"true\">\n <picture\n [class]=\"class + ' cloudimage-image-picture cloudimage-image-' + (isLoaded ? 'loaded' : 'loading')\"\n style=\"display:block;width:100%;overflow:hidden;position:relative;\"\n [style.paddingBottom]=\"getPicturePaddingBottom()\"\n [style.background]=\"getPictureBackground()\"\n #imgElem\n *ngIf=\"isProcessed\">\n <source\n *ngFor=\"let source of getRestSources()\"\n [media]=\"source.mediaQuery || ''\"\n [attr.lazyLoad]=\"source.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <source\n *ngIf=\"getFirstSource()\"\n [attr.lazyLoad]=\"firstSource.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <img\n style=\"display:block;width:100%;opacity:1;top:0;left:0;\"\n [style.position]=\"getPositionStyle()\"\n [style.height]=\"getImgHeight()\"\n [style.transform]=\"getTransformStyle()\"\n [style.transition]=\"getTransitionStyle()\"\n [style.filter]=\"getFilterStyle()\"\n (load)=\"onImageLoad($event)\"\n [lazyLoad]=\"!isPreview ? cloudimageUrl : (isPreviewLoaded ? cloudimageUrl : previewCloudimageUrl)\"\n [offset]=\"offset\"\n [alt]=\"\">\n </picture>\n </ng-container>\n <div *ngSwitchCase=\"false\">\n <picture\n [class]=\"class + ' cloudimage-image-picture cloudimage-image-' + (isLoaded ? 'loaded' : 'loading')\"\n style=\"display:block;width:100%;overflow:hidden;position:relative;\"\n [style.paddingBottom]=\"getPicturePaddingBottom()\"\n [style.background]=\"getPictureBackground()\"\n #imgElem\n *ngIf=\"isProcessed\">\n <source\n *ngFor=\"let source of restSources\"\n [media]=\"source.mediaQuery || ''\"\n [srcset]=\"source.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <source\n *ngIf=\"firstSource\"\n [srcset]=\"firstSource.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <img\n style=\"display:block;width:100%;opacity:1;top:0;left:0;\"\n [style.position]=\"getPositionStyle()\"\n [style.height]=\"getImgHeight()\"\n [style.transform]=\"getTransformStyle()\"\n [style.transition]=\"getTransitionStyle()\"\n [style.filter]=\"getFilterStyle()\"\n (load)=\"onImageLoad($event)\"\n [src]=\"!isPreview ? cloudimageUrl : (isPreviewLoaded ? cloudimageUrl : previewCloudimageUrl)\"\n [alt]=\"\">\n </picture>\n </div>\n </ng-container>\n "}]}],"members":{"imgElem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":81,"character":3},"arguments":["imgElem",{"static":false}]}]}],"pictureElem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":82,"character":3},"arguments":["pictureElem",{"static":false}]}]}],"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"alt":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":85,"character":3}}]}],"operation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"o":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"s":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":89,"character":3}}]}],"filters":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"f":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"ratio":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"offset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3}}]}],"ngSwitch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":3}}]}],"imageLoaded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":95,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"CIService"},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":120,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":121,"character":16}]}],"ngOnDestroy":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"processImage":[{"__symbolic":"method"}],"onImageLoad":[{"__symbolic":"method"}],"getRestSources":[{"__symbolic":"method"}],"getFirstSource":[{"__symbolic":"method"}],"getPositionStyle":[{"__symbolic":"method"}],"getImgHeight":[{"__symbolic":"method"}],"getTransformStyle":[{"__symbolic":"method"}],"getTransitionStyle":[{"__symbolic":"method"}],"getFilterStyle":[{"__symbolic":"method"}],"getPicturePaddingBottom":[{"__symbolic":"method"}],"getPictureBackground":[{"__symbolic":"method"}]}}},"origins":{"CIService":"./lib/lib.service","CIConfig":"./lib/config.model","CIModule":"./lib/lib.module","ImgComponent":"./lib/img/img.component"},"importAs":"ng-cloudimage-responsive"}
{"__symbolic":"module","version":4,"metadata":{"CIService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"CIConfig"}]}],"getParentWidth":[{"__symbolic":"method"}],"getParentContainerWithWidth":[{"__symbolic":"method"}],"getSizeLimit":[{"__symbolic":"method"}],"checkOnMedia":[{"__symbolic":"method"}],"checkIfRelativeUrlPath":[{"__symbolic":"method"}],"getImgSrc":[{"__symbolic":"method"}],"getSizeAccordingToPixelRatio":[{"__symbolic":"method"}],"generateUrl":[{"__symbolic":"method"}],"generateSources":[{"__symbolic":"method"}],"getAdaptiveSize":[{"__symbolic":"method"}],"generateSrcset":[{"__symbolic":"method"}],"generateImgSrc":[{"__symbolic":"method"}],"getRatioBySize":[{"__symbolic":"method"}],"getBreakPoint":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"CIConfig":{"__symbolic":"class","members":{}},"CIModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ImgComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":12},{"__symbolic":"reference","module":"ng-lazyload-image","name":"LazyLoadImageModule","line":7,"character":26}],"exports":[{"__symbolic":"reference","name":"ImgComponent"}],"providers":[]}]}],"members":{}},"ImgComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"ci-img","template":"\n <picture #pictureElem *ngIf=\"!isProcessed\"></picture>\n\n <ng-container [ngSwitch]=\"lazyLoading\">\n <ng-container *ngSwitchCase=\"true\">\n <picture\n [class]=\"class + ' cloudimage-image-picture cloudimage-image-' + (isLoaded ? 'loaded' : 'loading')\"\n style=\"display:block;width:100%;overflow:hidden;position:relative;\"\n [style.paddingBottom]=\"getPicturePaddingBottom()\"\n [style.background]=\"getPictureBackground()\"\n #imgElem\n *ngIf=\"isProcessed\">\n <source\n *ngFor=\"let source of getRestSources()\"\n [media]=\"source.mediaQuery || ''\"\n [attr.lazyLoad]=\"source.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <source\n *ngIf=\"getFirstSource()\"\n [attr.lazyLoad]=\"firstSource.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <img\n style=\"display:block;width:100%;opacity:1;top:0;left:0;\"\n [style.position]=\"getPositionStyle()\"\n [style.height]=\"getImgHeight()\"\n [style.transform]=\"getTransformStyle()\"\n [style.transition]=\"getTransitionStyle()\"\n [style.filter]=\"getFilterStyle()\"\n (load)=\"onImageLoad($event)\"\n [lazyLoad]=\"!isPreview ? cloudimageUrl : (isPreviewLoaded ? cloudimageUrl : previewCloudimageUrl)\"\n [offset]=\"offset\"\n [alt]=\"\">\n </picture>\n </ng-container>\n <div *ngSwitchCase=\"false\">\n <picture\n [class]=\"class + ' cloudimage-image-picture cloudimage-image-' + (isLoaded ? 'loaded' : 'loading')\"\n style=\"display:block;width:100%;overflow:hidden;position:relative;\"\n [style.paddingBottom]=\"getPicturePaddingBottom()\"\n [style.background]=\"getPictureBackground()\"\n #imgElem\n *ngIf=\"isProcessed\">\n <source\n *ngFor=\"let source of restSources\"\n [media]=\"source.mediaQuery || ''\"\n [srcset]=\"source.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <source\n *ngIf=\"firstSource\"\n [srcset]=\"firstSource.srcSet || ''\"\n (load)=\"onImageLoad($event)\"\n />\n <img\n style=\"display:block;width:100%;opacity:1;top:0;left:0;\"\n [style.position]=\"getPositionStyle()\"\n [style.height]=\"getImgHeight()\"\n [style.transform]=\"getTransformStyle()\"\n [style.transition]=\"getTransitionStyle()\"\n [style.filter]=\"getFilterStyle()\"\n (load)=\"onImageLoad($event)\"\n [src]=\"!isPreview ? cloudimageUrl : (isPreviewLoaded ? cloudimageUrl : previewCloudimageUrl)\"\n [alt]=\"\">\n </picture>\n </div>\n </ng-container>\n "}]}],"members":{"imgElem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":81,"character":3},"arguments":["imgElem"]}]}],"pictureElem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":82,"character":3},"arguments":["pictureElem"]}]}],"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"alt":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":85,"character":3}}]}],"operation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"o":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"s":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":89,"character":3}}]}],"filters":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"f":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"ratio":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"offset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3}}]}],"ngSwitch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":3}}]}],"imageLoaded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":95,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"CIService"},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":120,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":121,"character":16}]}],"ngOnDestroy":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"processImage":[{"__symbolic":"method"}],"onImageLoad":[{"__symbolic":"method"}],"getRestSources":[{"__symbolic":"method"}],"getFirstSource":[{"__symbolic":"method"}],"getPositionStyle":[{"__symbolic":"method"}],"getImgHeight":[{"__symbolic":"method"}],"getTransformStyle":[{"__symbolic":"method"}],"getTransitionStyle":[{"__symbolic":"method"}],"getFilterStyle":[{"__symbolic":"method"}],"getPicturePaddingBottom":[{"__symbolic":"method"}],"getPictureBackground":[{"__symbolic":"method"}]}}},"origins":{"CIService":"./lib/lib.service","CIConfig":"./lib/config.model","CIModule":"./lib/lib.module","ImgComponent":"./lib/img/img.component"},"importAs":"ng-cloudimage-responsive"}
{
"name": "ng-cloudimage-responsive",
"version": "2.0.1",
"version": "2.0.2",
"description": "Cloudimage Responsive will smartly resize, compress and accelerate images across the World in your site for all devices. The plugin supports lazy loading technique with fancy animation on image load.",

@@ -5,0 +5,0 @@ "author": "scaleflex",

@@ -1,2 +0,2 @@

[![Release](https://img.shields.io/badge/release-v2.0.1-blue.svg)](https://github.com/scaleflex/ng-cloudimage-responsive/releases)
[![Release](https://img.shields.io/badge/release-v2.0.2-blue.svg)](https://github.com/scaleflex/ng-cloudimage-responsive/releases)
[![Free plan](https://img.shields.io/badge/price-includes%20free%20plan-green.svg)](https://www.cloudimage.io/en/home#b38181a6-b9c8-4015-9742-7b1a1ad382d5)

@@ -3,0 +3,0 @@ [![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)](#contributing)

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc