Socket
Socket
Sign inDemoInstall

angular-svg-icon

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-svg-icon - npm Package Compare versions

Comparing version 6.0.1 to 7.0.0

2

angular-svg-icon.metadata.json

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

{"__symbolic":"module","version":4,"metadata":{"AngularSvgIconModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":2}],"declarations":[{"__symbolic":"reference","name":"SvgIconComponent"}],"providers":[{"__symbolic":"reference","name":"SVG_ICON_REGISTRY_PROVIDER"}],"exports":[{"__symbolic":"reference","name":"SvgIconComponent"}]}]}],"members":{}},"SvgIconRegistryService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":12,"character":26}]}],"addSvg":[{"__symbolic":"method"}],"loadSvg":[{"__symbolic":"method"}],"unloadSvg":[{"__symbolic":"method"}]}},"SVG_ICON_REGISTRY_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentRegistry","http"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentRegistry"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SvgIconRegistryService"},"arguments":[{"__symbolic":"reference","name":"http"}]}}},"SVG_ICON_REGISTRY_PROVIDER":{"provide":{"__symbolic":"reference","name":"SvgIconRegistryService"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":67,"character":14}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":67,"character":30}},{"__symbolic":"reference","name":"SvgIconRegistryService"}],{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":12,"character":26}],"useFactory":{"__symbolic":"reference","name":"SVG_ICON_REGISTRY_PROVIDER_FACTORY"}},"SvgIconComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"svg-icon","styles":[":host { display: inline-block; }"],"template":"<ng-content></ng-content>"}]}],"members":{"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":2}}]}],"stretch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":2}}]}],"svgStyle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":2}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":33,"character":29},{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":34,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":35,"character":19},{"__symbolic":"reference","name":"SvgIconRegistryService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"resetDiffer":[{"__symbolic":"method"}],"setSvg":[{"__symbolic":"method"}],"stylize":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"setStyle":[{"__symbolic":"method"}]}}},"origins":{"AngularSvgIconModule":"./src/angular-svg-icon.module","SvgIconRegistryService":"./src/svg-icon-registry.service","SVG_ICON_REGISTRY_PROVIDER_FACTORY":"./src/svg-icon-registry.service","SVG_ICON_REGISTRY_PROVIDER":"./src/svg-icon-registry.service","SvgIconComponent":"./src/svg-icon.component"},"importAs":"angular-svg-icon"}
{"__symbolic":"module","version":4,"metadata":{"AngularSvgIconModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":2}],"declarations":[{"__symbolic":"reference","name":"SvgIconComponent"}],"providers":[{"__symbolic":"reference","name":"SVG_ICON_REGISTRY_PROVIDER"}],"exports":[{"__symbolic":"reference","name":"SvgIconComponent"}]}]}],"members":{}},"SERVER_URL":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":30},"arguments":["SERVER_URL"]},"SvgIconRegistryService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":19,"character":12}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":20,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":17},"arguments":[{"__symbolic":"reference","name":"SERVER_URL"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":21,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":17},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":21,"character":24}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":18,"character":26},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"any"}]}],"addSvg":[{"__symbolic":"method"}],"loadSvg":[{"__symbolic":"method"}],"unloadSvg":[{"__symbolic":"method"}]}},"SVG_ICON_REGISTRY_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentRegistry","http","platformId","serverUrl","document"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentRegistry"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SvgIconRegistryService"},"arguments":[{"__symbolic":"reference","name":"http"},{"__symbolic":"reference","name":"platformId"},{"__symbolic":"reference","name":"serverUrl"},{"__symbolic":"reference","name":"document"}]}}},"SVG_ICON_REGISTRY_PROVIDER":{"provide":{"__symbolic":"reference","name":"SvgIconRegistryService"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":82,"character":14}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":82,"character":30}},{"__symbolic":"reference","name":"SvgIconRegistryService"}],{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":18,"character":26},[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":82,"character":80}],[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":83,"character":8}},{"__symbolic":"reference","name":"SERVER_URL"}],[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":83,"character":64}},{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":83,"character":76}]],"useFactory":{"__symbolic":"reference","name":"SVG_ICON_REGISTRY_PROVIDER_FACTORY"}},"SvgIconComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"svg-icon","styles":[":host { display: inline-block; }"],"template":"<ng-content></ng-content>"}]}],"members":{"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":2}}]}],"stretch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":2}}]}],"svgStyle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":2}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":33,"character":29},{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":34,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":35,"character":19},{"__symbolic":"reference","name":"SvgIconRegistryService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"resetDiffer":[{"__symbolic":"method"}],"setSvg":[{"__symbolic":"method"}],"stylize":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"setStyle":[{"__symbolic":"method"}]}}},"origins":{"AngularSvgIconModule":"./src/angular-svg-icon.module","SERVER_URL":"./src/svg-icon-registry.service","SvgIconRegistryService":"./src/svg-icon-registry.service","SVG_ICON_REGISTRY_PROVIDER_FACTORY":"./src/svg-icon-registry.service","SVG_ICON_REGISTRY_PROVIDER":"./src/svg-icon-registry.service","SvgIconComponent":"./src/svg-icon.component"},"importAs":"angular-svg-icon"}

@@ -9,9 +9,15 @@ (function (global, factory) {

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var SvgIconRegistryService = (function () {
function SvgIconRegistryService(http$$1) {
/** @type {?} */
var SERVER_URL = new core.InjectionToken('SERVER_URL');
var SvgIconRegistryService = /** @class */ (function () {
function SvgIconRegistryService(http$$1, platformId, serverUrl, _document) {
this.http = http$$1;
this.platformId = platformId;
this.serverUrl = serverUrl;
this._document = _document;
this.iconsByUrl = new Map();
this.iconsLoadingByUrl = new Map();
this.document = this._document;
}

@@ -34,6 +40,6 @@ /** Add a SVG to the registry by passing a name and the SVG. */

/** @type {?} */
var div = document.createElement('DIV');
var div = this.document.createElement('DIV');
div.innerHTML = data;
/** @type {?} */
var svg = (div.querySelector('svg'));
var svg = ( /** @type {?} */(div.querySelector('svg')));
this.iconsByUrl.set(name, svg);

@@ -55,2 +61,5 @@ }

var _this = this;
if (this.serverUrl && url.match(/^(http(s)?):/) === null) {
url = this.serverUrl + url;
}
if (this.iconsByUrl.has(url)) {

@@ -64,11 +73,11 @@ return rxjs.of(this.iconsByUrl.get(url));

/** @type {?} */
var o = (this.http.get(url, { responseType: 'text' }).pipe(operators.map(function (svg) {
var o = ( /** @type {?} */(this.http.get(url, { responseType: 'text' }).pipe(operators.map(function (svg) {
/** @type {?} */
var div = document.createElement('DIV');
var div = _this.document.createElement('DIV');
div.innerHTML = svg;
return /** @type {?} */ (div.querySelector('svg'));
return ( /** @type {?} */(div.querySelector('svg')));
}), operators.tap(function (svg) { return _this.iconsByUrl.set(url, svg); }), operators.catchError(function (err) {
console.error(err);
return rxjs.throwError(err);
}), operators.finalize(function () { return _this.iconsLoadingByUrl.delete(url); }), operators.share()));
}), operators.finalize(function () { return _this.iconsLoadingByUrl.delete(url); }), operators.share())));
this.iconsLoadingByUrl.set(url, o);

@@ -100,3 +109,6 @@ return o;

return [
{ type: http.HttpClient }
{ type: http.HttpClient },
{ type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] },
{ type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [SERVER_URL,] }] },
{ type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [common.DOCUMENT,] }] }
];

@@ -109,6 +121,9 @@ };

* @param {?} http
* @param {?} platformId
* @param {?=} serverUrl
* @param {?=} document
* @return {?}
*/
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http$$1) {
return parentRegistry || new SvgIconRegistryService(http$$1);
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http$$1, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(http$$1, platformId, serverUrl, document);
}

@@ -118,3 +133,5 @@ /** @type {?} */

provide: SvgIconRegistryService,
deps: [[new core.Optional(), new core.SkipSelf(), SvgIconRegistryService], http.HttpClient],
deps: [[new core.Optional(), new core.SkipSelf(), SvgIconRegistryService], http.HttpClient, [( /** @type {?} */(core.PLATFORM_ID))],
[new core.Optional(), ( /** @type {?} */(SERVER_URL))], [new core.Optional(), ( /** @type {?} */(common.DOCUMENT))]
],
useFactory: SVG_ICON_REGISTRY_PROVIDER_FACTORY

@@ -164,5 +181,5 @@ };

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var SvgIconComponent = (function () {
var SvgIconComponent = /** @class */ (function () {
function SvgIconComponent(element, differs, renderer, iconReg) {

@@ -177,6 +194,9 @@ this.element = element;

// Adapted from ngStyle
set: /**
set:
// Adapted from ngStyle
/**
* @param {?} v
* @return {?}
*/ function (v) {
*/
function (v) {
this._svgStyle = v;

@@ -243,5 +263,7 @@ if (!this.differ && v) {

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.init = /**
* @private
* @return {?}

@@ -257,5 +279,7 @@ */

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.destroy = /**
* @private
* @return {?}

@@ -271,5 +295,7 @@ */

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.resetDiffer = /**
* @private
* @return {?}

@@ -283,2 +309,3 @@ */

/**
* @private
* @param {?} svg

@@ -288,2 +315,3 @@ * @return {?}

SvgIconComponent.prototype.setSvg = /**
* @private
* @param {?} svg

@@ -296,3 +324,3 @@ * @return {?}

/** @type {?} */
var icon = (svg.cloneNode(true));
var icon = ( /** @type {?} */(svg.cloneNode(true)));
/** @type {?} */

@@ -306,5 +334,7 @@ var elem = this.element.nativeElement;

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.stylize = /**
* @private
* @return {?}

@@ -325,2 +355,3 @@ */

/**
* @private
* @param {?} changes

@@ -330,2 +361,3 @@ * @return {?}

SvgIconComponent.prototype.applyChanges = /**
* @private
* @param {?} changes

@@ -341,2 +373,3 @@ * @return {?}

/**
* @private
* @param {?} nameAndUnit

@@ -347,2 +380,3 @@ * @param {?} value

SvgIconComponent.prototype.setStyle = /**
* @private
* @param {?} nameAndUnit

@@ -358,3 +392,3 @@ * @param {?} value

if (value !== null) {
this.renderer.setStyle(svg, name, /** @type {?} */ (value));
this.renderer.setStyle(svg, name, ( /** @type {?} */(value)));
}

@@ -391,5 +425,5 @@ else {

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var AngularSvgIconModule = (function () {
var AngularSvgIconModule = /** @class */ (function () {
function AngularSvgIconModule() {

@@ -412,3 +446,3 @@ }

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

@@ -418,8 +452,9 @@

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
exports.AngularSvgIconModule = AngularSvgIconModule;
exports.SVG_ICON_REGISTRY_PROVIDER_FACTORY = SVG_ICON_REGISTRY_PROVIDER_FACTORY;
exports.SERVER_URL = SERVER_URL;
exports.SvgIconRegistryService = SvgIconRegistryService;
exports.SVG_ICON_REGISTRY_PROVIDER_FACTORY = SVG_ICON_REGISTRY_PROVIDER_FACTORY;
exports.SVG_ICON_REGISTRY_PROVIDER = SVG_ICON_REGISTRY_PROVIDER;

@@ -432,2 +467,2 @@ exports.SvgIconComponent = SvgIconComponent;

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi51bWQuanMubWFwIiwic291cmNlcyI6WyJuZzovL2FuZ3VsYXItc3ZnLWljb24vc3JjL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UudHMiLCJub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9zdmctaWNvbi5jb21wb25lbnQudHMiLCJuZzovL2FuZ3VsYXItc3ZnLWljb24vc3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCwgY2F0Y2hFcnJvciwgZmluYWxpemUsIHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB7XG5cblx0cHJpdmF0ZSBpY29uc0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIFNWR0VsZW1lbnQ+KCk7XG5cdHByaXZhdGUgaWNvbnNMb2FkaW5nQnlVcmwgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxTVkdFbGVtZW50Pj4oKTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6SHR0cENsaWVudCkge1xuXHR9XG5cblx0LyoqIEFkZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgYnkgcGFzc2luZyBhIG5hbWUgYW5kIHRoZSBTVkcuICovXG5cdGFkZFN2ZyhuYW1lOnN0cmluZywgZGF0YTpzdHJpbmcpIHtcblx0XHRpZiAoIXRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0ZGl2LmlubmVySFRNTCA9IGRhdGE7XG5cdFx0XHRjb25zdCBzdmcgPSA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuc2V0KG5hbWUsIHN2Zyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIExvYWQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGZyb20gYSBVUkwuICovXG5cdGxvYWRTdmcodXJsOnN0cmluZykgOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcblxuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5pY29uc0J5VXJsLmdldCh1cmwpKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHJldHVybiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmdldCh1cmwpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBvID0gPE9ic2VydmFibGU8U1ZHRWxlbWVudD4+IHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pLnBpcGUoXG5cdFx0XHRcdG1hcChzdmcgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0XHRcdGRpdi5pbm5lckhUTUwgPSBzdmc7XG5cdFx0XHRcdFx0cmV0dXJuIDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdHRhcCAoc3ZnID0+IHRoaXMuaWNvbnNCeVVybC5zZXQodXJsLCBzdmcpICksXG5cdFx0XHRcdGNhdGNoRXJyb3IoZXJyID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGVycik7XG5cdFx0XHRcdFx0cmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycik7XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRmaW5hbGl6ZSgoKSA9PiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmRlbGV0ZSh1cmwpICksXG5cdFx0XHRcdHNoYXJlKClcblx0XHRcdCk7XG5cblx0XHRcdHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuc2V0KHVybCwgbyk7XG5cdFx0XHRyZXR1cm4gbztcblx0XHR9XG5cdH1cblxuXHQvKiogUmVtb3ZlIGEgU1ZHIGZyb20gdGhlIHJlZ2lzdHJ5IGJ5IFVSTCAob3IgbmFtZSkuICovXG5cdHVubG9hZFN2Zyh1cmw6c3RyaW5nKSB7XG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXModXJsKSkge1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLmRlbGV0ZSh1cmwpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWShwYXJlbnRSZWdpc3RyeTpTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLCBodHRwOkh0dHBDbGllbnQpIHtcblx0cmV0dXJuIHBhcmVudFJlZ2lzdHJ5IHx8IG5ldyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlKGh0dHApO1xufVxuXG5leHBvcnQgY29uc3QgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgPSB7XG5cdHByb3ZpZGU6IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsXG5cdGRlcHM6IFsgW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZV0sIEh0dHBDbGllbnQgXSxcblx0dXNlRmFjdG9yeTogU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWVxufTtcbiIsIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlXHJcbnRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlXHJcbkxpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcblxyXG5USElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXHJcbktJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gQU5ZIElNUExJRURcclxuV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSxcclxuTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC5cclxuXHJcblNlZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xyXG5hbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMClcclxuICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZShyZXN1bHQudmFsdWUpOyB9KS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBleHBvcnRzKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmICghZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShwKSkgZXhwb3J0c1twXSA9IG1bcF07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcclxuICAgIHJlc3VsdC5kZWZhdWx0ID0gbW9kO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsXG5cdEtleVZhbHVlQ2hhbmdlUmVjb3JkLCBLZXlWYWx1ZUNoYW5nZXMsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlcnMsXG5cdE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzdmctaWNvbicsXG5cdHN0eWxlczogWyBgOmhvc3QgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1gIF0sXG5cdHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5cbmV4cG9ydCBjbGFzcyBTdmdJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgRG9DaGVjayB7XG5cdEBJbnB1dCgpIHNyYzpzdHJpbmc7XG5cdEBJbnB1dCgpIHN0cmV0Y2ggPSBmYWxzZTtcblxuXHQvLyBBZGFwdGVkIGZyb20gbmdTdHlsZVxuXHRASW5wdXQoKVxuXHRzZXQgc3ZnU3R5bGUodjoge1trZXk6c3RyaW5nXTogc3RyaW5nIH0pIHtcblx0XHR0aGlzLl9zdmdTdHlsZSA9IHY7XG5cdFx0aWYgKCF0aGlzLmRpZmZlciAmJiB2KSB7XG5cdFx0XHR0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHYpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc3ZnOlNWR0VsZW1lbnQ7XG5cdHByaXZhdGUgaWNuU3ViOlN1YnNjcmlwdGlvbjtcblx0cHJpdmF0ZSBkaWZmZXI6S2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPjtcblx0cHJpdmF0ZSBfc3ZnU3R5bGU6IHtba2V5OnN0cmluZ106c3RyaW5nfTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6RWxlbWVudFJlZixcblx0XHRwcml2YXRlIGRpZmZlcnM6S2V5VmFsdWVEaWZmZXJzLFxuXHRcdHByaXZhdGUgcmVuZGVyZXI6UmVuZGVyZXIyLFxuXHRcdHByaXZhdGUgaWNvblJlZzpTdmdJY29uUmVnaXN0cnlTZXJ2aWNlKSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLmluaXQoKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuZGVzdHJveSgpO1xuXHR9XG5cblx0bmdPbkNoYW5nZXMoY2hhbmdlUmVjb3JkOiB7W2tleTpzdHJpbmddOlNpbXBsZUNoYW5nZX0pIHtcblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzcmMnXSkge1xuXHRcdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRcdHRoaXMuZGVzdHJveSgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5pbml0KCk7XG5cdFx0fVxuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3N0cmV0Y2gnXSkge1xuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdEb0NoZWNrKCkge1xuXHRcdGlmICh0aGlzLnN2ZyAmJiB0aGlzLmRpZmZlcikge1xuXHRcdFx0Y29uc3QgY2hhbmdlcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5fc3ZnU3R5bGUpO1xuXHRcdFx0aWYgKGNoYW5nZXMpIHtcblx0XHRcdFx0dGhpcy5hcHBseUNoYW5nZXMoY2hhbmdlcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbml0KCkge1xuXHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmxvYWRTdmcodGhpcy5zcmMpLnN1YnNjcmliZShzdmcgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdmcoc3ZnKTtcblx0XHRcdHRoaXMucmVzZXREaWZmZXIoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgZGVzdHJveSgpIHtcblx0XHR0aGlzLnN2ZyA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmRpZmZlciA9IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5pY25TdWIpIHtcblx0XHRcdHRoaXMuaWNuU3ViLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSByZXNldERpZmZlcigpIHtcblx0XHRpZiAodGhpcy5fc3ZnU3R5bGUgJiYgIXRoaXMuZGlmZmVyKSB7XG5cdFx0XHR0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHRoaXMuX3N2Z1N0eWxlKS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHNldFN2Zyhzdmc6U1ZHRWxlbWVudCkge1xuXHRcdGlmIChzdmcpIHtcblx0XHRcdHRoaXMuc3ZnID0gc3ZnO1xuXHRcdFx0Y29uc3QgaWNvbiA9IDxTVkdFbGVtZW50PnN2Zy5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0XHRjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdGVsZW0uaW5uZXJIVE1MID0gJyc7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGVsZW0sIGljb24pO1xuXG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0eWxpemUoKSB7XG5cdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRpZiAodGhpcy5zdHJldGNoID09PSB0cnVlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnN0cmV0Y2ggPT09IGZhbHNlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFwcGx5Q2hhbmdlcyhjaGFuZ2VzOiBLZXlWYWx1ZUNoYW5nZXM8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikge1xuXHRcdGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6S2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCBudWxsKSk7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKChyZWNvcmQ6S2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKSk7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0U3R5bGUobmFtZUFuZFVuaXQ6IHN0cmluZywgdmFsdWU6IHN0cmluZ3xudW1iZXJ8bnVsbHx1bmRlZmluZWQpIHtcblx0XHRjb25zdCBbbmFtZSwgdW5pdF0gPSBuYW1lQW5kVW5pdC5zcGxpdCgnLicpO1xuXHRcdHZhbHVlID0gdmFsdWUgIT09IG51bGwgJiYgdW5pdCA/IGAke3ZhbHVlfSR7dW5pdH1gIDogdmFsdWU7XG5cdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZShzdmcsIG5hbWUsIHZhbHVlIGFzIHN0cmluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoc3ZnLCBuYW1lKTtcblx0XHR9XG5cdH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5cbmltcG9ydCB7IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICcuL3N2Zy1pY29uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6XHQgIFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogWyBTdmdJY29uQ29tcG9uZW50IF0sXG5cdHByb3ZpZGVyczogICAgWyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiBdLFxuXHRleHBvcnRzOiAgICAgIFsgU3ZnSWNvbkNvbXBvbmVudCBdXG59KVxuXG5leHBvcnQgY2xhc3MgQW5ndWxhclN2Z0ljb25Nb2R1bGUge31cbiJdLCJuYW1lcyI6WyJodHRwIiwib2JzZXJ2YWJsZU9mIiwibWFwIiwidGFwIiwiY2F0Y2hFcnJvciIsIm9ic2VydmFibGVUaHJvd0Vycm9yIiwiZmluYWxpemUiLCJzaGFyZSIsIkluamVjdGFibGUiLCJIdHRwQ2xpZW50IiwiT3B0aW9uYWwiLCJTa2lwU2VsZiIsIkNvbXBvbmVudCIsIkVsZW1lbnRSZWYiLCJLZXlWYWx1ZURpZmZlcnMiLCJSZW5kZXJlcjIiLCJJbnB1dCIsIk5nTW9kdWxlIiwiQ29tbW9uTW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7UUFZQyxnQ0FBb0JBLE9BQWU7WUFBZixTQUFJLEdBQUpBLE9BQUksQ0FBVzs4QkFIZCxJQUFJLEdBQUcsRUFBc0I7cUNBQ3RCLElBQUksR0FBRyxFQUFrQztTQUdwRTs7Ozs7Ozs7UUFHRCx1Q0FBTTs7Ozs7O1lBQU4sVUFBTyxJQUFXLEVBQUUsSUFBVztnQkFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFOztvQkFDL0IsSUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7O29CQUNyQixJQUFNLEdBQUcsSUFBZSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFDO29CQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQy9CO2FBQ0Q7Ozs7Ozs7UUFHRCx3Q0FBTzs7Ozs7WUFBUCxVQUFRLEdBQVU7Z0JBQWxCLGlCQXlCQztnQkF2QkEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDN0IsT0FBT0MsT0FBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENB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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi51bWQuanMubWFwIiwic291cmNlcyI6WyJuZzovL2FuZ3VsYXItc3ZnLWljb24vc3JjL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UudHMiLCJub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9zdmctaWNvbi5jb21wb25lbnQudHMiLCJuZzovL2FuZ3VsYXItc3ZnLWljb24vc3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCwgY2F0Y2hFcnJvciwgZmluYWxpemUsIHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IFNFUlZFUl9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignU0VSVkVSX1VSTCcpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB7XG5cblx0cHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQ7XG5cdHByaXZhdGUgaWNvbnNCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBTVkdFbGVtZW50PigpO1xuXHRwcml2YXRlIGljb25zTG9hZGluZ0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8U1ZHRWxlbWVudD4+KCk7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBodHRwOkh0dHBDbGllbnQsXG5cdFx0XHRcdEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuXHRcdFx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KFNFUlZFUl9VUkwpIHByb3RlY3RlZCBzZXJ2ZXJVcmw6IHN0cmluZyxcblx0XHRcdFx0QE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSkge1xuXHRcdFx0dGhpcy5kb2N1bWVudCA9IHRoaXMuX2RvY3VtZW50O1xuXHR9XG5cblx0LyoqIEFkZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgYnkgcGFzc2luZyBhIG5hbWUgYW5kIHRoZSBTVkcuICovXG5cdGFkZFN2ZyhuYW1lOnN0cmluZywgZGF0YTpzdHJpbmcpIHtcblx0XHRpZiAoIXRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRkaXYuaW5uZXJIVE1MID0gZGF0YTtcblx0XHRcdGNvbnN0IHN2ZyA9IDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5zZXQobmFtZSwgc3ZnKTtcblx0XHR9XG5cdH1cblxuXHQvKiogTG9hZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgZnJvbSBhIFVSTC4gKi9cblx0bG9hZFN2Zyh1cmw6c3RyaW5nKSA6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuXG5cdFx0aWYgKHRoaXMuc2VydmVyVXJsICYmIHVybC5tYXRjaCgvXihodHRwKHMpPyk6LykgPT09IG51bGwpIHtcblx0XHRcdHVybCA9IHRoaXMuc2VydmVyVXJsICsgdXJsO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5pY29uc0J5VXJsLmdldCh1cmwpKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHJldHVybiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmdldCh1cmwpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBvID0gPE9ic2VydmFibGU8U1ZHRWxlbWVudD4+IHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pLnBpcGUoXG5cdFx0XHRcdG1hcChzdmcgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRcdFx0ZGl2LmlubmVySFRNTCA9IHN2Zztcblx0XHRcdFx0XHRyZXR1cm4gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0dGFwIChzdmcgPT4gdGhpcy5pY29uc0J5VXJsLnNldCh1cmwsIHN2ZykgKSxcblx0XHRcdFx0Y2F0Y2hFcnJvcihlcnIgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyKTtcblx0XHRcdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyKTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdGZpbmFsaXplKCgpID0+IHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZGVsZXRlKHVybCkgKSxcblx0XHRcdFx0c2hhcmUoKVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5pY29uc0xvYWRpbmdCeVVybC5zZXQodXJsLCBvKTtcblx0XHRcdHJldHVybiBvO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBSZW1vdmUgYSBTVkcgZnJvbSB0aGUgcmVnaXN0cnkgYnkgVVJMIChvciBuYW1lKS4gKi9cblx0dW5sb2FkU3ZnKHVybDpzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuZGVsZXRlKHVybCk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZKHBhcmVudFJlZ2lzdHJ5OlN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsIGh0dHA6SHR0cENsaWVudCxcblx0cGxhdGZvcm1JZDogT2JqZWN0LCBzZXJ2ZXJVcmw/OiBzdHJpbmcsIGRvY3VtZW50PzogYW55KSB7XG5cdHJldHVybiBwYXJlbnRSZWdpc3RyeSB8fCBuZXcgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZShodHRwLCBwbGF0Zm9ybUlkLCAgc2VydmVyVXJsLCBkb2N1bWVudCk7XG59XG5cbmV4cG9ydCBjb25zdCBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiA9IHtcblx0cHJvdmlkZTogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSxcblx0ZGVwczogWyBbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlXSwgSHR0cENsaWVudCwgW1BMQVRGT1JNX0lEIGFzIEluamVjdGlvblRva2VuPGFueT5dLFxuXHRcdFx0W25ldyBPcHRpb25hbCgpLCBTRVJWRVJfVVJMIGFzIEluamVjdGlvblRva2VuPHN0cmluZz5dLCBbbmV3IE9wdGlvbmFsKCksIERPQ1VNRU5UIGFzIEluamVjdGlvblRva2VuPGFueT5dXG5cdF0sXG5cdHVzZUZhY3Rvcnk6IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUllcbn07XG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsImltcG9ydCB7IENvbXBvbmVudCwgRG9DaGVjaywgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LFxuXHRLZXlWYWx1ZUNoYW5nZVJlY29yZCwgS2V5VmFsdWVDaGFuZ2VzLCBLZXlWYWx1ZURpZmZlciwgS2V5VmFsdWVEaWZmZXJzLFxuXHRPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnc3ZnLWljb24nLFxuXHRzdHlsZXM6IFsgYDpob3N0IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9YCBdLFxuXHR0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuXG5leHBvcnQgY2xhc3MgU3ZnSWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIERvQ2hlY2sge1xuXHRASW5wdXQoKSBzcmM6c3RyaW5nO1xuXHRASW5wdXQoKSBzdHJldGNoID0gZmFsc2U7XG5cblx0Ly8gQWRhcHRlZCBmcm9tIG5nU3R5bGVcblx0QElucHV0KClcblx0c2V0IHN2Z1N0eWxlKHY6IHtba2V5OnN0cmluZ106IHN0cmluZyB9KSB7XG5cdFx0dGhpcy5fc3ZnU3R5bGUgPSB2O1xuXHRcdGlmICghdGhpcy5kaWZmZXIgJiYgdikge1xuXHRcdFx0dGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZCh2KS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN2ZzpTVkdFbGVtZW50O1xuXHRwcml2YXRlIGljblN1YjpTdWJzY3JpcHRpb247XG5cdHByaXZhdGUgZGlmZmVyOktleVZhbHVlRGlmZmVyPHN0cmluZywgc3RyaW5nfG51bWJlcj47XG5cdHByaXZhdGUgX3N2Z1N0eWxlOiB7W2tleTpzdHJpbmddOnN0cmluZ307XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OkVsZW1lbnRSZWYsXG5cdFx0cHJpdmF0ZSBkaWZmZXJzOktleVZhbHVlRGlmZmVycyxcblx0XHRwcml2YXRlIHJlbmRlcmVyOlJlbmRlcmVyMixcblx0XHRwcml2YXRlIGljb25SZWc6U3ZnSWNvblJlZ2lzdHJ5U2VydmljZSkge1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5pbml0KCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLmRlc3Ryb3koKTtcblx0fVxuXG5cdG5nT25DaGFuZ2VzKGNoYW5nZVJlY29yZDoge1trZXk6c3RyaW5nXTpTaW1wbGVDaGFuZ2V9KSB7XG5cdFx0aWYgKGNoYW5nZVJlY29yZFsnc3JjJ10pIHtcblx0XHRcdGlmICh0aGlzLnN2Zykge1xuXHRcdFx0XHR0aGlzLmRlc3Ryb3koKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuaW5pdCgpO1xuXHRcdH1cblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzdHJldGNoJ10pIHtcblx0XHRcdHRoaXMuc3R5bGl6ZSgpO1xuXHRcdH1cblx0fVxuXG5cdG5nRG9DaGVjaygpIHtcblx0XHRpZiAodGhpcy5zdmcgJiYgdGhpcy5kaWZmZXIpIHtcblx0XHRcdGNvbnN0IGNoYW5nZXMgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMuX3N2Z1N0eWxlKTtcblx0XHRcdGlmIChjaGFuZ2VzKSB7XG5cdFx0XHRcdHRoaXMuYXBwbHlDaGFuZ2VzKGNoYW5nZXMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgaW5pdCgpIHtcblx0XHR0aGlzLmljblN1YiA9IHRoaXMuaWNvblJlZy5sb2FkU3ZnKHRoaXMuc3JjKS5zdWJzY3JpYmUoc3ZnID0+IHtcblx0XHRcdHRoaXMuc2V0U3ZnKHN2Zyk7XG5cdFx0XHR0aGlzLnJlc2V0RGlmZmVyKCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdmcgPSB1bmRlZmluZWQ7XG5cdFx0dGhpcy5kaWZmZXIgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKHRoaXMuaWNuU3ViKSB7XG5cdFx0XHR0aGlzLmljblN1Yi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcmVzZXREaWZmZXIoKSB7XG5cdFx0aWYgKHRoaXMuX3N2Z1N0eWxlICYmICF0aGlzLmRpZmZlcikge1xuXHRcdFx0dGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZCh0aGlzLl9zdmdTdHlsZSkuY3JlYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzZXRTdmcoc3ZnOlNWR0VsZW1lbnQpIHtcblx0XHRpZiAoc3ZnKSB7XG5cdFx0XHR0aGlzLnN2ZyA9IHN2Zztcblx0XHRcdGNvbnN0IGljb24gPSA8U1ZHRWxlbWVudD5zdmcuY2xvbmVOb2RlKHRydWUpO1xuXHRcdFx0Y29uc3QgZWxlbSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuXG5cdFx0XHRlbGVtLmlubmVySFRNTCA9ICcnO1xuXHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChlbGVtLCBpY29uKTtcblxuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdHlsaXplKCkge1xuXHRcdGlmICh0aGlzLnN2Zykge1xuXHRcdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0aWYgKHRoaXMuc3RyZXRjaCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHR0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzdmcsICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5zdHJldGNoID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShzdmcsICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBhcHBseUNoYW5nZXMoY2hhbmdlczogS2V5VmFsdWVDaGFuZ2VzPHN0cmluZywgc3RyaW5nfG51bWJlcj4pIHtcblx0XHRjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbSgocmVjb3JkOktleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgbnVsbCkpO1xuXHRcdGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgocmVjb3JkOktleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgcmVjb3JkLmN1cnJlbnRWYWx1ZSkpO1xuXHRcdGNoYW5nZXMuZm9yRWFjaENoYW5nZWRJdGVtKChyZWNvcmQ6S2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKSk7XG5cdH1cblxuXHRwcml2YXRlIHNldFN0eWxlKG5hbWVBbmRVbml0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmd8bnVtYmVyfG51bGx8dW5kZWZpbmVkKSB7XG5cdFx0Y29uc3QgW25hbWUsIHVuaXRdID0gbmFtZUFuZFVuaXQuc3BsaXQoJy4nKTtcblx0XHR2YWx1ZSA9IHZhbHVlICE9PSBudWxsICYmIHVuaXQgPyBgJHt2YWx1ZX0ke3VuaXR9YCA6IHZhbHVlO1xuXHRcdGNvbnN0IHN2ZyA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRpZiAodmFsdWUgIT09IG51bGwpIHtcblx0XHRcdHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc3ZnLCBuYW1lLCB2YWx1ZSBhcyBzdHJpbmcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHN2ZywgbmFtZSk7XG5cdFx0fVxuXHR9XG59XG4iLCJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuXG5pbXBvcnQgeyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiB9IGZyb20gJy4vc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBTdmdJY29uQ29tcG9uZW50IH0gZnJvbSAnLi9zdmctaWNvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOlx0ICBbXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRdLFxuXHRkZWNsYXJhdGlvbnM6IFsgU3ZnSWNvbkNvbXBvbmVudCBdLFxuXHRwcm92aWRlcnM6ICAgIFsgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgXSxcblx0ZXhwb3J0czogICAgICBbIFN2Z0ljb25Db21wb25lbnQgXVxufSlcblxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJTdmdJY29uTW9kdWxlIHt9XG4iXSwibmFtZXMiOlsiSW5qZWN0aW9uVG9rZW4iLCJodHRwIiwib2JzZXJ2YWJsZU9mIiwibWFwIiwidGFwIiwiY2F0Y2hFcnJvciIsIm9ic2VydmFibGVUaHJvd0Vycm9yIiwiZmluYWxpemUiLCJzaGFyZSIsIkluamVjdGFibGUiLCJIdHRwQ2xpZW50IiwiSW5qZWN0IiwiUExBVEZPUk1fSUQiLCJPcHRpb25hbCIsIkRPQ1VNRU5UIiwiU2tpcFNlbGYiLCJDb21wb25lbnQiLCJFbGVtZW50UmVmIiwiS2V5VmFsdWVEaWZmZXJzIiwiUmVuZGVyZXIyIiwiSW5wdXQiLCJOZ01vZHVsZSIsIkNvbW1vbk1vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBU0EsUUFBYSxVQUFVLEdBQUcsSUFBSUEsbUJBQWMsQ0FBUyxZQUFZLENBQUM7QUFFbEU7UUFPQyxnQ0FBb0JDLE9BQWUsRUFDSCxVQUFrQixFQUNMLFNBQWlCLEVBQ3JCLFNBQWM7WUFIbkMsU0FBSSxHQUFKQSxPQUFJLENBQVc7WUFDSCxlQUFVLEdBQVYsVUFBVSxDQUFRO1lBQ0wsY0FBUyxHQUFULFNBQVMsQ0FBUTtZQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFLO1lBTi9DLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztZQUMzQyxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztZQU1wRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDaEM7Ozs7Ozs7O1FBR0QsdUNBQU07Ozs7OztZQUFOLFVBQU8sSUFBVyxFQUFFLElBQVc7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTs7d0JBQ3pCLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7b0JBQzlDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDOzt3QkFDZixHQUFHLHNCQUFlLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUE7b0JBQ2hELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDL0I7YUFDRDs7Ozs7OztRQUdELHdDQUFPOzs7OztZQUFQLFVBQVEsR0FBVTtnQkFBbEIsaUJBNkJDO2dCQTNCQSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQ3pELEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztpQkFDM0I7Z0JBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDN0IsT0FBT0MsT0FBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzlDO3FCQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDM0MsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN2QztxQkFBTTs7d0JBQ0EsQ0FBQyxzQkFBNEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNuRkMsYUFBRyxDQUFDLFVBQUEsR0FBRzs7NEJBQ0EsR0FBRyxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQzt3QkFDOUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7d0JBQ3BCLDBCQUFtQixHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFDO3FCQUM1QyxDQUFDLEVBQ0ZDLGFBQUcsQ0FBRSxVQUFBLEdBQUcsSUFBSSxPQUFBLEtBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBQSxDQUFFLEVBQzNDQyxvQkFBVSxDQUFDLFVBQUEsR0FBRzt3QkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNuQixPQUFPQyxlQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUNqQyxDQUFDLEVBQ0ZDLGtCQUFRLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUEsQ0FBRSxFQUNuREMsZUFBSyxFQUFFLENBQ1AsRUFBQTtvQkFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbkMsT0FBTyxDQUFDLENBQUM7aUJBQ1Q7YUFDRDs7Ozs7OztRQUdELDBDQUFTOzs7OztZQUFULFVBQVUsR0FBVTtnQkFDbkIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzVCO2FBQ0Q7O29CQTdEREMsZUFBVTs7Ozs7d0JBVkZDLGVBQVU7d0JBa0IwQixNQUFNLHVCQUE5Q0MsV0FBTSxTQUFDQyxnQkFBVztxREFDbEJDLGFBQVEsWUFBSUYsV0FBTSxTQUFDLFVBQVU7d0RBQzdCRSxhQUFRLFlBQUlGLFdBQU0sU0FBQ0csZUFBUTs7O1FBb0RoQyw2QkFBQztLQTlERCxJQThEQzs7Ozs7Ozs7O0FBRUQsYUFBZ0Isa0NBQWtDLENBQUMsY0FBcUMsRUFBRWIsT0FBZSxFQUN4RyxVQUFrQixFQUFFLFNBQWtCLEVBQUUsUUFBYztRQUN0RCxPQUFPLGNBQWMsSUFBSSxJQUFJLHNCQUFzQixDQUFDQSxPQUFJLEVBQUUsVUFBVSxFQUFHLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RixDQUFDOztBQUVELFFBQWEsMEJBQTBCLEdBQUc7UUFDekMsT0FBTyxFQUFFLHNCQUFzQjtRQUMvQixJQUFJLEVBQUUsQ0FBRSxDQUFDLElBQUlZLGFBQVEsRUFBRSxFQUFFLElBQUlFLGFBQVEsRUFBRSxFQUFFLHNCQUFzQixDQUFDLEVBQUVMLGVBQVUsRUFBRSxvQkFBQ0UsZ0JBQVcsR0FBd0I7WUFDaEgsQ0FBQyxJQUFJQyxhQUFRLEVBQUUscUJBQUUsVUFBVSxHQUEyQixFQUFFLENBQUMsSUFBSUEsYUFBUSxFQUFFLHFCQUFFQyxlQUFRLEdBQXdCO1NBQzFHO1FBQ0QsVUFBVSxFQUFFLGtDQUFrQztLQUM5Qzs7SUN0RkQ7Ozs7Ozs7Ozs7Ozs7O0FBY0EsYUF1R2dCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLElBQUk7WUFDQSxPQUFPLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJO2dCQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlFO1FBQ0QsT0FBTyxLQUFLLEVBQUU7WUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FBRTtnQkFDL0I7WUFDSixJQUFJO2dCQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEQ7b0JBQ087Z0JBQUUsSUFBSSxDQUFDO29CQUFFLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQzthQUFFO1NBQ3BDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDOzs7Ozs7O1FDbkdBLDBCQUFvQixPQUFrQixFQUM3QixPQUF1QixFQUN2QixRQUFrQixFQUNsQixPQUE4QjtZQUhuQixZQUFPLEdBQVAsT0FBTyxDQUFXO1lBQzdCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1lBQ3ZCLGFBQVEsR0FBUixRQUFRLENBQVU7WUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7WUFuQjlCLFlBQU8sR0FBRyxLQUFLLENBQUM7U0FvQnhCO1FBakJELHNCQUNJLHNDQUFROzs7Ozs7OztZQURaLFVBQ2EsQ0FBMEI7Z0JBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQzVDO2FBQ0Q7OztXQUFBOzs7O1FBYUQsbUNBQVE7OztZQUFSO2dCQUNDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNaOzs7O1FBRUQsc0NBQVc7OztZQUFYO2dCQUNDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNmOzs7OztRQUVELHNDQUFXOzs7O1lBQVgsVUFBWSxZQUF5QztnQkFDcEQsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDYixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7cUJBQ2Y7b0JBQ0QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNaO2dCQUNELElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUM1QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ2Y7YUFDRDs7OztRQUVELG9DQUFTOzs7WUFBVDtnQkFDQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTs7d0JBQ3RCLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO29CQUNoRCxJQUFJLE9BQU8sRUFBRTt3QkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUMzQjtpQkFDRDthQUNEOzs7OztRQUVPLCtCQUFJOzs7O1lBQVo7Z0JBQUEsaUJBS0M7Z0JBSkEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQUEsR0FBRztvQkFDekQsS0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDakIsS0FBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUNuQixDQUFDLENBQUM7YUFDSDs7Ozs7UUFFTyxrQ0FBTzs7OztZQUFmO2dCQUNDLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDO2dCQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztnQkFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUMxQjthQUNEOzs7OztRQUVPLHNDQUFXOzs7O1lBQW5CO2dCQUNDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUN6RDthQUNEOzs7Ozs7UUFFTyxpQ0FBTTs7Ozs7WUFBZCxVQUFlLEdBQWM7Z0JBQzVCLElBQUksR0FBRyxFQUFFO29CQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDOzt3QkFDVCxJQUFJLHNCQUFlLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUN0QyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhO29CQUV2QyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUV0QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ2Y7YUFDRDs7Ozs7UUFFTyxrQ0FBTzs7OztZQUFmO2dCQUNDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTs7d0JBQ1AsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVU7b0JBRWpELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztxQkFDL0Q7eUJBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTt3QkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDLENBQUM7cUJBQzFEO2lCQUNEO2FBQ0Q7Ozs7OztRQUVPLHVDQUFZOzs7OztZQUFwQixVQUFxQixPQUErQztnQkFBcEUsaUJBSUM7Z0JBSEEsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFVBQUMsTUFBa0QsSUFBSyxPQUFBLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBQSxDQUFDLENBQUM7Z0JBQ3BILE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFDLE1BQWtELElBQUssT0FBQSxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFBLENBQUMsQ0FBQztnQkFDakksT0FBTyxDQUFDLGtCQUFrQixDQUFDLFVBQUMsTUFBa0QsSUFBSyxPQUFBLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUEsQ0FBQyxDQUFDO2FBQ25JOzs7Ozs7O1FBRU8sbUNBQVE7Ozs7OztZQUFoQixVQUFpQixXQUFtQixFQUFFLEtBQW1DO2dCQUNsRSxJQUFBLHNDQUFxQyxFQUFwQyxZQUFJLEVBQUUsWUFBOEI7Z0JBQzNDLEtBQUssR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxLQUFHLEtBQUssR0FBRyxJQUFNLEdBQUcsS0FBSyxDQUFDOztvQkFDckQsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVU7Z0JBRWpELElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtvQkFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUkscUJBQUUsS0FBSyxHQUFXLENBQUM7aUJBQ25EO3FCQUFNO29CQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDckM7YUFDRDs7b0JBekhERSxjQUFTLFNBQUM7d0JBQ1YsUUFBUSxFQUFFLFVBQVU7d0JBRXBCLFFBQVEsRUFBRSwyQkFBMkI7aUNBRDNCLGtDQUFrQztxQkFFNUM7Ozs7O3dCQWI0QkMsZUFBVTt3QkFDaUJDLG9CQUFlO3dCQUN4Q0MsY0FBUzt3QkFJL0Isc0JBQXNCOzs7OzBCQVU3QkMsVUFBSzs4QkFDTEEsVUFBSzsrQkFHTEEsVUFBSzs7UUErR1AsdUJBQUM7S0ExSEQ7Ozs7OztBQ1RBO1FBT0E7U0FTb0M7O29CQVRuQ0MsYUFBUSxTQUFDO3dCQUNULE9BQU8sRUFBSTs0QkFDVkMsbUJBQVk7eUJBQ1o7d0JBQ0QsWUFBWSxFQUFFLENBQUUsZ0JBQWdCLENBQUU7d0JBQ2xDLFNBQVMsRUFBSyxDQUFFLDBCQUEwQixDQUFFO3dCQUM1QyxPQUFPLEVBQU8sQ0FBRSxnQkFBZ0IsQ0FBRTtxQkFDbEM7O1FBRWtDLDJCQUFDO0tBVHBDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=

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

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common/http"),require("rxjs"),require("rxjs/operators"),require("@angular/common")):"function"==typeof define&&define.amd?define("angular-svg-icon",["exports","@angular/core","@angular/common/http","rxjs","rxjs/operators","@angular/common"],t):t(e["angular-svg-icon"]={},e.ng.core,e.ng.common.http,e.rxjs,e.rxjs.operators,e.ng.common)}(this,function(e,t,r,n,i,o){"use strict";var s=function(){function e(e){this.http=e,this.iconsByUrl=new Map,this.iconsLoadingByUrl=new Map}return e.prototype.addSvg=function(e,t){if(!this.iconsByUrl.has(e)){var r=document.createElement("DIV");r.innerHTML=t;var n=r.querySelector("svg");this.iconsByUrl.set(e,n)}},e.prototype.loadSvg=function(t){var r=this;if(this.iconsByUrl.has(t))return n.of(this.iconsByUrl.get(t));if(this.iconsLoadingByUrl.has(t))return this.iconsLoadingByUrl.get(t);var e=this.http.get(t,{responseType:"text"}).pipe(i.map(function(e){var t=document.createElement("DIV");return t.innerHTML=e,t.querySelector("svg")}),i.tap(function(e){return r.iconsByUrl.set(t,e)}),i.catchError(function(e){return console.error(e),n.throwError(e)}),i.finalize(function(){return r.iconsLoadingByUrl["delete"](t)}),i.share());return this.iconsLoadingByUrl.set(t,e),e},e.prototype.unloadSvg=function(e){this.iconsByUrl.has(e)&&this.iconsByUrl["delete"](e)},e.decorators=[{type:t.Injectable}],e.ctorParameters=function(){return[{type:r.HttpClient}]},e}();function c(e,t){return e||new s(t)}var u={provide:s,deps:[[new t.Optional,new t.SkipSelf,s],r.HttpClient],useFactory:c};var a=function(){function e(e,t,r,n){this.element=e,this.differs=t,this.renderer=r,this.iconReg=n,this.stretch=!1}return Object.defineProperty(e.prototype,"svgStyle",{set:function(e){this._svgStyle=e,!this.differ&&e&&(this.differ=this.differs.find(e).create())},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){this.init()},e.prototype.ngOnDestroy=function(){this.destroy()},e.prototype.ngOnChanges=function(e){e.src&&(this.svg&&this.destroy(),this.init()),e.stretch&&this.stylize()},e.prototype.ngDoCheck=function(){if(this.svg&&this.differ){var e=this.differ.diff(this._svgStyle);e&&this.applyChanges(e)}},e.prototype.init=function(){var t=this;this.icnSub=this.iconReg.loadSvg(this.src).subscribe(function(e){t.setSvg(e),t.resetDiffer()})},e.prototype.destroy=function(){this.svg=undefined,this.differ=undefined,this.icnSub&&this.icnSub.unsubscribe()},e.prototype.resetDiffer=function(){this._svgStyle&&!this.differ&&(this.differ=this.differs.find(this._svgStyle).create())},e.prototype.setSvg=function(e){if(e){var t=(this.svg=e).cloneNode(!0),r=this.element.nativeElement;r.innerHTML="",this.renderer.appendChild(r,t),this.stylize()}},e.prototype.stylize=function(){if(this.svg){var e=this.element.nativeElement.firstChild;!0===this.stretch?this.renderer.setAttribute(e,"preserveAspectRatio","none"):!1===this.stretch&&this.renderer.removeAttribute(e,"preserveAspectRatio")}},e.prototype.applyChanges=function(e){var t=this;e.forEachRemovedItem(function(e){return t.setStyle(e.key,null)}),e.forEachAddedItem(function(e){return t.setStyle(e.key,e.currentValue)}),e.forEachChangedItem(function(e){return t.setStyle(e.key,e.currentValue)})},e.prototype.setStyle=function(e,t){var r=function u(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||0<t--)&&!(n=o.next()).done;)s.push(n.value)}catch(c){i={error:c}}finally{try{n&&!n.done&&(r=o["return"])&&r.call(o)}finally{if(i)throw i.error}}return s}(e.split("."),2),n=r[0],i=r[1];t=null!==t&&i?""+t+i:t;var o=this.element.nativeElement.firstChild;null!==t?this.renderer.setStyle(o,n,t):this.renderer.removeStyle(o,n)},e.decorators=[{type:t.Component,args:[{selector:"svg-icon",template:"<ng-content></ng-content>",styles:[":host { display: inline-block; }"]}]}],e.ctorParameters=function(){return[{type:t.ElementRef},{type:t.KeyValueDiffers},{type:t.Renderer2},{type:s}]},e.propDecorators={src:[{type:t.Input}],stretch:[{type:t.Input}],svgStyle:[{type:t.Input}]},e}(),l=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{imports:[o.CommonModule],declarations:[a],providers:[u],exports:[a]}]}],e}();e.AngularSvgIconModule=l,e.SvgIconRegistryService=s,e.SVG_ICON_REGISTRY_PROVIDER_FACTORY=c,e.SVG_ICON_REGISTRY_PROVIDER=u,e.SvgIconComponent=a,Object.defineProperty(e,"__esModule",{value:!0})});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common/http"),require("rxjs"),require("rxjs/operators"),require("@angular/common")):"function"==typeof define&&define.amd?define("angular-svg-icon",["exports","@angular/core","@angular/common/http","rxjs","rxjs/operators","@angular/common"],e):e(t["angular-svg-icon"]={},t.ng.core,t.ng.common.http,t.rxjs,t.rxjs.operators,t.ng.common)}(this,function(t,e,r,n,i,o){"use strict";var s=new e.InjectionToken("SERVER_URL"),c=function(){function t(t,e,r,n){this.http=t,this.platformId=e,this.serverUrl=r,this._document=n,this.iconsByUrl=new Map,this.iconsLoadingByUrl=new Map,this.document=this._document}return t.prototype.addSvg=function(t,e){if(!this.iconsByUrl.has(t)){var r=this.document.createElement("DIV");r.innerHTML=e;var n=r.querySelector("svg");this.iconsByUrl.set(t,n)}},t.prototype.loadSvg=function(e){var r=this;if(this.serverUrl&&null===e.match(/^(http(s)?):/)&&(e=this.serverUrl+e),this.iconsByUrl.has(e))return n.of(this.iconsByUrl.get(e));if(this.iconsLoadingByUrl.has(e))return this.iconsLoadingByUrl.get(e);var t=this.http.get(e,{responseType:"text"}).pipe(i.map(function(t){var e=r.document.createElement("DIV");return e.innerHTML=t,e.querySelector("svg")}),i.tap(function(t){return r.iconsByUrl.set(e,t)}),i.catchError(function(t){return console.error(t),n.throwError(t)}),i.finalize(function(){return r.iconsLoadingByUrl["delete"](e)}),i.share());return this.iconsLoadingByUrl.set(e,t),t},t.prototype.unloadSvg=function(t){this.iconsByUrl.has(t)&&this.iconsByUrl["delete"](t)},t.decorators=[{type:e.Injectable}],t.ctorParameters=function(){return[{type:r.HttpClient},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:String,decorators:[{type:e.Optional},{type:e.Inject,args:[s]}]},{type:undefined,decorators:[{type:e.Optional},{type:e.Inject,args:[o.DOCUMENT]}]}]},t}();function a(t,e,r,n,i){return t||new c(e,r,n,i)}var u={provide:c,deps:[[new e.Optional,new e.SkipSelf,c],r.HttpClient,[e.PLATFORM_ID],[new e.Optional,s],[new e.Optional,o.DOCUMENT]],useFactory:a};var l=function(){function t(t,e,r,n){this.element=t,this.differs=e,this.renderer=r,this.iconReg=n,this.stretch=!1}return Object.defineProperty(t.prototype,"svgStyle",{set:function(t){this._svgStyle=t,!this.differ&&t&&(this.differ=this.differs.find(t).create())},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.init()},t.prototype.ngOnDestroy=function(){this.destroy()},t.prototype.ngOnChanges=function(t){t.src&&(this.svg&&this.destroy(),this.init()),t.stretch&&this.stylize()},t.prototype.ngDoCheck=function(){if(this.svg&&this.differ){var t=this.differ.diff(this._svgStyle);t&&this.applyChanges(t)}},t.prototype.init=function(){var e=this;this.icnSub=this.iconReg.loadSvg(this.src).subscribe(function(t){e.setSvg(t),e.resetDiffer()})},t.prototype.destroy=function(){this.svg=undefined,this.differ=undefined,this.icnSub&&this.icnSub.unsubscribe()},t.prototype.resetDiffer=function(){this._svgStyle&&!this.differ&&(this.differ=this.differs.find(this._svgStyle).create())},t.prototype.setSvg=function(t){if(t){var e=(this.svg=t).cloneNode(!0),r=this.element.nativeElement;r.innerHTML="",this.renderer.appendChild(r,e),this.stylize()}},t.prototype.stylize=function(){if(this.svg){var t=this.element.nativeElement.firstChild;!0===this.stretch?this.renderer.setAttribute(t,"preserveAspectRatio","none"):!1===this.stretch&&this.renderer.removeAttribute(t,"preserveAspectRatio")}},t.prototype.applyChanges=function(t){var e=this;t.forEachRemovedItem(function(t){return e.setStyle(t.key,null)}),t.forEachAddedItem(function(t){return e.setStyle(t.key,t.currentValue)}),t.forEachChangedItem(function(t){return e.setStyle(t.key,t.currentValue)})},t.prototype.setStyle=function(t,e){var r=function a(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),s=[];try{for(;(void 0===e||0<e--)&&!(n=o.next()).done;)s.push(n.value)}catch(c){i={error:c}}finally{try{n&&!n.done&&(r=o["return"])&&r.call(o)}finally{if(i)throw i.error}}return s}(t.split("."),2),n=r[0],i=r[1];e=null!==e&&i?""+e+i:e;var o=this.element.nativeElement.firstChild;null!==e?this.renderer.setStyle(o,n,e):this.renderer.removeStyle(o,n)},t.decorators=[{type:e.Component,args:[{selector:"svg-icon",template:"<ng-content></ng-content>",styles:[":host { display: inline-block; }"]}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:e.KeyValueDiffers},{type:e.Renderer2},{type:c}]},t.propDecorators={src:[{type:e.Input}],stretch:[{type:e.Input}],svgStyle:[{type:e.Input}]},t}(),p=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{imports:[o.CommonModule],declarations:[l],providers:[u],exports:[l]}]}],t}();t.AngularSvgIconModule=p,t.SVG_ICON_REGISTRY_PROVIDER_FACTORY=a,t.SERVER_URL=s,t.SvgIconRegistryService=c,t.SVG_ICON_REGISTRY_PROVIDER=u,t.SvgIconComponent=l,Object.defineProperty(t,"__esModule",{value:!0})});
//# sourceMappingURL=angular-svg-icon.umd.min.js.map
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -8,4 +8,3 @@ /**

*/
export { AngularSvgIconModule, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent } from './index';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJhbmd1bGFyLXN2Zy1pY29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwrSUFBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
export { AngularSvgIconModule, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent } from './index';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJhbmd1bGFyLXN2Zy1pY29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwySkFBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { AngularSvgIconModule } from './src/angular-svg-icon.module';
export { SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SVG_ICON_REGISTRY_PROVIDER } from './src/svg-icon-registry.service';
export { SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER } from './src/svg-icon-registry.service';
export { SvgIconComponent } from './src/svg-icon.component';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHFDQUFjLCtCQUErQixDQUFDO0FBQzlDLHVHQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGlDQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvYW5ndWxhci1zdmctaWNvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9zdmctaWNvbi5jb21wb25lbnQnO1xuXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHFDQUFjLCtCQUErQixDQUFDO0FBQzlDLG1IQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGlDQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvYW5ndWxhci1zdmctaWNvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9zdmctaWNvbi5jb21wb25lbnQnO1xuXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -21,3 +21,2 @@ import { NgModule } from '@angular/core';

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsic3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVd4RCxNQUFNOzs7WUFUTCxRQUFRLFNBQUM7Z0JBQ1QsT0FBTyxFQUFJO29CQUNWLFlBQVk7aUJBQ1o7Z0JBQ0QsWUFBWSxFQUFFLENBQUUsZ0JBQWdCLENBQUU7Z0JBQ2xDLFNBQVMsRUFBSyxDQUFFLDBCQUEwQixDQUFFO2dCQUM1QyxPQUFPLEVBQU8sQ0FBRSxnQkFBZ0IsQ0FBRTthQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5cbmltcG9ydCB7IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICcuL3N2Zy1pY29uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6XHQgIFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogWyBTdmdJY29uQ29tcG9uZW50IF0sXG5cdHByb3ZpZGVyczogICAgWyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiBdLFxuXHRleHBvcnRzOiAgICAgIFsgU3ZnSWNvbkNvbXBvbmVudCBdXG59KVxuXG5leHBvcnQgY2xhc3MgQW5ndWxhclN2Z0ljb25Nb2R1bGUge31cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsic3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVd4RCxNQUFNLE9BQU8sb0JBQW9COzs7WUFUaEMsUUFBUSxTQUFDO2dCQUNULE9BQU8sRUFBSTtvQkFDVixZQUFZO2lCQUNaO2dCQUNELFlBQVksRUFBRSxDQUFFLGdCQUFnQixDQUFFO2dCQUNsQyxTQUFTLEVBQUssQ0FBRSwwQkFBMEIsQ0FBRTtnQkFDNUMsT0FBTyxFQUFPLENBQUUsZ0JBQWdCLENBQUU7YUFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuXG5pbXBvcnQgeyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiB9IGZyb20gJy4vc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBTdmdJY29uQ29tcG9uZW50IH0gZnJvbSAnLi9zdmctaWNvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOlx0ICBbXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRdLFxuXHRkZWNsYXJhdGlvbnM6IFsgU3ZnSWNvbkNvbXBvbmVudCBdLFxuXHRwcm92aWRlcnM6ICAgIFsgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgXSxcblx0ZXhwb3J0czogICAgICBbIFN2Z0ljb25Db21wb25lbnQgXVxufSlcblxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJTdmdJY29uTW9kdWxlIHt9XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, Optional, SkipSelf } from '@angular/core';
import { Inject, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { of as observableOf, throwError as observableThrowError } from 'rxjs';
import { map, tap, catchError, finalize, share } from 'rxjs/operators';
import { PLATFORM_ID } from '@angular/core';
import { DOCUMENT } from '@angular/common';
/** @type {?} */
export const SERVER_URL = new InjectionToken('SERVER_URL');
export class SvgIconRegistryService {
/**
* @param {?} http
* @param {?} platformId
* @param {?} serverUrl
* @param {?} _document
*/
constructor(http) {
constructor(http, platformId, serverUrl, _document) {
this.http = http;
this.platformId = platformId;
this.serverUrl = serverUrl;
this._document = _document;
this.iconsByUrl = new Map();
this.iconsLoadingByUrl = new Map();
this.document = this._document;
}

@@ -27,6 +38,6 @@ /**

/** @type {?} */
const div = document.createElement('DIV');
const div = this.document.createElement('DIV');
div.innerHTML = data;
/** @type {?} */
const svg = /** @type {?} */ (div.querySelector('svg'));
const svg = (/** @type {?} */ (div.querySelector('svg')));
this.iconsByUrl.set(name, svg);

@@ -41,2 +52,5 @@ }

loadSvg(url) {
if (this.serverUrl && url.match(/^(http(s)?):/) === null) {
url = this.serverUrl + url;
}
if (this.iconsByUrl.has(url)) {

@@ -50,11 +64,11 @@ return observableOf(this.iconsByUrl.get(url));

/** @type {?} */
const o = /** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(svg => {
const o = (/** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(svg => {
/** @type {?} */
const div = document.createElement('DIV');
const div = this.document.createElement('DIV');
div.innerHTML = svg;
return /** @type {?} */ (div.querySelector('svg'));
return (/** @type {?} */ (div.querySelector('svg')));
}), tap(svg => this.iconsByUrl.set(url, svg)), catchError(err => {
console.error(err);
return observableThrowError(err);
}), finalize(() => this.iconsLoadingByUrl.delete(url)), share()));
}), finalize(() => this.iconsLoadingByUrl.delete(url)), share())));
this.iconsLoadingByUrl.set(url, o);

@@ -80,11 +94,43 @@ return o;

SvgIconRegistryService.ctorParameters = () => [
{ type: HttpClient }
{ type: HttpClient },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [SERVER_URL,] }] },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }
];
if (false) {
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype.document;
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype.iconsByUrl;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype.iconsLoadingByUrl;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype.http;
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype.platformId;
/**
* @type {?}
* @protected
*/
SvgIconRegistryService.prototype.serverUrl;
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype._document;
}

@@ -94,6 +140,9 @@ /**

* @param {?} http
* @param {?} platformId
* @param {?=} serverUrl
* @param {?=} document
* @return {?}
*/
export function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http) {
return parentRegistry || new SvgIconRegistryService(http);
export function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(http, platformId, serverUrl, document);
}

@@ -103,6 +152,7 @@ /** @type {?} */

provide: SvgIconRegistryService,
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient],
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient, [(/** @type {?} */ (PLATFORM_ID))],
[new Optional(), (/** @type {?} */ (SERVER_URL))], [new Optional(), (/** @type {?} */ (DOCUMENT))]
],
useFactory: SVG_ICON_REGISTRY_PROVIDER_FACTORY
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJzcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQWMsRUFBRSxJQUFJLFlBQVksRUFBRSxVQUFVLElBQUksb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2RSxNQUFNOzs7O0lBS0wsWUFBb0IsSUFBZTtRQUFmLFNBQUksR0FBSixJQUFJLENBQVc7MEJBSGQsSUFBSSxHQUFHLEVBQXNCO2lDQUN0QixJQUFJLEdBQUcsRUFBa0M7S0FHcEU7Ozs7Ozs7SUFHRCxNQUFNLENBQUMsSUFBVyxFQUFFLElBQVc7UUFDOUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7O1lBQ2hDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7O1lBQ3JCLE1BQU0sR0FBRyxxQkFBZSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFDO1lBQ2pELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztTQUMvQjtLQUNEOzs7Ozs7SUFHRCxPQUFPLENBQUMsR0FBVTtRQUVqQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzlDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZDO1FBQUMsSUFBSSxDQUFDLENBQUM7O1lBQ1AsTUFBTSxDQUFDLHFCQUE0QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ25GLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTs7Z0JBQ1QsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7Z0JBQ3BCLE1BQU0sbUJBQWEsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBQzthQUM1QyxDQUFDLEVBQ0YsR0FBRyxDQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFFLEVBQzNDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBRSxFQUNuRCxLQUFLLEVBQUUsQ0FDUCxFQUFDO1lBRUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNUO0tBQ0Q7Ozs7OztJQUdELFNBQVMsQ0FBQyxHQUFVO1FBQ25CLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtLQUNEOzs7WUFwREQsVUFBVTs7OztZQUxGLFVBQVU7Ozs7Ozs7Ozs7Ozs7OztBQTREbkIsTUFBTSw2Q0FBNkMsY0FBcUMsRUFBRSxJQUFlO0lBQ3hHLE1BQU0sQ0FBQyxjQUFjLElBQUksSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUMxRDs7QUFFRCxhQUFhLDBCQUEwQixHQUFHO0lBQ3pDLE9BQU8sRUFBRSxzQkFBc0I7SUFDL0IsSUFBSSxFQUFFLENBQUUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxVQUFVLENBQUU7SUFDOUUsVUFBVSxFQUFFLGtDQUFrQztDQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2YsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFwLCBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgc2hhcmUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIHtcblxuXHRwcml2YXRlIGljb25zQnlVcmwgPSBuZXcgTWFwPHN0cmluZywgU1ZHRWxlbWVudD4oKTtcblx0cHJpdmF0ZSBpY29uc0xvYWRpbmdCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PigpO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDpIdHRwQ2xpZW50KSB7XG5cdH1cblxuXHQvKiogQWRkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBieSBwYXNzaW5nIGEgbmFtZSBhbmQgdGhlIFNWRy4gKi9cblx0YWRkU3ZnKG5hbWU6c3RyaW5nLCBkYXRhOnN0cmluZykge1xuXHRcdGlmICghdGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0Y29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRkaXYuaW5uZXJIVE1MID0gZGF0YTtcblx0XHRcdGNvbnN0IHN2ZyA9IDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5zZXQobmFtZSwgc3ZnKTtcblx0XHR9XG5cdH1cblxuXHQvKiogTG9hZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgZnJvbSBhIFVSTC4gKi9cblx0bG9hZFN2Zyh1cmw6c3RyaW5nKSA6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuXG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXModXJsKSkge1xuXHRcdFx0cmV0dXJuIG9ic2VydmFibGVPZih0aGlzLmljb25zQnlVcmwuZ2V0KHVybCkpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pY29uc0xvYWRpbmdCeVVybC5oYXModXJsKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZ2V0KHVybCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG8gPSA8T2JzZXJ2YWJsZTxTVkdFbGVtZW50Pj4gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSkucGlwZShcblx0XHRcdFx0bWFwKHN2ZyA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRcdFx0ZGl2LmlubmVySFRNTCA9IHN2Zztcblx0XHRcdFx0XHRyZXR1cm4gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0dGFwIChzdmcgPT4gdGhpcy5pY29uc0J5VXJsLnNldCh1cmwsIHN2ZykgKSxcblx0XHRcdFx0Y2F0Y2hFcnJvcihlcnIgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyKTtcblx0XHRcdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyKTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdGZpbmFsaXplKCgpID0+IHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZGVsZXRlKHVybCkgKSxcblx0XHRcdFx0c2hhcmUoKVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5pY29uc0xvYWRpbmdCeVVybC5zZXQodXJsLCBvKTtcblx0XHRcdHJldHVybiBvO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBSZW1vdmUgYSBTVkcgZnJvbSB0aGUgcmVnaXN0cnkgYnkgVVJMIChvciBuYW1lKS4gKi9cblx0dW5sb2FkU3ZnKHVybDpzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuZGVsZXRlKHVybCk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZKHBhcmVudFJlZ2lzdHJ5OlN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsIGh0dHA6SHR0cENsaWVudCkge1xuXHRyZXR1cm4gcGFyZW50UmVnaXN0cnkgfHwgbmV3IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UoaHR0cCk7XG59XG5cbmV4cG9ydCBjb25zdCBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiA9IHtcblx0cHJvdmlkZTogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSxcblx0ZGVwczogWyBbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlXSwgSHR0cENsaWVudCBdLFxuXHR1c2VGYWN0b3J5OiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZXG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJzcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBYyxFQUFFLElBQUksWUFBWSxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBcUIsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFOUQsTUFBTSxPQUFPLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBUyxZQUFZLENBQUM7QUFHbEUsTUFBTSxPQUFPLHNCQUFzQjs7Ozs7OztJQU1sQyxZQUFvQixJQUFlLEVBQ0gsVUFBa0IsRUFDTCxTQUFpQixFQUNyQixTQUFjO1FBSG5DLFNBQUksR0FBSixJQUFJLENBQVc7UUFDSCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBTi9DLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUMzQyxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztRQU1wRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDakMsQ0FBQzs7Ozs7OztJ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Q2hDLDRDQUErQzs7Ozs7SUFDL0MsMkNBQTJEOzs7OztJQUMzRCwyQ0FBb0Q7Ozs7Ozs7Ozs7QUFzRHhELE1BQU0sVUFBVSxrQ0FBa0MsQ0FBQyxjQUFxQyxFQUFFLElBQWUsRUFDeEcsVUFBa0IsRUFBRSxTQUFrQixFQUFFLFFBQWM7SUFDdEQsT0FBTyxjQUFjLElBQUksSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFHLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM3RixDQUFDOztBQUVELE1BQU0sT0FBTywwQkFBMEIsR0FBRztJQUN6QyxPQUFPLEVBQUUsc0JBQXNCO0lBQy9CLElBQUksRUFBRSxDQUFFLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLHNCQUFzQixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsbUJBQUEsV0FBVyxFQUF1QixDQUFDO1FBQ2hILENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxtQkFBQSxVQUFVLEVBQTBCLENBQUMsRUFBRSxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsbUJBQUEsUUFBUSxFQUF1QixDQUFDO0tBQzFHO0lBQ0QsVUFBVSxFQUFFLGtDQUFrQztDQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCwgY2F0Y2hFcnJvciwgZmluYWxpemUsIHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IFNFUlZFUl9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignU0VSVkVSX1VSTCcpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB7XG5cblx0cHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQ7XG5cdHByaXZhdGUgaWNvbnNCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBTVkdFbGVtZW50PigpO1xuXHRwcml2YXRlIGljb25zTG9hZGluZ0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8U1ZHRWxlbWVudD4+KCk7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBodHRwOkh0dHBDbGllbnQsXG5cdFx0XHRcdEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuXHRcdFx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KFNFUlZFUl9VUkwpIHByb3RlY3RlZCBzZXJ2ZXJVcmw6IHN0cmluZyxcblx0XHRcdFx0QE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSkge1xuXHRcdFx0dGhpcy5kb2N1bWVudCA9IHRoaXMuX2RvY3VtZW50O1xuXHR9XG5cblx0LyoqIEFkZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgYnkgcGFzc2luZyBhIG5hbWUgYW5kIHRoZSBTVkcuICovXG5cdGFkZFN2ZyhuYW1lOnN0cmluZywgZGF0YTpzdHJpbmcpIHtcblx0XHRpZiAoIXRoaXMuaWNvbnNCeVVybC5oYXMobmFtZSkpIHtcblx0XHRcdGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRkaXYuaW5uZXJIVE1MID0gZGF0YTtcblx0XHRcdGNvbnN0IHN2ZyA9IDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5zZXQobmFtZSwgc3ZnKTtcblx0XHR9XG5cdH1cblxuXHQvKiogTG9hZCBhIFNWRyB0byB0aGUgcmVnaXN0cnkgZnJvbSBhIFVSTC4gKi9cblx0bG9hZFN2Zyh1cmw6c3RyaW5nKSA6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuXG5cdFx0aWYgKHRoaXMuc2VydmVyVXJsICYmIHVybC5tYXRjaCgvXihodHRwKHMpPyk6LykgPT09IG51bGwpIHtcblx0XHRcdHVybCA9IHRoaXMuc2VydmVyVXJsICsgdXJsO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5pY29uc0J5VXJsLmdldCh1cmwpKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHJldHVybiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmdldCh1cmwpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBvID0gPE9ic2VydmFibGU8U1ZHRWxlbWVudD4+IHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pLnBpcGUoXG5cdFx0XHRcdG1hcChzdmcgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGRpdiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG5cdFx0XHRcdFx0ZGl2LmlubmVySFRNTCA9IHN2Zztcblx0XHRcdFx0XHRyZXR1cm4gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0dGFwIChzdmcgPT4gdGhpcy5pY29uc0J5VXJsLnNldCh1cmwsIHN2ZykgKSxcblx0XHRcdFx0Y2F0Y2hFcnJvcihlcnIgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyKTtcblx0XHRcdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyKTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdGZpbmFsaXplKCgpID0+IHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZGVsZXRlKHVybCkgKSxcblx0XHRcdFx0c2hhcmUoKVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5pY29uc0xvYWRpbmdCeVVybC5zZXQodXJsLCBvKTtcblx0XHRcdHJldHVybiBvO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBSZW1vdmUgYSBTVkcgZnJvbSB0aGUgcmVnaXN0cnkgYnkgVVJMIChvciBuYW1lKS4gKi9cblx0dW5sb2FkU3ZnKHVybDpzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuZGVsZXRlKHVybCk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZKHBhcmVudFJlZ2lzdHJ5OlN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsIGh0dHA6SHR0cENsaWVudCxcblx0cGxhdGZvcm1JZDogT2JqZWN0LCBzZXJ2ZXJVcmw/OiBzdHJpbmcsIGRvY3VtZW50PzogYW55KSB7XG5cdHJldHVybiBwYXJlbnRSZWdpc3RyeSB8fCBuZXcgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZShodHRwLCBwbGF0Zm9ybUlkLCAgc2VydmVyVXJsLCBkb2N1bWVudCk7XG59XG5cbmV4cG9ydCBjb25zdCBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiA9IHtcblx0cHJvdmlkZTogU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSxcblx0ZGVwczogWyBbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlXSwgSHR0cENsaWVudCwgW1BMQVRGT1JNX0lEIGFzIEluamVjdGlvblRva2VuPGFueT5dLFxuXHRcdFx0W25ldyBPcHRpb25hbCgpLCBTRVJWRVJfVVJMIGFzIEluamVjdGlvblRva2VuPHN0cmluZz5dLCBbbmV3IE9wdGlvbmFsKCksIERPQ1VNRU5UIGFzIEluamVjdGlvblRva2VuPGFueT5dXG5cdF0sXG5cdHVzZUZhY3Rvcnk6IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUllcbn07XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -21,2 +21,3 @@ import { Component, ElementRef, Input, KeyValueDiffers, Renderer2 } from '@angular/core';

}
// Adapted from ngStyle
/**

@@ -72,2 +73,3 @@ * @param {?} v

/**
* @private
* @return {?}

@@ -82,2 +84,3 @@ */

/**
* @private
* @return {?}

@@ -93,2 +96,3 @@ */

/**
* @private
* @return {?}

@@ -102,2 +106,3 @@ */

/**
* @private
* @param {?} svg

@@ -110,3 +115,3 @@ * @return {?}

/** @type {?} */
const icon = /** @type {?} */ (svg.cloneNode(true));
const icon = (/** @type {?} */ (svg.cloneNode(true)));
/** @type {?} */

@@ -120,2 +125,3 @@ const elem = this.element.nativeElement;

/**
* @private
* @return {?}

@@ -136,2 +142,3 @@ */

/**
* @private
* @param {?} changes

@@ -146,2 +153,3 @@ * @return {?}

/**
* @private
* @param {?} nameAndUnit

@@ -157,3 +165,3 @@ * @param {?} value

if (value !== null) {
this.renderer.setStyle(svg, name, /** @type {?} */ (value));
this.renderer.setStyle(svg, name, (/** @type {?} */ (value)));
}

@@ -189,20 +197,43 @@ else {

SvgIconComponent.prototype.stretch;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.svg;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.icnSub;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.differ;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype._svgStyle;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.element;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.differs;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.renderer;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.iconReg;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1zdmctaWNvbi8iLCJzb3VyY2VzIjpbInNyYy9zdmctaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVcsVUFBVSxFQUFlLEtBQUssRUFDSCxlQUFlLEVBQ3hDLFNBQVMsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFJOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFTckUsTUFBTTs7Ozs7OztJQWtCTCxZQUFvQixPQUFrQixFQUM3QixTQUNBLFVBQ0E7UUFIVyxZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQzdCLFlBQU8sR0FBUCxPQUFPO1FBQ1AsYUFBUSxHQUFSLFFBQVE7UUFDUixZQUFPLEdBQVAsT0FBTzt1QkFuQkcsS0FBSztLQW9CdkI7Ozs7O0lBakJELElBQ0ksUUFBUSxDQUFDLENBQTBCO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDNUM7S0FDRDs7OztJQWFELFFBQVE7UUFDUCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDWjs7OztJQUVELFdBQVc7UUFDVixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7S0FDZjs7Ozs7SUFFRCxXQUFXLENBQUMsWUFBeUM7UUFDcEQsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDZCxJQUFJ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eUJBRDNCLGtDQUFrQzthQUU1Qzs7OztZQWI0QixVQUFVO1lBQ2lCLGVBQWU7WUFDeEMsU0FBUztZQUkvQixzQkFBc0I7OztrQkFVN0IsS0FBSztzQkFDTCxLQUFLO3VCQUdMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCxcblx0S2V5VmFsdWVDaGFuZ2VSZWNvcmQsIEtleVZhbHVlQ2hhbmdlcywgS2V5VmFsdWVEaWZmZXIsIEtleVZhbHVlRGlmZmVycyxcblx0T25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3N2Zy1pY29uJyxcblx0c3R5bGVzOiBbIGA6aG9zdCB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfWAgXSxcblx0dGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcblxuZXhwb3J0IGNsYXNzIFN2Z0ljb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBEb0NoZWNrIHtcblx0QElucHV0KCkgc3JjOnN0cmluZztcblx0QElucHV0KCkgc3RyZXRjaCA9IGZhbHNlO1xuXG5cdC8vIEFkYXB0ZWQgZnJvbSBuZ1N0eWxlXG5cdEBJbnB1dCgpXG5cdHNldCBzdmdTdHlsZSh2OiB7W2tleTpzdHJpbmddOiBzdHJpbmcgfSkge1xuXHRcdHRoaXMuX3N2Z1N0eWxlID0gdjtcblx0XHRpZiAoIXRoaXMuZGlmZmVyICYmIHYpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodikuY3JlYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdmc6U1ZHRWxlbWVudDtcblx0cHJpdmF0ZSBpY25TdWI6U3Vic2NyaXB0aW9uO1xuXHRwcml2YXRlIGRpZmZlcjpLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIHN0cmluZ3xudW1iZXI+O1xuXHRwcml2YXRlIF9zdmdTdHlsZToge1trZXk6c3RyaW5nXTpzdHJpbmd9O1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDpFbGVtZW50UmVmLFxuXHRcdHByaXZhdGUgZGlmZmVyczpLZXlWYWx1ZURpZmZlcnMsXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjpSZW5kZXJlcjIsXG5cdFx0cHJpdmF0ZSBpY29uUmVnOlN2Z0ljb25SZWdpc3RyeVNlcnZpY2UpIHtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuaW5pdCgpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5kZXN0cm95KCk7XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VSZWNvcmQ6IHtba2V5OnN0cmluZ106U2ltcGxlQ2hhbmdlfSkge1xuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3NyYyddKSB7XG5cdFx0XHRpZiAodGhpcy5zdmcpIHtcblx0XHRcdFx0dGhpcy5kZXN0cm95KCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmluaXQoKTtcblx0XHR9XG5cdFx0aWYgKGNoYW5nZVJlY29yZFsnc3RyZXRjaCddKSB7XG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRuZ0RvQ2hlY2soKSB7XG5cdFx0aWYgKHRoaXMuc3ZnICYmIHRoaXMuZGlmZmVyKSB7XG5cdFx0XHRjb25zdCBjaGFuZ2VzID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLl9zdmdTdHlsZSk7XG5cdFx0XHRpZiAoY2hhbmdlcykge1xuXHRcdFx0XHR0aGlzLmFwcGx5Q2hhbmdlcyhjaGFuZ2VzKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGluaXQoKSB7XG5cdFx0dGhpcy5pY25TdWIgPSB0aGlzLmljb25SZWcubG9hZFN2Zyh0aGlzLnNyYykuc3Vic2NyaWJlKHN2ZyA9PiB7XG5cdFx0XHR0aGlzLnNldFN2ZyhzdmcpO1xuXHRcdFx0dGhpcy5yZXNldERpZmZlcigpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBkZXN0cm95KCkge1xuXHRcdHRoaXMuc3ZnID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuZGlmZmVyID0gdW5kZWZpbmVkO1xuXHRcdGlmICh0aGlzLmljblN1Yikge1xuXHRcdFx0dGhpcy5pY25TdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc2V0RGlmZmVyKCkge1xuXHRcdGlmICh0aGlzLl9zdmdTdHlsZSAmJiAhdGhpcy5kaWZmZXIpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fc3ZnU3R5bGUpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc2V0U3ZnKHN2ZzpTVkdFbGVtZW50KSB7XG5cdFx0aWYgKHN2Zykge1xuXHRcdFx0dGhpcy5zdmcgPSBzdmc7XG5cdFx0XHRjb25zdCBpY29uID0gPFNWR0VsZW1lbnQ+c3ZnLmNsb25lTm9kZSh0cnVlKTtcblx0XHRcdGNvbnN0IGVsZW0gPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuXHRcdFx0ZWxlbS5pbm5lckhUTUwgPSAnJztcblx0XHRcdHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZWxlbSwgaWNvbik7XG5cblx0XHRcdHRoaXMuc3R5bGl6ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc3R5bGl6ZSgpIHtcblx0XHRpZiAodGhpcy5zdmcpIHtcblx0XHRcdGNvbnN0IHN2ZyA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRcdGlmICh0aGlzLnN0cmV0Y2ggPT09IHRydWUpIHtcblx0XHRcdFx0dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoc3ZnLCAncHJlc2VydmVBc3BlY3RSYXRpbycsICdub25lJyk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuc3RyZXRjaCA9PT0gZmFsc2UpIHtcblx0XHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoc3ZnLCAncHJlc2VydmVBc3BlY3RSYXRpbycpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYXBwbHlDaGFuZ2VzKGNoYW5nZXM6IEtleVZhbHVlQ2hhbmdlczxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSB7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIG51bGwpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbSgocmVjb3JkOktleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgcmVjb3JkLmN1cnJlbnRWYWx1ZSkpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRTdHlsZShuYW1lQW5kVW5pdDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfG51bWJlcnxudWxsfHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IFtuYW1lLCB1bml0XSA9IG5hbWVBbmRVbml0LnNwbGl0KCcuJyk7XG5cdFx0dmFsdWUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB1bml0ID8gYCR7dmFsdWV9JHt1bml0fWAgOiB2YWx1ZTtcblx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0aWYgKHZhbHVlICE9PSBudWxsKSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHN2ZywgbmFtZSwgdmFsdWUgYXMgc3RyaW5nKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShzdmcsIG5hbWUpO1xuXHRcdH1cblx0fVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1zdmctaWNvbi8iLCJzb3VyY2VzIjpbInNyYy9zdmctaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVcsVUFBVSxFQUFlLEtBQUssRUFDSCxlQUFlLEVBQ3hDLFNBQVMsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFJOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFTckUsTUFBTSxPQUFPLGdCQUFnQjs7Ozs7OztJQWtCNUIsWUFBb0IsT0FBa0IsRUFDN0IsT0FBdUIsRUFDdkIsUUFBa0IsRUFDbEIsT0FBOEI7UUFIbkIsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUM3QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBbkI5QixZQUFPLEdBQUcsS0FBSyxDQUFDO0lBb0J6QixDQUFDOzs7Ozs7SUFqQkQsSUFDSSxRQUFRLENBQUMsQ0FBMEI7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDNUM7SUFDRixDQUFDOzs7O0lBYUQsUUFBUTtRQUNQLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hCLENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLFlBQXlDO1FBQ3BELElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLElBQUks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QkFBdUI7Ozs7O0lBQ3ZCLGtDQUE0Qjs7Ozs7SUFDNUIsa0NBQXFEOzs7OztJQUNyRCxxQ0FBeUM7Ozs7O0lBRTdCLG1DQUEwQjs7Ozs7SUFDckMsbUNBQStCOzs7OztJQUMvQixvQ0FBMEI7Ozs7O0lBQzFCLG1DQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRG9DaGVjaywgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LFxuXHRLZXlWYWx1ZUNoYW5nZVJlY29yZCwgS2V5VmFsdWVDaGFuZ2VzLCBLZXlWYWx1ZURpZmZlciwgS2V5VmFsdWVEaWZmZXJzLFxuXHRPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnc3ZnLWljb24nLFxuXHRzdHlsZXM6IFsgYDpob3N0IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9YCBdLFxuXHR0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuXG5leHBvcnQgY2xhc3MgU3ZnSWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIERvQ2hlY2sge1xuXHRASW5wdXQoKSBzcmM6c3RyaW5nO1xuXHRASW5wdXQoKSBzdHJldGNoID0gZmFsc2U7XG5cblx0Ly8gQWRhcHRlZCBmcm9tIG5nU3R5bGVcblx0QElucHV0KClcblx0c2V0IHN2Z1N0eWxlKHY6IHtba2V5OnN0cmluZ106IHN0cmluZyB9KSB7XG5cdFx0dGhpcy5fc3ZnU3R5bGUgPSB2O1xuXHRcdGlmICghdGhpcy5kaWZmZXIgJiYgdikge1xuXHRcdFx0dGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZCh2KS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN2ZzpTVkdFbGVtZW50O1xuXHRwcml2YXRlIGljblN1YjpTdWJzY3JpcHRpb247XG5cdHByaXZhdGUgZGlmZmVyOktleVZhbHVlRGlmZmVyPHN0cmluZywgc3RyaW5nfG51bWJlcj47XG5cdHByaXZhdGUgX3N2Z1N0eWxlOiB7W2tleTpzdHJpbmddOnN0cmluZ307XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OkVsZW1lbnRSZWYsXG5cdFx0cHJpdmF0ZSBkaWZmZXJzOktleVZhbHVlRGlmZmVycyxcblx0XHRwcml2YXRlIHJlbmRlcmVyOlJlbmRlcmVyMixcblx0XHRwcml2YXRlIGljb25SZWc6U3ZnSWNvblJlZ2lzdHJ5U2VydmljZSkge1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5pbml0KCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLmRlc3Ryb3koKTtcblx0fVxuXG5cdG5nT25DaGFuZ2VzKGNoYW5nZVJlY29yZDoge1trZXk6c3RyaW5nXTpTaW1wbGVDaGFuZ2V9KSB7XG5cdFx0aWYgKGNoYW5nZVJlY29yZFsnc3JjJ10pIHtcblx0XHRcdGlmICh0aGlzLnN2Zykge1xuXHRcdFx0XHR0aGlzLmRlc3Ryb3koKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuaW5pdCgpO1xuXHRcdH1cblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzdHJldGNoJ10pIHtcblx0XHRcdHRoaXMuc3R5bGl6ZSgpO1xuXHRcdH1cblx0fVxuXG5cdG5nRG9DaGVjaygpIHtcblx0XHRpZiAodGhpcy5zdmcgJiYgdGhpcy5kaWZmZXIpIHtcblx0XHRcdGNvbnN0IGNoYW5nZXMgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMuX3N2Z1N0eWxlKTtcblx0XHRcdGlmIChjaGFuZ2VzKSB7XG5cdFx0XHRcdHRoaXMuYXBwbHlDaGFuZ2VzKGNoYW5nZXMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgaW5pdCgpIHtcblx0XHR0aGlzLmljblN1YiA9IHRoaXMuaWNvblJlZy5sb2FkU3ZnKHRoaXMuc3JjKS5zdWJzY3JpYmUoc3ZnID0+IHtcblx0XHRcdHRoaXMuc2V0U3ZnKHN2Zyk7XG5cdFx0XHR0aGlzLnJlc2V0RGlmZmVyKCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdmcgPSB1bmRlZmluZWQ7XG5cdFx0dGhpcy5kaWZmZXIgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKHRoaXMuaWNuU3ViKSB7XG5cdFx0XHR0aGlzLmljblN1Yi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcmVzZXREaWZmZXIoKSB7XG5cdFx0aWYgKHRoaXMuX3N2Z1N0eWxlICYmICF0aGlzLmRpZmZlcikge1xuXHRcdFx0dGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZCh0aGlzLl9zdmdTdHlsZSkuY3JlYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzZXRTdmcoc3ZnOlNWR0VsZW1lbnQpIHtcblx0XHRpZiAoc3ZnKSB7XG5cdFx0XHR0aGlzLnN2ZyA9IHN2Zztcblx0XHRcdGNvbnN0IGljb24gPSA8U1ZHRWxlbWVudD5zdmcuY2xvbmVOb2RlKHRydWUpO1xuXHRcdFx0Y29uc3QgZWxlbSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuXG5cdFx0XHRlbGVtLmlubmVySFRNTCA9ICcnO1xuXHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChlbGVtLCBpY29uKTtcblxuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdHlsaXplKCkge1xuXHRcdGlmICh0aGlzLnN2Zykge1xuXHRcdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0aWYgKHRoaXMuc3RyZXRjaCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHR0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzdmcsICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5zdHJldGNoID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShzdmcsICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBhcHBseUNoYW5nZXMoY2hhbmdlczogS2V5VmFsdWVDaGFuZ2VzPHN0cmluZywgc3RyaW5nfG51bWJlcj4pIHtcblx0XHRjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbSgocmVjb3JkOktleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgbnVsbCkpO1xuXHRcdGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgocmVjb3JkOktleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgcmVjb3JkLmN1cnJlbnRWYWx1ZSkpO1xuXHRcdGNoYW5nZXMuZm9yRWFjaENoYW5nZWRJdGVtKChyZWNvcmQ6S2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKSk7XG5cdH1cblxuXHRwcml2YXRlIHNldFN0eWxlKG5hbWVBbmRVbml0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmd8bnVtYmVyfG51bGx8dW5kZWZpbmVkKSB7XG5cdFx0Y29uc3QgW25hbWUsIHVuaXRdID0gbmFtZUFuZFVuaXQuc3BsaXQoJy4nKTtcblx0XHR2YWx1ZSA9IHZhbHVlICE9PSBudWxsICYmIHVuaXQgPyBgJHt2YWx1ZX0ke3VuaXR9YCA6IHZhbHVlO1xuXHRcdGNvbnN0IHN2ZyA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRpZiAodmFsdWUgIT09IG51bGwpIHtcblx0XHRcdHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc3ZnLCBuYW1lLCB2YWx1ZSBhcyBzdHJpbmcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHN2ZywgbmFtZSk7XG5cdFx0fVxuXHR9XG59XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -8,4 +8,3 @@ /**

*/
export { AngularSvgIconModule, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent } from './index';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJhbmd1bGFyLXN2Zy1pY29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwrSUFBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
export { AngularSvgIconModule, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent } from './index';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJhbmd1bGFyLXN2Zy1pY29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwySkFBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { AngularSvgIconModule } from './src/angular-svg-icon.module';
export { SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SVG_ICON_REGISTRY_PROVIDER } from './src/svg-icon-registry.service';
export { SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER } from './src/svg-icon-registry.service';
export { SvgIconComponent } from './src/svg-icon.component';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHFDQUFjLCtCQUErQixDQUFDO0FBQzlDLHVHQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGlDQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvYW5ndWxhci1zdmctaWNvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9zdmctaWNvbi5jb21wb25lbnQnO1xuXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHFDQUFjLCtCQUErQixDQUFDO0FBQzlDLG1IQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGlDQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvYW5ndWxhci1zdmctaWNvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9zdmctaWNvbi5jb21wb25lbnQnO1xuXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -25,3 +25,2 @@ import { NgModule } from '@angular/core';

export { AngularSvgIconModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsic3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Z0JBRXZELFFBQVEsU0FBQztvQkFDVCxPQUFPLEVBQUk7d0JBQ1YsWUFBWTtxQkFDWjtvQkFDRCxZQUFZLEVBQUUsQ0FBRSxnQkFBZ0IsQ0FBRTtvQkFDbEMsU0FBUyxFQUFLLENBQUUsMEJBQTBCLENBQUU7b0JBQzVDLE9BQU8sRUFBTyxDQUFFLGdCQUFnQixDQUFFO2lCQUNsQzs7K0JBZEQ7O1NBZ0JhLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5cbmltcG9ydCB7IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICcuL3N2Zy1pY29uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6XHQgIFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogWyBTdmdJY29uQ29tcG9uZW50IF0sXG5cdHByb3ZpZGVyczogICAgWyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiBdLFxuXHRleHBvcnRzOiAgICAgIFsgU3ZnSWNvbkNvbXBvbmVudCBdXG59KVxuXG5leHBvcnQgY2xhc3MgQW5ndWxhclN2Z0ljb25Nb2R1bGUge31cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN2Zy1pY29uLyIsInNvdXJjZXMiOlsic3JjL2FuZ3VsYXItc3ZnLWljb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RDtJQUFBO0lBU21DLENBQUM7O2dCQVRuQyxRQUFRLFNBQUM7b0JBQ1QsT0FBTyxFQUFJO3dCQUNWLFlBQVk7cUJBQ1o7b0JBQ0QsWUFBWSxFQUFFLENBQUUsZ0JBQWdCLENBQUU7b0JBQ2xDLFNBQVMsRUFBSyxDQUFFLDBCQUEwQixDQUFFO29CQUM1QyxPQUFPLEVBQU8sQ0FBRSxnQkFBZ0IsQ0FBRTtpQkFDbEM7O0lBRWtDLDJCQUFDO0NBQUEsQUFUcEMsSUFTb0M7U0FBdkIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cblxuaW1wb3J0IHsgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgfSBmcm9tICcuL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vc3ZnLWljb24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcblx0aW1wb3J0czpcdCAgW1xuXHRcdENvbW1vbk1vZHVsZSxcblx0XSxcblx0ZGVjbGFyYXRpb25zOiBbIFN2Z0ljb25Db21wb25lbnQgXSxcblx0cHJvdmlkZXJzOiAgICBbIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIF0sXG5cdGV4cG9ydHM6ICAgICAgWyBTdmdJY29uQ29tcG9uZW50IF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB7fVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, Optional, SkipSelf } from '@angular/core';
import { Inject, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { of as observableOf, throwError as observableThrowError } from 'rxjs';
import { map, tap, catchError, finalize, share } from 'rxjs/operators';
import { PLATFORM_ID } from '@angular/core';
import { DOCUMENT } from '@angular/common';
/** @type {?} */
export var SERVER_URL = new InjectionToken('SERVER_URL');
var SvgIconRegistryService = /** @class */ (function () {
function SvgIconRegistryService(http) {
function SvgIconRegistryService(http, platformId, serverUrl, _document) {
this.http = http;
this.platformId = platformId;
this.serverUrl = serverUrl;
this._document = _document;
this.iconsByUrl = new Map();
this.iconsLoadingByUrl = new Map();
this.document = this._document;
}

@@ -31,6 +39,6 @@ /** Add a SVG to the registry by passing a name and the SVG. */

/** @type {?} */
var div = document.createElement('DIV');
var div = this.document.createElement('DIV');
div.innerHTML = data;
/** @type {?} */
var svg = /** @type {?} */ (div.querySelector('svg'));
var svg = (/** @type {?} */ (div.querySelector('svg')));
this.iconsByUrl.set(name, svg);

@@ -52,2 +60,5 @@ }

var _this = this;
if (this.serverUrl && url.match(/^(http(s)?):/) === null) {
url = this.serverUrl + url;
}
if (this.iconsByUrl.has(url)) {

@@ -61,11 +72,11 @@ return observableOf(this.iconsByUrl.get(url));

/** @type {?} */
var o = /** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(function (svg) {
var o = (/** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(function (svg) {
/** @type {?} */
var div = document.createElement('DIV');
var div = _this.document.createElement('DIV');
div.innerHTML = svg;
return /** @type {?} */ (div.querySelector('svg'));
return (/** @type {?} */ (div.querySelector('svg')));
}), tap(function (svg) { return _this.iconsByUrl.set(url, svg); }), catchError(function (err) {
console.error(err);
return observableThrowError(err);
}), finalize(function () { return _this.iconsLoadingByUrl.delete(url); }), share()));
}), finalize(function () { return _this.iconsLoadingByUrl.delete(url); }), share())));
this.iconsLoadingByUrl.set(url, o);

@@ -96,3 +107,6 @@ return o;

SvgIconRegistryService.ctorParameters = function () { return [
{ type: HttpClient }
{ type: HttpClient },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [SERVER_URL,] }] },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }
]; };

@@ -103,8 +117,37 @@ return SvgIconRegistryService;

if (false) {
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype.document;
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype.iconsByUrl;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype.iconsLoadingByUrl;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype.http;
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype.platformId;
/**
* @type {?}
* @protected
*/
SvgIconRegistryService.prototype.serverUrl;
/**
* @type {?}
* @private
*/
SvgIconRegistryService.prototype._document;
}

@@ -114,6 +157,9 @@ /**

* @param {?} http
* @param {?} platformId
* @param {?=} serverUrl
* @param {?=} document
* @return {?}
*/
export function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http) {
return parentRegistry || new SvgIconRegistryService(http);
export function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(http, platformId, serverUrl, document);
}

@@ -123,6 +169,7 @@ /** @type {?} */

provide: SvgIconRegistryService,
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient],
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient, [(/** @type {?} */ (PLATFORM_ID))],
[new Optional(), (/** @type {?} */ (SERVER_URL))], [new Optional(), (/** @type {?} */ (DOCUMENT))]
],
useFactory: SVG_ICON_REGISTRY_PROVIDER_FACTORY
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJzcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQWMsRUFBRSxJQUFJLFlBQVksRUFBRSxVQUFVLElBQUksb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7SUFRdEUsZ0NBQW9CLElBQWU7UUFBZixTQUFJLEdBQUosSUFBSSxDQUFXOzBCQUhkLElBQUksR0FBRyxFQUFzQjtpQ0FDdEIsSUFBSSxHQUFHLEVBQWtDO0tBR3BFO0lBRUQsK0RBQStEOzs7Ozs7O0lBQy9ELHVDQUFNOzs7Ozs7SUFBTixVQUFPLElBQVcsRUFBRSxJQUFXO1FBQzlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUNoQyxJQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDOztZQUNyQixJQUFNLEdBQUcscUJBQWUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBQztZQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDL0I7S0FDRDtJQUVELDZDQUE2Qzs7Ozs7O0lBQzdDLHdDQUFPOzs7OztJQUFQLFVBQVEsR0FBVTtRQUFsQixpQkF5QkM7UUF2QkEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM5QztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QztRQUFDLElBQUksQ0FBQyxDQUFDOztZQUNQLElBQU0sQ0FBQyxxQkFBNEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNuRixHQUFHLENBQUMsVUFBQSxHQUFHOztnQkFDTixJQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQyxHQUFHLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztnQkFDcEIsTUFBTSxtQkFBYSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFDO2FBQzVDLENBQUMsRUFDRixHQUFHLENBQUUsVUFBQSxHQUFHLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQTdCLENBQTZCLENBQUUsRUFDM0MsVUFBVSxDQUFDLFVBQUEsR0FBRztnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDakMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBbEMsQ0FBa0MsQ0FBRSxFQUNuRCxLQUFLLEVBQUUsQ0FDUCxFQUFDO1lBRUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNUO0tBQ0Q7SUFFRCx1REFBdUQ7Ozs7OztJQUN2RCwwQ0FBUzs7Ozs7SUFBVCxVQUFVLEdBQVU7UUFDbkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVCO0tBQ0Q7O2dCQXBERCxVQUFVOzs7O2dCQUxGLFVBQVU7O2lDQURuQjs7U0FPYSxzQkFBc0I7Ozs7Ozs7Ozs7Ozs7O0FBc0RuQyxNQUFNLDZDQUE2QyxjQUFxQyxFQUFFLElBQWU7SUFDeEcsTUFBTSxDQUFDLGNBQWMsSUFBSSxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0NBQzFEOztBQUVELFdBQWEsMEJBQTBCLEdBQUc7SUFDekMsT0FBTyxFQUFFLHNCQUFzQjtJQUMvQixJQUFJLEVBQUUsQ0FBRSxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLFVBQVUsQ0FBRTtJQUM5RSxVQUFVLEVBQUUsa0NBQWtDO0NBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YXAsIGNhdGNoRXJyb3IsIGZpbmFsaXplLCBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgaWNvbnNCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBTVkdFbGVtZW50PigpO1xuXHRwcml2YXRlIGljb25zTG9hZGluZ0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8U1ZHRWxlbWVudD4+KCk7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBodHRwOkh0dHBDbGllbnQpIHtcblx0fVxuXG5cdC8qKiBBZGQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGJ5IHBhc3NpbmcgYSBuYW1lIGFuZCB0aGUgU1ZHLiAqL1xuXHRhZGRTdmcobmFtZTpzdHJpbmcsIGRhdGE6c3RyaW5nKSB7XG5cdFx0aWYgKCF0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdGRpdi5pbm5lckhUTUwgPSBkYXRhO1xuXHRcdFx0Y29uc3Qgc3ZnID0gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLnNldChuYW1lLCBzdmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBMb2FkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBmcm9tIGEgVVJMLiAqL1xuXHRsb2FkU3ZnKHVybDpzdHJpbmcpIDogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG5cblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQodXJsKSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmljb25zTG9hZGluZ0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5nZXQodXJsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgbyA9IDxPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PiB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5waXBlKFxuXHRcdFx0XHRtYXAoc3ZnID0+IHtcblx0XHRcdFx0XHRjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdFx0XHRkaXYuaW5uZXJIVE1MID0gc3ZnO1xuXHRcdFx0XHRcdHJldHVybiA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR0YXAgKHN2ZyA9PiB0aGlzLmljb25zQnlVcmwuc2V0KHVybCwgc3ZnKSApLFxuXHRcdFx0XHRjYXRjaEVycm9yKGVyciA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdFx0XHRcdHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnIpO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0ZmluYWxpemUoKCkgPT4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5kZWxldGUodXJsKSApLFxuXHRcdFx0XHRzaGFyZSgpXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLmljb25zTG9hZGluZ0J5VXJsLnNldCh1cmwsIG8pO1xuXHRcdFx0cmV0dXJuIG87XG5cdFx0fVxuXHR9XG5cblx0LyoqIFJlbW92ZSBhIFNWRyBmcm9tIHRoZSByZWdpc3RyeSBieSBVUkwgKG9yIG5hbWUpLiAqL1xuXHR1bmxvYWRTdmcodXJsOnN0cmluZykge1xuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5kZWxldGUodXJsKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUlkocGFyZW50UmVnaXN0cnk6U3ZnSWNvblJlZ2lzdHJ5U2VydmljZSwgaHR0cDpIdHRwQ2xpZW50KSB7XG5cdHJldHVybiBwYXJlbnRSZWdpc3RyeSB8fCBuZXcgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZShodHRwKTtcbn1cblxuZXhwb3J0IGNvbnN0IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSID0ge1xuXHRwcm92aWRlOiBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLFxuXHRkZXBzOiBbIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2VdLCBIdHRwQ2xpZW50IF0sXG5cdHVzZUZhY3Rvcnk6IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUllcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItc3ZnLWljb24vIiwic291cmNlcyI6WyJzcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBYyxFQUFFLElBQUksWUFBWSxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBcUIsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFOUQsTUFBTSxLQUFPLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBUyxZQUFZLENBQUM7QUFFbEU7SUFPQyxnQ0FBb0IsSUFBZSxFQUNILFVBQWtCLEVBQ0wsU0FBaUIsRUFDckIsU0FBYztRQUhuQyxTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ0gsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNMLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBSztRQU4vQyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFDM0Msc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7UUFNcEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRCwrREFBK0Q7Ozs7Ozs7SUFDL0QsdUNBQU07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Qyw2QkFBQztDQUFBLEFBOURELElBOERDO1NBN0RZLHNCQUFzQjs7Ozs7O0lBRWxDLDBDQUEyQjs7Ozs7SUFDM0IsNENBQW1EOzs7OztJQUNuRCxtREFBc0U7Ozs7O0lBRTFELHNDQUF1Qjs7Ozs7SUFDaEMsNENBQStDOzs7OztJQUMvQywyQ0FBMkQ7Ozs7O0lBQzNELDJDQUFvRDs7Ozs7Ozs7OztBQXNEeEQsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLGNBQXFDLEVBQUUsSUFBZSxFQUN4RyxVQUFrQixFQUFFLFNBQWtCLEVBQUUsUUFBYztJQUN0RCxPQUFPLGNBQWMsSUFBSSxJQUFJLHNCQUFzQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUcsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzdGLENBQUM7O0FBRUQsTUFBTSxLQUFPLDBCQUEwQixHQUFHO0lBQ3pDLE9BQU8sRUFBRSxzQkFBc0I7SUFDL0IsSUFBSSxFQUFFLENBQUUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxtQkFBQSxXQUFXLEVBQXVCLENBQUM7UUFDaEgsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLG1CQUFBLFVBQVUsRUFBMEIsQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxtQkFBQSxRQUFRLEVBQXVCLENBQUM7S0FDMUc7SUFDRCxVQUFVLEVBQUUsa0NBQWtDO0NBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2YsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFwLCBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgc2hhcmUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgU0VSVkVSX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdTRVJWRVJfVVJMJyk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIHtcblxuXHRwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudDtcblx0cHJpdmF0ZSBpY29uc0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIFNWR0VsZW1lbnQ+KCk7XG5cdHByaXZhdGUgaWNvbnNMb2FkaW5nQnlVcmwgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxTVkdFbGVtZW50Pj4oKTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6SHR0cENsaWVudCxcblx0XHRcdFx0QEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXG5cdFx0XHRcdEBPcHRpb25hbCgpIEBJbmplY3QoU0VSVkVSX1VSTCkgcHJvdGVjdGVkIHNlcnZlclVybDogc3RyaW5nLFxuXHRcdFx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55KSB7XG5cdFx0XHR0aGlzLmRvY3VtZW50ID0gdGhpcy5fZG9jdW1lbnQ7XG5cdH1cblxuXHQvKiogQWRkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBieSBwYXNzaW5nIGEgbmFtZSBhbmQgdGhlIFNWRy4gKi9cblx0YWRkU3ZnKG5hbWU6c3RyaW5nLCBkYXRhOnN0cmluZykge1xuXHRcdGlmICghdGhpcy5pY29uc0J5VXJsLmhhcyhuYW1lKSkge1xuXHRcdFx0Y29uc3QgZGl2ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdGRpdi5pbm5lckhUTUwgPSBkYXRhO1xuXHRcdFx0Y29uc3Qgc3ZnID0gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLnNldChuYW1lLCBzdmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBMb2FkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBmcm9tIGEgVVJMLiAqL1xuXHRsb2FkU3ZnKHVybDpzdHJpbmcpIDogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG5cblx0XHRpZiAodGhpcy5zZXJ2ZXJVcmwgJiYgdXJsLm1hdGNoKC9eKGh0dHAocyk/KTovKSA9PT0gbnVsbCkge1xuXHRcdFx0dXJsID0gdGhpcy5zZXJ2ZXJVcmwgKyB1cmw7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXModXJsKSkge1xuXHRcdFx0cmV0dXJuIG9ic2VydmFibGVPZih0aGlzLmljb25zQnlVcmwuZ2V0KHVybCkpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pY29uc0xvYWRpbmdCeVVybC5oYXModXJsKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuZ2V0KHVybCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG8gPSA8T2JzZXJ2YWJsZTxTVkdFbGVtZW50Pj4gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSkucGlwZShcblx0XHRcdFx0bWFwKHN2ZyA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgZGl2ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdFx0XHRkaXYuaW5uZXJIVE1MID0gc3ZnO1xuXHRcdFx0XHRcdHJldHVybiA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR0YXAgKHN2ZyA9PiB0aGlzLmljb25zQnlVcmwuc2V0KHVybCwgc3ZnKSApLFxuXHRcdFx0XHRjYXRjaEVycm9yKGVyciA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdFx0XHRcdHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnIpO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0ZmluYWxpemUoKCkgPT4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5kZWxldGUodXJsKSApLFxuXHRcdFx0XHRzaGFyZSgpXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLmljb25zTG9hZGluZ0J5VXJsLnNldCh1cmwsIG8pO1xuXHRcdFx0cmV0dXJuIG87XG5cdFx0fVxuXHR9XG5cblx0LyoqIFJlbW92ZSBhIFNWRyBmcm9tIHRoZSByZWdpc3RyeSBieSBVUkwgKG9yIG5hbWUpLiAqL1xuXHR1bmxvYWRTdmcodXJsOnN0cmluZykge1xuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5kZWxldGUodXJsKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUlkocGFyZW50UmVnaXN0cnk6U3ZnSWNvblJlZ2lzdHJ5U2VydmljZSwgaHR0cDpIdHRwQ2xpZW50LFxuXHRwbGF0Zm9ybUlkOiBPYmplY3QsIHNlcnZlclVybD86IHN0cmluZywgZG9jdW1lbnQ/OiBhbnkpIHtcblx0cmV0dXJuIHBhcmVudFJlZ2lzdHJ5IHx8IG5ldyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlKGh0dHAsIHBsYXRmb3JtSWQsICBzZXJ2ZXJVcmwsIGRvY3VtZW50KTtcbn1cblxuZXhwb3J0IGNvbnN0IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSID0ge1xuXHRwcm92aWRlOiBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLFxuXHRkZXBzOiBbIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2VdLCBIdHRwQ2xpZW50LCBbUExBVEZPUk1fSUQgYXMgSW5qZWN0aW9uVG9rZW48YW55Pl0sXG5cdFx0XHRbbmV3IE9wdGlvbmFsKCksIFNFUlZFUl9VUkwgYXMgSW5qZWN0aW9uVG9rZW48c3RyaW5nPl0sIFtuZXcgT3B0aW9uYWwoKSwgRE9DVU1FTlQgYXMgSW5qZWN0aW9uVG9rZW48YW55Pl1cblx0XSxcblx0dXNlRmFjdG9yeTogU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWVxufTtcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

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

// Adapted from ngStyle
set: /**
set:
// Adapted from ngStyle
/**
* @param {?} v

@@ -85,5 +87,7 @@ * @return {?}

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.init = /**
* @private
* @return {?}

@@ -99,5 +103,7 @@ */

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.destroy = /**
* @private
* @return {?}

@@ -113,5 +119,7 @@ */

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.resetDiffer = /**
* @private
* @return {?}

@@ -125,2 +133,3 @@ */

/**
* @private
* @param {?} svg

@@ -130,2 +139,3 @@ * @return {?}

SvgIconComponent.prototype.setSvg = /**
* @private
* @param {?} svg

@@ -138,3 +148,3 @@ * @return {?}

/** @type {?} */
var icon = /** @type {?} */ (svg.cloneNode(true));
var icon = (/** @type {?} */ (svg.cloneNode(true)));
/** @type {?} */

@@ -148,5 +158,7 @@ var elem = this.element.nativeElement;

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.stylize = /**
* @private
* @return {?}

@@ -167,2 +179,3 @@ */

/**
* @private
* @param {?} changes

@@ -172,2 +185,3 @@ * @return {?}

SvgIconComponent.prototype.applyChanges = /**
* @private
* @param {?} changes

@@ -183,2 +197,3 @@ * @return {?}

/**
* @private
* @param {?} nameAndUnit

@@ -189,2 +204,3 @@ * @param {?} value

SvgIconComponent.prototype.setStyle = /**
* @private
* @param {?} nameAndUnit

@@ -200,3 +216,3 @@ * @param {?} value

if (value !== null) {
this.renderer.setStyle(svg, name, /** @type {?} */ (value));
this.renderer.setStyle(svg, name, (/** @type {?} */ (value)));
}

@@ -234,20 +250,43 @@ else {

SvgIconComponent.prototype.stretch;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.svg;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.icnSub;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.differ;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype._svgStyle;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.element;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.differs;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.renderer;
/** @type {?} */
/**
* @type {?}
* @private
*/
SvgIconComponent.prototype.iconReg;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1zdmctaWNvbi8iLCJzb3VyY2VzIjpbInNyYy9zdmctaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFXLFVBQVUsRUFBZSxLQUFLLEVBQ0gsZUFBZSxFQUN4QyxTQUFTLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBSTlFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztJQTJCcEUsMEJBQW9CLE9BQWtCLEVBQzdCLFNBQ0EsVUFDQTtRQUhXLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFDN0IsWUFBTyxHQUFQLE9BQU87UUFDUCxhQUFRLEdBQVIsUUFBUTtRQUNSLFlBQU8sR0FBUCxPQUFPO3VCQW5CRyxLQUFLO0tBb0J2QjtJQWpCRCxzQkFDSSxzQ0FBUTtRQUZaLHVCQUF1Qjs7Ozs7UUFDdkIsVUFDYSxDQUEwQjtZQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNuQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUM1QztTQUNEOzs7T0FBQTs7OztJQWFELG1DQUFROzs7SUFBUjtRQUNDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNaOzs7O0lBRUQsc0NBQVc7OztJQUFYO1FBQ0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQ2Y7Ozs7O0lBRUQsc0NBQVc7Ozs7SUFBWCxVQUFZLFlBQXlDO1FBQ3BELEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsRUFBRSxDQUFDLENBQUMs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QztvQkFDVixRQUFRLEVBQUUsVUFBVTtvQkFFcEIsUUFBUSxFQUFFLDJCQUEyQjs2QkFEM0Isa0NBQWtDO2lCQUU1Qzs7OztnQkFiNEIsVUFBVTtnQkFDaUIsZUFBZTtnQkFDeEMsU0FBUztnQkFJL0Isc0JBQXNCOzs7c0JBVTdCLEtBQUs7MEJBQ0wsS0FBSzsyQkFHTCxLQUFLOzsyQkFwQlA7O1NBZWEsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsXG5cdEtleVZhbHVlQ2hhbmdlUmVjb3JkLCBLZXlWYWx1ZUNoYW5nZXMsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlcnMsXG5cdE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzdmctaWNvbicsXG5cdHN0eWxlczogWyBgOmhvc3QgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1gIF0sXG5cdHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5cbmV4cG9ydCBjbGFzcyBTdmdJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgRG9DaGVjayB7XG5cdEBJbnB1dCgpIHNyYzpzdHJpbmc7XG5cdEBJbnB1dCgpIHN0cmV0Y2ggPSBmYWxzZTtcblxuXHQvLyBBZGFwdGVkIGZyb20gbmdTdHlsZVxuXHRASW5wdXQoKVxuXHRzZXQgc3ZnU3R5bGUodjoge1trZXk6c3RyaW5nXTogc3RyaW5nIH0pIHtcblx0XHR0aGlzLl9zdmdTdHlsZSA9IHY7XG5cdFx0aWYgKCF0aGlzLmRpZmZlciAmJiB2KSB7XG5cdFx0XHR0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHYpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc3ZnOlNWR0VsZW1lbnQ7XG5cdHByaXZhdGUgaWNuU3ViOlN1YnNjcmlwdGlvbjtcblx0cHJpdmF0ZSBkaWZmZXI6S2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPjtcblx0cHJpdmF0ZSBfc3ZnU3R5bGU6IHtba2V5OnN0cmluZ106c3RyaW5nfTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6RWxlbWVudFJlZixcblx0XHRwcml2YXRlIGRpZmZlcnM6S2V5VmFsdWVEaWZmZXJzLFxuXHRcdHByaXZhdGUgcmVuZGVyZXI6UmVuZGVyZXIyLFxuXHRcdHByaXZhdGUgaWNvblJlZzpTdmdJY29uUmVnaXN0cnlTZXJ2aWNlKSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLmluaXQoKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuZGVzdHJveSgpO1xuXHR9XG5cblx0bmdPbkNoYW5nZXMoY2hhbmdlUmVjb3JkOiB7W2tleTpzdHJpbmddOlNpbXBsZUNoYW5nZX0pIHtcblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzcmMnXSkge1xuXHRcdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRcdHRoaXMuZGVzdHJveSgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5pbml0KCk7XG5cdFx0fVxuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3N0cmV0Y2gnXSkge1xuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdEb0NoZWNrKCkge1xuXHRcdGlmICh0aGlzLnN2ZyAmJiB0aGlzLmRpZmZlcikge1xuXHRcdFx0Y29uc3QgY2hhbmdlcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5fc3ZnU3R5bGUpO1xuXHRcdFx0aWYgKGNoYW5nZXMpIHtcblx0XHRcdFx0dGhpcy5hcHBseUNoYW5nZXMoY2hhbmdlcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbml0KCkge1xuXHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmxvYWRTdmcodGhpcy5zcmMpLnN1YnNjcmliZShzdmcgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdmcoc3ZnKTtcblx0XHRcdHRoaXMucmVzZXREaWZmZXIoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgZGVzdHJveSgpIHtcblx0XHR0aGlzLnN2ZyA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmRpZmZlciA9IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5pY25TdWIpIHtcblx0XHRcdHRoaXMuaWNuU3ViLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSByZXNldERpZmZlcigpIHtcblx0XHRpZiAodGhpcy5fc3ZnU3R5bGUgJiYgIXRoaXMuZGlmZmVyKSB7XG5cdFx0XHR0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHRoaXMuX3N2Z1N0eWxlKS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHNldFN2Zyhzdmc6U1ZHRWxlbWVudCkge1xuXHRcdGlmIChzdmcpIHtcblx0XHRcdHRoaXMuc3ZnID0gc3ZnO1xuXHRcdFx0Y29uc3QgaWNvbiA9IDxTVkdFbGVtZW50PnN2Zy5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0XHRjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdGVsZW0uaW5uZXJIVE1MID0gJyc7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGVsZW0sIGljb24pO1xuXG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0eWxpemUoKSB7XG5cdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRpZiAodGhpcy5zdHJldGNoID09PSB0cnVlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnN0cmV0Y2ggPT09IGZhbHNlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFwcGx5Q2hhbmdlcyhjaGFuZ2VzOiBLZXlWYWx1ZUNoYW5nZXM8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikge1xuXHRcdGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6S2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCBudWxsKSk7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKChyZWNvcmQ6S2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKSk7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0U3R5bGUobmFtZUFuZFVuaXQ6IHN0cmluZywgdmFsdWU6IHN0cmluZ3xudW1iZXJ8bnVsbHx1bmRlZmluZWQpIHtcblx0XHRjb25zdCBbbmFtZSwgdW5pdF0gPSBuYW1lQW5kVW5pdC5zcGxpdCgnLicpO1xuXHRcdHZhbHVlID0gdmFsdWUgIT09IG51bGwgJiYgdW5pdCA/IGAke3ZhbHVlfSR7dW5pdH1gIDogdmFsdWU7XG5cdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZShzdmcsIG5hbWUsIHZhbHVlIGFzIHN0cmluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoc3ZnLCBuYW1lKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1zdmctaWNvbi8iLCJzb3VyY2VzIjpbInNyYy9zdmctaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFXLFVBQVUsRUFBZSxLQUFLLEVBQ0gsZUFBZSxFQUN4QyxTQUFTLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBSTlFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3JFO0lBd0JDLDBCQUFvQixPQUFrQixFQUM3QixPQUF1QixFQUN2QixRQUFrQixFQUNsQixPQUE4QjtRQUhuQixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFuQjlCLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFvQnpCLENBQUM7SUFqQkQsc0JBQ0ksc0NBQVE7UUFGWix1QkFBdUI7Ozs7Ozs7UUFDdkIsVUFDYSxDQUEwQjtZQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDNUM7UUFDRixDQUFDOzs7T0FBQTs7OztJQWFELG1DQUFROzs7SUFBUjtRQUNDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLENBQUM7Ozs7SUFFRCxzQ0FBVzs7O0lBQVg7UUFDQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEIsQ0FBQzs7Ozs7SUFFRCxzQ0FBVzs7OztJQUFYLFVBQVksWUFBeUM7UUFDcEQsSUFBSSxZQUFZ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YjRCLFVBQVU7Z0JBQ2lCLGVBQWU7Z0JBQ3hDLFNBQVM7Z0JBSS9CLHNCQUFzQjs7O3NCQVU3QixLQUFLOzBCQUNMLEtBQUs7MkJBR0wsS0FBSzs7SUErR1AsdUJBQUM7Q0FBQSxBQTFIRCxJQTBIQztTQXBIWSxnQkFBZ0I7OztJQUM1QiwrQkFBb0I7O0lBQ3BCLG1DQUF5Qjs7Ozs7SUFXekIsK0JBQXVCOzs7OztJQUN2QixrQ0FBNEI7Ozs7O0lBQzVCLGtDQUFxRDs7Ozs7SUFDckQscUNBQXlDOzs7OztJQUU3QixtQ0FBMEI7Ozs7O0lBQ3JDLG1DQUErQjs7Ozs7SUFDL0Isb0NBQTBCOzs7OztJQUMxQixtQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCxcblx0S2V5VmFsdWVDaGFuZ2VSZWNvcmQsIEtleVZhbHVlQ2hhbmdlcywgS2V5VmFsdWVEaWZmZXIsIEtleVZhbHVlRGlmZmVycyxcblx0T25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3N2Zy1pY29uJyxcblx0c3R5bGVzOiBbIGA6aG9zdCB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfWAgXSxcblx0dGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcblxuZXhwb3J0IGNsYXNzIFN2Z0ljb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBEb0NoZWNrIHtcblx0QElucHV0KCkgc3JjOnN0cmluZztcblx0QElucHV0KCkgc3RyZXRjaCA9IGZhbHNlO1xuXG5cdC8vIEFkYXB0ZWQgZnJvbSBuZ1N0eWxlXG5cdEBJbnB1dCgpXG5cdHNldCBzdmdTdHlsZSh2OiB7W2tleTpzdHJpbmddOiBzdHJpbmcgfSkge1xuXHRcdHRoaXMuX3N2Z1N0eWxlID0gdjtcblx0XHRpZiAoIXRoaXMuZGlmZmVyICYmIHYpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodikuY3JlYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdmc6U1ZHRWxlbWVudDtcblx0cHJpdmF0ZSBpY25TdWI6U3Vic2NyaXB0aW9uO1xuXHRwcml2YXRlIGRpZmZlcjpLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIHN0cmluZ3xudW1iZXI+O1xuXHRwcml2YXRlIF9zdmdTdHlsZToge1trZXk6c3RyaW5nXTpzdHJpbmd9O1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDpFbGVtZW50UmVmLFxuXHRcdHByaXZhdGUgZGlmZmVyczpLZXlWYWx1ZURpZmZlcnMsXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjpSZW5kZXJlcjIsXG5cdFx0cHJpdmF0ZSBpY29uUmVnOlN2Z0ljb25SZWdpc3RyeVNlcnZpY2UpIHtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuaW5pdCgpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5kZXN0cm95KCk7XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VSZWNvcmQ6IHtba2V5OnN0cmluZ106U2ltcGxlQ2hhbmdlfSkge1xuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3NyYyddKSB7XG5cdFx0XHRpZiAodGhpcy5zdmcpIHtcblx0XHRcdFx0dGhpcy5kZXN0cm95KCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmluaXQoKTtcblx0XHR9XG5cdFx0aWYgKGNoYW5nZVJlY29yZFsnc3RyZXRjaCddKSB7XG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRuZ0RvQ2hlY2soKSB7XG5cdFx0aWYgKHRoaXMuc3ZnICYmIHRoaXMuZGlmZmVyKSB7XG5cdFx0XHRjb25zdCBjaGFuZ2VzID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLl9zdmdTdHlsZSk7XG5cdFx0XHRpZiAoY2hhbmdlcykge1xuXHRcdFx0XHR0aGlzLmFwcGx5Q2hhbmdlcyhjaGFuZ2VzKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGluaXQoKSB7XG5cdFx0dGhpcy5pY25TdWIgPSB0aGlzLmljb25SZWcubG9hZFN2Zyh0aGlzLnNyYykuc3Vic2NyaWJlKHN2ZyA9PiB7XG5cdFx0XHR0aGlzLnNldFN2ZyhzdmcpO1xuXHRcdFx0dGhpcy5yZXNldERpZmZlcigpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBkZXN0cm95KCkge1xuXHRcdHRoaXMuc3ZnID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuZGlmZmVyID0gdW5kZWZpbmVkO1xuXHRcdGlmICh0aGlzLmljblN1Yikge1xuXHRcdFx0dGhpcy5pY25TdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc2V0RGlmZmVyKCkge1xuXHRcdGlmICh0aGlzLl9zdmdTdHlsZSAmJiAhdGhpcy5kaWZmZXIpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fc3ZnU3R5bGUpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc2V0U3ZnKHN2ZzpTVkdFbGVtZW50KSB7XG5cdFx0aWYgKHN2Zykge1xuXHRcdFx0dGhpcy5zdmcgPSBzdmc7XG5cdFx0XHRjb25zdCBpY29uID0gPFNWR0VsZW1lbnQ+c3ZnLmNsb25lTm9kZSh0cnVlKTtcblx0XHRcdGNvbnN0IGVsZW0gPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuXHRcdFx0ZWxlbS5pbm5lckhUTUwgPSAnJztcblx0XHRcdHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZWxlbSwgaWNvbik7XG5cblx0XHRcdHRoaXMuc3R5bGl6ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc3R5bGl6ZSgpIHtcblx0XHRpZiAodGhpcy5zdmcpIHtcblx0XHRcdGNvbnN0IHN2ZyA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRcdGlmICh0aGlzLnN0cmV0Y2ggPT09IHRydWUpIHtcblx0XHRcdFx0dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoc3ZnLCAncHJlc2VydmVBc3BlY3RSYXRpbycsICdub25lJyk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuc3RyZXRjaCA9PT0gZmFsc2UpIHtcblx0XHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoc3ZnLCAncHJlc2VydmVBc3BlY3RSYXRpbycpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYXBwbHlDaGFuZ2VzKGNoYW5nZXM6IEtleVZhbHVlQ2hhbmdlczxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSB7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIG51bGwpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbSgocmVjb3JkOktleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgcmVjb3JkLmN1cnJlbnRWYWx1ZSkpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRTdHlsZShuYW1lQW5kVW5pdDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfG51bWJlcnxudWxsfHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IFtuYW1lLCB1bml0XSA9IG5hbWVBbmRVbml0LnNwbGl0KCcuJyk7XG5cdFx0dmFsdWUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB1bml0ID8gYCR7dmFsdWV9JHt1bml0fWAgOiB2YWx1ZTtcblx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0aWYgKHZhbHVlICE9PSBudWxsKSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHN2ZywgbmFtZSwgdmFsdWUgYXMgc3RyaW5nKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShzdmcsIG5hbWUpO1xuXHRcdH1cblx0fVxufVxuIl19

@@ -1,19 +0,28 @@

import { Injectable, Optional, SkipSelf, Component, ElementRef, Input, KeyValueDiffers, Renderer2, NgModule } from '@angular/core';
import { Inject, Injectable, InjectionToken, Optional, SkipSelf, PLATFORM_ID, Component, ElementRef, Input, KeyValueDiffers, Renderer2, NgModule } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { of, throwError } from 'rxjs';
import { map, tap, catchError, finalize, share } from 'rxjs/operators';
import { CommonModule } from '@angular/common';
import { DOCUMENT, CommonModule } from '@angular/common';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const SERVER_URL = new InjectionToken('SERVER_URL');
class SvgIconRegistryService {
/**
* @param {?} http
* @param {?} platformId
* @param {?} serverUrl
* @param {?} _document
*/
constructor(http) {
constructor(http, platformId, serverUrl, _document) {
this.http = http;
this.platformId = platformId;
this.serverUrl = serverUrl;
this._document = _document;
this.iconsByUrl = new Map();
this.iconsLoadingByUrl = new Map();
this.document = this._document;
}

@@ -29,6 +38,6 @@ /**

/** @type {?} */
const div = document.createElement('DIV');
const div = this.document.createElement('DIV');
div.innerHTML = data;
/** @type {?} */
const svg = /** @type {?} */ (div.querySelector('svg'));
const svg = (/** @type {?} */ (div.querySelector('svg')));
this.iconsByUrl.set(name, svg);

@@ -43,2 +52,5 @@ }

loadSvg(url) {
if (this.serverUrl && url.match(/^(http(s)?):/) === null) {
url = this.serverUrl + url;
}
if (this.iconsByUrl.has(url)) {

@@ -52,11 +64,11 @@ return of(this.iconsByUrl.get(url));

/** @type {?} */
const o = /** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(svg => {
const o = (/** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(svg => {
/** @type {?} */
const div = document.createElement('DIV');
const div = this.document.createElement('DIV');
div.innerHTML = svg;
return /** @type {?} */ (div.querySelector('svg'));
return (/** @type {?} */ (div.querySelector('svg')));
}), tap(svg => this.iconsByUrl.set(url, svg)), catchError(err => {
console.error(err);
return throwError(err);
}), finalize(() => this.iconsLoadingByUrl.delete(url)), share()));
}), finalize(() => this.iconsLoadingByUrl.delete(url)), share())));
this.iconsLoadingByUrl.set(url, o);

@@ -82,3 +94,6 @@ return o;

SvgIconRegistryService.ctorParameters = () => [
{ type: HttpClient }
{ type: HttpClient },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [SERVER_URL,] }] },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }
];

@@ -88,6 +103,9 @@ /**

* @param {?} http
* @param {?} platformId
* @param {?=} serverUrl
* @param {?=} document
* @return {?}
*/
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http) {
return parentRegistry || new SvgIconRegistryService(http);
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(http, platformId, serverUrl, document);
}

@@ -97,3 +115,5 @@ /** @type {?} */

provide: SvgIconRegistryService,
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient],
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient, [(/** @type {?} */ (PLATFORM_ID))],
[new Optional(), (/** @type {?} */ (SERVER_URL))], [new Optional(), (/** @type {?} */ (DOCUMENT))]
],
useFactory: SVG_ICON_REGISTRY_PROVIDER_FACTORY

@@ -104,3 +124,3 @@ };

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

@@ -121,2 +141,3 @@ class SvgIconComponent {

}
// Adapted from ngStyle
/**

@@ -172,2 +193,3 @@ * @param {?} v

/**
* @private
* @return {?}

@@ -182,2 +204,3 @@ */

/**
* @private
* @return {?}

@@ -193,2 +216,3 @@ */

/**
* @private
* @return {?}

@@ -202,2 +226,3 @@ */

/**
* @private
* @param {?} svg

@@ -210,3 +235,3 @@ * @return {?}

/** @type {?} */
const icon = /** @type {?} */ (svg.cloneNode(true));
const icon = (/** @type {?} */ (svg.cloneNode(true)));
/** @type {?} */

@@ -220,2 +245,3 @@ const elem = this.element.nativeElement;

/**
* @private
* @return {?}

@@ -236,2 +262,3 @@ */

/**
* @private
* @param {?} changes

@@ -246,2 +273,3 @@ * @return {?}

/**
* @private
* @param {?} nameAndUnit

@@ -257,3 +285,3 @@ * @param {?} value

if (value !== null) {
this.renderer.setStyle(svg, name, /** @type {?} */ (value));
this.renderer.setStyle(svg, name, (/** @type {?} */ (value)));
}

@@ -287,3 +315,3 @@ else {

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

@@ -305,3 +333,3 @@ class AngularSvgIconModule {

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

@@ -311,7 +339,7 @@

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { AngularSvgIconModule, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent };
export { AngularSvgIconModule, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyIsIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24uY29tcG9uZW50LnRzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9hbmd1bGFyLXN2Zy1pY29uLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YXAsIGNhdGNoRXJyb3IsIGZpbmFsaXplLCBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgaWNvbnNCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBTVkdFbGVtZW50PigpO1xuXHRwcml2YXRlIGljb25zTG9hZGluZ0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8U1ZHRWxlbWVudD4+KCk7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBodHRwOkh0dHBDbGllbnQpIHtcblx0fVxuXG5cdC8qKiBBZGQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGJ5IHBhc3NpbmcgYSBuYW1lIGFuZCB0aGUgU1ZHLiAqL1xuXHRhZGRTdmcobmFtZTpzdHJpbmcsIGRhdGE6c3RyaW5nKSB7XG5cdFx0aWYgKCF0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdGRpdi5pbm5lckhUTUwgPSBkYXRhO1xuXHRcdFx0Y29uc3Qgc3ZnID0gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLnNldChuYW1lLCBzdmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBMb2FkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBmcm9tIGEgVVJMLiAqL1xuXHRsb2FkU3ZnKHVybDpzdHJpbmcpIDogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG5cblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQodXJsKSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmljb25zTG9hZGluZ0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5nZXQodXJsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgbyA9IDxPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PiB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5waXBlKFxuXHRcdFx0XHRtYXAoc3ZnID0+IHtcblx0XHRcdFx0XHRjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdFx0XHRkaXYuaW5uZXJIVE1MID0gc3ZnO1xuXHRcdFx0XHRcdHJldHVybiA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR0YXAgKHN2ZyA9PiB0aGlzLmljb25zQnlVcmwuc2V0KHVybCwgc3ZnKSApLFxuXHRcdFx0XHRjYXRjaEVycm9yKGVyciA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdFx0XHRcdHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnIpO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0ZmluYWxpemUoKCkgPT4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5kZWxldGUodXJsKSApLFxuXHRcdFx0XHRzaGFyZSgpXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLmljb25zTG9hZGluZ0J5VXJsLnNldCh1cmwsIG8pO1xuXHRcdFx0cmV0dXJuIG87XG5cdFx0fVxuXHR9XG5cblx0LyoqIFJlbW92ZSBhIFNWRyBmcm9tIHRoZSByZWdpc3RyeSBieSBVUkwgKG9yIG5hbWUpLiAqL1xuXHR1bmxvYWRTdmcodXJsOnN0cmluZykge1xuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5kZWxldGUodXJsKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUlkocGFyZW50UmVnaXN0cnk6U3ZnSWNvblJlZ2lzdHJ5U2VydmljZSwgaHR0cDpIdHRwQ2xpZW50KSB7XG5cdHJldHVybiBwYXJlbnRSZWdpc3RyeSB8fCBuZXcgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZShodHRwKTtcbn1cblxuZXhwb3J0IGNvbnN0IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSID0ge1xuXHRwcm92aWRlOiBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLFxuXHRkZXBzOiBbIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2VdLCBIdHRwQ2xpZW50IF0sXG5cdHVzZUZhY3Rvcnk6IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUllcbn07XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCxcblx0S2V5VmFsdWVDaGFuZ2VSZWNvcmQsIEtleVZhbHVlQ2hhbmdlcywgS2V5VmFsdWVEaWZmZXIsIEtleVZhbHVlRGlmZmVycyxcblx0T25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3N2Zy1pY29uJyxcblx0c3R5bGVzOiBbIGA6aG9zdCB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfWAgXSxcblx0dGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcblxuZXhwb3J0IGNsYXNzIFN2Z0ljb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBEb0NoZWNrIHtcblx0QElucHV0KCkgc3JjOnN0cmluZztcblx0QElucHV0KCkgc3RyZXRjaCA9IGZhbHNlO1xuXG5cdC8vIEFkYXB0ZWQgZnJvbSBuZ1N0eWxlXG5cdEBJbnB1dCgpXG5cdHNldCBzdmdTdHlsZSh2OiB7W2tleTpzdHJpbmddOiBzdHJpbmcgfSkge1xuXHRcdHRoaXMuX3N2Z1N0eWxlID0gdjtcblx0XHRpZiAoIXRoaXMuZGlmZmVyICYmIHYpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodikuY3JlYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdmc6U1ZHRWxlbWVudDtcblx0cHJpdmF0ZSBpY25TdWI6U3Vic2NyaXB0aW9uO1xuXHRwcml2YXRlIGRpZmZlcjpLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIHN0cmluZ3xudW1iZXI+O1xuXHRwcml2YXRlIF9zdmdTdHlsZToge1trZXk6c3RyaW5nXTpzdHJpbmd9O1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDpFbGVtZW50UmVmLFxuXHRcdHByaXZhdGUgZGlmZmVyczpLZXlWYWx1ZURpZmZlcnMsXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjpSZW5kZXJlcjIsXG5cdFx0cHJpdmF0ZSBpY29uUmVnOlN2Z0ljb25SZWdpc3RyeVNlcnZpY2UpIHtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuaW5pdCgpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5kZXN0cm95KCk7XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VSZWNvcmQ6IHtba2V5OnN0cmluZ106U2ltcGxlQ2hhbmdlfSkge1xuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3NyYyddKSB7XG5cdFx0XHRpZiAodGhpcy5zdmcpIHtcblx0XHRcdFx0dGhpcy5kZXN0cm95KCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmluaXQoKTtcblx0XHR9XG5cdFx0aWYgKGNoYW5nZVJlY29yZFsnc3RyZXRjaCddKSB7XG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRuZ0RvQ2hlY2soKSB7XG5cdFx0aWYgKHRoaXMuc3ZnICYmIHRoaXMuZGlmZmVyKSB7XG5cdFx0XHRjb25zdCBjaGFuZ2VzID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLl9zdmdTdHlsZSk7XG5cdFx0XHRpZiAoY2hhbmdlcykge1xuXHRcdFx0XHR0aGlzLmFwcGx5Q2hhbmdlcyhjaGFuZ2VzKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGluaXQoKSB7XG5cdFx0dGhpcy5pY25TdWIgPSB0aGlzLmljb25SZWcubG9hZFN2Zyh0aGlzLnNyYykuc3Vic2NyaWJlKHN2ZyA9PiB7XG5cdFx0XHR0aGlzLnNldFN2ZyhzdmcpO1xuXHRcdFx0dGhpcy5yZXNldERpZmZlcigpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBkZXN0cm95KCkge1xuXHRcdHRoaXMuc3ZnID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuZGlmZmVyID0gdW5kZWZpbmVkO1xuXHRcdGlmICh0aGlzLmljblN1Yikge1xuXHRcdFx0dGhpcy5pY25TdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc2V0RGlmZmVyKCkge1xuXHRcdGlmICh0aGlzLl9zdmdTdHlsZSAmJiAhdGhpcy5kaWZmZXIpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fc3ZnU3R5bGUpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc2V0U3ZnKHN2ZzpTVkdFbGVtZW50KSB7XG5cdFx0aWYgKHN2Zykge1xuXHRcdFx0dGhpcy5zdmcgPSBzdmc7XG5cdFx0XHRjb25zdCBpY29uID0gPFNWR0VsZW1lbnQ+c3ZnLmNsb25lTm9kZSh0cnVlKTtcblx0XHRcdGNvbnN0IGVsZW0gPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuXHRcdFx0ZWxlbS5pbm5lckhUTUwgPSAnJztcblx0XHRcdHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZWxlbSwgaWNvbik7XG5cblx0XHRcdHRoaXMuc3R5bGl6ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc3R5bGl6ZSgpIHtcblx0XHRpZiAodGhpcy5zdmcpIHtcblx0XHRcdGNvbnN0IHN2ZyA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRcdGlmICh0aGlzLnN0cmV0Y2ggPT09IHRydWUpIHtcblx0XHRcdFx0dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoc3ZnLCAncHJlc2VydmVBc3BlY3RSYXRpbycsICdub25lJyk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuc3RyZXRjaCA9PT0gZmFsc2UpIHtcblx0XHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoc3ZnLCAncHJlc2VydmVBc3BlY3RSYXRpbycpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYXBwbHlDaGFuZ2VzKGNoYW5nZXM6IEtleVZhbHVlQ2hhbmdlczxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSB7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIG51bGwpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbSgocmVjb3JkOktleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgcmVjb3JkLmN1cnJlbnRWYWx1ZSkpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRTdHlsZShuYW1lQW5kVW5pdDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfG51bWJlcnxudWxsfHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IFtuYW1lLCB1bml0XSA9IG5hbWVBbmRVbml0LnNwbGl0KCcuJyk7XG5cdFx0dmFsdWUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB1bml0ID8gYCR7dmFsdWV9JHt1bml0fWAgOiB2YWx1ZTtcblx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0aWYgKHZhbHVlICE9PSBudWxsKSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHN2ZywgbmFtZSwgdmFsdWUgYXMgc3RyaW5nKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShzdmcsIG5hbWUpO1xuXHRcdH1cblx0fVxufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cblxuaW1wb3J0IHsgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgfSBmcm9tICcuL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vc3ZnLWljb24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcblx0aW1wb3J0czpcdCAgW1xuXHRcdENvbW1vbk1vZHVsZSxcblx0XSxcblx0ZGVjbGFyYXRpb25zOiBbIFN2Z0ljb25Db21wb25lbnQgXSxcblx0cHJvdmlkZXJzOiAgICBbIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIF0sXG5cdGV4cG9ydHM6ICAgICAgWyBTdmdJY29uQ29tcG9uZW50IF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB7fVxuIl0sIm5hbWVzIjpbIm9ic2VydmFibGVPZiIsIm9ic2VydmFibGVUaHJvd0Vycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7Ozs7SUFZQyxZQUFvQixJQUFlO1FBQWYsU0FBSSxHQUFKLElBQUksQ0FBVzswQkFIZCxJQUFJLEdBQUcsRUFBc0I7aUNBQ3RCLElBQUksR0FBRyxFQUFrQztLQUdwRTs7Ozs7OztJQUdELE1BQU0sQ0FBQyxJQUFXLEVBQUUsSUFBVztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7O1lBQy9CLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7O1lBQ3JCLE1BQU0sR0FBRyxxQkFBZSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFDO1lBQ2pELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztTQUMvQjtLQUNEOzs7Ozs7SUFH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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyIsIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24uY29tcG9uZW50LnRzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9hbmd1bGFyLXN2Zy1pY29uLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YXAsIGNhdGNoRXJyb3IsIGZpbmFsaXplLCBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBTRVJWRVJfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ1NFUlZFUl9VUkwnKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50O1xuXHRwcml2YXRlIGljb25zQnlVcmwgPSBuZXcgTWFwPHN0cmluZywgU1ZHRWxlbWVudD4oKTtcblx0cHJpdmF0ZSBpY29uc0xvYWRpbmdCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PigpO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDpIdHRwQ2xpZW50LFxuXHRcdFx0XHRASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcblx0XHRcdFx0QE9wdGlvbmFsKCkgQEluamVjdChTRVJWRVJfVVJMKSBwcm90ZWN0ZWQgc2VydmVyVXJsOiBzdHJpbmcsXG5cdFx0XHRcdEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnkpIHtcblx0XHRcdHRoaXMuZG9jdW1lbnQgPSB0aGlzLl9kb2N1bWVudDtcblx0fVxuXG5cdC8qKiBBZGQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGJ5IHBhc3NpbmcgYSBuYW1lIGFuZCB0aGUgU1ZHLiAqL1xuXHRhZGRTdmcobmFtZTpzdHJpbmcsIGRhdGE6c3RyaW5nKSB7XG5cdFx0aWYgKCF0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRjb25zdCBkaXYgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0ZGl2LmlubmVySFRNTCA9IGRhdGE7XG5cdFx0XHRjb25zdCBzdmcgPSA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuc2V0KG5hbWUsIHN2Zyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIExvYWQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGZyb20gYSBVUkwuICovXG5cdGxvYWRTdmcodXJsOnN0cmluZykgOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcblxuXHRcdGlmICh0aGlzLnNlcnZlclVybCAmJiB1cmwubWF0Y2goL14oaHR0cChzKT8pOi8pID09PSBudWxsKSB7XG5cdFx0XHR1cmwgPSB0aGlzLnNlcnZlclVybCArIHVybDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQodXJsKSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmljb25zTG9hZGluZ0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5nZXQodXJsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgbyA9IDxPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PiB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5waXBlKFxuXHRcdFx0XHRtYXAoc3ZnID0+IHtcblx0XHRcdFx0XHRjb25zdCBkaXYgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0XHRcdGRpdi5pbm5lckhUTUwgPSBzdmc7XG5cdFx0XHRcdFx0cmV0dXJuIDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdHRhcCAoc3ZnID0+IHRoaXMuaWNvbnNCeVVybC5zZXQodXJsLCBzdmcpICksXG5cdFx0XHRcdGNhdGNoRXJyb3IoZXJyID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGVycik7XG5cdFx0XHRcdFx0cmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycik7XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRmaW5hbGl6ZSgoKSA9PiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmRlbGV0ZSh1cmwpICksXG5cdFx0XHRcdHNoYXJlKClcblx0XHRcdCk7XG5cblx0XHRcdHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuc2V0KHVybCwgbyk7XG5cdFx0XHRyZXR1cm4gbztcblx0XHR9XG5cdH1cblxuXHQvKiogUmVtb3ZlIGEgU1ZHIGZyb20gdGhlIHJlZ2lzdHJ5IGJ5IFVSTCAob3IgbmFtZSkuICovXG5cdHVubG9hZFN2Zyh1cmw6c3RyaW5nKSB7XG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXModXJsKSkge1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLmRlbGV0ZSh1cmwpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWShwYXJlbnRSZWdpc3RyeTpTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLCBodHRwOkh0dHBDbGllbnQsXG5cdHBsYXRmb3JtSWQ6IE9iamVjdCwgc2VydmVyVXJsPzogc3RyaW5nLCBkb2N1bWVudD86IGFueSkge1xuXHRyZXR1cm4gcGFyZW50UmVnaXN0cnkgfHwgbmV3IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UoaHR0cCwgcGxhdGZvcm1JZCwgIHNlcnZlclVybCwgZG9jdW1lbnQpO1xufVxuXG5leHBvcnQgY29uc3QgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgPSB7XG5cdHByb3ZpZGU6IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsXG5cdGRlcHM6IFsgW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZV0sIEh0dHBDbGllbnQsIFtQTEFURk9STV9JRCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XSxcblx0XHRcdFtuZXcgT3B0aW9uYWwoKSwgU0VSVkVSX1VSTCBhcyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+XSwgW25ldyBPcHRpb25hbCgpLCBET0NVTUVOVCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XVxuXHRdLFxuXHR1c2VGYWN0b3J5OiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZXG59O1xuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsXG5cdEtleVZhbHVlQ2hhbmdlUmVjb3JkLCBLZXlWYWx1ZUNoYW5nZXMsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlcnMsXG5cdE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzdmctaWNvbicsXG5cdHN0eWxlczogWyBgOmhvc3QgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1gIF0sXG5cdHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5cbmV4cG9ydCBjbGFzcyBTdmdJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgRG9DaGVjayB7XG5cdEBJbnB1dCgpIHNyYzpzdHJpbmc7XG5cdEBJbnB1dCgpIHN0cmV0Y2ggPSBmYWxzZTtcblxuXHQvLyBBZGFwdGVkIGZyb20gbmdTdHlsZVxuXHRASW5wdXQoKVxuXHRzZXQgc3ZnU3R5bGUodjoge1trZXk6c3RyaW5nXTogc3RyaW5nIH0pIHtcblx0XHR0aGlzLl9zdmdTdHlsZSA9IHY7XG5cdFx0aWYgKCF0aGlzLmRpZmZlciAmJiB2KSB7XG5cdFx0XHR0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHYpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc3ZnOlNWR0VsZW1lbnQ7XG5cdHByaXZhdGUgaWNuU3ViOlN1YnNjcmlwdGlvbjtcblx0cHJpdmF0ZSBkaWZmZXI6S2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPjtcblx0cHJpdmF0ZSBfc3ZnU3R5bGU6IHtba2V5OnN0cmluZ106c3RyaW5nfTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6RWxlbWVudFJlZixcblx0XHRwcml2YXRlIGRpZmZlcnM6S2V5VmFsdWVEaWZmZXJzLFxuXHRcdHByaXZhdGUgcmVuZGVyZXI6UmVuZGVyZXIyLFxuXHRcdHByaXZhdGUgaWNvblJlZzpTdmdJY29uUmVnaXN0cnlTZXJ2aWNlKSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLmluaXQoKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuZGVzdHJveSgpO1xuXHR9XG5cblx0bmdPbkNoYW5nZXMoY2hhbmdlUmVjb3JkOiB7W2tleTpzdHJpbmddOlNpbXBsZUNoYW5nZX0pIHtcblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzcmMnXSkge1xuXHRcdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRcdHRoaXMuZGVzdHJveSgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5pbml0KCk7XG5cdFx0fVxuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3N0cmV0Y2gnXSkge1xuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdEb0NoZWNrKCkge1xuXHRcdGlmICh0aGlzLnN2ZyAmJiB0aGlzLmRpZmZlcikge1xuXHRcdFx0Y29uc3QgY2hhbmdlcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5fc3ZnU3R5bGUpO1xuXHRcdFx0aWYgKGNoYW5nZXMpIHtcblx0XHRcdFx0dGhpcy5hcHBseUNoYW5nZXMoY2hhbmdlcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbml0KCkge1xuXHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmxvYWRTdmcodGhpcy5zcmMpLnN1YnNjcmliZShzdmcgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdmcoc3ZnKTtcblx0XHRcdHRoaXMucmVzZXREaWZmZXIoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgZGVzdHJveSgpIHtcblx0XHR0aGlzLnN2ZyA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmRpZmZlciA9IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5pY25TdWIpIHtcblx0XHRcdHRoaXMuaWNuU3ViLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSByZXNldERpZmZlcigpIHtcblx0XHRpZiAodGhpcy5fc3ZnU3R5bGUgJiYgIXRoaXMuZGlmZmVyKSB7XG5cdFx0XHR0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHRoaXMuX3N2Z1N0eWxlKS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHNldFN2Zyhzdmc6U1ZHRWxlbWVudCkge1xuXHRcdGlmIChzdmcpIHtcblx0XHRcdHRoaXMuc3ZnID0gc3ZnO1xuXHRcdFx0Y29uc3QgaWNvbiA9IDxTVkdFbGVtZW50PnN2Zy5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0XHRjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdGVsZW0uaW5uZXJIVE1MID0gJyc7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGVsZW0sIGljb24pO1xuXG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0eWxpemUoKSB7XG5cdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRpZiAodGhpcy5zdHJldGNoID09PSB0cnVlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnN0cmV0Y2ggPT09IGZhbHNlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFwcGx5Q2hhbmdlcyhjaGFuZ2VzOiBLZXlWYWx1ZUNoYW5nZXM8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikge1xuXHRcdGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6S2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCBudWxsKSk7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKChyZWNvcmQ6S2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKSk7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0U3R5bGUobmFtZUFuZFVuaXQ6IHN0cmluZywgdmFsdWU6IHN0cmluZ3xudW1iZXJ8bnVsbHx1bmRlZmluZWQpIHtcblx0XHRjb25zdCBbbmFtZSwgdW5pdF0gPSBuYW1lQW5kVW5pdC5zcGxpdCgnLicpO1xuXHRcdHZhbHVlID0gdmFsdWUgIT09IG51bGwgJiYgdW5pdCA/IGAke3ZhbHVlfSR7dW5pdH1gIDogdmFsdWU7XG5cdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZShzdmcsIG5hbWUsIHZhbHVlIGFzIHN0cmluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoc3ZnLCBuYW1lKTtcblx0XHR9XG5cdH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5cbmltcG9ydCB7IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICcuL3N2Zy1pY29uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6XHQgIFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogWyBTdmdJY29uQ29tcG9uZW50IF0sXG5cdHByb3ZpZGVyczogICAgWyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiBdLFxuXHRleHBvcnRzOiAgICAgIFsgU3ZnSWNvbkNvbXBvbmVudCBdXG59KVxuXG5leHBvcnQgY2xhc3MgQW5ndWxhclN2Z0ljb25Nb2R1bGUge31cbiJdLCJuYW1lcyI6WyJvYnNlcnZhYmxlT2YiLCJvYnNlcnZhYmxlVGhyb3dFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBU0EsTUFBYSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQVMsWUFBWSxDQUFDO0FBR2xFLE1BQWEsc0JBQXNCOzs7Ozs7O0lBTWxDLFlBQW9CLElBQWUsRUFDSCxVQUFrQixFQUNMLFNBQWlCLEVBQ3JCLFNBQWM7UUFIbkMsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNILGVBQVUsR0FBVixVQUFVLENBQVE7UUFDTCxjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQUs7UUFOL0MsZUFBVSxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO1FBQzNDLHNCQUFpQixHQUFHLElBQUksR0FBRyxFQUFrQyxDQUFDO1FBTXBFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztLQUNoQzs7Ozs7OztJQUdELE1BQU0sQ0FBQyxJQUFXLEVBQUUsSUFBVztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7O2tCQUN6QixHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFh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

@@ -1,17 +0,23 @@

import { Injectable, Optional, SkipSelf, Component, ElementRef, Input, KeyValueDiffers, Renderer2, NgModule } from '@angular/core';
import { Inject, Injectable, InjectionToken, Optional, SkipSelf, PLATFORM_ID, Component, ElementRef, Input, KeyValueDiffers, Renderer2, NgModule } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { of, throwError } from 'rxjs';
import { map, tap, catchError, finalize, share } from 'rxjs/operators';
import { DOCUMENT, CommonModule } from '@angular/common';
import { __read } from 'tslib';
import { CommonModule } from '@angular/common';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var SERVER_URL = new InjectionToken('SERVER_URL');
var SvgIconRegistryService = /** @class */ (function () {
function SvgIconRegistryService(http) {
function SvgIconRegistryService(http, platformId, serverUrl, _document) {
this.http = http;
this.platformId = platformId;
this.serverUrl = serverUrl;
this._document = _document;
this.iconsByUrl = new Map();
this.iconsLoadingByUrl = new Map();
this.document = this._document;
}

@@ -34,6 +40,6 @@ /** Add a SVG to the registry by passing a name and the SVG. */

/** @type {?} */
var div = document.createElement('DIV');
var div = this.document.createElement('DIV');
div.innerHTML = data;
/** @type {?} */
var svg = /** @type {?} */ (div.querySelector('svg'));
var svg = (/** @type {?} */ (div.querySelector('svg')));
this.iconsByUrl.set(name, svg);

@@ -55,2 +61,5 @@ }

var _this = this;
if (this.serverUrl && url.match(/^(http(s)?):/) === null) {
url = this.serverUrl + url;
}
if (this.iconsByUrl.has(url)) {

@@ -64,11 +73,11 @@ return of(this.iconsByUrl.get(url));

/** @type {?} */
var o = /** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(function (svg) {
var o = (/** @type {?} */ (this.http.get(url, { responseType: 'text' }).pipe(map(function (svg) {
/** @type {?} */
var div = document.createElement('DIV');
var div = _this.document.createElement('DIV');
div.innerHTML = svg;
return /** @type {?} */ (div.querySelector('svg'));
return (/** @type {?} */ (div.querySelector('svg')));
}), tap(function (svg) { return _this.iconsByUrl.set(url, svg); }), catchError(function (err) {
console.error(err);
return throwError(err);
}), finalize(function () { return _this.iconsLoadingByUrl.delete(url); }), share()));
}), finalize(function () { return _this.iconsLoadingByUrl.delete(url); }), share())));
this.iconsLoadingByUrl.set(url, o);

@@ -99,3 +108,6 @@ return o;

SvgIconRegistryService.ctorParameters = function () { return [
{ type: HttpClient }
{ type: HttpClient },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [SERVER_URL,] }] },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }
]; };

@@ -107,6 +119,9 @@ return SvgIconRegistryService;

* @param {?} http
* @param {?} platformId
* @param {?=} serverUrl
* @param {?=} document
* @return {?}
*/
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http) {
return parentRegistry || new SvgIconRegistryService(http);
function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http, platformId, serverUrl, document) {
return parentRegistry || new SvgIconRegistryService(http, platformId, serverUrl, document);
}

@@ -116,3 +131,5 @@ /** @type {?} */

provide: SvgIconRegistryService,
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient],
deps: [[new Optional(), new SkipSelf(), SvgIconRegistryService], HttpClient, [(/** @type {?} */ (PLATFORM_ID))],
[new Optional(), (/** @type {?} */ (SERVER_URL))], [new Optional(), (/** @type {?} */ (DOCUMENT))]
],
useFactory: SVG_ICON_REGISTRY_PROVIDER_FACTORY

@@ -123,3 +140,3 @@ };

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

@@ -136,3 +153,5 @@ var SvgIconComponent = /** @class */ (function () {

// Adapted from ngStyle
set: /**
set:
// Adapted from ngStyle
/**
* @param {?} v

@@ -203,5 +222,7 @@ * @return {?}

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.init = /**
* @private
* @return {?}

@@ -217,5 +238,7 @@ */

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.destroy = /**
* @private
* @return {?}

@@ -231,5 +254,7 @@ */

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.resetDiffer = /**
* @private
* @return {?}

@@ -243,2 +268,3 @@ */

/**
* @private
* @param {?} svg

@@ -248,2 +274,3 @@ * @return {?}

SvgIconComponent.prototype.setSvg = /**
* @private
* @param {?} svg

@@ -256,3 +283,3 @@ * @return {?}

/** @type {?} */
var icon = /** @type {?} */ (svg.cloneNode(true));
var icon = (/** @type {?} */ (svg.cloneNode(true)));
/** @type {?} */

@@ -266,5 +293,7 @@ var elem = this.element.nativeElement;

/**
* @private
* @return {?}
*/
SvgIconComponent.prototype.stylize = /**
* @private
* @return {?}

@@ -285,2 +314,3 @@ */

/**
* @private
* @param {?} changes

@@ -290,2 +320,3 @@ * @return {?}

SvgIconComponent.prototype.applyChanges = /**
* @private
* @param {?} changes

@@ -301,2 +332,3 @@ * @return {?}

/**
* @private
* @param {?} nameAndUnit

@@ -307,2 +339,3 @@ * @param {?} value

SvgIconComponent.prototype.setStyle = /**
* @private
* @param {?} nameAndUnit

@@ -318,3 +351,3 @@ * @param {?} value

if (value !== null) {
this.renderer.setStyle(svg, name, /** @type {?} */ (value));
this.renderer.setStyle(svg, name, (/** @type {?} */ (value)));
}

@@ -349,3 +382,3 @@ else {

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

@@ -370,3 +403,3 @@ var AngularSvgIconModule = /** @class */ (function () {

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

@@ -376,7 +409,7 @@

* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { AngularSvgIconModule, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent };
export { AngularSvgIconModule, SVG_ICON_REGISTRY_PROVIDER_FACTORY, SERVER_URL, SvgIconRegistryService, SVG_ICON_REGISTRY_PROVIDER, SvgIconComponent };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyIsIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24uY29tcG9uZW50LnRzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9hbmd1bGFyLXN2Zy1pY29uLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YXAsIGNhdGNoRXJyb3IsIGZpbmFsaXplLCBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgaWNvbnNCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBTVkdFbGVtZW50PigpO1xuXHRwcml2YXRlIGljb25zTG9hZGluZ0J5VXJsID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8U1ZHRWxlbWVudD4+KCk7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBodHRwOkh0dHBDbGllbnQpIHtcblx0fVxuXG5cdC8qKiBBZGQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGJ5IHBhc3NpbmcgYSBuYW1lIGFuZCB0aGUgU1ZHLiAqL1xuXHRhZGRTdmcobmFtZTpzdHJpbmcsIGRhdGE6c3RyaW5nKSB7XG5cdFx0aWYgKCF0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdGRpdi5pbm5lckhUTUwgPSBkYXRhO1xuXHRcdFx0Y29uc3Qgc3ZnID0gPFNWR0VsZW1lbnQ+ZGl2LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLnNldChuYW1lLCBzdmcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBMb2FkIGEgU1ZHIHRvIHRoZSByZWdpc3RyeSBmcm9tIGEgVVJMLiAqL1xuXHRsb2FkU3ZnKHVybDpzdHJpbmcpIDogT2JzZXJ2YWJsZTxTVkdFbGVtZW50PiB7XG5cblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQodXJsKSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmljb25zTG9hZGluZ0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5nZXQodXJsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgbyA9IDxPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PiB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5waXBlKFxuXHRcdFx0XHRtYXAoc3ZnID0+IHtcblx0XHRcdFx0XHRjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcblx0XHRcdFx0XHRkaXYuaW5uZXJIVE1MID0gc3ZnO1xuXHRcdFx0XHRcdHJldHVybiA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR0YXAgKHN2ZyA9PiB0aGlzLmljb25zQnlVcmwuc2V0KHVybCwgc3ZnKSApLFxuXHRcdFx0XHRjYXRjaEVycm9yKGVyciA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdFx0XHRcdHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnIpO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0ZmluYWxpemUoKCkgPT4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5kZWxldGUodXJsKSApLFxuXHRcdFx0XHRzaGFyZSgpXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLmljb25zTG9hZGluZ0J5VXJsLnNldCh1cmwsIG8pO1xuXHRcdFx0cmV0dXJuIG87XG5cdFx0fVxuXHR9XG5cblx0LyoqIFJlbW92ZSBhIFNWRyBmcm9tIHRoZSByZWdpc3RyeSBieSBVUkwgKG9yIG5hbWUpLiAqL1xuXHR1bmxvYWRTdmcodXJsOnN0cmluZykge1xuXHRcdGlmICh0aGlzLmljb25zQnlVcmwuaGFzKHVybCkpIHtcblx0XHRcdHRoaXMuaWNvbnNCeVVybC5kZWxldGUodXJsKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUlkocGFyZW50UmVnaXN0cnk6U3ZnSWNvblJlZ2lzdHJ5U2VydmljZSwgaHR0cDpIdHRwQ2xpZW50KSB7XG5cdHJldHVybiBwYXJlbnRSZWdpc3RyeSB8fCBuZXcgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZShodHRwKTtcbn1cblxuZXhwb3J0IGNvbnN0IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSID0ge1xuXHRwcm92aWRlOiBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLFxuXHRkZXBzOiBbIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2VdLCBIdHRwQ2xpZW50IF0sXG5cdHVzZUZhY3Rvcnk6IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSX0ZBQ1RPUllcbn07XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCxcblx0S2V5VmFsdWVDaGFuZ2VSZWNvcmQsIEtleVZhbHVlQ2hhbmdlcywgS2V5VmFsdWVEaWZmZXIsIEtleVZhbHVlRGlmZmVycyxcblx0T25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3N2Zy1pY29uJyxcblx0c3R5bGVzOiBbIGA6aG9zdCB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfWAgXSxcblx0dGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcblxuZXhwb3J0IGNsYXNzIFN2Z0ljb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBEb0NoZWNrIHtcblx0QElucHV0KCkgc3JjOnN0cmluZztcblx0QElucHV0KCkgc3RyZXRjaCA9IGZhbHNlO1xuXG5cdC8vIEFkYXB0ZWQgZnJvbSBuZ1N0eWxlXG5cdEBJbnB1dCgpXG5cdHNldCBzdmdTdHlsZSh2OiB7W2tleTpzdHJpbmddOiBzdHJpbmcgfSkge1xuXHRcdHRoaXMuX3N2Z1N0eWxlID0gdjtcblx0XHRpZiAoIXRoaXMuZGlmZmVyICYmIHYpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodikuY3JlYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdmc6U1ZHRWxlbWVudDtcblx0cHJpdmF0ZSBpY25TdWI6U3Vic2NyaXB0aW9uO1xuXHRwcml2YXRlIGRpZmZlcjpLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIHN0cmluZ3xudW1iZXI+O1xuXHRwcml2YXRlIF9zdmdTdHlsZToge1trZXk6c3RyaW5nXTpzdHJpbmd9O1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDpFbGVtZW50UmVmLFxuXHRcdHByaXZhdGUgZGlmZmVyczpLZXlWYWx1ZURpZmZlcnMsXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjpSZW5kZXJlcjIsXG5cdFx0cHJpdmF0ZSBpY29uUmVnOlN2Z0ljb25SZWdpc3RyeVNlcnZpY2UpIHtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuaW5pdCgpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5kZXN0cm95KCk7XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VSZWNvcmQ6IHtba2V5OnN0cmluZ106U2ltcGxlQ2hhbmdlfSkge1xuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3NyYyddKSB7XG5cdFx0XHRpZiAodGhpcy5zdmcpIHtcblx0XHRcdFx0dGhpcy5kZXN0cm95KCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmluaXQoKTtcblx0XHR9XG5cdFx0aWYgKGNoYW5nZVJlY29yZFsnc3RyZXRjaCddKSB7XG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRuZ0RvQ2hlY2soKSB7XG5cdFx0aWYgKHRoaXMuc3ZnICYmIHRoaXMuZGlmZmVyKSB7XG5cdFx0XHRjb25zdCBjaGFuZ2VzID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLl9zdmdTdHlsZSk7XG5cdFx0XHRpZiAoY2hhbmdlcykge1xuXHRcdFx0XHR0aGlzLmFwcGx5Q2hhbmdlcyhjaGFuZ2VzKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGluaXQoKSB7XG5cdFx0dGhpcy5pY25TdWIgPSB0aGlzLmljb25SZWcubG9hZFN2Zyh0aGlzLnNyYykuc3Vic2NyaWJlKHN2ZyA9PiB7XG5cdFx0XHR0aGlzLnNldFN2ZyhzdmcpO1xuXHRcdFx0dGhpcy5yZXNldERpZmZlcigpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBkZXN0cm95KCkge1xuXHRcdHRoaXMuc3ZnID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuZGlmZmVyID0gdW5kZWZpbmVkO1xuXHRcdGlmICh0aGlzLmljblN1Yikge1xuXHRcdFx0dGhpcy5pY25TdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc2V0RGlmZmVyKCkge1xuXHRcdGlmICh0aGlzLl9zdmdTdHlsZSAmJiAhdGhpcy5kaWZmZXIpIHtcblx0XHRcdHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fc3ZnU3R5bGUpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc2V0U3ZnKHN2ZzpTVkdFbGVtZW50KSB7XG5cdFx0aWYgKHN2Zykge1xuXHRcdFx0dGhpcy5zdmcgPSBzdmc7XG5cdFx0XHRjb25zdCBpY29uID0gPFNWR0VsZW1lbnQ+c3ZnLmNsb25lTm9kZSh0cnVlKTtcblx0XHRcdGNvbnN0IGVsZW0gPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuXHRcdFx0ZWxlbS5pbm5lckhUTUwgPSAnJztcblx0XHRcdHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZWxlbSwgaWNvbik7XG5cblx0XHRcdHRoaXMuc3R5bGl6ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc3R5bGl6ZSgpIHtcblx0XHRpZiAodGhpcy5zdmcpIHtcblx0XHRcdGNvbnN0IHN2ZyA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQ7XG5cblx0XHRcdGlmICh0aGlzLnN0cmV0Y2ggPT09IHRydWUpIHtcblx0XHRcdFx0dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoc3ZnLCAncHJlc2VydmVBc3BlY3RSYXRpbycsICdub25lJyk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuc3RyZXRjaCA9PT0gZmFsc2UpIHtcblx0XHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoc3ZnLCAncHJlc2VydmVBc3BlY3RSYXRpbycpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYXBwbHlDaGFuZ2VzKGNoYW5nZXM6IEtleVZhbHVlQ2hhbmdlczxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSB7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIG51bGwpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0XHRjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbSgocmVjb3JkOktleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgc3RyaW5nfG51bWJlcj4pID0+IHRoaXMuc2V0U3R5bGUocmVjb3JkLmtleSwgcmVjb3JkLmN1cnJlbnRWYWx1ZSkpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRTdHlsZShuYW1lQW5kVW5pdDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfG51bWJlcnxudWxsfHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IFtuYW1lLCB1bml0XSA9IG5hbWVBbmRVbml0LnNwbGl0KCcuJyk7XG5cdFx0dmFsdWUgPSB2YWx1ZSAhPT0gbnVsbCAmJiB1bml0ID8gYCR7dmFsdWV9JHt1bml0fWAgOiB2YWx1ZTtcblx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0aWYgKHZhbHVlICE9PSBudWxsKSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHN2ZywgbmFtZSwgdmFsdWUgYXMgc3RyaW5nKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShzdmcsIG5hbWUpO1xuXHRcdH1cblx0fVxufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cblxuaW1wb3J0IHsgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgfSBmcm9tICcuL3N2Zy1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vc3ZnLWljb24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcblx0aW1wb3J0czpcdCAgW1xuXHRcdENvbW1vbk1vZHVsZSxcblx0XSxcblx0ZGVjbGFyYXRpb25zOiBbIFN2Z0ljb25Db21wb25lbnQgXSxcblx0cHJvdmlkZXJzOiAgICBbIFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIF0sXG5cdGV4cG9ydHM6ICAgICAgWyBTdmdJY29uQ29tcG9uZW50IF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB7fVxuIl0sIm5hbWVzIjpbIm9ic2VydmFibGVPZiIsIm9ic2VydmFibGVUaHJvd0Vycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0lBWUMsZ0NBQW9CLElBQWU7UUFBZixTQUFJLEdBQUosSUFBSSxDQUFXOzBCQUhkLElBQUksR0FBRyxFQUFzQjtpQ0FDdEIsSUFBSSxHQUFHLEVBQWtDO0tBR3BFOzs7Ozs7OztJQUdELHVDQUFNOzs7Ozs7SUFBTixVQUFPLElBQVcsRUFBRSxJQUFXO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTs7WUFDL0IsSUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzs7WUFDckIsSUFBTSxHQUFHLHFCQUFlLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUM7WUFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQy9CO0tB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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdmctaWNvbi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24tcmVnaXN0cnkuc2VydmljZS50cyIsIm5nOi8vYW5ndWxhci1zdmctaWNvbi9zcmMvc3ZnLWljb24uY29tcG9uZW50LnRzIiwibmc6Ly9hbmd1bGFyLXN2Zy1pY29uL3NyYy9hbmd1bGFyLXN2Zy1pY29uLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YXAsIGNhdGNoRXJyb3IsIGZpbmFsaXplLCBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBTRVJWRVJfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ1NFUlZFUl9VUkwnKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN2Z0ljb25SZWdpc3RyeVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50O1xuXHRwcml2YXRlIGljb25zQnlVcmwgPSBuZXcgTWFwPHN0cmluZywgU1ZHRWxlbWVudD4oKTtcblx0cHJpdmF0ZSBpY29uc0xvYWRpbmdCeVVybCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PigpO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDpIdHRwQ2xpZW50LFxuXHRcdFx0XHRASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcblx0XHRcdFx0QE9wdGlvbmFsKCkgQEluamVjdChTRVJWRVJfVVJMKSBwcm90ZWN0ZWQgc2VydmVyVXJsOiBzdHJpbmcsXG5cdFx0XHRcdEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnkpIHtcblx0XHRcdHRoaXMuZG9jdW1lbnQgPSB0aGlzLl9kb2N1bWVudDtcblx0fVxuXG5cdC8qKiBBZGQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGJ5IHBhc3NpbmcgYSBuYW1lIGFuZCB0aGUgU1ZHLiAqL1xuXHRhZGRTdmcobmFtZTpzdHJpbmcsIGRhdGE6c3RyaW5nKSB7XG5cdFx0aWYgKCF0aGlzLmljb25zQnlVcmwuaGFzKG5hbWUpKSB7XG5cdFx0XHRjb25zdCBkaXYgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0ZGl2LmlubmVySFRNTCA9IGRhdGE7XG5cdFx0XHRjb25zdCBzdmcgPSA8U1ZHRWxlbWVudD5kaXYucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cdFx0XHR0aGlzLmljb25zQnlVcmwuc2V0KG5hbWUsIHN2Zyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIExvYWQgYSBTVkcgdG8gdGhlIHJlZ2lzdHJ5IGZyb20gYSBVUkwuICovXG5cdGxvYWRTdmcodXJsOnN0cmluZykgOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcblxuXHRcdGlmICh0aGlzLnNlcnZlclVybCAmJiB1cmwubWF0Y2goL14oaHR0cChzKT8pOi8pID09PSBudWxsKSB7XG5cdFx0XHR1cmwgPSB0aGlzLnNlcnZlclVybCArIHVybDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5pY29uc0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuaWNvbnNCeVVybC5nZXQodXJsKSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmljb25zTG9hZGluZ0J5VXJsLmhhcyh1cmwpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29uc0xvYWRpbmdCeVVybC5nZXQodXJsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgbyA9IDxPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+PiB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5waXBlKFxuXHRcdFx0XHRtYXAoc3ZnID0+IHtcblx0XHRcdFx0XHRjb25zdCBkaXYgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXHRcdFx0XHRcdGRpdi5pbm5lckhUTUwgPSBzdmc7XG5cdFx0XHRcdFx0cmV0dXJuIDxTVkdFbGVtZW50PmRpdi5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdHRhcCAoc3ZnID0+IHRoaXMuaWNvbnNCeVVybC5zZXQodXJsLCBzdmcpICksXG5cdFx0XHRcdGNhdGNoRXJyb3IoZXJyID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGVycik7XG5cdFx0XHRcdFx0cmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycik7XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRmaW5hbGl6ZSgoKSA9PiB0aGlzLmljb25zTG9hZGluZ0J5VXJsLmRlbGV0ZSh1cmwpICksXG5cdFx0XHRcdHNoYXJlKClcblx0XHRcdCk7XG5cblx0XHRcdHRoaXMuaWNvbnNMb2FkaW5nQnlVcmwuc2V0KHVybCwgbyk7XG5cdFx0XHRyZXR1cm4gbztcblx0XHR9XG5cdH1cblxuXHQvKiogUmVtb3ZlIGEgU1ZHIGZyb20gdGhlIHJlZ2lzdHJ5IGJ5IFVSTCAob3IgbmFtZSkuICovXG5cdHVubG9hZFN2Zyh1cmw6c3RyaW5nKSB7XG5cdFx0aWYgKHRoaXMuaWNvbnNCeVVybC5oYXModXJsKSkge1xuXHRcdFx0dGhpcy5pY29uc0J5VXJsLmRlbGV0ZSh1cmwpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVJfRkFDVE9SWShwYXJlbnRSZWdpc3RyeTpTdmdJY29uUmVnaXN0cnlTZXJ2aWNlLCBodHRwOkh0dHBDbGllbnQsXG5cdHBsYXRmb3JtSWQ6IE9iamVjdCwgc2VydmVyVXJsPzogc3RyaW5nLCBkb2N1bWVudD86IGFueSkge1xuXHRyZXR1cm4gcGFyZW50UmVnaXN0cnkgfHwgbmV3IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UoaHR0cCwgcGxhdGZvcm1JZCwgIHNlcnZlclVybCwgZG9jdW1lbnQpO1xufVxuXG5leHBvcnQgY29uc3QgU1ZHX0lDT05fUkVHSVNUUllfUFJPVklERVIgPSB7XG5cdHByb3ZpZGU6IFN2Z0ljb25SZWdpc3RyeVNlcnZpY2UsXG5cdGRlcHM6IFsgW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgU3ZnSWNvblJlZ2lzdHJ5U2VydmljZV0sIEh0dHBDbGllbnQsIFtQTEFURk9STV9JRCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XSxcblx0XHRcdFtuZXcgT3B0aW9uYWwoKSwgU0VSVkVSX1VSTCBhcyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+XSwgW25ldyBPcHRpb25hbCgpLCBET0NVTUVOVCBhcyBJbmplY3Rpb25Ub2tlbjxhbnk+XVxuXHRdLFxuXHR1c2VGYWN0b3J5OiBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUl9GQUNUT1JZXG59O1xuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsXG5cdEtleVZhbHVlQ2hhbmdlUmVjb3JkLCBLZXlWYWx1ZUNoYW5nZXMsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlcnMsXG5cdE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTdmdJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzdmctaWNvbicsXG5cdHN0eWxlczogWyBgOmhvc3QgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1gIF0sXG5cdHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5cbmV4cG9ydCBjbGFzcyBTdmdJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgRG9DaGVjayB7XG5cdEBJbnB1dCgpIHNyYzpzdHJpbmc7XG5cdEBJbnB1dCgpIHN0cmV0Y2ggPSBmYWxzZTtcblxuXHQvLyBBZGFwdGVkIGZyb20gbmdTdHlsZVxuXHRASW5wdXQoKVxuXHRzZXQgc3ZnU3R5bGUodjoge1trZXk6c3RyaW5nXTogc3RyaW5nIH0pIHtcblx0XHR0aGlzLl9zdmdTdHlsZSA9IHY7XG5cdFx0aWYgKCF0aGlzLmRpZmZlciAmJiB2KSB7XG5cdFx0XHR0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHYpLmNyZWF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgc3ZnOlNWR0VsZW1lbnQ7XG5cdHByaXZhdGUgaWNuU3ViOlN1YnNjcmlwdGlvbjtcblx0cHJpdmF0ZSBkaWZmZXI6S2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPjtcblx0cHJpdmF0ZSBfc3ZnU3R5bGU6IHtba2V5OnN0cmluZ106c3RyaW5nfTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6RWxlbWVudFJlZixcblx0XHRwcml2YXRlIGRpZmZlcnM6S2V5VmFsdWVEaWZmZXJzLFxuXHRcdHByaXZhdGUgcmVuZGVyZXI6UmVuZGVyZXIyLFxuXHRcdHByaXZhdGUgaWNvblJlZzpTdmdJY29uUmVnaXN0cnlTZXJ2aWNlKSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLmluaXQoKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuZGVzdHJveSgpO1xuXHR9XG5cblx0bmdPbkNoYW5nZXMoY2hhbmdlUmVjb3JkOiB7W2tleTpzdHJpbmddOlNpbXBsZUNoYW5nZX0pIHtcblx0XHRpZiAoY2hhbmdlUmVjb3JkWydzcmMnXSkge1xuXHRcdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRcdHRoaXMuZGVzdHJveSgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5pbml0KCk7XG5cdFx0fVxuXHRcdGlmIChjaGFuZ2VSZWNvcmRbJ3N0cmV0Y2gnXSkge1xuXHRcdFx0dGhpcy5zdHlsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdEb0NoZWNrKCkge1xuXHRcdGlmICh0aGlzLnN2ZyAmJiB0aGlzLmRpZmZlcikge1xuXHRcdFx0Y29uc3QgY2hhbmdlcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5fc3ZnU3R5bGUpO1xuXHRcdFx0aWYgKGNoYW5nZXMpIHtcblx0XHRcdFx0dGhpcy5hcHBseUNoYW5nZXMoY2hhbmdlcyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbml0KCkge1xuXHRcdHRoaXMuaWNuU3ViID0gdGhpcy5pY29uUmVnLmxvYWRTdmcodGhpcy5zcmMpLnN1YnNjcmliZShzdmcgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdmcoc3ZnKTtcblx0XHRcdHRoaXMucmVzZXREaWZmZXIoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgZGVzdHJveSgpIHtcblx0XHR0aGlzLnN2ZyA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmRpZmZlciA9IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5pY25TdWIpIHtcblx0XHRcdHRoaXMuaWNuU3ViLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSByZXNldERpZmZlcigpIHtcblx0XHRpZiAodGhpcy5fc3ZnU3R5bGUgJiYgIXRoaXMuZGlmZmVyKSB7XG5cdFx0XHR0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKHRoaXMuX3N2Z1N0eWxlKS5jcmVhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHNldFN2Zyhzdmc6U1ZHRWxlbWVudCkge1xuXHRcdGlmIChzdmcpIHtcblx0XHRcdHRoaXMuc3ZnID0gc3ZnO1xuXHRcdFx0Y29uc3QgaWNvbiA9IDxTVkdFbGVtZW50PnN2Zy5jbG9uZU5vZGUodHJ1ZSk7XG5cdFx0XHRjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdGVsZW0uaW5uZXJIVE1MID0gJyc7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGVsZW0sIGljb24pO1xuXG5cdFx0XHR0aGlzLnN0eWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0eWxpemUoKSB7XG5cdFx0aWYgKHRoaXMuc3ZnKSB7XG5cdFx0XHRjb25zdCBzdmcgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdENoaWxkO1xuXG5cdFx0XHRpZiAodGhpcy5zdHJldGNoID09PSB0cnVlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAnbm9uZScpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnN0cmV0Y2ggPT09IGZhbHNlKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHN2ZywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFwcGx5Q2hhbmdlcyhjaGFuZ2VzOiBLZXlWYWx1ZUNoYW5nZXM8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikge1xuXHRcdGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6S2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCBudWxsKSk7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKChyZWNvcmQ6S2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8bnVtYmVyPikgPT4gdGhpcy5zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKSk7XG5cdFx0Y2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0oKHJlY29yZDpLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIHN0cmluZ3xudW1iZXI+KSA9PiB0aGlzLnNldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0U3R5bGUobmFtZUFuZFVuaXQ6IHN0cmluZywgdmFsdWU6IHN0cmluZ3xudW1iZXJ8bnVsbHx1bmRlZmluZWQpIHtcblx0XHRjb25zdCBbbmFtZSwgdW5pdF0gPSBuYW1lQW5kVW5pdC5zcGxpdCgnLicpO1xuXHRcdHZhbHVlID0gdmFsdWUgIT09IG51bGwgJiYgdW5pdCA/IGAke3ZhbHVlfSR7dW5pdH1gIDogdmFsdWU7XG5cdFx0Y29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZShzdmcsIG5hbWUsIHZhbHVlIGFzIHN0cmluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoc3ZnLCBuYW1lKTtcblx0XHR9XG5cdH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5cbmltcG9ydCB7IFNWR19JQ09OX1JFR0lTVFJZX1BST1ZJREVSIH0gZnJvbSAnLi9zdmctaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICcuL3N2Zy1pY29uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6XHQgIFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogWyBTdmdJY29uQ29tcG9uZW50IF0sXG5cdHByb3ZpZGVyczogICAgWyBTVkdfSUNPTl9SRUdJU1RSWV9QUk9WSURFUiBdLFxuXHRleHBvcnRzOiAgICAgIFsgU3ZnSWNvbkNvbXBvbmVudCBdXG59KVxuXG5leHBvcnQgY2xhc3MgQW5ndWxhclN2Z0ljb25Nb2R1bGUge31cbiJdLCJuYW1lcyI6WyJvYnNlcnZhYmxlT2YiLCJvYnNlcnZhYmxlVGhyb3dFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQVNBLElBQWEsVUFBVSxHQUFHLElBQUksY0FBYyxDQUFTLFlBQVksQ0FBQztBQUVsRTtJQU9DLGdDQUFvQixJQUFlLEVBQ0gsVUFBa0IsRUFDTCxTQUFpQixFQUNyQixTQUFjO1FBSG5DLFNBQUksR0FBSixJQUFJLENBQVc7UUFDSCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBTi9DLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUMzQyxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztRQU1wRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7S0FDaEM7Ozs7Ozs7O0lBR0QsdUNBQU07Ozs7OztJQUFOLFVBQU8sSUFBVyxFQUFFLElBQVc7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFOztnQkFDekIsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFD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

@@ -5,3 +5,3 @@ {

"description": "Angular 6+ component for inlining SVGs allowing them to be easily styled with CSS.",
"version": "6.0.1",
"version": "7.0.0",
"repository": {

@@ -8,0 +8,0 @@ "type": "git",

@@ -75,3 +75,3 @@ [![npm version](https://badge.fury.io/js/angular-svg-icon.svg)](https://badge.fury.io/js/angular-svg-icon)

```
To add a SVG from a sting:
To add a SVG from a string:
```typescript

@@ -93,2 +93,21 @@ {

## Usage with Angular Universal
To support loading the SVGs URLs server-side with Universal, either the full URL
of the SVG must be provided or a `SERVER_URL` must be defined in the
AppServerModule:
```typescript
...
import { SERVER_URL } from 'angular-svg-icon';
@NgModule({
imports: [
AppModule,
ServerModule,
ModuleMapLoaderModule,
ServerTransferStateModule,
],
bootstrap: [AppComponent],
providers: [{provide: SERVER_URL, useValue: 'http://localhost:4000/'}]
...
```
## SVG Preparation

@@ -95,0 +114,0 @@ The SVG should be modified to remove the height and width attributes from the file

@@ -1,9 +0,14 @@

import { Optional } from '@angular/core';
import { InjectionToken, Optional } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
export declare const SERVER_URL: InjectionToken<string>;
export declare class SvgIconRegistryService {
private http;
private platformId;
protected serverUrl: string;
private _document;
private document;
private iconsByUrl;
private iconsLoadingByUrl;
constructor(http: HttpClient);
constructor(http: HttpClient, platformId: Object, serverUrl: string, _document: any);
/** Add a SVG to the registry by passing a name and the SVG. */

@@ -16,3 +21,3 @@ addSvg(name: string, data: string): void;

}
export declare function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry: SvgIconRegistryService, http: HttpClient): SvgIconRegistryService;
export declare function SVG_ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry: SvgIconRegistryService, http: HttpClient, platformId: Object, serverUrl?: string, document?: any): SvgIconRegistryService;
export declare const SVG_ICON_REGISTRY_PROVIDER: {

@@ -19,0 +24,0 @@ provide: typeof SvgIconRegistryService;

@@ -24,9 +24,9 @@ import { DoCheck, ElementRef, KeyValueDiffers, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChange } from '@angular/core';

ngDoCheck(): void;
private init();
private destroy();
private resetDiffer();
private setSvg(svg);
private stylize();
private applyChanges(changes);
private setStyle(nameAndUnit, value);
private init;
private destroy;
private resetDiffer;
private setSvg;
private stylize;
private applyChanges;
private setStyle;
}

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