ngx-captcha
Advanced tools
Comparing version 3.1.2 to 4.0.0
@@ -1,2 +0,2 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common")):"function"==typeof define&&define.amd?define("ngx-captcha",["exports","@angular/core","@angular/common"],e):e(t["ngx-captcha"]={},t.ng.core,t.ng.common)}(this,function(t,i,a){"use strict";var r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])};function e(t,e){function a(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)}var o={InvisibleReCaptcha:0,ReCaptcha2:1};o[o.InvisibleReCaptcha]="InvisibleReCaptcha",o[o.ReCaptcha2]="ReCaptcha2";var n=function(){function t(t,e,a){this.renderer=t,this.zone=e,this.globalConfig=a,this.setupAfterLoad=!1,this.windowOnLoadCallbackProperty="ngx_onload_callback_"+this.getPseudoUniqueNumber(),this.globalReCaptchaProperty="grecaptcha",this.captchaElemPrefix="ngx_captcha_id_",this.type="image",this.tabIndex=0,this.success=new i.EventEmitter,this.load=new i.EventEmitter,this.ready=new i.EventEmitter,this.resetCaptchaAfterSuccess=!1,this.isLoaded=!1}return t.prototype.getGlobalSiteKey=function(){if(this.globalConfig){if(this.recaptchaType===o.InvisibleReCaptcha){if(!this.globalConfig.invisibleCaptchaSiteKey)throw Error("SiteKey for invisible reCaptcha is not set!");return this.globalConfig.invisibleCaptchaSiteKey instanceof Function?this.globalConfig.invisibleCaptchaSiteKey():this.globalConfig.invisibleCaptchaSiteKey}if(this.recaptchaType===o.ReCaptcha2){if(!this.globalConfig.reCaptcha2SiteKey)throw Error("SiteKey for reCaptcha2 is not set!");return this.globalConfig.reCaptcha2SiteKey instanceof Function?this.globalConfig.reCaptcha2SiteKey():this.globalConfig.reCaptcha2SiteKey}throw Error("Unsupported captcha type '"+this.recaptchaType+"'!")}},t.prototype.ngOnChanges=function(t){this.siteKey?this.siteKey instanceof Function?this._siteKey=this.siteKey():this._siteKey=this.siteKey:this._siteKey=this.getGlobalSiteKey(),this.setupComponent()},t.prototype.ngOnDestroy=function(){window[this.windowOnLoadCallbackProperty]={},window[this.globalReCaptchaProperty]={}},t.prototype.getResponse=function(){return this.reCaptchaApi.getResponse(this.captchaId)},t.prototype.getCaptchaId=function(){return this.captchaId},t.prototype.resetCaptcha=function(){this.reCaptchaApi.reset(this.captchaId)},t.prototype.getCurrentResponse=function(){return this.currentResponse},t.prototype.reloadCaptcha=function(){this.setupComponent()},t.prototype.ensureCaptchaElem=function(t){var e=document.getElementById(t);if(!e)throw Error("Captcha element with id '"+t+"' was not found");this.captchaElem=e},t.prototype.renderReCaptcha=function(){this.captchaId=this.reCaptchaApi.render(this.captchaElemId,this.getCaptchaProperties()),this.ready.next()},t.prototype.handleCallback=function(t){this.currentResponse=t,this.success.next(t),this.resetCaptchaAfterSuccess&&this.resetCaptcha()},t.prototype.ensureReCaptchaScript=function(){window[this.globalReCaptchaProperty]={},this.reCaptchaApi={},this.registerReCaptchaScript()},t.prototype.registerReCaptchaScript=function(){var t=document.createElement("script");t.innerHTML="",t.src="https://www.google.com/recaptcha/api.js?onload="+this.windowOnLoadCallbackProperty+"&render=explicit"+this.getLanguageParam(),t.async=!0,t.defer=!0,this.captchaScriptElem.nativeElement.appendChild(t)},t.prototype.getLanguageParam=function(){return this.hl?"&hl="+this.hl:""},t.prototype.getPseudoUniqueNumber=function(){return(new Date).getUTCMilliseconds()+Math.floor(9999*Math.random())},t.prototype.isReCaptchaApiDefined=function(){return!!window[this.globalReCaptchaProperty]},t.prototype.setupComponent=function(){var t=this;this.captchaSpecificSetup(),this.createAndSetCaptchaElem(),window[this.windowOnLoadCallbackProperty]=function(){return t.zone.run(t.onloadCallback.bind(t))},this.ensureReCaptchaScript()},t.prototype.onloadCallback=function(){if(this.reCaptchaApi=grecaptcha,!this.reCaptchaApi)throw Error("ReCaptcha Api was not initialized correctly");this.isLoaded=!0,this.load.next(),this.renderReCaptcha(),this.setupAfterLoad&&(this.setupAfterLoad=!1,this.setupComponent())},t.prototype.generateNewElemId=function(){return this.captchaElemPrefix+this.getPseudoUniqueNumber()},t.prototype.createAndSetCaptchaElem=function(){if(this.captchaElemId=this.generateNewElemId(),!this.captchaElemId)throw Error("Captcha elem Id is not set");this.captchaWrapperElem.nativeElement.innerHTML="";var t=this.renderer.createElement("div");t.id=this.captchaElemId,this.renderer.appendChild(this.captchaWrapperElem.nativeElement,t),this.ensureCaptchaElem(this.captchaElemId)},t.propDecorators={siteKey:[{type:i.Input}],type:[{type:i.Input}],hl:[{type:i.Input}],tabIndex:[{type:i.Input}],success:[{type:i.Output}],load:[{type:i.Output}],ready:[{type:i.Output}],captchaWrapperElem:[{type:i.ViewChild,args:["captchaWrapperElem"]}],captchaScriptElem:[{type:i.ViewChild,args:["captchaScriptElem"]}]},t}(),p=function(){},c=function(n){function t(t,e,a){var r=n.call(this,t,e,a)||this;return r.renderer=t,r.zone=e,r.globalConfig=a,r.windowOnErrorCallbackProperty="ngx_captcha_error_callback",r.windowOnExpireCallbackProperty="ngx_captcha_expire_callback",r.theme="light",r.size="normal",r.expire=new i.EventEmitter,r.error=new i.EventEmitter,r.recaptchaType=o.ReCaptcha2,r}return e(t,n),t.prototype.ngOnChanges=function(t){n.prototype.ngOnChanges.call(this,t)},t.prototype.ngOnDestroy=function(){n.prototype.ngOnDestroy.call(this),window[this.windowOnErrorCallbackProperty]={},window[this.windowOnExpireCallbackProperty]={}},t.prototype.captchaSpecificSetup=function(){this.registerCallbacks()},t.prototype.getCaptchaProperties=function(){var e=this;return{sitekey:this._siteKey,callback:function(t){return e.zone.run(function(){return e.handleCallback(t)})},"expired-callback":function(){return e.zone.run(function(){return e.handleExpireCallback()})},"error-callback":function(){return e.zone.run(function(){return e.handleErrorCallback()})},theme:this.theme,type:this.type,size:this.size,tabindex:this.tabIndex}},t.prototype.registerCallbacks=function(){window[this.windowOnErrorCallbackProperty]=this.handleErrorCallback.bind(this),window[this.windowOnExpireCallbackProperty]=this.handleExpireCallback.bind(this)},t.prototype.handleErrorCallback=function(){this.error.next()},t.prototype.handleExpireCallback=function(){this.expire.next(),this.resetCaptcha()},t.decorators=[{type:i.Component,args:[{selector:"ngx-recaptcha2",template:"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>"}]}],t.ctorParameters=function(){return[{type:i.Renderer2},{type:i.NgZone},{type:p,decorators:[{type:i.Optional}]}]},t.propDecorators={theme:[{type:i.Input}],size:[{type:i.Input}],hl:[{type:i.Input}],expire:[{type:i.Output}],error:[{type:i.Output}]},t}(n),s=function(n){function t(t,e,a){var r=n.call(this,t,e,a)||this;return r.renderer=t,r.zone=e,r.globalConfig=a,r.size="invisible",r.badge="bottomright",r.recaptchaType=o.InvisibleReCaptcha,r}return e(t,n),t.prototype.ngOnChanges=function(t){n.prototype.ngOnChanges.call(this,t)},t.prototype.execute=function(){this.reCaptchaApi.execute(this.captchaId)},t.prototype.captchaSpecificSetup=function(){},t.prototype.getCaptchaProperties=function(){var e=this;return{sitekey:this._siteKey,callback:function(t){return e.zone.run(function(){return e.handleCallback(t)})},badge:this.badge,type:this.type,tabindex:this.tabIndex,size:this.size}},t.decorators=[{type:i.Component,args:[{selector:"ngx-invisible-recaptcha",template:"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>"}]}],t.ctorParameters=function(){return[{type:i.Renderer2},{type:i.NgZone},{type:p,decorators:[{type:i.Optional}]}]},t.propDecorators={badge:[{type:i.Input}],hl:[{type:i.Input}]},t}(n),h=function(){function e(){}return e.forRoot=function(t){return{ngModule:e,providers:[{provide:p,useValue:t}]}},e.decorators=[{type:i.NgModule,args:[{imports:[a.CommonModule],declarations:[c,s],exports:[c,s]}]}],e}();t.ReCaptcha2Component=c,t.InvisibleReCaptchaComponent=s,t.NgxCaptchaConfig=p,t.NgxCaptchaModule=h,t.ɵa=n,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/forms"),require("@angular/common")):"function"==typeof define&&define.amd?define("ngx-captcha",["exports","@angular/core","@angular/forms","@angular/common"],e):e(t["ngx-captcha"]={},t.ng.core,t.ng.forms,t.ng.common)}(this,function(t,o,e,n){"use strict";var r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};function i(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var p={InvisibleReCaptcha:0,ReCaptcha2:1};p[p.InvisibleReCaptcha]="InvisibleReCaptcha",p[p.ReCaptcha2]="ReCaptcha2";var a=function(){function t(t,e,n,r){this.renderer=t,this.zone=e,this.injector=n,this.globalConfig=r,this.setupAfterLoad=!1,this.windowOnLoadCallbackProperty="ngx_onload_callback_"+this.getPseudoUniqueNumber(),this.globalReCaptchaProperty="grecaptcha",this.captchaElemPrefix="ngx_captcha_id_",this.type="image",this.tabIndex=0,this.success=new o.EventEmitter,this.load=new o.EventEmitter,this.ready=new o.EventEmitter,this.resetCaptchaAfterSuccess=!1,this.isLoaded=!1}return t.prototype.ngAfterViewInit=function(){this.control=this.injector.get(e.NgControl).control},t.prototype.getGlobalSiteKey=function(){if(this.globalConfig){if(this.recaptchaType===p.InvisibleReCaptcha){if(!this.globalConfig.invisibleCaptchaSiteKey)throw Error("SiteKey for invisible reCaptcha is not set!");return this.globalConfig.invisibleCaptchaSiteKey instanceof Function?this.globalConfig.invisibleCaptchaSiteKey():this.globalConfig.invisibleCaptchaSiteKey}if(this.recaptchaType===p.ReCaptcha2){if(!this.globalConfig.reCaptcha2SiteKey)throw Error("SiteKey for reCaptcha2 is not set!");return this.globalConfig.reCaptcha2SiteKey instanceof Function?this.globalConfig.reCaptcha2SiteKey():this.globalConfig.reCaptcha2SiteKey}throw Error("Unsupported captcha type '"+this.recaptchaType+"'!")}},t.prototype.ngOnChanges=function(t){this.siteKey?this.siteKey instanceof Function?this._siteKey=this.siteKey():this._siteKey=this.siteKey:this._siteKey=this.getGlobalSiteKey(),this.setupComponent()},t.prototype.ngOnDestroy=function(){window[this.windowOnLoadCallbackProperty]={},window[this.globalReCaptchaProperty]={}},t.prototype.getResponse=function(){return this.reCaptchaApi.getResponse(this.captchaId)},t.prototype.getCaptchaId=function(){return this.captchaId},t.prototype.resetCaptcha=function(){var t=this;this.zone.run(function(){t.onChange(null),t.onTouched(null)}),this.reCaptchaApi.reset(this.captchaId)},t.prototype.getCurrentResponse=function(){return this.currentResponse},t.prototype.reloadCaptcha=function(){this.setupComponent()},t.prototype.ensureCaptchaElem=function(t){var e=document.getElementById(t);if(!e)throw Error("Captcha element with id '"+t+"' was not found");this.captchaElem=e},t.prototype.renderReCaptcha=function(){this.captchaId=this.reCaptchaApi.render(this.captchaElemId,this.getCaptchaProperties()),this.ready.next()},t.prototype.handleCallback=function(t){var e=this;this.currentResponse=t,this.success.next(t),this.zone.run(function(){e.onChange(t),e.onTouched(t)}),this.resetCaptchaAfterSuccess&&this.resetCaptcha()},t.prototype.ensureReCaptchaScript=function(){window[this.globalReCaptchaProperty]={},this.reCaptchaApi={},this.registerReCaptchaScript()},t.prototype.registerReCaptchaScript=function(){var t=document.createElement("script");t.innerHTML="",t.src="https://www.google.com/recaptcha/api.js?onload="+this.windowOnLoadCallbackProperty+"&render=explicit"+this.getLanguageParam(),t.async=!0,t.defer=!0,this.captchaScriptElem.nativeElement.appendChild(t)},t.prototype.getLanguageParam=function(){return this.hl?"&hl="+this.hl:""},t.prototype.getPseudoUniqueNumber=function(){return(new Date).getUTCMilliseconds()+Math.floor(9999*Math.random())},t.prototype.isReCaptchaApiDefined=function(){return!!window[this.globalReCaptchaProperty]},t.prototype.setupComponent=function(){var t=this;this.captchaSpecificSetup(),this.createAndSetCaptchaElem(),window[this.windowOnLoadCallbackProperty]=function(){return t.zone.run(t.onloadCallback.bind(t))},this.ensureReCaptchaScript()},t.prototype.onloadCallback=function(){if(this.reCaptchaApi=grecaptcha,!this.reCaptchaApi)throw Error("ReCaptcha Api was not initialized correctly");this.isLoaded=!0,this.load.next(),this.renderReCaptcha(),this.setupAfterLoad&&(this.setupAfterLoad=!1,this.setupComponent())},t.prototype.generateNewElemId=function(){return this.captchaElemPrefix+this.getPseudoUniqueNumber()},t.prototype.createAndSetCaptchaElem=function(){if(this.captchaElemId=this.generateNewElemId(),!this.captchaElemId)throw Error("Captcha elem Id is not set");this.captchaWrapperElem.nativeElement.innerHTML="";var t=this.renderer.createElement("div");t.id=this.captchaElemId,this.renderer.appendChild(this.captchaWrapperElem.nativeElement,t),this.ensureCaptchaElem(this.captchaElemId)},t.prototype.writeValue=function(t){},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.propDecorators={siteKey:[{type:o.Input}],type:[{type:o.Input}],hl:[{type:o.Input}],tabIndex:[{type:o.Input}],success:[{type:o.Output}],load:[{type:o.Output}],ready:[{type:o.Output}],captchaWrapperElem:[{type:o.ViewChild,args:["captchaWrapperElem"]}],captchaScriptElem:[{type:o.ViewChild,args:["captchaScriptElem"]}]},t}(),c=function(){},s=function(a){function t(t,e,n,r){var i=a.call(this,t,e,n,r)||this;return i.renderer=t,i.zone=e,i.injector=n,i.globalConfig=r,i.windowOnErrorCallbackProperty="ngx_captcha_error_callback",i.windowOnExpireCallbackProperty="ngx_captcha_expire_callback",i.theme="light",i.size="normal",i.expire=new o.EventEmitter,i.error=new o.EventEmitter,i.recaptchaType=p.ReCaptcha2,i}return i(t,a),t.prototype.ngOnChanges=function(t){a.prototype.ngOnChanges.call(this,t)},t.prototype.ngOnDestroy=function(){a.prototype.ngOnDestroy.call(this),window[this.windowOnErrorCallbackProperty]={},window[this.windowOnExpireCallbackProperty]={}},t.prototype.captchaSpecificSetup=function(){this.registerCallbacks()},t.prototype.getCaptchaProperties=function(){var e=this;return{sitekey:this._siteKey,callback:function(t){return e.zone.run(function(){return e.handleCallback(t)})},"expired-callback":function(){return e.zone.run(function(){return e.handleExpireCallback()})},"error-callback":function(){return e.zone.run(function(){return e.handleErrorCallback()})},theme:this.theme,type:this.type,size:this.size,tabindex:this.tabIndex}},t.prototype.registerCallbacks=function(){window[this.windowOnErrorCallbackProperty]=this.handleErrorCallback.bind(this),window[this.windowOnExpireCallbackProperty]=this.handleExpireCallback.bind(this)},t.prototype.handleErrorCallback=function(){var t=this;this.zone.run(function(){t.onChange(null),t.onTouched(null)}),this.error.next()},t.prototype.handleExpireCallback=function(){this.expire.next(),this.resetCaptcha()},t.decorators=[{type:o.Component,args:[{selector:"ngx-recaptcha2",template:"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>",providers:[{provide:e.NG_VALUE_ACCESSOR,useExisting:o.forwardRef(function(){return t}),multi:!0}]}]}],t.ctorParameters=function(){return[{type:o.Renderer2},{type:o.NgZone},{type:o.Injector},{type:c,decorators:[{type:o.Optional}]}]},t.propDecorators={theme:[{type:o.Input}],size:[{type:o.Input}],hl:[{type:o.Input}],expire:[{type:o.Output}],error:[{type:o.Output}]},t}(a),h=function(a){function t(t,e,n,r){var i=a.call(this,t,e,n,r)||this;return i.renderer=t,i.zone=e,i.injector=n,i.globalConfig=r,i.size="invisible",i.badge="bottomright",i.recaptchaType=p.InvisibleReCaptcha,i}return i(t,a),t.prototype.ngOnChanges=function(t){a.prototype.ngOnChanges.call(this,t)},t.prototype.execute=function(){this.reCaptchaApi.execute(this.captchaId)},t.prototype.captchaSpecificSetup=function(){},t.prototype.getCaptchaProperties=function(){var e=this;return{sitekey:this._siteKey,callback:function(t){return e.zone.run(function(){return e.handleCallback(t)})},badge:this.badge,type:this.type,tabindex:this.tabIndex,size:this.size}},t.decorators=[{type:o.Component,args:[{selector:"ngx-invisible-recaptcha",template:"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>",providers:[{provide:e.NG_VALUE_ACCESSOR,useExisting:o.forwardRef(function(){return t}),multi:!0}]}]}],t.ctorParameters=function(){return[{type:o.Renderer2},{type:o.NgZone},{type:o.Injector},{type:c,decorators:[{type:o.Optional}]}]},t.propDecorators={badge:[{type:o.Input}],hl:[{type:o.Input}]},t}(a),l=function(){function e(){}return e.forRoot=function(t){return{ngModule:e,providers:[{provide:c,useValue:t}]}},e.decorators=[{type:o.NgModule,args:[{imports:[n.CommonModule],declarations:[s,h],exports:[s,h]}]}],e}();t.ReCaptcha2Component=s,t.InvisibleReCaptchaComponent=h,t.NgxCaptchaConfig=c,t.NgxCaptchaModule=l,t.ɵa=a,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=ngx-captcha.umd.min.js.map |
@@ -7,2 +7,3 @@ /** | ||
import { ReCaptchaType } from './recaptcha-type.enum'; | ||
import { NgControl } from '@angular/forms'; | ||
/** | ||
@@ -15,7 +16,9 @@ * @abstract | ||
* @param {?} zone | ||
* @param {?} injector | ||
* @param {?=} globalConfig | ||
*/ | ||
constructor(renderer, zone, globalConfig) { | ||
constructor(renderer, zone, injector, globalConfig) { | ||
this.renderer = renderer; | ||
this.zone = zone; | ||
this.injector = injector; | ||
this.globalConfig = globalConfig; | ||
@@ -69,2 +72,8 @@ this.setupAfterLoad = false; | ||
*/ | ||
ngAfterViewInit() { | ||
this.control = this.injector.get(NgControl).control; | ||
} | ||
/** | ||
* @return {?} | ||
*/ | ||
getGlobalSiteKey() { | ||
@@ -147,2 +156,6 @@ if (this.globalConfig) { | ||
resetCaptcha() { | ||
this.zone.run(() => { | ||
this.onChange(null); | ||
this.onTouched(null); | ||
}); | ||
this.reCaptchaApi.reset(this.captchaId); | ||
@@ -192,2 +205,6 @@ } | ||
this.success.next(callback); | ||
this.zone.run(() => { | ||
this.onChange(callback); | ||
this.onTouched(callback); | ||
}); | ||
if (this.resetCaptchaAfterSuccess) { | ||
@@ -276,3 +293,3 @@ this.resetCaptcha(); | ||
this.renderReCaptcha(); | ||
// setup component if it was flagges as such | ||
// setup component if it was flagged as such | ||
if (this.setupAfterLoad) { | ||
@@ -307,2 +324,25 @@ this.setupAfterLoad = false; | ||
} | ||
/** | ||
* To be aligned with the ControlValueAccessor interface we need to implement this method | ||
* However as we don't want to update the recaptcha, this doesn't need to be implemented | ||
* @param {?} obj | ||
* @return {?} | ||
*/ | ||
writeValue(obj) { } | ||
/** | ||
* This method helps us tie together recaptcha and our formControl values | ||
* @param {?} fn | ||
* @return {?} | ||
*/ | ||
registerOnChange(fn) { | ||
this.onChange = fn; | ||
} | ||
/** | ||
* At some point we might be interested whether the user has touched our component | ||
* @param {?} fn | ||
* @return {?} | ||
*/ | ||
registerOnTouched(fn) { | ||
this.onTouched = fn; | ||
} | ||
} | ||
@@ -321,2 +361,7 @@ BaseReCaptchaComponent.propDecorators = { | ||
function BaseReCaptchaComponent_tsickle_Closure_declarations() { | ||
/** | ||
* Form Control to be enable usage in reactive forms | ||
* @type {?} | ||
*/ | ||
BaseReCaptchaComponent.prototype.control; | ||
/** @type {?} */ | ||
@@ -426,3 +471,10 @@ BaseReCaptchaComponent.prototype.setupAfterLoad; | ||
BaseReCaptchaComponent.prototype.recaptchaType; | ||
/** | ||
* Required by ControlValueAccessor | ||
* @type {?} | ||
*/ | ||
BaseReCaptchaComponent.prototype.onChange; | ||
/** @type {?} */ | ||
BaseReCaptchaComponent.prototype.onTouched; | ||
/** @type {?} */ | ||
BaseReCaptchaComponent.prototype.renderer; | ||
@@ -432,2 +484,4 @@ /** @type {?} */ | ||
/** @type {?} */ | ||
BaseReCaptchaComponent.prototype.injector; | ||
/** @type {?} */ | ||
BaseReCaptchaComponent.prototype.globalConfig; | ||
@@ -448,2 +502,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFLdEQsTUFBTTs7Ozs7O0lBeUdGLFlBQ2MsUUFBbUIsRUFDbkIsSUFBWSxFQUNaLFlBQStCO1FBRi9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGlCQUFZLEdBQVosWUFBWSxDQUFtQjs4QkExR3BCLEtBQUs7Ozs7NENBS29CLHNCQUFzQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTs7Ozt1Q0FLMUQsWUFBWTs7OztpQ0FLbEIsaUJBQWlCOzs7O29CQWdCckIsT0FBTzs7Ozt3QkFVdEIsQ0FBQzs7Ozs7dUJBTUQsSUFBSSxZQUFZLEVBQVU7Ozs7b0JBSzdCLElBQUksWUFBWSxFQUFVOzs7O3FCQUt6QixJQUFJLFlBQVksRUFBUTs7Ozs7d0NBd0JMLEtBQUs7Ozs7d0JBS3hCLEtBQUs7S0FzQnRCOzs7O0lBWU8sZ0JBQWdCO1FBQ3BCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDOztZQUVwQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7b0JBQzdDLE1BQU0sS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7aUJB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dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBOZ1pvbmUsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgUmVDYXB0Y2hhVHlwZSB9IGZyb20gJy4vcmVjYXB0Y2hhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE5neENhcHRjaGFDb25maWcgfSBmcm9tICcuL3JlY2FwdGNoYS5jb25maWcnO1xyXG5cclxuZGVjbGFyZSB2YXIgZ3JlY2FwdGNoYTogYW55O1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VSZUNhcHRjaGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzZXR1cEFmdGVyTG9hZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgY2FsbGJhY2tcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eSA9ICduZ3hfb25sb2FkX2NhbGxiYWNrXycgKyB0aGlzLmdldFBzZXVkb1VuaXF1ZU51bWJlcigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmFtZSBvZiB0aGUgZ2xvYmFsIHJlQ2FwdGNoYSBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHkgPSAnZ3JlY2FwdGNoYSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVmaXggb2YgdGhlIGNhcHRjaGEgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FwdGNoYUVsZW1QcmVmaXggPSAnbmd4X2NhcHRjaGFfaWRfJztcclxuXHJcbiAgICAvKipcclxuICAgICAgKiBHb29nbGUncyBzaXRlIGtleS5cclxuICAgICAgKiBZb3UgY2FuIGZpbmQgdGhpcyB1bmRlciBodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYVxyXG4gICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF9zaXRlS2V5Pzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDb25maWcgdG8gdXNlXHJcbiAgICAqL1xyXG4gICAgQElucHV0KCkgc2l0ZUtleTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUeXBlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHR5cGU6ICdhdWRpbycgfCAnaW1hZ2UnID0gJ2ltYWdlJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhbmd1YWdlIGNvZGUuIEF1dG8tZGV0ZWN0cyB0aGUgdXNlcidzIGxhbmd1YWdlIGlmIHVuc3BlY2lmaWVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBobDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBUYWIgaW5kZXhcclxuICAgICovXHJcbiAgICBASW5wdXQoKSB0YWJJbmRleCA9IDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIHJlY2VpdmVzIHN1Y2Nlc3NmdWwgcmVzcG9uc2UuXHJcbiAgICAgKiBDYXB0Y2hhIHJlc3BvbnNlIHRva2VuIGlzIHBhc3NlZCB0byBldmVudC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSBpcyBsb2FkZWQuIEV2ZW50IHJlY2VpdmVzIGlkIG9mIHRoZSBjYXB0Y2hhXHJcbiAgICAqL1xyXG4gICAgQE91dHB1dCgpIGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSBpcyBsb2FkZWQgJiByZWFkeS4gSS5lLiB3aGVuIHlvdSBuZWVkIHRvIGV4ZWN1dGUgY2FwdGNoYSBvbiBjb21wb25lbnQgbG9hZC5cclxuICAgICovXHJcbiAgICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnY2FwdGNoYVdyYXBwZXJFbGVtJykgY2FwdGNoYVdyYXBwZXJFbGVtOiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZCgnY2FwdGNoYVNjcmlwdEVsZW0nKSBjYXB0Y2hhU2NyaXB0RWxlbTogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhcHRjaGEgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY2FwdGNoYUVsZW0/OiBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElkIG9mIHRoZSBjYXB0Y2hhIGVsZW1cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNhcHRjaGFJZD86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhvbGRzIGxhc3QgcmVzcG9uc2UgdmFsdWVcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGN1cnJlbnRSZXNwb25zZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIGVuYWJsZWQsIGNhcHRjaGEgd2lsbCByZXNldCBhZnRlciByZWNlaXZpbmcgc3VjY2VzcyByZXNwb25zZS4gVGhpcyBpcyB1c2VmdWxcclxuICAgICAqIHdoZW4gaW52aXNpYmxlIGNhcHRjaGEgbmVlZCB0byBiZSByZXNvbHZlZCBtdWx0aXBsZSB0aW1lcyBvbiBzYW1lIHBhZ2VcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlc2V0Q2FwdGNoYUFmdGVyU3VjY2VzcyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIGNhcHRjaGEgaXMgbG9hZGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZWZlcmVuY2UgdG8gZ2xvYmFsIHJlQ2FwdGNoYSBBUElcclxuICAgICovXHJcbiAgICBwdWJsaWMgcmVDYXB0Y2hhQXBpPzogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWQgb2YgdGhlIERPTSBlbGVtZW50IHdyYXBwaW5nIGNhcHRjaGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhcHRjaGFFbGVtSWQ/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYXB0Y2hhIHR5cGVcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlY2FwdGNoYVR5cGU6IFJlQ2FwdGNoYVR5cGU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSxcclxuICAgICAgICBwcm90ZWN0ZWQgZ2xvYmFsQ29uZmlnPzogTmd4Q2FwdGNoYUNvbmZpZyxcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXRzIHJlQ2FwdGNoYSBwcm9wZXJ0aWVzXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldENhcHRjaGFQcm9wZXJ0aWVzKCk6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVzZWQgZm9yIGNhcHRjaGEgc3BlY2lmaWMgc2V0dXBcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2FwdGNoYVNwZWNpZmljU2V0dXAoKTogdm9pZDtcclxuXHJcbiAgICBwcml2YXRlIGdldEdsb2JhbFNpdGVLZXkoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5nbG9iYWxDb25maWcpIHtcclxuICAgICAgICAgICAgLy8gSW52aXNpYmxlIGNhcHRjaGFcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVjYXB0Y2hhVHlwZSA9PT0gUmVDYXB0Y2hhVHlwZS5JbnZpc2libGVSZUNhcHRjaGEpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgU2l0ZUtleSBmb3IgaW52aXNpYmxlIHJlQ2FwdGNoYSBpcyBub3Qgc2V0IWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyByZWNhcHRjaGEgMlxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVjYXB0Y2hhVHlwZSA9PT0gUmVDYXB0Y2hhVHlwZS5SZUNhcHRjaGEyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpdGVLZXkgZm9yIHJlQ2FwdGNoYTIgaXMgbm90IHNldCFgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSgpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFVuc3VwcG9ydGVkIGNhcHRjaGEgdHlwZSAnJHt0aGlzLnJlY2FwdGNoYVR5cGV9JyFgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5zaXRlS2V5KSB7XHJcbiAgICAgICAgICAgIC8vIHVzZSBnbG9iYWwgc2l0ZSBrZXkgaWYga2V5IGlzIG5vdCBhdmFpbGFibGVcclxuICAgICAgICAgICAgdGhpcy5fc2l0ZUtleSA9IHRoaXMuZ2V0R2xvYmFsU2l0ZUtleSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHVzZSBjb21ucG9uZW50IHNpdGUga2V5XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNpdGVLZXkgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2l0ZUtleSA9IHRoaXMuc2l0ZUtleSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2l0ZUtleSA9IHRoaXMuc2l0ZUtleTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgd2luZG93W3RoaXMud2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eV0gPSB7fTtcclxuICAgICAgICB3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0gPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgY2FwdGNoYSByZXNwb25zZSBhcyBwZXIgcmVDYXB0Y2hhIGRvY3NcclxuICAgICovXHJcbiAgICBnZXRSZXNwb25zZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlQ2FwdGNoYUFwaS5nZXRSZXNwb25zZSh0aGlzLmNhcHRjaGFJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIElkIG9mIGNhcHRjaGEgd2lkZ2V0XHJcbiAgICAqL1xyXG4gICAgZ2V0Q2FwdGNoYUlkKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwdGNoYUlkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZXNldHMgY2FwdGNoYVxyXG4gICAgKi9cclxuICAgIHJlc2V0Q2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJlQ2FwdGNoYUFwaS5yZXNldCh0aGlzLmNhcHRjaGFJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGxhc3Qgc3VibWl0dGVkIGNhcHRjaGEgcmVzcG9uc2VcclxuICAgICovXHJcbiAgICBnZXRDdXJyZW50UmVzcG9uc2UoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWxvYWQgY2FwdGNoYS4gVXNlZnVsIHdoZW4gcHJvcGVydGllcyAoaS5lLiB0aGVtZSkgY2hhbmdlZCBhbmQgY2FwdGNoYSBuZWVkIHRvIHJlZmxlY3QgdGhlbVxyXG4gICAgKi9cclxuICAgIHJlbG9hZENhcHRjaGEoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBlbnN1cmVDYXB0Y2hhRWxlbShjYXB0Y2hhRWxlbUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjYXB0Y2hhRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNhcHRjaGFFbGVtSWQpO1xyXG5cclxuICAgICAgICBpZiAoIWNhcHRjaGFFbGVtKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBDYXB0Y2hhIGVsZW1lbnQgd2l0aCBpZCAnJHtjYXB0Y2hhRWxlbUlkfScgd2FzIG5vdCBmb3VuZGApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gYXNzaWduIGNhcHRjaGEgYWxlbVxyXG4gICAgICAgIHRoaXMuY2FwdGNoYUVsZW0gPSBjYXB0Y2hhRWxlbTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc3BvbnNpYmxlIGZvciBpbnN0YW50aWF0aW5nIGNhcHRjaGEgZWxlbWVudFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZW5kZXJSZUNhcHRjaGEoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhSWQgPSB0aGlzLnJlQ2FwdGNoYUFwaS5yZW5kZXIodGhpcy5jYXB0Y2hhRWxlbUlkLCB0aGlzLmdldENhcHRjaGFQcm9wZXJ0aWVzKCkpO1xyXG4gICAgICAgIHRoaXMucmVhZHkubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSByZWNlaXZlcyByZXNwb25zZVxyXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIENhbGxiYWNrXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBoYW5kbGVDYWxsYmFjayhjYWxsYmFjazogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UmVzcG9uc2UgPSBjYWxsYmFjaztcclxuICAgICAgICB0aGlzLnN1Y2Nlc3MubmV4dChjYWxsYmFjayk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnJlc2V0Q2FwdGNoYUFmdGVyU3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0Q2FwdGNoYSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZ2lzdGVycyByZUNhcHRjaGEgc2NyaXB0IGlmIGl0cyBub3QgYXZhaWxhYmxlXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGVuc3VyZVJlQ2FwdGNoYVNjcmlwdCgpOiB2b2lkIHtcclxuICAgICAgICB3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0gPSB7fTtcclxuICAgICAgICB0aGlzLnJlQ2FwdGNoYUFwaSA9IHt9O1xyXG5cclxuICAgICAgICB0aGlzLnJlZ2lzdGVyUmVDYXB0Y2hhU2NyaXB0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgc2NyaXB0IHRvIHBhZ2Ugd2l0aCByZWZlcmVuY2UgdG8gY2FwdGNoYSBBUEkuIFRoaXMgaGFzIHRvIGJlIGRvbmUgbWFudWFsbHlcclxuICAgICAqIGFzIHdlIHdhbnQgdG8gYXZvaWQgYWRkaW5nIHNjcmlwdCB0byBtYWluIGluZGV4Lmh0bWxcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVnaXN0ZXJSZUNhcHRjaGFTY3JpcHQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgc2NyaXB0LmlubmVySFRNTCA9ICcnO1xyXG4gICAgICAgIHNjcmlwdC5zcmMgPVxyXG4gICAgICAgICAgICBgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvYXBpLmpzP29ubG9hZD0ke3RoaXMud2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eX0mcmVuZGVyPWV4cGxpY2l0JHt0aGlzLmdldExhbmd1YWdlUGFyYW0oKX1gO1xyXG4gICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XHJcbiAgICAgICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhU2NyaXB0RWxlbS5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldExhbmd1YWdlUGFyYW0oKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGAmaGw9JHt0aGlzLmhsfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRVVENNaWxsaXNlY29uZHMoKSArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk5OTkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIHJlQ2FwdGNoYSBBcGkgaXMgZGVmaW5lZC4gSXQgbWF5IGhhcHBlbiB0aGF0IHdoZW4gbmF2aWdhdGluZyBmcm9tIGFuZ3VsYXIgY29tcG9uZW50IHRvIGFub3RoZXJcclxuICAgICAqIHZpYSByb3V0ZXIsIHRoZSBBcGkgd2FzIGFscmVhZHkgbG9hZGVkIHByZXZpb3VzbHkuIEluIHN1Y2ggY2FzZXMsIGRvIG5vdCByZW5kZXIgc2NyaXB0IGFnYWluLlxyXG4gICAgKi9cclxuICAgIHByaXZhdGUgaXNSZUNhcHRjaGFBcGlEZWZpbmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghd2luZG93W3RoaXMuZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHldKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXR1cENvbXBvbmVudCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBjYXB0Y2hhIHNwZWNpZmljIHNldHVwXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhU3BlY2lmaWNTZXR1cCgpO1xyXG5cclxuICAgICAgICAvLyBjcmVhdGUgY2FwdGNoYSB3cmFwcGVyXHJcbiAgICAgICAgdGhpcy5jcmVhdGVBbmRTZXRDYXB0Y2hhRWxlbSgpO1xyXG5cclxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHBhdGNoIHRoZSBjYWxsYmFjayB0aHJvdWdoIGdsb2JhbCB2YXJpYWJsZSwgb3RoZXJ3aXNlIGNhbGxiYWNrIGlzIG5vdCBhY2Nlc3NpYmxlXHJcbiAgICAgICAgLy8gbm90ZTogaHR0cHM6Ly9naXRodWIuY29tL0VubmdhZ2Uvbmd4LWNhcHRjaGEvaXNzdWVzLzJcclxuICAgICAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5XSA9IDxhbnk+KCgpID0+IHRoaXMuem9uZS5ydW4oXHJcbiAgICAgICAgICAgIHRoaXMub25sb2FkQ2FsbGJhY2suYmluZCh0aGlzKVxyXG4gICAgICAgICkpO1xyXG5cclxuICAgICAgICAvLyBjcmVhdGUgYW5kIHB1dCByZUNhcHRjaGEgc2NyaXB0IHRvIHBhZ2VcclxuICAgICAgICB0aGlzLmVuc3VyZVJlQ2FwdGNoYVNjcmlwdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBnb29nbGUncyByZWNhcHRjaGEgc2NyaXB0IGlzIHJlYWR5XHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBvbmxvYWRDYWxsYmFjaygpOiB2b2lkIHtcclxuICAgICAgICAvLyBhc3NpZ24gcmVmZXJlbmNlIHRvIHJlQ2FwdGNoYSBBcGkgb25jZSBpdHMgbG9hZGVkXHJcbiAgICAgICAgdGhpcy5yZUNhcHRjaGFBcGkgPSBncmVjYXB0Y2hhO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMucmVDYXB0Y2hhQXBpKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBSZUNhcHRjaGEgQXBpIHdhcyBub3QgaW5pdGlhbGl6ZWQgY29ycmVjdGx5YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBsb2FkZWQgZmxhZ1xyXG4gICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyBmaXJlIGxvYWQgZXZlbnRcclxuICAgICAgICB0aGlzLmxvYWQubmV4dCgpO1xyXG5cclxuICAgICAgICAvLyByZW5kZXIgY2FwdGNoYVxyXG4gICAgICAgIHRoaXMucmVuZGVyUmVDYXB0Y2hhKCk7XHJcblxyXG4gICAgICAgIC8vIHNldHVwIGNvbXBvbmVudCBpZiBpdCB3YXMgZmxhZ2dlcyBhcyBzdWNoXHJcbiAgICAgICAgaWYgKHRoaXMuc2V0dXBBZnRlckxvYWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR1cEFmdGVyTG9hZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVOZXdFbGVtSWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYXB0Y2hhRWxlbVByZWZpeCArIHRoaXMuZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVBbmRTZXRDYXB0Y2hhRWxlbSgpOiB2b2lkIHtcclxuICAgICAgICAvLyBnZW5lcmF0ZSBuZXcgY2FwdGNoYSBpZFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYUVsZW1JZCA9IHRoaXMuZ2VuZXJhdGVOZXdFbGVtSWQoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNhcHRjaGFFbGVtSWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYENhcHRjaGEgZWxlbSBJZCBpcyBub3Qgc2V0YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyByZW1vdmUgb2xkIGh0bWxcclxuICAgICAgICB0aGlzLmNhcHRjaGFXcmFwcGVyRWxlbS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xyXG5cclxuICAgICAgICAvLyBjcmVhdGUgbmV3IHdyYXBwZXIgZm9yIGNhcHRjaGFcclxuICAgICAgICBjb25zdCBuZXdFbGVtID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBuZXdFbGVtLmlkID0gdGhpcy5jYXB0Y2hhRWxlbUlkO1xyXG5cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuY2FwdGNoYVdyYXBwZXJFbGVtLm5hdGl2ZUVsZW1lbnQsIG5ld0VsZW0pO1xyXG5cclxuICAgICAgICAvLyB1cGRhdGUgY2FwdGNoYSBlbGVtXHJcbiAgICAgICAgdGhpcy5lbnN1cmVDYXB0Y2hhRWxlbSh0aGlzLmNhcHRjaGFFbGVtSWQpO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUk5RSxNQUFNOzs7Ozs7O0lBbUhGLFlBQ2MsUUFBbUIsRUFDbkIsSUFBWSxFQUNaLFFBQWtCLEVBQ2xCLFlBQStCO1FBSC9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsaUJBQVksR0FBWixZQUFZLENBQW1COzhCQWpIcEIsS0FBSzs7Ozs0Q0FLb0Isc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFOzs7O3VDQUsxRCxZQUFZOzs7O2lDQUtsQixpQkFBaUI7Ozs7b0JBZ0JyQixPQUFPOzs7O3dCQVV0QixDQUFDOzs7Ozt1QkFNRCxJQUFJLFlBQVksRUFBVTs7OztvQkFLN0IsSUFBSSxZQUFZLEVBQVU7Ozs7cUJBS3pCLElBQUksWUFBWSxFQUFROzs7Ozt3Q0F3QkwsS0FBSzs7Ozt3QkFLeEIsS0FBSztLQTRCbkI7Ozs7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDckQ7Ozs7SUFZTyxnQkFBZ0I7UUFDcEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7O1lB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QUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7O1FBR3JELHVCQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQzs7UUFHMUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs7Ozs7Ozs7SUFPeEMsVUFBVSxDQUFDLEdBQVE7Ozs7OztJQUtuQixnQkFBZ0IsQ0FBQyxFQUFPO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDOzs7Ozs7O0lBTWQsaUJBQWlCLENBQUMsRUFBTztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQzs7OztzQkFoWHJCLEtBQUs7bUJBS0wsS0FBSztpQkFLTCxLQUFLO3VCQUtMLEtBQUs7c0JBTUwsTUFBTTttQkFLTixNQUFNO29CQUtOLE1BQU07aUNBRU4sU0FBUyxTQUFDLG9CQUFvQjtnQ0FDOUIsU0FBUyxTQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFJlQ2FwdGNoYVR5cGUgfSBmcm9tICcuL3JlY2FwdGNoYS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBOZ3hDYXB0Y2hhQ29uZmlnIH0gZnJvbSAnLi9yZWNhcHRjaGEuY29uZmlnJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5kZWNsYXJlIHZhciBncmVjYXB0Y2hhOiBhbnk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIEZvcm0gQ29udHJvbCB0byBiZSBlbmFibGUgdXNhZ2UgaW4gcmVhY3RpdmUgZm9ybXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjb250cm9sOiBGb3JtQ29udHJvbDtcclxuXHJcbiAgICBwcml2YXRlIHNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBjYWxsYmFja1xyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSB3aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5ID0gJ25neF9vbmxvYWRfY2FsbGJhY2tfJyArIHRoaXMuZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgcmVDYXB0Y2hhIHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBnbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eSA9ICdncmVjYXB0Y2hhJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZWZpeCBvZiB0aGUgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBjYXB0Y2hhRWxlbVByZWZpeCA9ICduZ3hfY2FwdGNoYV9pZF8nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICAqIEdvb2dsZSdzIHNpdGUga2V5LlxyXG4gICAgICAqIFlvdSBjYW4gZmluZCB0aGlzIHVuZGVyIGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhXHJcbiAgICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3NpdGVLZXk/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbmZpZyB0byB1c2VcclxuICAgICovXHJcbiAgICBASW5wdXQoKSBzaXRlS2V5OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFR5cGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgdHlwZTogJ2F1ZGlvJyB8ICdpbWFnZScgPSAnaW1hZ2UnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGFuZ3VhZ2UgY29kZS4gQXV0by1kZXRlY3RzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgaWYgdW5zcGVjaWZpZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGhsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFRhYiBpbmRleFxyXG4gICAgKi9cclxuICAgIEBJbnB1dCgpIHRhYkluZGV4ID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgcmVjZWl2ZXMgc3VjY2Vzc2Z1bCByZXNwb25zZS5cclxuICAgICAqIENhcHRjaGEgcmVzcG9uc2UgdG9rZW4gaXMgcGFzc2VkIHRvIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZC4gRXZlbnQgcmVjZWl2ZXMgaWQgb2YgdGhlIGNhcHRjaGFcclxuICAgICovXHJcbiAgICBAT3V0cHV0KCkgbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZCAmIHJlYWR5LiBJLmUuIHdoZW4geW91IG5lZWQgdG8gZXhlY3V0ZSBjYXB0Y2hhIG9uIGNvbXBvbmVudCBsb2FkLlxyXG4gICAgKi9cclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhV3JhcHBlckVsZW0nKSBjYXB0Y2hhV3JhcHBlckVsZW06IEVsZW1lbnRSZWY7XHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhU2NyaXB0RWxlbScpIGNhcHRjaGFTY3JpcHRFbGVtOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjYXB0Y2hhRWxlbT86IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWQgb2YgdGhlIGNhcHRjaGEgZWxlbVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY2FwdGNoYUlkPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9sZHMgbGFzdCByZXNwb25zZSB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3VycmVudFJlc3BvbnNlPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgZW5hYmxlZCwgY2FwdGNoYSB3aWxsIHJlc2V0IGFmdGVyIHJlY2VpdmluZyBzdWNjZXNzIHJlc3BvbnNlLiBUaGlzIGlzIHVzZWZ1bFxyXG4gICAgICogd2hlbiBpbnZpc2libGUgY2FwdGNoYSBuZWVkIHRvIGJlIHJlc29sdmVkIG11bHRpcGxlIHRpbWVzIG9uIHNhbWUgcGFnZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgY2FwdGNoYSBpcyBsb2FkZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlZmVyZW5jZSB0byBnbG9iYWwgcmVDYXB0Y2hhIEFQSVxyXG4gICAgKi9cclxuICAgIHB1YmxpYyByZUNhcHRjaGFBcGk/OiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZCBvZiB0aGUgRE9NIGVsZW1lbnQgd3JhcHBpbmcgY2FwdGNoYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FwdGNoYUVsZW1JZD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhcHRjaGEgdHlwZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVjYXB0Y2hhVHlwZTogUmVDYXB0Y2hhVHlwZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVxdWlyZWQgYnkgQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAgKi9cclxuICAgIHByb3RlY3RlZCBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcgKSA9PiB2b2lkO1xyXG4gICAgcHJvdGVjdGVkIG9uVG91Y2hlZDogKHZhbHVlOiBzdHJpbmcgKSA9PiB2b2lkO1xyXG5cclxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIGdsb2JhbENvbmZpZz86IE5neENhcHRjaGFDb25maWcsXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wpLmNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlZCBmb3IgY2FwdGNoYSBzcGVjaWZpYyBzZXR1cFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjYXB0Y2hhU3BlY2lmaWNTZXR1cCgpOiB2b2lkO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0R2xvYmFsU2l0ZUtleSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZykge1xyXG4gICAgICAgICAgICAvLyBJbnZpc2libGUgY2FwdGNoYVxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLkludmlzaWJsZVJlQ2FwdGNoYSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBTaXRlS2V5IGZvciBpbnZpc2libGUgcmVDYXB0Y2hhIGlzIG5vdCBzZXQhYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHJlY2FwdGNoYSAyXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLlJlQ2FwdGNoYTIpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgU2l0ZUtleSBmb3IgcmVDYXB0Y2hhMiBpcyBub3Qgc2V0IWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgVW5zdXBwb3J0ZWQgY2FwdGNoYSB0eXBlICcke3RoaXMucmVjYXB0Y2hhVHlwZX0nIWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNpdGVLZXkpIHtcclxuICAgICAgICAgICAgLy8gdXNlIGdsb2JhbCBzaXRlIGtleSBpZiBrZXkgaXMgbm90IGF2YWlsYWJsZVxyXG4gICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5nZXRHbG9iYWxTaXRlS2V5KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdXNlIGNvbW5wb25lbnQgc2l0ZSBrZXlcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBjYXB0Y2hhIHJlc3BvbnNlIGFzIHBlciByZUNhcHRjaGEgZG9jc1xyXG4gICAgKi9cclxuICAgIGdldFJlc3BvbnNlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVDYXB0Y2hhQXBpLmdldFJlc3BvbnNlKHRoaXMuY2FwdGNoYUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgSWQgb2YgY2FwdGNoYSB3aWRnZXRcclxuICAgICovXHJcbiAgICBnZXRDYXB0Y2hhSWQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYXB0Y2hhSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlc2V0cyBjYXB0Y2hhXHJcbiAgICAqL1xyXG4gICAgcmVzZXRDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKG51bGwpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMucmVDYXB0Y2hhQXBpLnJlc2V0KHRoaXMuY2FwdGNoYUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbGFzdCBzdWJtaXR0ZWQgY2FwdGNoYSByZXNwb25zZVxyXG4gICAgKi9cclxuICAgIGdldEN1cnJlbnRSZXNwb25zZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZXNwb25zZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbG9hZCBjYXB0Y2hhLiBVc2VmdWwgd2hlbiBwcm9wZXJ0aWVzIChpLmUuIHRoZW1lKSBjaGFuZ2VkIGFuZCBjYXB0Y2hhIG5lZWQgdG8gcmVmbGVjdCB0aGVtXHJcbiAgICAqL1xyXG4gICAgcmVsb2FkQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGVuc3VyZUNhcHRjaGFFbGVtKGNhcHRjaGFFbGVtSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNhcHRjaGFFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2FwdGNoYUVsZW1JZCk7XHJcblxyXG4gICAgICAgIGlmICghY2FwdGNoYUVsZW0pIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYENhcHRjaGEgZWxlbWVudCB3aXRoIGlkICcke2NhcHRjaGFFbGVtSWR9JyB3YXMgbm90IGZvdW5kYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhc3NpZ24gY2FwdGNoYSBhbGVtXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbSA9IGNhcHRjaGFFbGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzcG9uc2libGUgZm9yIGluc3RhbnRpYXRpbmcgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlbmRlclJlQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNhcHRjaGFJZCA9IHRoaXMucmVDYXB0Y2hhQXBpLnJlbmRlcih0aGlzLmNhcHRjaGFFbGVtSWQsIHRoaXMuZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKSk7XHJcbiAgICAgICAgdGhpcy5yZWFkeS5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIHJlY2VpdmVzIHJlc3BvbnNlXHJcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQ2FsbGJhY2tcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNhbGxiYWNrKGNhbGxiYWNrOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRSZXNwb25zZSA9IGNhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMuc3VjY2Vzcy5uZXh0KGNhbGxiYWNrKTtcclxuXHJcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGNhbGxiYWNrKTtcclxuICAgICAgICAgIHRoaXMub25Ub3VjaGVkKGNhbGxiYWNrKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRDYXB0Y2hhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0ZXJzIHJlQ2FwdGNoYSBzY3JpcHQgaWYgaXRzIG5vdCBhdmFpbGFibGVcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk6IHZvaWQge1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVDYXB0Y2hhQXBpID0ge307XHJcblxyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJSZUNhcHRjaGFTY3JpcHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCBzY3JpcHQgdG8gcGFnZSB3aXRoIHJlZmVyZW5jZSB0byBjYXB0Y2hhIEFQSS4gVGhpcyBoYXMgdG8gYmUgZG9uZSBtYW51YWxseVxyXG4gICAgICogYXMgd2Ugd2FudCB0byBhdm9pZCBhZGRpbmcgc2NyaXB0IHRvIG1haW4gaW5kZXguaHRtbFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWdpc3RlclJlQ2FwdGNoYVNjcmlwdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICBzY3JpcHQuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgc2NyaXB0LnNyYyA9XHJcbiAgICAgICAgICAgIGBodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/b25sb2FkPSR7dGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5fSZyZW5kZXI9ZXhwbGljaXQke3RoaXMuZ2V0TGFuZ3VhZ2VQYXJhbSgpfWA7XHJcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcclxuICAgICAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmNhcHRjaGFTY3JpcHRFbGVtLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0TGFuZ3VhZ2VQYXJhbSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5obCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYCZobD0ke3RoaXMuaGx9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFBzZXVkb1VuaXF1ZU51bWJlcigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTk5OSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgcmVDYXB0Y2hhIEFwaSBpcyBkZWZpbmVkLiBJdCBtYXkgaGFwcGVuIHRoYXQgd2hlbiBuYXZpZ2F0aW5nIGZyb20gYW5ndWxhciBjb21wb25lbnQgdG8gYW5vdGhlclxyXG4gICAgICogdmlhIHJvdXRlciwgdGhlIEFwaSB3YXMgYWxyZWFkeSBsb2FkZWQgcHJldmlvdXNseS4gSW4gc3VjaCBjYXNlcywgZG8gbm90IHJlbmRlciBzY3JpcHQgYWdhaW4uXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc1JlQ2FwdGNoYUFwaURlZmluZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGNhcHRjaGEgc3BlY2lmaWMgc2V0dXBcclxuICAgICAgICB0aGlzLmNhcHRjaGFTcGVjaWZpY1NldHVwKCk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBjYXB0Y2hhIHdyYXBwZXJcclxuICAgICAgICB0aGlzLmNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk7XHJcblxyXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gcGF0Y2ggdGhlIGNhbGxiYWNrIHRocm91Z2ggZ2xvYmFsIHZhcmlhYmxlLCBvdGhlcndpc2UgY2FsbGJhY2sgaXMgbm90IGFjY2Vzc2libGVcclxuICAgICAgICAvLyBub3RlOiBodHRwczovL2dpdGh1Yi5jb20vRW5uZ2FnZS9uZ3gtY2FwdGNoYS9pc3N1ZXMvMlxyXG4gICAgICAgIHdpbmRvd1t0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHldID0gPGFueT4oKCkgPT4gdGhpcy56b25lLnJ1bihcclxuICAgICAgICAgICAgdGhpcy5vbmxvYWRDYWxsYmFjay5iaW5kKHRoaXMpXHJcbiAgICAgICAgKSk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBhbmQgcHV0IHJlQ2FwdGNoYSBzY3JpcHQgdG8gcGFnZVxyXG4gICAgICAgIHRoaXMuZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGdvb2dsZSdzIHJlY2FwdGNoYSBzY3JpcHQgaXMgcmVhZHlcclxuICAgICovXHJcbiAgICBwcml2YXRlIG9ubG9hZENhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGFzc2lnbiByZWZlcmVuY2UgdG8gcmVDYXB0Y2hhIEFwaSBvbmNlIGl0cyBsb2FkZWRcclxuICAgICAgICB0aGlzLnJlQ2FwdGNoYUFwaSA9IGdyZWNhcHRjaGE7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5yZUNhcHRjaGFBcGkpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFJlQ2FwdGNoYSBBcGkgd2FzIG5vdCBpbml0aWFsaXplZCBjb3JyZWN0bHlgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGxvYWRlZCBmbGFnXHJcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIGZpcmUgbG9hZCBldmVudFxyXG4gICAgICAgIHRoaXMubG9hZC5uZXh0KCk7XHJcblxyXG4gICAgICAgIC8vIHJlbmRlciBjYXB0Y2hhXHJcbiAgICAgICAgdGhpcy5yZW5kZXJSZUNhcHRjaGEoKTtcclxuXHJcbiAgICAgICAgLy8gc2V0dXAgY29tcG9uZW50IGlmIGl0IHdhcyBmbGFnZ2VkIGFzIHN1Y2hcclxuICAgICAgICBpZiAodGhpcy5zZXR1cEFmdGVyTG9hZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZU5ld0VsZW1JZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHRjaGFFbGVtUHJlZml4ICsgdGhpcy5nZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGdlbmVyYXRlIG5ldyBjYXB0Y2hhIGlkXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbUlkID0gdGhpcy5nZW5lcmF0ZU5ld0VsZW1JZCgpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2FwdGNoYUVsZW1JZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQ2FwdGNoYSBlbGVtIElkIGlzIG5vdCBzZXRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHJlbW92ZSBvbGQgaHRtbFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVdyYXBwZXJFbGVtLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgd3JhcHBlciBmb3IgY2FwdGNoYVxyXG4gICAgICAgIGNvbnN0IG5ld0VsZW0gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIG5ld0VsZW0uaWQgPSB0aGlzLmNhcHRjaGFFbGVtSWQ7XHJcblxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5jYXB0Y2hhV3JhcHBlckVsZW0ubmF0aXZlRWxlbWVudCwgbmV3RWxlbSk7XHJcblxyXG4gICAgICAgIC8vIHVwZGF0ZSBjYXB0Y2hhIGVsZW1cclxuICAgICAgICB0aGlzLmVuc3VyZUNhcHRjaGFFbGVtKHRoaXMuY2FwdGNoYUVsZW1JZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUbyBiZSBhbGlnbmVkIHdpdGggdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZSB3ZSBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZFxyXG4gICAgICogSG93ZXZlciBhcyB3ZSBkb24ndCB3YW50IHRvIHVwZGF0ZSB0aGUgcmVjYXB0Y2hhLCB0aGlzIGRvZXNuJ3QgbmVlZCB0byBiZSBpbXBsZW1lbnRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgbWV0aG9kIGhlbHBzIHVzIHRpZSB0b2dldGhlciByZWNhcHRjaGEgYW5kIG91ciBmb3JtQ29udHJvbCB2YWx1ZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgYmUgaW50ZXJlc3RlZCB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0b3VjaGVkIG91ciBjb21wb25lbnRcclxuICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0= |
@@ -5,6 +5,7 @@ /** | ||
*/ | ||
import { Component, Input, Optional, Renderer2, NgZone } from '@angular/core'; | ||
import { Component, Input, Optional, Renderer2, NgZone, Injector, forwardRef } from '@angular/core'; | ||
import { BaseReCaptchaComponent } from './base-recaptcha.component'; | ||
import { ReCaptchaType } from './recaptcha-type.enum'; | ||
import { NgxCaptchaConfig } from './recaptcha.config'; | ||
import { NG_VALUE_ACCESSOR } from '@angular/forms'; | ||
export class InvisibleReCaptchaComponent extends BaseReCaptchaComponent { | ||
@@ -14,8 +15,10 @@ /** | ||
* @param {?} zone | ||
* @param {?} injector | ||
* @param {?} globalConfig | ||
*/ | ||
constructor(renderer, zone, globalConfig) { | ||
super(renderer, zone, globalConfig); | ||
constructor(renderer, zone, injector, globalConfig) { | ||
super(renderer, zone, injector, globalConfig); | ||
this.renderer = renderer; | ||
this.zone = zone; | ||
this.injector = injector; | ||
this.globalConfig = globalConfig; | ||
@@ -72,3 +75,10 @@ /** | ||
<div #captchaScriptElem></div> | ||
<div #captchaWrapperElem></div>` | ||
<div #captchaWrapperElem></div>`, | ||
providers: [ | ||
{ | ||
provide: NG_VALUE_ACCESSOR, | ||
useExisting: forwardRef(() => InvisibleReCaptchaComponent), | ||
multi: true, | ||
} | ||
] | ||
},] }, | ||
@@ -80,2 +90,3 @@ ]; | ||
{ type: NgZone }, | ||
{ type: Injector }, | ||
{ type: NgxCaptchaConfig, decorators: [{ type: Optional }] } | ||
@@ -110,5 +121,7 @@ ]; | ||
/** @type {?} */ | ||
InvisibleReCaptchaComponent.prototype.injector; | ||
/** @type {?} */ | ||
InvisibleReCaptchaComponent.prototype.globalConfig; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXNpYmxlLXJlY2FwdGNoYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtY2FwdGNoYS8iLCJzb3VyY2VzIjpbImxpYi9pbnZpc2libGUtcmVjYXB0Y2hhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsUUFBUSxFQUFFLFNBQVMsRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVN0RCxNQUFNLGtDQUFtQyxTQUFRLHNCQUFzQjs7Ozs7O0lBbUJyRSxZQUNZLFFBQW1CLEVBQ25CLElBQVksRUFDQSxZQUE4QjtRQUVwRCxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUoxQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQVE7UUFDQSxpQkFBWSxHQUFaLFlBQVksQ0FBa0I7Ozs7b0JBakI1QixXQUFXOzs7O3FCQUtxQixhQUFhOzZCQU85QixhQUFhLENBQUMsa0JBQWtCO0tBUXhFOzs7OztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzVCOzs7OztJQUtELE9BQU87O1FBRUwsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQzNDOzs7O0lBRVMsb0JBQW9CO0tBQzdCOzs7OztJQUtTLG9CQUFvQjtRQUM1QixNQUFNLENBQUM7WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDeEIsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVFLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSztZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3pCLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNsQixDQUFDO0tBQ0g7OztZQTVERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsUUFBUSxFQUFFOztrQ0FFc0I7YUFDakM7Ozs7WUFaK0MsU0FBUztZQUFpQixNQUFNO1lBSXZFLGdCQUFnQix1QkErQnBCLFFBQVE7OztvQkFaVixLQUFLO2lCQUtMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVDYXB0Y2hhVHlwZSB9IGZyb20gJy4vcmVjYXB0Y2hhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE5neENhcHRjaGFDb25maWcgfSBmcm9tICcuL3JlY2FwdGNoYS5jb25maWcnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LWludmlzaWJsZS1yZWNhcHRjaGEnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgPGRpdiAjY2FwdGNoYVNjcmlwdEVsZW0+PC9kaXY+XHJcbiAgPGRpdiAjY2FwdGNoYVdyYXBwZXJFbGVtPjwvZGl2PmBcclxufSlcclxuZXhwb3J0IGNsYXNzIEludmlzaWJsZVJlQ2FwdGNoYUNvbXBvbmVudCBleHRlbmRzIEJhc2VSZUNhcHRjaGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICAvKipcclxuICAgKiBUaGlzIHNpemUgcmVwcmVzZW50aW5nIGludmlzaWJsZSBjYXB0Y2hhXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNpemUgPSAnaW52aXNpYmxlJztcclxuXHJcbiAgLyoqXHJcbiAgICogQmFkZ2VcclxuICAgKi9cclxuICBASW5wdXQoKSBiYWRnZTogJ2JvdHRvbXJpZ2h0JyB8ICdib3R0b21sZWZ0JyB8ICdpbmxpbmUnID0gJ2JvdHRvbXJpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgICogTGFuZ3VhZ2UgY29kZS4gQXV0by1kZXRlY3RzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgaWYgdW5zcGVjaWZpZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgaGw6IHN0cmluZztcclxuXHJcbiAgcHJvdGVjdGVkIHJlY2FwdGNoYVR5cGU6IFJlQ2FwdGNoYVR5cGUgPSBSZUNhcHRjaGFUeXBlLkludmlzaWJsZVJlQ2FwdGNoYTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByb3RlY3RlZCB6b25lOiBOZ1pvbmUsXHJcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgZ2xvYmFsQ29uZmlnOiBOZ3hDYXB0Y2hhQ29uZmlnLFxyXG4gICkge1xyXG4gICAgc3VwZXIocmVuZGVyZXIsIHpvbmUsIGdsb2JhbENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2dyYW1hdGljYWxseSBpbnZva2UgdGhlIHJlQ0FQVENIQSBjaGVjay4gVXNlZCBpZiB0aGUgaW52aXNpYmxlIHJlQ0FQVENIQSBpcyBvbiBhIGRpdiBpbnN0ZWFkIG9mIGEgYnV0dG9uLlxyXG4gICAqL1xyXG4gIGV4ZWN1dGUoKTogdm9pZCB7XHJcbiAgICAvLyBleGVjdXRlIGNhcHRjaGFcclxuICAgIHRoaXMucmVDYXB0Y2hhQXBpLmV4ZWN1dGUodGhpcy5jYXB0Y2hhSWQpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNhcHRjaGFTcGVjaWZpY1NldHVwKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBHZXRzIHJlQ2FwdGNoYSBwcm9wZXJ0aWVzXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdzaXRla2V5JzogdGhpcy5fc2l0ZUtleSxcclxuICAgICAgJ2NhbGxiYWNrJzogKHJlc3BvbnNlKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuaGFuZGxlQ2FsbGJhY2socmVzcG9uc2UpKSxcclxuICAgICAgJ2JhZGdlJzogdGhpcy5iYWRnZSxcclxuICAgICAgJ3R5cGUnOiB0aGlzLnR5cGUsXHJcbiAgICAgICd0YWJpbmRleCc6IHRoaXMudGFiSW5kZXgsXHJcbiAgICAgICdzaXplJzogdGhpcy5zaXplXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cclxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXNpYmxlLXJlY2FwdGNoYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtY2FwdGNoYS8iLCJzb3VyY2VzIjpbImxpYi9pbnZpc2libGUtcmVjYXB0Y2hhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsUUFBUSxFQUFFLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBZ0JuRCxNQUFNLGtDQUFtQyxTQUFRLHNCQUFzQjs7Ozs7OztJQW1CckUsWUFDWSxRQUFtQixFQUNuQixJQUFZLEVBQ1osUUFBa0IsRUFDTixZQUE4QjtRQUVwRCxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFMcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNOLGlCQUFZLEdBQVosWUFBWSxDQUFrQjs7OztvQkFsQjVCLFdBQVc7Ozs7cUJBS3FCLGFBQWE7NkJBTzlCLGFBQWEsQ0FBQyxrQkFBa0I7S0FTeEU7Ozs7O0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDNUI7Ozs7O0lBS0QsT0FBTzs7UUFFTCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDM0M7Ozs7SUFFUyxvQkFBb0I7S0FDN0I7Ozs7O0lBS1Msb0JBQW9CO1FBQzVCLE1BQU0sQ0FBQztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN4QixVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2xCLENBQUM7S0FDSDs7O1lBcEVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxRQUFRLEVBQUU7O2tDQUVzQjtnQkFDaEMsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUM7d0JBQzFELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2FBQ0Y7Ozs7WUFwQitDLFNBQVM7WUFBaUIsTUFBTTtZQUFFLFFBQVE7WUFJakYsZ0JBQWdCLHVCQXdDcEIsUUFBUTs7O29CQWJWLEtBQUs7aUJBS0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT3B0aW9uYWwsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcywgTmdab25lLCBJbmplY3RvciwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVDYXB0Y2hhVHlwZSB9IGZyb20gJy4vcmVjYXB0Y2hhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE5neENhcHRjaGFDb25maWcgfSBmcm9tICcuL3JlY2FwdGNoYS5jb25maWcnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1pbnZpc2libGUtcmVjYXB0Y2hhJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gIDxkaXYgI2NhcHRjaGFTY3JpcHRFbGVtPjwvZGl2PlxyXG4gIDxkaXYgI2NhcHRjaGFXcmFwcGVyRWxlbT48L2Rpdj5gLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgc2l6ZSByZXByZXNlbnRpbmcgaW52aXNpYmxlIGNhcHRjaGFcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2l6ZSA9ICdpbnZpc2libGUnO1xyXG5cclxuICAvKipcclxuICAgKiBCYWRnZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJhZGdlOiAnYm90dG9tcmlnaHQnIHwgJ2JvdHRvbWxlZnQnIHwgJ2lubGluZScgPSAnYm90dG9tcmlnaHQnO1xyXG5cclxuICAvKipcclxuICAgKiBMYW5ndWFnZSBjb2RlLiBBdXRvLWRldGVjdHMgdGhlIHVzZXIncyBsYW5ndWFnZSBpZiB1bnNwZWNpZmllZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBobDogc3RyaW5nO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVjYXB0Y2hhVHlwZTogUmVDYXB0Y2hhVHlwZSA9IFJlQ2FwdGNoYVR5cGUuSW52aXNpYmxlUmVDYXB0Y2hhO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSxcclxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgZ2xvYmFsQ29uZmlnOiBOZ3hDYXB0Y2hhQ29uZmlnLFxyXG4gICkge1xyXG4gICAgc3VwZXIocmVuZGVyZXIsIHpvbmUsIGluamVjdG9yLCBnbG9iYWxDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9ncmFtYXRpY2FsbHkgaW52b2tlIHRoZSByZUNBUFRDSEEgY2hlY2suIFVzZWQgaWYgdGhlIGludmlzaWJsZSByZUNBUFRDSEEgaXMgb24gYSBkaXYgaW5zdGVhZCBvZiBhIGJ1dHRvbi5cclxuICAgKi9cclxuICBleGVjdXRlKCk6IHZvaWQge1xyXG4gICAgLy8gZXhlY3V0ZSBjYXB0Y2hhXHJcbiAgICB0aGlzLnJlQ2FwdGNoYUFwaS5leGVjdXRlKHRoaXMuY2FwdGNoYUlkKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjYXB0Y2hhU3BlY2lmaWNTZXR1cCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogR2V0cyByZUNhcHRjaGEgcHJvcGVydGllc1xyXG4gICovXHJcbiAgcHJvdGVjdGVkIGdldENhcHRjaGFQcm9wZXJ0aWVzKCk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnc2l0ZWtleSc6IHRoaXMuX3NpdGVLZXksXHJcbiAgICAgICdjYWxsYmFjayc6IChyZXNwb25zZSkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUNhbGxiYWNrKHJlc3BvbnNlKSksXHJcbiAgICAgICdiYWRnZSc6IHRoaXMuYmFkZ2UsXHJcbiAgICAgICd0eXBlJzogdGhpcy50eXBlLFxyXG4gICAgICAndGFiaW5kZXgnOiB0aGlzLnRhYkluZGV4LFxyXG4gICAgICAnc2l6ZSc6IHRoaXMuc2l6ZVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ== |
@@ -5,6 +5,7 @@ /** | ||
*/ | ||
import { Component, EventEmitter, Input, Optional, Output, Renderer2, NgZone, } from '@angular/core'; | ||
import { Component, EventEmitter, Input, Optional, Output, Renderer2, NgZone, Injector, forwardRef, } from '@angular/core'; | ||
import { BaseReCaptchaComponent } from './base-recaptcha.component'; | ||
import { ReCaptchaType } from './recaptcha-type.enum'; | ||
import { NgxCaptchaConfig } from './recaptcha.config'; | ||
import { NG_VALUE_ACCESSOR } from '@angular/forms'; | ||
export class ReCaptcha2Component extends BaseReCaptchaComponent { | ||
@@ -14,8 +15,10 @@ /** | ||
* @param {?} zone | ||
* @param {?} injector | ||
* @param {?} globalConfig | ||
*/ | ||
constructor(renderer, zone, globalConfig) { | ||
super(renderer, zone, globalConfig); | ||
constructor(renderer, zone, injector, globalConfig) { | ||
super(renderer, zone, injector, globalConfig); | ||
this.renderer = renderer; | ||
this.zone = zone; | ||
this.injector = injector; | ||
this.globalConfig = globalConfig; | ||
@@ -98,2 +101,6 @@ /** | ||
handleErrorCallback() { | ||
this.zone.run(() => { | ||
this.onChange(null); | ||
this.onTouched(null); | ||
}); | ||
this.error.next(); | ||
@@ -116,3 +123,10 @@ } | ||
<div #captchaScriptElem></div> | ||
<div #captchaWrapperElem></div>` | ||
<div #captchaWrapperElem></div>`, | ||
providers: [ | ||
{ | ||
provide: NG_VALUE_ACCESSOR, | ||
useExisting: forwardRef(() => ReCaptcha2Component), | ||
multi: true, | ||
} | ||
] | ||
},] }, | ||
@@ -124,2 +138,3 @@ ]; | ||
{ type: NgZone }, | ||
{ type: Injector }, | ||
{ type: NgxCaptchaConfig, decorators: [{ type: Optional }] } | ||
@@ -177,5 +192,7 @@ ]; | ||
/** @type {?} */ | ||
ReCaptcha2Component.prototype.injector; | ||
/** @type {?} */ | ||
ReCaptcha2Component.prototype.globalConfig; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLTIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvcmVjYXB0Y2hhLTIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVF0RCxNQUFNLDBCQUEyQixTQUFRLHNCQUFzQjs7Ozs7O0lBdUM3RCxZQUNZLFFBQW1CLEVBQ25CLElBQVksRUFDQSxZQUE4QjtRQUVwRCxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUoxQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQVE7UUFDQSxpQkFBWSxHQUFaLFlBQVksQ0FBa0I7Ozs7NkNBckNILDRCQUE0Qjs7Ozs4Q0FLM0IsNkJBQTZCOzs7O3FCQUs5QyxPQUFPOzs7O29CQUtKLFFBQVE7Ozs7c0JBVTNCLElBQUksWUFBWSxFQUFROzs7O3FCQUt6QixJQUFJLFlBQVksRUFBUTs2QkFFRCxhQUFhLENBQUMsVUFBVTtLQVFoRTs7Ozs7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM1Qjs7OztJQUVELFdBQVc7UUFDVCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFcEIsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxDQUFDO0tBQ2xEOzs7O0lBRVMsb0JBQW9CO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0tBQzFCOzs7OztJQUtTLG9CQUFvQjtRQUM1QixNQUFNLENBQUM7WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDeEIsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSztZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUMxQixDQUFDO0tBQ0g7Ozs7O0lBS08saUJBQWlCO1FBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7Ozs7SUFNN0UsbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Ozs7OztJQU1aLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDOztRQUduQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Ozs7WUExR3ZCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixRQUFRLEVBQUU7O2tDQUVzQjthQUNqQzs7OztZQWRDLFNBQVM7WUFFVCxNQUFNO1lBS0MsZ0JBQWdCLHVCQWtEcEIsUUFBUTs7O29CQTNCVixLQUFLO21CQUtMLEtBQUs7aUJBS0wsS0FBSztxQkFLTCxNQUFNO29CQUtOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgTmdab25lLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVDYXB0Y2hhVHlwZSB9IGZyb20gJy4vcmVjYXB0Y2hhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE5neENhcHRjaGFDb25maWcgfSBmcm9tICcuL3JlY2FwdGNoYS5jb25maWcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtcmVjYXB0Y2hhMicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8ZGl2ICNjYXB0Y2hhU2NyaXB0RWxlbT48L2Rpdj5cclxuICA8ZGl2ICNjYXB0Y2hhV3JhcHBlckVsZW0+PC9kaXY+YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVDYXB0Y2hhMkNvbXBvbmVudCBleHRlbmRzIEJhc2VSZUNhcHRjaGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKlxyXG4gICogTmFtZSBvZiB0aGUgZ2xvYmFsIGV4cGlyZSBjYWxsYmFja1xyXG4gICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvd09uRXJyb3JDYWxsYmFja1Byb3BlcnR5ID0gJ25neF9jYXB0Y2hhX2Vycm9yX2NhbGxiYWNrJztcclxuXHJcbiAgLyoqXHJcbiAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgZXJyb3IgY2FsbGJhY2tcclxuICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSB3aW5kb3dPbkV4cGlyZUNhbGxiYWNrUHJvcGVydHkgPSAnbmd4X2NhcHRjaGFfZXhwaXJlX2NhbGxiYWNrJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlbWVcclxuICAgKi9cclxuICBASW5wdXQoKSB0aGVtZTogJ2RhcmsnIHwgJ2xpZ2h0JyA9ICdsaWdodCc7XHJcblxyXG4gIC8qKlxyXG4gICogU2l6ZVxyXG4gICovXHJcbiAgQElucHV0KCkgc2l6ZTogJ2NvbXBhY3QnIHwgJ25vcm1hbCcgPSAnbm9ybWFsJztcclxuXHJcbiAgLyoqXHJcbiAgICogTGFuZ3VhZ2UgY29kZS4gQXV0by1kZXRlY3RzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgaWYgdW5zcGVjaWZpZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgaGw6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgKiBFeHBpcmVkIGNhbGxiYWNrXHJcbiAgKi9cclxuICBAT3V0cHV0KCkgZXhwaXJlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAvKipcclxuICAqIEVycm9yIGNhbGxiYWNrXHJcbiAgKi9cclxuICBAT3V0cHV0KCkgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIHByb3RlY3RlZCByZWNhcHRjaGFUeXBlOiBSZUNhcHRjaGFUeXBlID0gUmVDYXB0Y2hhVHlwZS5SZUNhcHRjaGEyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSxcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBnbG9iYWxDb25maWc6IE5neENhcHRjaGFDb25maWcsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgem9uZSwgZ2xvYmFsQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG5cclxuICAgIHdpbmRvd1t0aGlzLndpbmRvd09uRXJyb3JDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gICAgd2luZG93W3RoaXMud2luZG93T25FeHBpcmVDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNhcHRjaGFTcGVjaWZpY1NldHVwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWdpc3RlckNhbGxiYWNrcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyByZUNhcHRjaGEgcHJvcGVydGllc1xyXG4gICovXHJcbiAgcHJvdGVjdGVkIGdldENhcHRjaGFQcm9wZXJ0aWVzKCk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnc2l0ZWtleSc6IHRoaXMuX3NpdGVLZXksXHJcbiAgICAgICdjYWxsYmFjayc6IChyZXNwb25zZSkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUNhbGxiYWNrKHJlc3BvbnNlKSksXHJcbiAgICAgICdleHBpcmVkLWNhbGxiYWNrJzogKCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUV4cGlyZUNhbGxiYWNrKCkpLFxyXG4gICAgICAnZXJyb3ItY2FsbGJhY2snOiAoKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuaGFuZGxlRXJyb3JDYWxsYmFjaygpKSxcclxuICAgICAgJ3RoZW1lJzogdGhpcy50aGVtZSxcclxuICAgICAgJ3R5cGUnOiB0aGlzLnR5cGUsXHJcbiAgICAgICdzaXplJzogdGhpcy5zaXplLFxyXG4gICAgICAndGFiaW5kZXgnOiB0aGlzLnRhYkluZGV4XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGdsb2JhbCBjYWxsYmFja3NcclxuICAqL1xyXG4gIHByaXZhdGUgcmVnaXN0ZXJDYWxsYmFja3MoKTogdm9pZCB7XHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkVycm9yQ2FsbGJhY2tQcm9wZXJ0eV0gPSB0aGlzLmhhbmRsZUVycm9yQ2FsbGJhY2suYmluZCh0aGlzKTtcclxuICAgIHdpbmRvd1t0aGlzLndpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eV0gPSB0aGlzLmhhbmRsZUV4cGlyZUNhbGxiYWNrLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGVycm9yIGNhbGxiYWNrXHJcbiAgKi9cclxuICBwcml2YXRlIGhhbmRsZUVycm9yQ2FsbGJhY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9yLm5leHQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgZXhwaXJlZCBjYWxsYmFja1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlRXhwaXJlQ2FsbGJhY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGlyZS5uZXh0KCk7XHJcblxyXG4gICAgLy8gcmVzZXQgY2FwdGNoYSBvbiBleHBpcmUgY2FsbGJhY2tcclxuICAgIHRoaXMucmVzZXRDYXB0Y2hhKCk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLTIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvcmVjYXB0Y2hhLTIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEdBQzdCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWVuRCxNQUFNLDBCQUEyQixTQUFRLHNCQUFzQjs7Ozs7OztJQXVDN0QsWUFDWSxRQUFtQixFQUNuQixJQUFZLEVBQ1osUUFBa0IsRUFDTixZQUE4QjtRQUVwRCxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFMcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNOLGlCQUFZLEdBQVosWUFBWSxDQUFrQjs7Ozs2Q0F0Q0gsNEJBQTRCOzs7OzhDQUszQiw2QkFBNkI7Ozs7cUJBSzlDLE9BQU87Ozs7b0JBS0osUUFBUTs7OztzQkFVM0IsSUFBSSxZQUFZLEVBQVE7Ozs7cUJBS3pCLElBQUksWUFBWSxFQUFROzZCQUVELGFBQWEsQ0FBQyxVQUFVO0tBU2hFOzs7OztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzVCOzs7O0lBRUQsV0FBVztRQUNULEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVwQixNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDbEQ7Ozs7SUFFUyxvQkFBb0I7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7S0FDMUI7Ozs7O0lBS1Msb0JBQW9CO1FBQzVCLE1BQU0sQ0FBQztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN4QixVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDMUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDdkUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQzFCLENBQUM7S0FDSDs7Ozs7SUFLTyxpQkFBaUI7UUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakYsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7OztJQU03RSxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDOzs7Ozs7SUFNWixvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7UUFHbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDOzs7O1lBdkh2QixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOztrQ0FFc0I7Z0JBQ2hDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO3dCQUNsRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjthQUNGOzs7O1lBdEJDLFNBQVM7WUFFVCxNQUFNO1lBQUUsUUFBUTtZQUtULGdCQUFnQix1QkEyRHBCLFFBQVE7OztvQkE1QlYsS0FBSzttQkFLTCxLQUFLO2lCQUtMLEtBQUs7cUJBS0wsTUFBTTtvQkFLTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE5nWm9uZSwgSW5qZWN0b3IsIGZvcndhcmRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi9yZWNhcHRjaGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtcmVjYXB0Y2hhMicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8ZGl2ICNjYXB0Y2hhU2NyaXB0RWxlbT48L2Rpdj5cclxuICA8ZGl2ICNjYXB0Y2hhV3JhcHBlckVsZW0+PC9kaXY+YCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlQ2FwdGNoYTJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZUNhcHRjaGEyQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqXHJcbiAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgZXhwaXJlIGNhbGxiYWNrXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2luZG93T25FcnJvckNhbGxiYWNrUHJvcGVydHkgPSAnbmd4X2NhcHRjaGFfZXJyb3JfY2FsbGJhY2snO1xyXG5cclxuICAvKipcclxuICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBlcnJvciBjYWxsYmFja1xyXG4gICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eSA9ICduZ3hfY2FwdGNoYV9leHBpcmVfY2FsbGJhY2snO1xyXG5cclxuICAvKipcclxuICAgKiBUaGVtZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRoZW1lOiAnZGFyaycgfCAnbGlnaHQnID0gJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgKiBTaXplXHJcbiAgKi9cclxuICBASW5wdXQoKSBzaXplOiAnY29tcGFjdCcgfCAnbm9ybWFsJyA9ICdub3JtYWwnO1xyXG5cclxuICAvKipcclxuICAgKiBMYW5ndWFnZSBjb2RlLiBBdXRvLWRldGVjdHMgdGhlIHVzZXIncyBsYW5ndWFnZSBpZiB1bnNwZWNpZmllZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBobDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAqIEV4cGlyZWQgY2FsbGJhY2tcclxuICAqL1xyXG4gIEBPdXRwdXQoKSBleHBpcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICogRXJyb3IgY2FsbGJhY2tcclxuICAqL1xyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlY2FwdGNoYVR5cGU6IFJlQ2FwdGNoYVR5cGUgPSBSZUNhcHRjaGFUeXBlLlJlQ2FwdGNoYTI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBnbG9iYWxDb25maWc6IE5neENhcHRjaGFDb25maWcsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgem9uZSwgaW5qZWN0b3IsIGdsb2JhbENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuXHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkVycm9yQ2FsbGJhY2tQcm9wZXJ0eV0gPSB7fTtcclxuICAgIHdpbmRvd1t0aGlzLndpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eV0gPSB7fTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjYXB0Y2hhU3BlY2lmaWNTZXR1cCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVnaXN0ZXJDYWxsYmFja3MoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAqL1xyXG4gIHByb3RlY3RlZCBnZXRDYXB0Y2hhUHJvcGVydGllcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ3NpdGVrZXknOiB0aGlzLl9zaXRlS2V5LFxyXG4gICAgICAnY2FsbGJhY2snOiAocmVzcG9uc2UpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVDYWxsYmFjayhyZXNwb25zZSkpLFxyXG4gICAgICAnZXhwaXJlZC1jYWxsYmFjayc6ICgpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVFeHBpcmVDYWxsYmFjaygpKSxcclxuICAgICAgJ2Vycm9yLWNhbGxiYWNrJzogKCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUVycm9yQ2FsbGJhY2soKSksXHJcbiAgICAgICd0aGVtZSc6IHRoaXMudGhlbWUsXHJcbiAgICAgICd0eXBlJzogdGhpcy50eXBlLFxyXG4gICAgICAnc2l6ZSc6IHRoaXMuc2l6ZSxcclxuICAgICAgJ3RhYmluZGV4JzogdGhpcy50YWJJbmRleFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVycyBnbG9iYWwgY2FsbGJhY2tzXHJcbiAgKi9cclxuICBwcml2YXRlIHJlZ2lzdGVyQ2FsbGJhY2tzKCk6IHZvaWQge1xyXG4gICAgd2luZG93W3RoaXMud2luZG93T25FcnJvckNhbGxiYWNrUHJvcGVydHldID0gdGhpcy5oYW5kbGVFcnJvckNhbGxiYWNrLmJpbmQodGhpcyk7XHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkV4cGlyZUNhbGxiYWNrUHJvcGVydHldID0gdGhpcy5oYW5kbGVFeHBpcmVDYWxsYmFjay5iaW5kKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBlcnJvciBjYWxsYmFja1xyXG4gICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvckNhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKG51bGwpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lcnJvci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGV4cGlyZWQgY2FsbGJhY2tcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUV4cGlyZUNhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBpcmUubmV4dCgpO1xyXG5cclxuICAgIC8vIHJlc2V0IGNhcHRjaGEgb24gZXhwaXJlIGNhbGxiYWNrXHJcbiAgICB0aGlzLnJlc2V0Q2FwdGNoYSgpO1xyXG4gIH1cclxufVxyXG5cclxuIl19 |
@@ -7,2 +7,3 @@ /** | ||
import { ReCaptchaType } from './recaptcha-type.enum'; | ||
import { NgControl } from '@angular/forms'; | ||
/** | ||
@@ -12,5 +13,6 @@ * @abstract | ||
var BaseReCaptchaComponent = /** @class */ (function () { | ||
function BaseReCaptchaComponent(renderer, zone, globalConfig) { | ||
function BaseReCaptchaComponent(renderer, zone, injector, globalConfig) { | ||
this.renderer = renderer; | ||
this.zone = zone; | ||
this.injector = injector; | ||
this.globalConfig = globalConfig; | ||
@@ -64,2 +66,11 @@ this.setupAfterLoad = false; | ||
*/ | ||
BaseReCaptchaComponent.prototype.ngAfterViewInit = /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
this.control = this.injector.get(NgControl).control; | ||
}; | ||
/** | ||
* @return {?} | ||
*/ | ||
BaseReCaptchaComponent.prototype.getGlobalSiteKey = /** | ||
@@ -173,2 +184,7 @@ * @return {?} | ||
function () { | ||
var _this = this; | ||
this.zone.run(function () { | ||
_this.onChange(null); | ||
_this.onTouched(null); | ||
}); | ||
this.reCaptchaApi.reset(this.captchaId); | ||
@@ -250,4 +266,9 @@ }; | ||
function (callback) { | ||
var _this = this; | ||
this.currentResponse = callback; | ||
this.success.next(callback); | ||
this.zone.run(function () { | ||
_this.onChange(callback); | ||
_this.onTouched(callback); | ||
}); | ||
if (this.resetCaptchaAfterSuccess) { | ||
@@ -371,3 +392,3 @@ this.resetCaptcha(); | ||
this.renderReCaptcha(); | ||
// setup component if it was flagges as such | ||
// setup component if it was flagged as such | ||
if (this.setupAfterLoad) { | ||
@@ -408,2 +429,41 @@ this.setupAfterLoad = false; | ||
}; | ||
/** | ||
* To be aligned with the ControlValueAccessor interface we need to implement this method | ||
* However as we don't want to update the recaptcha, this doesn't need to be implemented | ||
* @param {?} obj | ||
* @return {?} | ||
*/ | ||
BaseReCaptchaComponent.prototype.writeValue = /** | ||
* To be aligned with the ControlValueAccessor interface we need to implement this method | ||
* However as we don't want to update the recaptcha, this doesn't need to be implemented | ||
* @param {?} obj | ||
* @return {?} | ||
*/ | ||
function (obj) { }; | ||
/** | ||
* This method helps us tie together recaptcha and our formControl values | ||
* @param {?} fn | ||
* @return {?} | ||
*/ | ||
BaseReCaptchaComponent.prototype.registerOnChange = /** | ||
* This method helps us tie together recaptcha and our formControl values | ||
* @param {?} fn | ||
* @return {?} | ||
*/ | ||
function (fn) { | ||
this.onChange = fn; | ||
}; | ||
/** | ||
* At some point we might be interested whether the user has touched our component | ||
* @param {?} fn | ||
* @return {?} | ||
*/ | ||
BaseReCaptchaComponent.prototype.registerOnTouched = /** | ||
* At some point we might be interested whether the user has touched our component | ||
* @param {?} fn | ||
* @return {?} | ||
*/ | ||
function (fn) { | ||
this.onTouched = fn; | ||
}; | ||
BaseReCaptchaComponent.propDecorators = { | ||
@@ -424,2 +484,7 @@ siteKey: [{ type: Input }], | ||
function BaseReCaptchaComponent_tsickle_Closure_declarations() { | ||
/** | ||
* Form Control to be enable usage in reactive forms | ||
* @type {?} | ||
*/ | ||
BaseReCaptchaComponent.prototype.control; | ||
/** @type {?} */ | ||
@@ -529,3 +594,10 @@ BaseReCaptchaComponent.prototype.setupAfterLoad; | ||
BaseReCaptchaComponent.prototype.recaptchaType; | ||
/** | ||
* Required by ControlValueAccessor | ||
* @type {?} | ||
*/ | ||
BaseReCaptchaComponent.prototype.onChange; | ||
/** @type {?} */ | ||
BaseReCaptchaComponent.prototype.onTouched; | ||
/** @type {?} */ | ||
BaseReCaptchaComponent.prototype.renderer; | ||
@@ -535,2 +607,4 @@ /** @type {?} */ | ||
/** @type {?} */ | ||
BaseReCaptchaComponent.prototype.injector; | ||
/** @type {?} */ | ||
BaseReCaptchaComponent.prototype.globalConfig; | ||
@@ -551,2 +625,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0lBOEdsRCxnQ0FDYyxRQUFtQixFQUNuQixJQUFZLEVBQ1osWUFBK0I7UUFGL0IsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osaUJBQVksR0FBWixZQUFZLENBQW1COzhCQTFHcEIsS0FBSzs7Ozs0Q0FLb0Isc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFOzs7O3VDQUsxRCxZQUFZOzs7O2lDQUtsQixpQkFBaUI7Ozs7b0JBZ0JyQixPQUFPOzs7O3dCQVV0QixDQUFDOzs7Ozt1QkFNRCxJQUFJLFlBQVksRUFBVTs7OztvQkFLN0IsSUFBSSxZQUFZLEVBQVU7Ozs7cUJBS3pCLElBQUksWUFBWSxFQUFROzs7Ozt3Q0F3QkwsS0FBSzs7Ozt3QkFLeEIsS0FBSztLQXNCdEI7Ozs7SUFZTyxpREFBZ0I7Ozs7UUFDcEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7O1lBRXBCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztnQkFDMUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztvQkFDN0MsTUFBTSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztpQkFDOUQ7Z0JBRUQs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QkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7OzswQkF4VTlDLEtBQUs7dUJBS0wsS0FBSztxQkFLTCxLQUFLOzJCQUtMLEtBQUs7MEJBTUwsTUFBTTt1QkFLTixNQUFNO3dCQUtOLE1BQU07cUNBRU4sU0FBUyxTQUFDLG9CQUFvQjtvQ0FDOUIsU0FBUyxTQUFDLG1CQUFtQjs7aUNBaEZsQzs7U0FrQnNCLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBOZ1pvbmUsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgUmVDYXB0Y2hhVHlwZSB9IGZyb20gJy4vcmVjYXB0Y2hhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE5neENhcHRjaGFDb25maWcgfSBmcm9tICcuL3JlY2FwdGNoYS5jb25maWcnO1xyXG5cclxuZGVjbGFyZSB2YXIgZ3JlY2FwdGNoYTogYW55O1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VSZUNhcHRjaGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzZXR1cEFmdGVyTG9hZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgY2FsbGJhY2tcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eSA9ICduZ3hfb25sb2FkX2NhbGxiYWNrXycgKyB0aGlzLmdldFBzZXVkb1VuaXF1ZU51bWJlcigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmFtZSBvZiB0aGUgZ2xvYmFsIHJlQ2FwdGNoYSBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHkgPSAnZ3JlY2FwdGNoYSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVmaXggb2YgdGhlIGNhcHRjaGEgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FwdGNoYUVsZW1QcmVmaXggPSAnbmd4X2NhcHRjaGFfaWRfJztcclxuXHJcbiAgICAvKipcclxuICAgICAgKiBHb29nbGUncyBzaXRlIGtleS5cclxuICAgICAgKiBZb3UgY2FuIGZpbmQgdGhpcyB1bmRlciBodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYVxyXG4gICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF9zaXRlS2V5Pzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDb25maWcgdG8gdXNlXHJcbiAgICAqL1xyXG4gICAgQElucHV0KCkgc2l0ZUtleTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUeXBlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHR5cGU6ICdhdWRpbycgfCAnaW1hZ2UnID0gJ2ltYWdlJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhbmd1YWdlIGNvZGUuIEF1dG8tZGV0ZWN0cyB0aGUgdXNlcidzIGxhbmd1YWdlIGlmIHVuc3BlY2lmaWVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBobDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBUYWIgaW5kZXhcclxuICAgICovXHJcbiAgICBASW5wdXQoKSB0YWJJbmRleCA9IDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIHJlY2VpdmVzIHN1Y2Nlc3NmdWwgcmVzcG9uc2UuXHJcbiAgICAgKiBDYXB0Y2hhIHJlc3BvbnNlIHRva2VuIGlzIHBhc3NlZCB0byBldmVudC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSBpcyBsb2FkZWQuIEV2ZW50IHJlY2VpdmVzIGlkIG9mIHRoZSBjYXB0Y2hhXHJcbiAgICAqL1xyXG4gICAgQE91dHB1dCgpIGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSBpcyBsb2FkZWQgJiByZWFkeS4gSS5lLiB3aGVuIHlvdSBuZWVkIHRvIGV4ZWN1dGUgY2FwdGNoYSBvbiBjb21wb25lbnQgbG9hZC5cclxuICAgICovXHJcbiAgICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnY2FwdGNoYVdyYXBwZXJFbGVtJykgY2FwdGNoYVdyYXBwZXJFbGVtOiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZCgnY2FwdGNoYVNjcmlwdEVsZW0nKSBjYXB0Y2hhU2NyaXB0RWxlbTogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhcHRjaGEgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY2FwdGNoYUVsZW0/OiBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElkIG9mIHRoZSBjYXB0Y2hhIGVsZW1cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNhcHRjaGFJZD86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhvbGRzIGxhc3QgcmVzcG9uc2UgdmFsdWVcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGN1cnJlbnRSZXNwb25zZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIGVuYWJsZWQsIGNhcHRjaGEgd2lsbCByZXNldCBhZnRlciByZWNlaXZpbmcgc3VjY2VzcyByZXNwb25zZS4gVGhpcyBpcyB1c2VmdWxcclxuICAgICAqIHdoZW4gaW52aXNpYmxlIGNhcHRjaGEgbmVlZCB0byBiZSByZXNvbHZlZCBtdWx0aXBsZSB0aW1lcyBvbiBzYW1lIHBhZ2VcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlc2V0Q2FwdGNoYUFmdGVyU3VjY2VzcyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIGNhcHRjaGEgaXMgbG9hZGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZWZlcmVuY2UgdG8gZ2xvYmFsIHJlQ2FwdGNoYSBBUElcclxuICAgICovXHJcbiAgICBwdWJsaWMgcmVDYXB0Y2hhQXBpPzogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWQgb2YgdGhlIERPTSBlbGVtZW50IHdyYXBwaW5nIGNhcHRjaGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhcHRjaGFFbGVtSWQ/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYXB0Y2hhIHR5cGVcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlY2FwdGNoYVR5cGU6IFJlQ2FwdGNoYVR5cGU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSxcclxuICAgICAgICBwcm90ZWN0ZWQgZ2xvYmFsQ29uZmlnPzogTmd4Q2FwdGNoYUNvbmZpZyxcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXRzIHJlQ2FwdGNoYSBwcm9wZXJ0aWVzXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldENhcHRjaGFQcm9wZXJ0aWVzKCk6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVzZWQgZm9yIGNhcHRjaGEgc3BlY2lmaWMgc2V0dXBcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2FwdGNoYVNwZWNpZmljU2V0dXAoKTogdm9pZDtcclxuXHJcbiAgICBwcml2YXRlIGdldEdsb2JhbFNpdGVLZXkoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5nbG9iYWxDb25maWcpIHtcclxuICAgICAgICAgICAgLy8gSW52aXNpYmxlIGNhcHRjaGFcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVjYXB0Y2hhVHlwZSA9PT0gUmVDYXB0Y2hhVHlwZS5JbnZpc2libGVSZUNhcHRjaGEpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgU2l0ZUtleSBmb3IgaW52aXNpYmxlIHJlQ2FwdGNoYSBpcyBub3Qgc2V0IWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyByZWNhcHRjaGEgMlxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVjYXB0Y2hhVHlwZSA9PT0gUmVDYXB0Y2hhVHlwZS5SZUNhcHRjaGEyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpdGVLZXkgZm9yIHJlQ2FwdGNoYTIgaXMgbm90IHNldCFgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSgpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFVuc3VwcG9ydGVkIGNhcHRjaGEgdHlwZSAnJHt0aGlzLnJlY2FwdGNoYVR5cGV9JyFgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5zaXRlS2V5KSB7XHJcbiAgICAgICAgICAgIC8vIHVzZSBnbG9iYWwgc2l0ZSBrZXkgaWYga2V5IGlzIG5vdCBhdmFpbGFibGVcclxuICAgICAgICAgICAgdGhpcy5fc2l0ZUtleSA9IHRoaXMuZ2V0R2xvYmFsU2l0ZUtleSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHVzZSBjb21ucG9uZW50IHNpdGUga2V5XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNpdGVLZXkgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2l0ZUtleSA9IHRoaXMuc2l0ZUtleSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2l0ZUtleSA9IHRoaXMuc2l0ZUtleTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgd2luZG93W3RoaXMud2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eV0gPSB7fTtcclxuICAgICAgICB3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0gPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgY2FwdGNoYSByZXNwb25zZSBhcyBwZXIgcmVDYXB0Y2hhIGRvY3NcclxuICAgICovXHJcbiAgICBnZXRSZXNwb25zZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlQ2FwdGNoYUFwaS5nZXRSZXNwb25zZSh0aGlzLmNhcHRjaGFJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIElkIG9mIGNhcHRjaGEgd2lkZ2V0XHJcbiAgICAqL1xyXG4gICAgZ2V0Q2FwdGNoYUlkKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwdGNoYUlkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZXNldHMgY2FwdGNoYVxyXG4gICAgKi9cclxuICAgIHJlc2V0Q2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJlQ2FwdGNoYUFwaS5yZXNldCh0aGlzLmNhcHRjaGFJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGxhc3Qgc3VibWl0dGVkIGNhcHRjaGEgcmVzcG9uc2VcclxuICAgICovXHJcbiAgICBnZXRDdXJyZW50UmVzcG9uc2UoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWxvYWQgY2FwdGNoYS4gVXNlZnVsIHdoZW4gcHJvcGVydGllcyAoaS5lLiB0aGVtZSkgY2hhbmdlZCBhbmQgY2FwdGNoYSBuZWVkIHRvIHJlZmxlY3QgdGhlbVxyXG4gICAgKi9cclxuICAgIHJlbG9hZENhcHRjaGEoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBlbnN1cmVDYXB0Y2hhRWxlbShjYXB0Y2hhRWxlbUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjYXB0Y2hhRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNhcHRjaGFFbGVtSWQpO1xyXG5cclxuICAgICAgICBpZiAoIWNhcHRjaGFFbGVtKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBDYXB0Y2hhIGVsZW1lbnQgd2l0aCBpZCAnJHtjYXB0Y2hhRWxlbUlkfScgd2FzIG5vdCBmb3VuZGApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gYXNzaWduIGNhcHRjaGEgYWxlbVxyXG4gICAgICAgIHRoaXMuY2FwdGNoYUVsZW0gPSBjYXB0Y2hhRWxlbTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc3BvbnNpYmxlIGZvciBpbnN0YW50aWF0aW5nIGNhcHRjaGEgZWxlbWVudFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZW5kZXJSZUNhcHRjaGEoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhSWQgPSB0aGlzLnJlQ2FwdGNoYUFwaS5yZW5kZXIodGhpcy5jYXB0Y2hhRWxlbUlkLCB0aGlzLmdldENhcHRjaGFQcm9wZXJ0aWVzKCkpO1xyXG4gICAgICAgIHRoaXMucmVhZHkubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSByZWNlaXZlcyByZXNwb25zZVxyXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIENhbGxiYWNrXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBoYW5kbGVDYWxsYmFjayhjYWxsYmFjazogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UmVzcG9uc2UgPSBjYWxsYmFjaztcclxuICAgICAgICB0aGlzLnN1Y2Nlc3MubmV4dChjYWxsYmFjayk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnJlc2V0Q2FwdGNoYUFmdGVyU3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0Q2FwdGNoYSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZ2lzdGVycyByZUNhcHRjaGEgc2NyaXB0IGlmIGl0cyBub3QgYXZhaWxhYmxlXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGVuc3VyZVJlQ2FwdGNoYVNjcmlwdCgpOiB2b2lkIHtcclxuICAgICAgICB3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0gPSB7fTtcclxuICAgICAgICB0aGlzLnJlQ2FwdGNoYUFwaSA9IHt9O1xyXG5cclxuICAgICAgICB0aGlzLnJlZ2lzdGVyUmVDYXB0Y2hhU2NyaXB0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgc2NyaXB0IHRvIHBhZ2Ugd2l0aCByZWZlcmVuY2UgdG8gY2FwdGNoYSBBUEkuIFRoaXMgaGFzIHRvIGJlIGRvbmUgbWFudWFsbHlcclxuICAgICAqIGFzIHdlIHdhbnQgdG8gYXZvaWQgYWRkaW5nIHNjcmlwdCB0byBtYWluIGluZGV4Lmh0bWxcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVnaXN0ZXJSZUNhcHRjaGFTY3JpcHQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgc2NyaXB0LmlubmVySFRNTCA9ICcnO1xyXG4gICAgICAgIHNjcmlwdC5zcmMgPVxyXG4gICAgICAgICAgICBgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvYXBpLmpzP29ubG9hZD0ke3RoaXMud2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eX0mcmVuZGVyPWV4cGxpY2l0JHt0aGlzLmdldExhbmd1YWdlUGFyYW0oKX1gO1xyXG4gICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XHJcbiAgICAgICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhU2NyaXB0RWxlbS5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldExhbmd1YWdlUGFyYW0oKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGAmaGw9JHt0aGlzLmhsfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRVVENNaWxsaXNlY29uZHMoKSArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk5OTkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIHJlQ2FwdGNoYSBBcGkgaXMgZGVmaW5lZC4gSXQgbWF5IGhhcHBlbiB0aGF0IHdoZW4gbmF2aWdhdGluZyBmcm9tIGFuZ3VsYXIgY29tcG9uZW50IHRvIGFub3RoZXJcclxuICAgICAqIHZpYSByb3V0ZXIsIHRoZSBBcGkgd2FzIGFscmVhZHkgbG9hZGVkIHByZXZpb3VzbHkuIEluIHN1Y2ggY2FzZXMsIGRvIG5vdCByZW5kZXIgc2NyaXB0IGFnYWluLlxyXG4gICAgKi9cclxuICAgIHByaXZhdGUgaXNSZUNhcHRjaGFBcGlEZWZpbmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghd2luZG93W3RoaXMuZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHldKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXR1cENvbXBvbmVudCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBjYXB0Y2hhIHNwZWNpZmljIHNldHVwXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhU3BlY2lmaWNTZXR1cCgpO1xyXG5cclxuICAgICAgICAvLyBjcmVhdGUgY2FwdGNoYSB3cmFwcGVyXHJcbiAgICAgICAgdGhpcy5jcmVhdGVBbmRTZXRDYXB0Y2hhRWxlbSgpO1xyXG5cclxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHBhdGNoIHRoZSBjYWxsYmFjayB0aHJvdWdoIGdsb2JhbCB2YXJpYWJsZSwgb3RoZXJ3aXNlIGNhbGxiYWNrIGlzIG5vdCBhY2Nlc3NpYmxlXHJcbiAgICAgICAgLy8gbm90ZTogaHR0cHM6Ly9naXRodWIuY29tL0VubmdhZ2Uvbmd4LWNhcHRjaGEvaXNzdWVzLzJcclxuICAgICAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5XSA9IDxhbnk+KCgpID0+IHRoaXMuem9uZS5ydW4oXHJcbiAgICAgICAgICAgIHRoaXMub25sb2FkQ2FsbGJhY2suYmluZCh0aGlzKVxyXG4gICAgICAgICkpO1xyXG5cclxuICAgICAgICAvLyBjcmVhdGUgYW5kIHB1dCByZUNhcHRjaGEgc2NyaXB0IHRvIHBhZ2VcclxuICAgICAgICB0aGlzLmVuc3VyZVJlQ2FwdGNoYVNjcmlwdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBnb29nbGUncyByZWNhcHRjaGEgc2NyaXB0IGlzIHJlYWR5XHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBvbmxvYWRDYWxsYmFjaygpOiB2b2lkIHtcclxuICAgICAgICAvLyBhc3NpZ24gcmVmZXJlbmNlIHRvIHJlQ2FwdGNoYSBBcGkgb25jZSBpdHMgbG9hZGVkXHJcbiAgICAgICAgdGhpcy5yZUNhcHRjaGFBcGkgPSBncmVjYXB0Y2hhO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMucmVDYXB0Y2hhQXBpKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBSZUNhcHRjaGEgQXBpIHdhcyBub3QgaW5pdGlhbGl6ZWQgY29ycmVjdGx5YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBsb2FkZWQgZmxhZ1xyXG4gICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyBmaXJlIGxvYWQgZXZlbnRcclxuICAgICAgICB0aGlzLmxvYWQubmV4dCgpO1xyXG5cclxuICAgICAgICAvLyByZW5kZXIgY2FwdGNoYVxyXG4gICAgICAgIHRoaXMucmVuZGVyUmVDYXB0Y2hhKCk7XHJcblxyXG4gICAgICAgIC8vIHNldHVwIGNvbXBvbmVudCBpZiBpdCB3YXMgZmxhZ2dlcyBhcyBzdWNoXHJcbiAgICAgICAgaWYgKHRoaXMuc2V0dXBBZnRlckxvYWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR1cEFmdGVyTG9hZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVOZXdFbGVtSWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYXB0Y2hhRWxlbVByZWZpeCArIHRoaXMuZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVBbmRTZXRDYXB0Y2hhRWxlbSgpOiB2b2lkIHtcclxuICAgICAgICAvLyBnZW5lcmF0ZSBuZXcgY2FwdGNoYSBpZFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYUVsZW1JZCA9IHRoaXMuZ2VuZXJhdGVOZXdFbGVtSWQoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNhcHRjaGFFbGVtSWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYENhcHRjaGEgZWxlbSBJZCBpcyBub3Qgc2V0YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyByZW1vdmUgb2xkIGh0bWxcclxuICAgICAgICB0aGlzLmNhcHRjaGFXcmFwcGVyRWxlbS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xyXG5cclxuICAgICAgICAvLyBjcmVhdGUgbmV3IHdyYXBwZXIgZm9yIGNhcHRjaGFcclxuICAgICAgICBjb25zdCBuZXdFbGVtID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBuZXdFbGVtLmlkID0gdGhpcy5jYXB0Y2hhRWxlbUlkO1xyXG5cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuY2FwdGNoYVdyYXBwZXJFbGVtLm5hdGl2ZUVsZW1lbnQsIG5ld0VsZW0pO1xyXG5cclxuICAgICAgICAvLyB1cGRhdGUgY2FwdGNoYSBlbGVtXHJcbiAgICAgICAgdGhpcy5lbnN1cmVDYXB0Y2hhRWxlbSh0aGlzLmNhcHRjaGFFbGVtSWQpO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7SUF1SDFFLGdDQUNjLFFBQW1CLEVBQ25CLElBQVksRUFDWixRQUFrQixFQUNsQixZQUErQjtRQUgvQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUFtQjs4QkFqSHBCLEtBQUs7Ozs7NENBS29CLHNCQUFzQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTs7Ozt1Q0FLMUQsWUFBWTs7OztpQ0FLbEIsaUJBQWlCOzs7O29CQWdCckIsT0FBTzs7Ozt3QkFVdEIsQ0FBQzs7Ozs7dUJBTUQsSUFBSSxZQUFZLEVBQVU7Ozs7b0JBSzdCLElBQUksWUFBWSxFQUFVOzs7O3FCQUt6QixJQUFJLFlBQVksRUFBUTs7Ozs7d0NBd0JMLEtBQUs7Ozs7d0JBS3hCLEtBQUs7S0E0Qm5COzs7O0lBRUosZ0RBQWU7OztJQUFmO1FBQ0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDckQ7Ozs7SUFZTyxpREFBZ0I7Ozs7UUFDcEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7O1lBRXBC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LElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDOzs7OztJQUd6RCx3REFBdUI7Ozs7O1FBRTNCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFOUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN0QixNQUFNLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1NBQzdDOztRQUdELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQzs7UUFHckQscUJBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUVoQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDOztRQUcxRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDOzs7Ozs7OztJQU94QywyQ0FBVTs7Ozs7O2NBQUMsR0FBUTs7Ozs7O0lBS25CLGlEQUFnQjs7Ozs7Y0FBQyxFQUFPO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDOzs7Ozs7O0lBTWQsa0RBQWlCOzs7OztjQUFDLEVBQU87UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7OzswQkFoWHJCLEtBQUs7dUJBS0wsS0FBSztxQkFLTCxLQUFLOzJCQUtMLEtBQUs7MEJBTUwsTUFBTTt1QkFLTixNQUFNO3dCQUtOLE1BQU07cUNBRU4sU0FBUyxTQUFDLG9CQUFvQjtvQ0FDOUIsU0FBUyxTQUFDLG1CQUFtQjs7aUNBdEZsQzs7U0FvQnNCLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFJlQ2FwdGNoYVR5cGUgfSBmcm9tICcuL3JlY2FwdGNoYS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBOZ3hDYXB0Y2hhQ29uZmlnIH0gZnJvbSAnLi9yZWNhcHRjaGEuY29uZmlnJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5kZWNsYXJlIHZhciBncmVjYXB0Y2hhOiBhbnk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIEZvcm0gQ29udHJvbCB0byBiZSBlbmFibGUgdXNhZ2UgaW4gcmVhY3RpdmUgZm9ybXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjb250cm9sOiBGb3JtQ29udHJvbDtcclxuXHJcbiAgICBwcml2YXRlIHNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBjYWxsYmFja1xyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSB3aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5ID0gJ25neF9vbmxvYWRfY2FsbGJhY2tfJyArIHRoaXMuZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgcmVDYXB0Y2hhIHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBnbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eSA9ICdncmVjYXB0Y2hhJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZWZpeCBvZiB0aGUgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBjYXB0Y2hhRWxlbVByZWZpeCA9ICduZ3hfY2FwdGNoYV9pZF8nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICAqIEdvb2dsZSdzIHNpdGUga2V5LlxyXG4gICAgICAqIFlvdSBjYW4gZmluZCB0aGlzIHVuZGVyIGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhXHJcbiAgICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3NpdGVLZXk/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbmZpZyB0byB1c2VcclxuICAgICovXHJcbiAgICBASW5wdXQoKSBzaXRlS2V5OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFR5cGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgdHlwZTogJ2F1ZGlvJyB8ICdpbWFnZScgPSAnaW1hZ2UnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGFuZ3VhZ2UgY29kZS4gQXV0by1kZXRlY3RzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgaWYgdW5zcGVjaWZpZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGhsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFRhYiBpbmRleFxyXG4gICAgKi9cclxuICAgIEBJbnB1dCgpIHRhYkluZGV4ID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgcmVjZWl2ZXMgc3VjY2Vzc2Z1bCByZXNwb25zZS5cclxuICAgICAqIENhcHRjaGEgcmVzcG9uc2UgdG9rZW4gaXMgcGFzc2VkIHRvIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZC4gRXZlbnQgcmVjZWl2ZXMgaWQgb2YgdGhlIGNhcHRjaGFcclxuICAgICovXHJcbiAgICBAT3V0cHV0KCkgbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZCAmIHJlYWR5LiBJLmUuIHdoZW4geW91IG5lZWQgdG8gZXhlY3V0ZSBjYXB0Y2hhIG9uIGNvbXBvbmVudCBsb2FkLlxyXG4gICAgKi9cclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhV3JhcHBlckVsZW0nKSBjYXB0Y2hhV3JhcHBlckVsZW06IEVsZW1lbnRSZWY7XHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhU2NyaXB0RWxlbScpIGNhcHRjaGFTY3JpcHRFbGVtOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjYXB0Y2hhRWxlbT86IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWQgb2YgdGhlIGNhcHRjaGEgZWxlbVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY2FwdGNoYUlkPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9sZHMgbGFzdCByZXNwb25zZSB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3VycmVudFJlc3BvbnNlPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgZW5hYmxlZCwgY2FwdGNoYSB3aWxsIHJlc2V0IGFmdGVyIHJlY2VpdmluZyBzdWNjZXNzIHJlc3BvbnNlLiBUaGlzIGlzIHVzZWZ1bFxyXG4gICAgICogd2hlbiBpbnZpc2libGUgY2FwdGNoYSBuZWVkIHRvIGJlIHJlc29sdmVkIG11bHRpcGxlIHRpbWVzIG9uIHNhbWUgcGFnZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgY2FwdGNoYSBpcyBsb2FkZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlZmVyZW5jZSB0byBnbG9iYWwgcmVDYXB0Y2hhIEFQSVxyXG4gICAgKi9cclxuICAgIHB1YmxpYyByZUNhcHRjaGFBcGk/OiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZCBvZiB0aGUgRE9NIGVsZW1lbnQgd3JhcHBpbmcgY2FwdGNoYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FwdGNoYUVsZW1JZD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhcHRjaGEgdHlwZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVjYXB0Y2hhVHlwZTogUmVDYXB0Y2hhVHlwZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVxdWlyZWQgYnkgQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAgKi9cclxuICAgIHByb3RlY3RlZCBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcgKSA9PiB2b2lkO1xyXG4gICAgcHJvdGVjdGVkIG9uVG91Y2hlZDogKHZhbHVlOiBzdHJpbmcgKSA9PiB2b2lkO1xyXG5cclxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIGdsb2JhbENvbmZpZz86IE5neENhcHRjaGFDb25maWcsXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wpLmNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlZCBmb3IgY2FwdGNoYSBzcGVjaWZpYyBzZXR1cFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjYXB0Y2hhU3BlY2lmaWNTZXR1cCgpOiB2b2lkO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0R2xvYmFsU2l0ZUtleSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZykge1xyXG4gICAgICAgICAgICAvLyBJbnZpc2libGUgY2FwdGNoYVxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLkludmlzaWJsZVJlQ2FwdGNoYSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBTaXRlS2V5IGZvciBpbnZpc2libGUgcmVDYXB0Y2hhIGlzIG5vdCBzZXQhYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHJlY2FwdGNoYSAyXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLlJlQ2FwdGNoYTIpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgU2l0ZUtleSBmb3IgcmVDYXB0Y2hhMiBpcyBub3Qgc2V0IWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgVW5zdXBwb3J0ZWQgY2FwdGNoYSB0eXBlICcke3RoaXMucmVjYXB0Y2hhVHlwZX0nIWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNpdGVLZXkpIHtcclxuICAgICAgICAgICAgLy8gdXNlIGdsb2JhbCBzaXRlIGtleSBpZiBrZXkgaXMgbm90IGF2YWlsYWJsZVxyXG4gICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5nZXRHbG9iYWxTaXRlS2V5KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdXNlIGNvbW5wb25lbnQgc2l0ZSBrZXlcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBjYXB0Y2hhIHJlc3BvbnNlIGFzIHBlciByZUNhcHRjaGEgZG9jc1xyXG4gICAgKi9cclxuICAgIGdldFJlc3BvbnNlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVDYXB0Y2hhQXBpLmdldFJlc3BvbnNlKHRoaXMuY2FwdGNoYUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgSWQgb2YgY2FwdGNoYSB3aWRnZXRcclxuICAgICovXHJcbiAgICBnZXRDYXB0Y2hhSWQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYXB0Y2hhSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlc2V0cyBjYXB0Y2hhXHJcbiAgICAqL1xyXG4gICAgcmVzZXRDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKG51bGwpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMucmVDYXB0Y2hhQXBpLnJlc2V0KHRoaXMuY2FwdGNoYUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbGFzdCBzdWJtaXR0ZWQgY2FwdGNoYSByZXNwb25zZVxyXG4gICAgKi9cclxuICAgIGdldEN1cnJlbnRSZXNwb25zZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZXNwb25zZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbG9hZCBjYXB0Y2hhLiBVc2VmdWwgd2hlbiBwcm9wZXJ0aWVzIChpLmUuIHRoZW1lKSBjaGFuZ2VkIGFuZCBjYXB0Y2hhIG5lZWQgdG8gcmVmbGVjdCB0aGVtXHJcbiAgICAqL1xyXG4gICAgcmVsb2FkQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGVuc3VyZUNhcHRjaGFFbGVtKGNhcHRjaGFFbGVtSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNhcHRjaGFFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2FwdGNoYUVsZW1JZCk7XHJcblxyXG4gICAgICAgIGlmICghY2FwdGNoYUVsZW0pIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYENhcHRjaGEgZWxlbWVudCB3aXRoIGlkICcke2NhcHRjaGFFbGVtSWR9JyB3YXMgbm90IGZvdW5kYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhc3NpZ24gY2FwdGNoYSBhbGVtXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbSA9IGNhcHRjaGFFbGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzcG9uc2libGUgZm9yIGluc3RhbnRpYXRpbmcgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlbmRlclJlQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNhcHRjaGFJZCA9IHRoaXMucmVDYXB0Y2hhQXBpLnJlbmRlcih0aGlzLmNhcHRjaGFFbGVtSWQsIHRoaXMuZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKSk7XHJcbiAgICAgICAgdGhpcy5yZWFkeS5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIHJlY2VpdmVzIHJlc3BvbnNlXHJcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQ2FsbGJhY2tcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNhbGxiYWNrKGNhbGxiYWNrOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRSZXNwb25zZSA9IGNhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMuc3VjY2Vzcy5uZXh0KGNhbGxiYWNrKTtcclxuXHJcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGNhbGxiYWNrKTtcclxuICAgICAgICAgIHRoaXMub25Ub3VjaGVkKGNhbGxiYWNrKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRDYXB0Y2hhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0ZXJzIHJlQ2FwdGNoYSBzY3JpcHQgaWYgaXRzIG5vdCBhdmFpbGFibGVcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk6IHZvaWQge1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVDYXB0Y2hhQXBpID0ge307XHJcblxyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJSZUNhcHRjaGFTY3JpcHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCBzY3JpcHQgdG8gcGFnZSB3aXRoIHJlZmVyZW5jZSB0byBjYXB0Y2hhIEFQSS4gVGhpcyBoYXMgdG8gYmUgZG9uZSBtYW51YWxseVxyXG4gICAgICogYXMgd2Ugd2FudCB0byBhdm9pZCBhZGRpbmcgc2NyaXB0IHRvIG1haW4gaW5kZXguaHRtbFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWdpc3RlclJlQ2FwdGNoYVNjcmlwdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICBzY3JpcHQuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgc2NyaXB0LnNyYyA9XHJcbiAgICAgICAgICAgIGBodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/b25sb2FkPSR7dGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5fSZyZW5kZXI9ZXhwbGljaXQke3RoaXMuZ2V0TGFuZ3VhZ2VQYXJhbSgpfWA7XHJcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcclxuICAgICAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmNhcHRjaGFTY3JpcHRFbGVtLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0TGFuZ3VhZ2VQYXJhbSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5obCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYCZobD0ke3RoaXMuaGx9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFBzZXVkb1VuaXF1ZU51bWJlcigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTk5OSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgcmVDYXB0Y2hhIEFwaSBpcyBkZWZpbmVkLiBJdCBtYXkgaGFwcGVuIHRoYXQgd2hlbiBuYXZpZ2F0aW5nIGZyb20gYW5ndWxhciBjb21wb25lbnQgdG8gYW5vdGhlclxyXG4gICAgICogdmlhIHJvdXRlciwgdGhlIEFwaSB3YXMgYWxyZWFkeSBsb2FkZWQgcHJldmlvdXNseS4gSW4gc3VjaCBjYXNlcywgZG8gbm90IHJlbmRlciBzY3JpcHQgYWdhaW4uXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc1JlQ2FwdGNoYUFwaURlZmluZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGNhcHRjaGEgc3BlY2lmaWMgc2V0dXBcclxuICAgICAgICB0aGlzLmNhcHRjaGFTcGVjaWZpY1NldHVwKCk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBjYXB0Y2hhIHdyYXBwZXJcclxuICAgICAgICB0aGlzLmNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk7XHJcblxyXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gcGF0Y2ggdGhlIGNhbGxiYWNrIHRocm91Z2ggZ2xvYmFsIHZhcmlhYmxlLCBvdGhlcndpc2UgY2FsbGJhY2sgaXMgbm90IGFjY2Vzc2libGVcclxuICAgICAgICAvLyBub3RlOiBodHRwczovL2dpdGh1Yi5jb20vRW5uZ2FnZS9uZ3gtY2FwdGNoYS9pc3N1ZXMvMlxyXG4gICAgICAgIHdpbmRvd1t0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHldID0gPGFueT4oKCkgPT4gdGhpcy56b25lLnJ1bihcclxuICAgICAgICAgICAgdGhpcy5vbmxvYWRDYWxsYmFjay5iaW5kKHRoaXMpXHJcbiAgICAgICAgKSk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBhbmQgcHV0IHJlQ2FwdGNoYSBzY3JpcHQgdG8gcGFnZVxyXG4gICAgICAgIHRoaXMuZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGdvb2dsZSdzIHJlY2FwdGNoYSBzY3JpcHQgaXMgcmVhZHlcclxuICAgICovXHJcbiAgICBwcml2YXRlIG9ubG9hZENhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGFzc2lnbiByZWZlcmVuY2UgdG8gcmVDYXB0Y2hhIEFwaSBvbmNlIGl0cyBsb2FkZWRcclxuICAgICAgICB0aGlzLnJlQ2FwdGNoYUFwaSA9IGdyZWNhcHRjaGE7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5yZUNhcHRjaGFBcGkpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFJlQ2FwdGNoYSBBcGkgd2FzIG5vdCBpbml0aWFsaXplZCBjb3JyZWN0bHlgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGxvYWRlZCBmbGFnXHJcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIGZpcmUgbG9hZCBldmVudFxyXG4gICAgICAgIHRoaXMubG9hZC5uZXh0KCk7XHJcblxyXG4gICAgICAgIC8vIHJlbmRlciBjYXB0Y2hhXHJcbiAgICAgICAgdGhpcy5yZW5kZXJSZUNhcHRjaGEoKTtcclxuXHJcbiAgICAgICAgLy8gc2V0dXAgY29tcG9uZW50IGlmIGl0IHdhcyBmbGFnZ2VkIGFzIHN1Y2hcclxuICAgICAgICBpZiAodGhpcy5zZXR1cEFmdGVyTG9hZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZU5ld0VsZW1JZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHRjaGFFbGVtUHJlZml4ICsgdGhpcy5nZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGdlbmVyYXRlIG5ldyBjYXB0Y2hhIGlkXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbUlkID0gdGhpcy5nZW5lcmF0ZU5ld0VsZW1JZCgpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2FwdGNoYUVsZW1JZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQ2FwdGNoYSBlbGVtIElkIGlzIG5vdCBzZXRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHJlbW92ZSBvbGQgaHRtbFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVdyYXBwZXJFbGVtLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgd3JhcHBlciBmb3IgY2FwdGNoYVxyXG4gICAgICAgIGNvbnN0IG5ld0VsZW0gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIG5ld0VsZW0uaWQgPSB0aGlzLmNhcHRjaGFFbGVtSWQ7XHJcblxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5jYXB0Y2hhV3JhcHBlckVsZW0ubmF0aXZlRWxlbWVudCwgbmV3RWxlbSk7XHJcblxyXG4gICAgICAgIC8vIHVwZGF0ZSBjYXB0Y2hhIGVsZW1cclxuICAgICAgICB0aGlzLmVuc3VyZUNhcHRjaGFFbGVtKHRoaXMuY2FwdGNoYUVsZW1JZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUbyBiZSBhbGlnbmVkIHdpdGggdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZSB3ZSBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZFxyXG4gICAgICogSG93ZXZlciBhcyB3ZSBkb24ndCB3YW50IHRvIHVwZGF0ZSB0aGUgcmVjYXB0Y2hhLCB0aGlzIGRvZXNuJ3QgbmVlZCB0byBiZSBpbXBsZW1lbnRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgbWV0aG9kIGhlbHBzIHVzIHRpZSB0b2dldGhlciByZWNhcHRjaGEgYW5kIG91ciBmb3JtQ29udHJvbCB2YWx1ZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgYmUgaW50ZXJlc3RlZCB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0b3VjaGVkIG91ciBjb21wb25lbnRcclxuICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0= |
@@ -6,12 +6,14 @@ /** | ||
import * as tslib_1 from "tslib"; | ||
import { Component, Input, Optional, Renderer2, NgZone } from '@angular/core'; | ||
import { Component, Input, Optional, Renderer2, NgZone, Injector, forwardRef } from '@angular/core'; | ||
import { BaseReCaptchaComponent } from './base-recaptcha.component'; | ||
import { ReCaptchaType } from './recaptcha-type.enum'; | ||
import { NgxCaptchaConfig } from './recaptcha.config'; | ||
import { NG_VALUE_ACCESSOR } from '@angular/forms'; | ||
var InvisibleReCaptchaComponent = /** @class */ (function (_super) { | ||
tslib_1.__extends(InvisibleReCaptchaComponent, _super); | ||
function InvisibleReCaptchaComponent(renderer, zone, globalConfig) { | ||
var _this = _super.call(this, renderer, zone, globalConfig) || this; | ||
function InvisibleReCaptchaComponent(renderer, zone, injector, globalConfig) { | ||
var _this = _super.call(this, renderer, zone, injector, globalConfig) || this; | ||
_this.renderer = renderer; | ||
_this.zone = zone; | ||
_this.injector = injector; | ||
_this.globalConfig = globalConfig; | ||
@@ -88,3 +90,10 @@ /** | ||
selector: 'ngx-invisible-recaptcha', | ||
template: "\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>" | ||
template: "\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>", | ||
providers: [ | ||
{ | ||
provide: NG_VALUE_ACCESSOR, | ||
useExisting: forwardRef(function () { return InvisibleReCaptchaComponent; }), | ||
multi: true, | ||
} | ||
] | ||
},] }, | ||
@@ -96,2 +105,3 @@ ]; | ||
{ type: NgZone }, | ||
{ type: Injector }, | ||
{ type: NgxCaptchaConfig, decorators: [{ type: Optional }] } | ||
@@ -129,5 +139,7 @@ ]; }; | ||
/** @type {?} */ | ||
InvisibleReCaptchaComponent.prototype.injector; | ||
/** @type {?} */ | ||
InvisibleReCaptchaComponent.prototype.globalConfig; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXNpYmxlLXJlY2FwdGNoYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtY2FwdGNoYS8iLCJzb3VyY2VzIjpbImxpYi9pbnZpc2libGUtcmVjYXB0Y2hhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFFBQVEsRUFBRSxTQUFTLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0lBU0wsdURBQXNCO0lBbUJyRSxxQ0FDWSxRQUFtQixFQUNuQixJQUFZLEVBQ0EsWUFBOEI7UUFIdEQsWUFLRSxrQkFBTSxRQUFRLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxTQUNwQztRQUxXLGNBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUNBLGtCQUFZLEdBQVosWUFBWSxDQUFrQjs7OztxQkFqQjVCLFdBQVc7Ozs7c0JBS3FCLGFBQWE7OEJBTzlCLGFBQWEsQ0FBQyxrQkFBa0I7O0tBUXhFOzs7OztJQUVELGlEQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjtRQUNoQyxpQkFBTSxXQUFXLFlBQUMsT0FBTyxDQUFDLENBQUM7S0FDNUI7SUFFRDs7T0FFRzs7Ozs7SUFDSCw2Q0FBTzs7OztJQUFQOztRQUVFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUMzQzs7OztJQUVTLDBEQUFvQjs7O0lBQTlCO0tBQ0M7SUFFRDs7TUFFRTs7Ozs7SUFDUSwwREFBb0I7Ozs7SUFBOUI7UUFBQSxpQkFTQztRQVJDLE1BQU0sQ0FBQztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN4QixVQUFVLEVBQUUsVUFBQyxRQUFRLElBQUssT0FBQSxLQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxFQUFsRCxDQUFrRDtZQUM1RSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDbEIsQ0FBQztLQUNIOztnQkE1REYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSx1RUFFc0I7aUJBQ2pDOzs7O2dCQVorQyxTQUFTO2dCQUFpQixNQUFNO2dCQUl2RSxnQkFBZ0IsdUJBK0JwQixRQUFROzs7d0JBWlYsS0FBSztxQkFLTCxLQUFLOztzQ0E1QlI7RUFhaUQsc0JBQXNCO1NBQTFELDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT3B0aW9uYWwsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcywgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi9yZWNhcHRjaGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtaW52aXNpYmxlLXJlY2FwdGNoYScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8ZGl2ICNjYXB0Y2hhU2NyaXB0RWxlbT48L2Rpdj5cclxuICA8ZGl2ICNjYXB0Y2hhV3JhcHBlckVsZW0+PC9kaXY+YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgc2l6ZSByZXByZXNlbnRpbmcgaW52aXNpYmxlIGNhcHRjaGFcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2l6ZSA9ICdpbnZpc2libGUnO1xyXG5cclxuICAvKipcclxuICAgKiBCYWRnZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJhZGdlOiAnYm90dG9tcmlnaHQnIHwgJ2JvdHRvbWxlZnQnIHwgJ2lubGluZScgPSAnYm90dG9tcmlnaHQnO1xyXG5cclxuICAvKipcclxuICAgKiBMYW5ndWFnZSBjb2RlLiBBdXRvLWRldGVjdHMgdGhlIHVzZXIncyBsYW5ndWFnZSBpZiB1bnNwZWNpZmllZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBobDogc3RyaW5nO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVjYXB0Y2hhVHlwZTogUmVDYXB0Y2hhVHlwZSA9IFJlQ2FwdGNoYVR5cGUuSW52aXNpYmxlUmVDYXB0Y2hhO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSxcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBnbG9iYWxDb25maWc6IE5neENhcHRjaGFDb25maWcsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgem9uZSwgZ2xvYmFsQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvZ3JhbWF0aWNhbGx5IGludm9rZSB0aGUgcmVDQVBUQ0hBIGNoZWNrLiBVc2VkIGlmIHRoZSBpbnZpc2libGUgcmVDQVBUQ0hBIGlzIG9uIGEgZGl2IGluc3RlYWQgb2YgYSBidXR0b24uXHJcbiAgICovXHJcbiAgZXhlY3V0ZSgpOiB2b2lkIHtcclxuICAgIC8vIGV4ZWN1dGUgY2FwdGNoYVxyXG4gICAgdGhpcy5yZUNhcHRjaGFBcGkuZXhlY3V0ZSh0aGlzLmNhcHRjaGFJZCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2FwdGNoYVNwZWNpZmljU2V0dXAoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAqL1xyXG4gIHByb3RlY3RlZCBnZXRDYXB0Y2hhUHJvcGVydGllcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ3NpdGVrZXknOiB0aGlzLl9zaXRlS2V5LFxyXG4gICAgICAnY2FsbGJhY2snOiAocmVzcG9uc2UpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVDYWxsYmFjayhyZXNwb25zZSkpLFxyXG4gICAgICAnYmFkZ2UnOiB0aGlzLmJhZGdlLFxyXG4gICAgICAndHlwZSc6IHRoaXMudHlwZSxcclxuICAgICAgJ3RhYmluZGV4JzogdGhpcy50YWJJbmRleCxcclxuICAgICAgJ3NpemUnOiB0aGlzLnNpemVcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXNpYmxlLXJlY2FwdGNoYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtY2FwdGNoYS8iLCJzb3VyY2VzIjpbImxpYi9pbnZpc2libGUtcmVjYXB0Y2hhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFFBQVEsRUFBRSxTQUFTLEVBQWlCLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7SUFnQkYsdURBQXNCO0lBbUJyRSxxQ0FDWSxRQUFtQixFQUNuQixJQUFZLEVBQ1osUUFBa0IsRUFDTixZQUE4QjtRQUp0RCxZQU1FLGtCQUFNLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxTQUM5QztRQU5XLGNBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGNBQVEsR0FBUixRQUFRLENBQVU7UUFDTixrQkFBWSxHQUFaLFlBQVksQ0FBa0I7Ozs7cUJBbEI1QixXQUFXOzs7O3NCQUtxQixhQUFhOzhCQU85QixhQUFhLENBQUMsa0JBQWtCOztLQVN4RTs7Ozs7SUFFRCxpREFBVzs7OztJQUFYLFVBQVksT0FBc0I7UUFDaEMsaUJBQU0sV0FBVyxZQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzVCO0lBRUQ7O09BRUc7Ozs7O0lBQ0gsNkNBQU87Ozs7SUFBUDs7UUFFRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDM0M7Ozs7SUFFUywwREFBb0I7OztJQUE5QjtLQUNDO0lBRUQ7O01BRUU7Ozs7O0lBQ1EsMERBQW9COzs7O0lBQTlCO1FBQUEsaUJBU0M7UUFSQyxNQUFNLENBQUM7WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDeEIsVUFBVSxFQUFFLFVBQUMsUUFBUSxJQUFLLE9BQUEsS0FBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQTdCLENBQTZCLENBQUMsRUFBbEQsQ0FBa0Q7WUFDNUUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2xCLENBQUM7S0FDSDs7Z0JBcEVGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUUsdUVBRXNCO29CQUNoQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEsMkJBQTJCLEVBQTNCLENBQTJCLENBQUM7NEJBQzFELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzs7O2dCQXBCK0MsU0FBUztnQkFBaUIsTUFBTTtnQkFBRSxRQUFRO2dCQUlqRixnQkFBZ0IsdUJBd0NwQixRQUFROzs7d0JBYlYsS0FBSztxQkFLTCxLQUFLOztzQ0FwQ1I7RUFxQmlELHNCQUFzQjtTQUExRCwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMsIE5nWm9uZSwgSW5qZWN0b3IsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJhc2VSZUNhcHRjaGFDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtcmVjYXB0Y2hhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlQ2FwdGNoYVR5cGUgfSBmcm9tICcuL3JlY2FwdGNoYS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBOZ3hDYXB0Y2hhQ29uZmlnIH0gZnJvbSAnLi9yZWNhcHRjaGEuY29uZmlnJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtaW52aXNpYmxlLXJlY2FwdGNoYScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8ZGl2ICNjYXB0Y2hhU2NyaXB0RWxlbT48L2Rpdj5cclxuICA8ZGl2ICNjYXB0Y2hhV3JhcHBlckVsZW0+PC9kaXY+YCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEludmlzaWJsZVJlQ2FwdGNoYUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEludmlzaWJsZVJlQ2FwdGNoYUNvbXBvbmVudCBleHRlbmRzIEJhc2VSZUNhcHRjaGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICAvKipcclxuICAgKiBUaGlzIHNpemUgcmVwcmVzZW50aW5nIGludmlzaWJsZSBjYXB0Y2hhXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNpemUgPSAnaW52aXNpYmxlJztcclxuXHJcbiAgLyoqXHJcbiAgICogQmFkZ2VcclxuICAgKi9cclxuICBASW5wdXQoKSBiYWRnZTogJ2JvdHRvbXJpZ2h0JyB8ICdib3R0b21sZWZ0JyB8ICdpbmxpbmUnID0gJ2JvdHRvbXJpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgICogTGFuZ3VhZ2UgY29kZS4gQXV0by1kZXRlY3RzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgaWYgdW5zcGVjaWZpZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgaGw6IHN0cmluZztcclxuXHJcbiAgcHJvdGVjdGVkIHJlY2FwdGNoYVR5cGU6IFJlQ2FwdGNoYVR5cGUgPSBSZUNhcHRjaGFUeXBlLkludmlzaWJsZVJlQ2FwdGNoYTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByb3RlY3RlZCB6b25lOiBOZ1pvbmUsXHJcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGdsb2JhbENvbmZpZzogTmd4Q2FwdGNoYUNvbmZpZyxcclxuICApIHtcclxuICAgIHN1cGVyKHJlbmRlcmVyLCB6b25lLCBpbmplY3RvciwgZ2xvYmFsQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvZ3JhbWF0aWNhbGx5IGludm9rZSB0aGUgcmVDQVBUQ0hBIGNoZWNrLiBVc2VkIGlmIHRoZSBpbnZpc2libGUgcmVDQVBUQ0hBIGlzIG9uIGEgZGl2IGluc3RlYWQgb2YgYSBidXR0b24uXHJcbiAgICovXHJcbiAgZXhlY3V0ZSgpOiB2b2lkIHtcclxuICAgIC8vIGV4ZWN1dGUgY2FwdGNoYVxyXG4gICAgdGhpcy5yZUNhcHRjaGFBcGkuZXhlY3V0ZSh0aGlzLmNhcHRjaGFJZCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2FwdGNoYVNwZWNpZmljU2V0dXAoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAqL1xyXG4gIHByb3RlY3RlZCBnZXRDYXB0Y2hhUHJvcGVydGllcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ3NpdGVrZXknOiB0aGlzLl9zaXRlS2V5LFxyXG4gICAgICAnY2FsbGJhY2snOiAocmVzcG9uc2UpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVDYWxsYmFjayhyZXNwb25zZSkpLFxyXG4gICAgICAnYmFkZ2UnOiB0aGlzLmJhZGdlLFxyXG4gICAgICAndHlwZSc6IHRoaXMudHlwZSxcclxuICAgICAgJ3RhYmluZGV4JzogdGhpcy50YWJJbmRleCxcclxuICAgICAgJ3NpemUnOiB0aGlzLnNpemVcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG4iXX0= |
@@ -6,12 +6,14 @@ /** | ||
import * as tslib_1 from "tslib"; | ||
import { Component, EventEmitter, Input, Optional, Output, Renderer2, NgZone, } from '@angular/core'; | ||
import { Component, EventEmitter, Input, Optional, Output, Renderer2, NgZone, Injector, forwardRef, } from '@angular/core'; | ||
import { BaseReCaptchaComponent } from './base-recaptcha.component'; | ||
import { ReCaptchaType } from './recaptcha-type.enum'; | ||
import { NgxCaptchaConfig } from './recaptcha.config'; | ||
import { NG_VALUE_ACCESSOR } from '@angular/forms'; | ||
var ReCaptcha2Component = /** @class */ (function (_super) { | ||
tslib_1.__extends(ReCaptcha2Component, _super); | ||
function ReCaptcha2Component(renderer, zone, globalConfig) { | ||
var _this = _super.call(this, renderer, zone, globalConfig) || this; | ||
function ReCaptcha2Component(renderer, zone, injector, globalConfig) { | ||
var _this = _super.call(this, renderer, zone, injector, globalConfig) || this; | ||
_this.renderer = renderer; | ||
_this.zone = zone; | ||
_this.injector = injector; | ||
_this.globalConfig = globalConfig; | ||
@@ -121,2 +123,7 @@ /** | ||
function () { | ||
var _this = this; | ||
this.zone.run(function () { | ||
_this.onChange(null); | ||
_this.onTouched(null); | ||
}); | ||
this.error.next(); | ||
@@ -140,3 +147,10 @@ }; | ||
selector: 'ngx-recaptcha2', | ||
template: "\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>" | ||
template: "\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>", | ||
providers: [ | ||
{ | ||
provide: NG_VALUE_ACCESSOR, | ||
useExisting: forwardRef(function () { return ReCaptcha2Component; }), | ||
multi: true, | ||
} | ||
] | ||
},] }, | ||
@@ -148,2 +162,3 @@ ]; | ||
{ type: NgZone }, | ||
{ type: Injector }, | ||
{ type: NgxCaptchaConfig, decorators: [{ type: Optional }] } | ||
@@ -204,5 +219,7 @@ ]; }; | ||
/** @type {?} */ | ||
ReCaptcha2Component.prototype.injector; | ||
/** @type {?} */ | ||
ReCaptcha2Component.prototype.globalConfig; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLTIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvcmVjYXB0Y2hhLTIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0lBUWIsK0NBQXNCO0lBdUM3RCw2QkFDWSxRQUFtQixFQUNuQixJQUFZLEVBQ0EsWUFBOEI7UUFIdEQsWUFLRSxrQkFBTSxRQUFRLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxTQUNwQztRQUxXLGNBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUNBLGtCQUFZLEdBQVosWUFBWSxDQUFrQjs7Ozs4Q0FyQ0gsNEJBQTRCOzs7OytDQUszQiw2QkFBNkI7Ozs7c0JBSzlDLE9BQU87Ozs7cUJBS0osUUFBUTs7Ozt1QkFVM0IsSUFBSSxZQUFZLEVBQVE7Ozs7c0JBS3pCLElBQUksWUFBWSxFQUFROzhCQUVELGFBQWEsQ0FBQyxVQUFVOztLQVFoRTs7Ozs7SUFFRCx5Q0FBVzs7OztJQUFYLFVBQVksT0FBc0I7UUFDaEMsaUJBQU0sV0FBVyxZQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzVCOzs7O0lBRUQseUNBQVc7OztJQUFYO1FBQ0UsaUJBQU0sV0FBVyxXQUFFLENBQUM7UUFFcEIsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxDQUFDO0tBQ2xEOzs7O0lBRVMsa0RBQW9COzs7SUFBOUI7UUFDRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztLQUMxQjtJQUVEOztNQUVFOzs7OztJQUNRLGtEQUFvQjs7OztJQUE5QjtRQUFBLGlCQVdDO1FBVkMsTUFBTSxDQUFDO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3hCLFVBQVUsRUFBRSxVQUFDLFFBQVEsSUFBSyxPQUFBLEtBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQU0sT0FBQSxLQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUE3QixDQUE2QixDQUFDLEVBQWxELENBQWtEO1lBQzVFLGtCQUFrQixFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLG9CQUFvQixFQUFFLEVBQTNCLENBQTJCLENBQUMsRUFBaEQsQ0FBZ0Q7WUFDMUUsZ0JBQWdCLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQU0sT0FBQSxLQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBMUIsQ0FBMEIsQ0FBQyxFQUEvQyxDQUErQztZQUN2RSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQztLQUNIOzs7OztJQUtPLCtDQUFpQjs7Ozs7UUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakYsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7OztJQU03RSxpREFBbUI7Ozs7O1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Ozs7OztJQU1aLGtEQUFvQjs7Ozs7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7UUFHbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDOzs7Z0JBMUd2QixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLHVFQUVzQjtpQkFDakM7Ozs7Z0JBZEMsU0FBUztnQkFFVCxNQUFNO2dCQUtDLGdCQUFnQix1QkFrRHBCLFFBQVE7Ozt3QkEzQlYsS0FBSzt1QkFLTCxLQUFLO3FCQUtMLEtBQUs7eUJBS0wsTUFBTTt3QkFLTixNQUFNOzs4QkExRFQ7RUF1QnlDLHNCQUFzQjtTQUFsRCxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgTmdab25lLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVDYXB0Y2hhVHlwZSB9IGZyb20gJy4vcmVjYXB0Y2hhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE5neENhcHRjaGFDb25maWcgfSBmcm9tICcuL3JlY2FwdGNoYS5jb25maWcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtcmVjYXB0Y2hhMicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8ZGl2ICNjYXB0Y2hhU2NyaXB0RWxlbT48L2Rpdj5cclxuICA8ZGl2ICNjYXB0Y2hhV3JhcHBlckVsZW0+PC9kaXY+YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVDYXB0Y2hhMkNvbXBvbmVudCBleHRlbmRzIEJhc2VSZUNhcHRjaGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKlxyXG4gICogTmFtZSBvZiB0aGUgZ2xvYmFsIGV4cGlyZSBjYWxsYmFja1xyXG4gICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvd09uRXJyb3JDYWxsYmFja1Byb3BlcnR5ID0gJ25neF9jYXB0Y2hhX2Vycm9yX2NhbGxiYWNrJztcclxuXHJcbiAgLyoqXHJcbiAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgZXJyb3IgY2FsbGJhY2tcclxuICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSB3aW5kb3dPbkV4cGlyZUNhbGxiYWNrUHJvcGVydHkgPSAnbmd4X2NhcHRjaGFfZXhwaXJlX2NhbGxiYWNrJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlbWVcclxuICAgKi9cclxuICBASW5wdXQoKSB0aGVtZTogJ2RhcmsnIHwgJ2xpZ2h0JyA9ICdsaWdodCc7XHJcblxyXG4gIC8qKlxyXG4gICogU2l6ZVxyXG4gICovXHJcbiAgQElucHV0KCkgc2l6ZTogJ2NvbXBhY3QnIHwgJ25vcm1hbCcgPSAnbm9ybWFsJztcclxuXHJcbiAgLyoqXHJcbiAgICogTGFuZ3VhZ2UgY29kZS4gQXV0by1kZXRlY3RzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgaWYgdW5zcGVjaWZpZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgaGw6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgKiBFeHBpcmVkIGNhbGxiYWNrXHJcbiAgKi9cclxuICBAT3V0cHV0KCkgZXhwaXJlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAvKipcclxuICAqIEVycm9yIGNhbGxiYWNrXHJcbiAgKi9cclxuICBAT3V0cHV0KCkgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIHByb3RlY3RlZCByZWNhcHRjaGFUeXBlOiBSZUNhcHRjaGFUeXBlID0gUmVDYXB0Y2hhVHlwZS5SZUNhcHRjaGEyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSxcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBnbG9iYWxDb25maWc6IE5neENhcHRjaGFDb25maWcsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgem9uZSwgZ2xvYmFsQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG5cclxuICAgIHdpbmRvd1t0aGlzLndpbmRvd09uRXJyb3JDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gICAgd2luZG93W3RoaXMud2luZG93T25FeHBpcmVDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNhcHRjaGFTcGVjaWZpY1NldHVwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWdpc3RlckNhbGxiYWNrcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyByZUNhcHRjaGEgcHJvcGVydGllc1xyXG4gICovXHJcbiAgcHJvdGVjdGVkIGdldENhcHRjaGFQcm9wZXJ0aWVzKCk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnc2l0ZWtleSc6IHRoaXMuX3NpdGVLZXksXHJcbiAgICAgICdjYWxsYmFjayc6IChyZXNwb25zZSkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUNhbGxiYWNrKHJlc3BvbnNlKSksXHJcbiAgICAgICdleHBpcmVkLWNhbGxiYWNrJzogKCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUV4cGlyZUNhbGxiYWNrKCkpLFxyXG4gICAgICAnZXJyb3ItY2FsbGJhY2snOiAoKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuaGFuZGxlRXJyb3JDYWxsYmFjaygpKSxcclxuICAgICAgJ3RoZW1lJzogdGhpcy50aGVtZSxcclxuICAgICAgJ3R5cGUnOiB0aGlzLnR5cGUsXHJcbiAgICAgICdzaXplJzogdGhpcy5zaXplLFxyXG4gICAgICAndGFiaW5kZXgnOiB0aGlzLnRhYkluZGV4XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGdsb2JhbCBjYWxsYmFja3NcclxuICAqL1xyXG4gIHByaXZhdGUgcmVnaXN0ZXJDYWxsYmFja3MoKTogdm9pZCB7XHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkVycm9yQ2FsbGJhY2tQcm9wZXJ0eV0gPSB0aGlzLmhhbmRsZUVycm9yQ2FsbGJhY2suYmluZCh0aGlzKTtcclxuICAgIHdpbmRvd1t0aGlzLndpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eV0gPSB0aGlzLmhhbmRsZUV4cGlyZUNhbGxiYWNrLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGVycm9yIGNhbGxiYWNrXHJcbiAgKi9cclxuICBwcml2YXRlIGhhbmRsZUVycm9yQ2FsbGJhY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9yLm5leHQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgZXhwaXJlZCBjYWxsYmFja1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlRXhwaXJlQ2FsbGJhY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGlyZS5uZXh0KCk7XHJcblxyXG4gICAgLy8gcmVzZXQgY2FwdGNoYSBvbiBleHBpcmUgY2FsbGJhY2tcclxuICAgIHRoaXMucmVzZXRDYXB0Y2hhKCk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLTIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvcmVjYXB0Y2hhLTIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxHQUM3QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0lBZVYsK0NBQXNCO0lBdUM3RCw2QkFDWSxRQUFtQixFQUNuQixJQUFZLEVBQ1osUUFBa0IsRUFDTixZQUE4QjtRQUp0RCxZQU1FLGtCQUFNLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxTQUM5QztRQU5XLGNBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGNBQVEsR0FBUixRQUFRLENBQVU7UUFDTixrQkFBWSxHQUFaLFlBQVksQ0FBa0I7Ozs7OENBdENILDRCQUE0Qjs7OzsrQ0FLM0IsNkJBQTZCOzs7O3NCQUs5QyxPQUFPOzs7O3FCQUtKLFFBQVE7Ozs7dUJBVTNCLElBQUksWUFBWSxFQUFROzs7O3NCQUt6QixJQUFJLFlBQVksRUFBUTs4QkFFRCxhQUFhLENBQUMsVUFBVTs7S0FTaEU7Ozs7O0lBRUQseUNBQVc7Ozs7SUFBWCxVQUFZLE9BQXNCO1FBQ2hDLGlCQUFNLFdBQVcsWUFBQyxPQUFPLENBQUMsQ0FBQztLQUM1Qjs7OztJQUVELHlDQUFXOzs7SUFBWDtRQUNFLGlCQUFNLFdBQVcsV0FBRSxDQUFDO1FBRXBCLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUNsRDs7OztJQUVTLGtEQUFvQjs7O0lBQTlCO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7S0FDMUI7SUFFRDs7TUFFRTs7Ozs7SUFDUSxrREFBb0I7Ozs7SUFBOUI7UUFBQSxpQkFXQztRQVZDLE1BQU0sQ0FBQztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN4QixVQUFVLEVBQUUsVUFBQyxRQUFRLElBQUssT0FBQSxLQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxFQUFsRCxDQUFrRDtZQUM1RSxrQkFBa0IsRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUEzQixDQUEyQixDQUFDLEVBQWhELENBQWdEO1lBQzFFLGdCQUFnQixFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLG1CQUFtQixFQUFFLEVBQTFCLENBQTBCLENBQUMsRUFBL0MsQ0FBK0M7WUFDdkUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQzFCLENBQUM7S0FDSDs7Ozs7SUFLTywrQ0FBaUI7Ozs7O1FBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7Ozs7SUFNN0UsaURBQW1COzs7Ozs7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDWixLQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLEtBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7Ozs7O0lBTVosa0RBQW9COzs7OztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDOztRQUduQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7OztnQkF2SHZCLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsdUVBRXNCO29CQUNoQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEsbUJBQW1CLEVBQW5CLENBQW1CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzs7O2dCQXRCQyxTQUFTO2dCQUVULE1BQU07Z0JBQUUsUUFBUTtnQkFLVCxnQkFBZ0IsdUJBMkRwQixRQUFROzs7d0JBNUJWLEtBQUs7dUJBS0wsS0FBSztxQkFLTCxLQUFLO3lCQUtMLE1BQU07d0JBS04sTUFBTTs7OEJBbEVUO0VBK0J5QyxzQkFBc0I7U0FBbEQsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE5nWm9uZSwgSW5qZWN0b3IsIGZvcndhcmRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi9yZWNhcHRjaGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtcmVjYXB0Y2hhMicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8ZGl2ICNjYXB0Y2hhU2NyaXB0RWxlbT48L2Rpdj5cclxuICA8ZGl2ICNjYXB0Y2hhV3JhcHBlckVsZW0+PC9kaXY+YCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlQ2FwdGNoYTJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZUNhcHRjaGEyQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqXHJcbiAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgZXhwaXJlIGNhbGxiYWNrXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2luZG93T25FcnJvckNhbGxiYWNrUHJvcGVydHkgPSAnbmd4X2NhcHRjaGFfZXJyb3JfY2FsbGJhY2snO1xyXG5cclxuICAvKipcclxuICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBlcnJvciBjYWxsYmFja1xyXG4gICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eSA9ICduZ3hfY2FwdGNoYV9leHBpcmVfY2FsbGJhY2snO1xyXG5cclxuICAvKipcclxuICAgKiBUaGVtZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRoZW1lOiAnZGFyaycgfCAnbGlnaHQnID0gJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgKiBTaXplXHJcbiAgKi9cclxuICBASW5wdXQoKSBzaXplOiAnY29tcGFjdCcgfCAnbm9ybWFsJyA9ICdub3JtYWwnO1xyXG5cclxuICAvKipcclxuICAgKiBMYW5ndWFnZSBjb2RlLiBBdXRvLWRldGVjdHMgdGhlIHVzZXIncyBsYW5ndWFnZSBpZiB1bnNwZWNpZmllZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBobDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAqIEV4cGlyZWQgY2FsbGJhY2tcclxuICAqL1xyXG4gIEBPdXRwdXQoKSBleHBpcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICogRXJyb3IgY2FsbGJhY2tcclxuICAqL1xyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlY2FwdGNoYVR5cGU6IFJlQ2FwdGNoYVR5cGUgPSBSZUNhcHRjaGFUeXBlLlJlQ2FwdGNoYTI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBnbG9iYWxDb25maWc6IE5neENhcHRjaGFDb25maWcsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgem9uZSwgaW5qZWN0b3IsIGdsb2JhbENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuXHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkVycm9yQ2FsbGJhY2tQcm9wZXJ0eV0gPSB7fTtcclxuICAgIHdpbmRvd1t0aGlzLndpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eV0gPSB7fTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjYXB0Y2hhU3BlY2lmaWNTZXR1cCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVnaXN0ZXJDYWxsYmFja3MoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAqL1xyXG4gIHByb3RlY3RlZCBnZXRDYXB0Y2hhUHJvcGVydGllcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ3NpdGVrZXknOiB0aGlzLl9zaXRlS2V5LFxyXG4gICAgICAnY2FsbGJhY2snOiAocmVzcG9uc2UpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVDYWxsYmFjayhyZXNwb25zZSkpLFxyXG4gICAgICAnZXhwaXJlZC1jYWxsYmFjayc6ICgpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVFeHBpcmVDYWxsYmFjaygpKSxcclxuICAgICAgJ2Vycm9yLWNhbGxiYWNrJzogKCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUVycm9yQ2FsbGJhY2soKSksXHJcbiAgICAgICd0aGVtZSc6IHRoaXMudGhlbWUsXHJcbiAgICAgICd0eXBlJzogdGhpcy50eXBlLFxyXG4gICAgICAnc2l6ZSc6IHRoaXMuc2l6ZSxcclxuICAgICAgJ3RhYmluZGV4JzogdGhpcy50YWJJbmRleFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVycyBnbG9iYWwgY2FsbGJhY2tzXHJcbiAgKi9cclxuICBwcml2YXRlIHJlZ2lzdGVyQ2FsbGJhY2tzKCk6IHZvaWQge1xyXG4gICAgd2luZG93W3RoaXMud2luZG93T25FcnJvckNhbGxiYWNrUHJvcGVydHldID0gdGhpcy5oYW5kbGVFcnJvckNhbGxiYWNrLmJpbmQodGhpcyk7XHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkV4cGlyZUNhbGxiYWNrUHJvcGVydHldID0gdGhpcy5oYW5kbGVFeHBpcmVDYWxsYmFjay5iaW5kKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBlcnJvciBjYWxsYmFja1xyXG4gICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvckNhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKG51bGwpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lcnJvci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGV4cGlyZWQgY2FsbGJhY2tcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUV4cGlyZUNhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBpcmUubmV4dCgpO1xyXG5cclxuICAgIC8vIHJlc2V0IGNhcHRjaGEgb24gZXhwaXJlIGNhbGxiYWNrXHJcbiAgICB0aGlzLnJlc2V0Q2FwdGNoYSgpO1xyXG4gIH1cclxufVxyXG5cclxuIl19 |
@@ -1,2 +0,3 @@ | ||
import { EventEmitter, Input, Output, ViewChild, Component, Optional, Renderer2, NgZone, NgModule } from '@angular/core'; | ||
import { EventEmitter, Input, Output, ViewChild, Component, Optional, Renderer2, NgZone, Injector, forwardRef, NgModule } from '@angular/core'; | ||
import { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms'; | ||
import { CommonModule } from '@angular/common'; | ||
@@ -27,7 +28,9 @@ | ||
* @param {?} zone | ||
* @param {?} injector | ||
* @param {?=} globalConfig | ||
*/ | ||
constructor(renderer, zone, globalConfig) { | ||
constructor(renderer, zone, injector, globalConfig) { | ||
this.renderer = renderer; | ||
this.zone = zone; | ||
this.injector = injector; | ||
this.globalConfig = globalConfig; | ||
@@ -81,2 +84,8 @@ this.setupAfterLoad = false; | ||
*/ | ||
ngAfterViewInit() { | ||
this.control = this.injector.get(NgControl).control; | ||
} | ||
/** | ||
* @return {?} | ||
*/ | ||
getGlobalSiteKey() { | ||
@@ -159,2 +168,6 @@ if (this.globalConfig) { | ||
resetCaptcha() { | ||
this.zone.run(() => { | ||
this.onChange(null); | ||
this.onTouched(null); | ||
}); | ||
this.reCaptchaApi.reset(this.captchaId); | ||
@@ -204,2 +217,6 @@ } | ||
this.success.next(callback); | ||
this.zone.run(() => { | ||
this.onChange(callback); | ||
this.onTouched(callback); | ||
}); | ||
if (this.resetCaptchaAfterSuccess) { | ||
@@ -288,3 +305,3 @@ this.resetCaptcha(); | ||
this.renderReCaptcha(); | ||
// setup component if it was flagges as such | ||
// setup component if it was flagged as such | ||
if (this.setupAfterLoad) { | ||
@@ -319,2 +336,25 @@ this.setupAfterLoad = false; | ||
} | ||
/** | ||
* To be aligned with the ControlValueAccessor interface we need to implement this method | ||
* However as we don't want to update the recaptcha, this doesn't need to be implemented | ||
* @param {?} obj | ||
* @return {?} | ||
*/ | ||
writeValue(obj) { } | ||
/** | ||
* This method helps us tie together recaptcha and our formControl values | ||
* @param {?} fn | ||
* @return {?} | ||
*/ | ||
registerOnChange(fn) { | ||
this.onChange = fn; | ||
} | ||
/** | ||
* At some point we might be interested whether the user has touched our component | ||
* @param {?} fn | ||
* @return {?} | ||
*/ | ||
registerOnTouched(fn) { | ||
this.onTouched = fn; | ||
} | ||
} | ||
@@ -348,8 +388,10 @@ BaseReCaptchaComponent.propDecorators = { | ||
* @param {?} zone | ||
* @param {?} injector | ||
* @param {?} globalConfig | ||
*/ | ||
constructor(renderer, zone, globalConfig) { | ||
super(renderer, zone, globalConfig); | ||
constructor(renderer, zone, injector, globalConfig) { | ||
super(renderer, zone, injector, globalConfig); | ||
this.renderer = renderer; | ||
this.zone = zone; | ||
this.injector = injector; | ||
this.globalConfig = globalConfig; | ||
@@ -432,2 +474,6 @@ /** | ||
handleErrorCallback() { | ||
this.zone.run(() => { | ||
this.onChange(null); | ||
this.onTouched(null); | ||
}); | ||
this.error.next(); | ||
@@ -450,3 +496,10 @@ } | ||
<div #captchaScriptElem></div> | ||
<div #captchaWrapperElem></div>` | ||
<div #captchaWrapperElem></div>`, | ||
providers: [ | ||
{ | ||
provide: NG_VALUE_ACCESSOR, | ||
useExisting: forwardRef(() => ReCaptcha2Component), | ||
multi: true, | ||
} | ||
] | ||
},] }, | ||
@@ -458,2 +511,3 @@ ]; | ||
{ type: NgZone }, | ||
{ type: Injector }, | ||
{ type: NgxCaptchaConfig, decorators: [{ type: Optional }] } | ||
@@ -477,8 +531,10 @@ ]; | ||
* @param {?} zone | ||
* @param {?} injector | ||
* @param {?} globalConfig | ||
*/ | ||
constructor(renderer, zone, globalConfig) { | ||
super(renderer, zone, globalConfig); | ||
constructor(renderer, zone, injector, globalConfig) { | ||
super(renderer, zone, injector, globalConfig); | ||
this.renderer = renderer; | ||
this.zone = zone; | ||
this.injector = injector; | ||
this.globalConfig = globalConfig; | ||
@@ -535,3 +591,10 @@ /** | ||
<div #captchaScriptElem></div> | ||
<div #captchaWrapperElem></div>` | ||
<div #captchaWrapperElem></div>`, | ||
providers: [ | ||
{ | ||
provide: NG_VALUE_ACCESSOR, | ||
useExisting: forwardRef(() => InvisibleReCaptchaComponent), | ||
multi: true, | ||
} | ||
] | ||
},] }, | ||
@@ -543,2 +606,3 @@ ]; | ||
{ type: NgZone }, | ||
{ type: Injector }, | ||
{ type: NgxCaptchaConfig, decorators: [{ type: Optional }] } | ||
@@ -605,2 +669,2 @@ ]; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNhcHRjaGEuanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1jYXB0Y2hhL2xpYi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQudHMiLCJuZzovL25neC1jYXB0Y2hhL2xpYi9yZWNhcHRjaGEuY29uZmlnLnRzIiwibmc6Ly9uZ3gtY2FwdGNoYS9saWIvcmVjYXB0Y2hhLTIuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtY2FwdGNoYS9saWIvaW52aXNpYmxlLXJlY2FwdGNoYS5jb21wb25lbnQudHMiLCJuZzovL25neC1jYXB0Y2hhL2xpYi9uZ3gtY2FwdGNoYS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE5nWm9uZSxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE91dHB1dCxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi9yZWNhcHRjaGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XHJcblxyXG5kZWNsYXJlIHZhciBncmVjYXB0Y2hhOiBhbnk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgICBwcml2YXRlIHNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBjYWxsYmFja1xyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSB3aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5ID0gJ25neF9vbmxvYWRfY2FsbGJhY2tfJyArIHRoaXMuZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgcmVDYXB0Y2hhIHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBnbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eSA9ICdncmVjYXB0Y2hhJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZWZpeCBvZiB0aGUgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBjYXB0Y2hhRWxlbVByZWZpeCA9ICduZ3hfY2FwdGNoYV9pZF8nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICAqIEdvb2dsZSdzIHNpdGUga2V5LlxyXG4gICAgICAqIFlvdSBjYW4gZmluZCB0aGlzIHVuZGVyIGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhXHJcbiAgICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3NpdGVLZXk/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbmZpZyB0byB1c2VcclxuICAgICovXHJcbiAgICBASW5wdXQoKSBzaXRlS2V5OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFR5cGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgdHlwZTogJ2F1ZGlvJyB8ICdpbWFnZScgPSAnaW1hZ2UnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGFuZ3VhZ2UgY29kZS4gQXV0by1kZXRlY3RzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgaWYgdW5zcGVjaWZpZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGhsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFRhYiBpbmRleFxyXG4gICAgKi9cclxuICAgIEBJbnB1dCgpIHRhYkluZGV4ID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgcmVjZWl2ZXMgc3VjY2Vzc2Z1bCByZXNwb25zZS5cclxuICAgICAqIENhcHRjaGEgcmVzcG9uc2UgdG9rZW4gaXMgcGFzc2VkIHRvIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZC4gRXZlbnQgcmVjZWl2ZXMgaWQgb2YgdGhlIGNhcHRjaGFcclxuICAgICovXHJcbiAgICBAT3V0cHV0KCkgbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZCAmIHJlYWR5LiBJLmUuIHdoZW4geW91IG5lZWQgdG8gZXhlY3V0ZSBjYXB0Y2hhIG9uIGNvbXBvbmVudCBsb2FkLlxyXG4gICAgKi9cclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhV3JhcHBlckVsZW0nKSBjYXB0Y2hhV3JhcHBlckVsZW06IEVsZW1lbnRSZWY7XHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhU2NyaXB0RWxlbScpIGNhcHRjaGFTY3JpcHRFbGVtOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjYXB0Y2hhRWxlbT86IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWQgb2YgdGhlIGNhcHRjaGEgZWxlbVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY2FwdGNoYUlkPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9sZHMgbGFzdCByZXNwb25zZSB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3VycmVudFJlc3BvbnNlPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgZW5hYmxlZCwgY2FwdGNoYSB3aWxsIHJlc2V0IGFmdGVyIHJlY2VpdmluZyBzdWNjZXNzIHJlc3BvbnNlLiBUaGlzIGlzIHVzZWZ1bFxyXG4gICAgICogd2hlbiBpbnZpc2libGUgY2FwdGNoYSBuZWVkIHRvIGJlIHJlc29sdmVkIG11bHRpcGxlIHRpbWVzIG9uIHNhbWUgcGFnZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgY2FwdGNoYSBpcyBsb2FkZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlZmVyZW5jZSB0byBnbG9iYWwgcmVDYXB0Y2hhIEFQSVxyXG4gICAgKi9cclxuICAgIHB1YmxpYyByZUNhcHRjaGFBcGk/OiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZCBvZiB0aGUgRE9NIGVsZW1lbnQgd3JhcHBpbmcgY2FwdGNoYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FwdGNoYUVsZW1JZD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhcHRjaGEgdHlwZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVjYXB0Y2hhVHlwZTogUmVDYXB0Y2hhVHlwZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgICAgIHByb3RlY3RlZCBnbG9iYWxDb25maWc/OiBOZ3hDYXB0Y2hhQ29uZmlnLFxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlZCBmb3IgY2FwdGNoYSBzcGVjaWZpYyBzZXR1cFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjYXB0Y2hhU3BlY2lmaWNTZXR1cCgpOiB2b2lkO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0R2xvYmFsU2l0ZUtleSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZykge1xyXG4gICAgICAgICAgICAvLyBJbnZpc2libGUgY2FwdGNoYVxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLkludmlzaWJsZVJlQ2FwdGNoYSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBTaXRlS2V5IGZvciBpbnZpc2libGUgcmVDYXB0Y2hhIGlzIG5vdCBzZXQhYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHJlY2FwdGNoYSAyXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLlJlQ2FwdGNoYTIpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgU2l0ZUtleSBmb3IgcmVDYXB0Y2hhMiBpcyBub3Qgc2V0IWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgVW5zdXBwb3J0ZWQgY2FwdGNoYSB0eXBlICcke3RoaXMucmVjYXB0Y2hhVHlwZX0nIWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNpdGVLZXkpIHtcclxuICAgICAgICAgICAgLy8gdXNlIGdsb2JhbCBzaXRlIGtleSBpZiBrZXkgaXMgbm90IGF2YWlsYWJsZVxyXG4gICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5nZXRHbG9iYWxTaXRlS2V5KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdXNlIGNvbW5wb25lbnQgc2l0ZSBrZXlcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBjYXB0Y2hhIHJlc3BvbnNlIGFzIHBlciByZUNhcHRjaGEgZG9jc1xyXG4gICAgKi9cclxuICAgIGdldFJlc3BvbnNlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVDYXB0Y2hhQXBpLmdldFJlc3BvbnNlKHRoaXMuY2FwdGNoYUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgSWQgb2YgY2FwdGNoYSB3aWRnZXRcclxuICAgICovXHJcbiAgICBnZXRDYXB0Y2hhSWQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYXB0Y2hhSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlc2V0cyBjYXB0Y2hhXHJcbiAgICAqL1xyXG4gICAgcmVzZXRDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVDYXB0Y2hhQXBpLnJlc2V0KHRoaXMuY2FwdGNoYUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbGFzdCBzdWJtaXR0ZWQgY2FwdGNoYSByZXNwb25zZVxyXG4gICAgKi9cclxuICAgIGdldEN1cnJlbnRSZXNwb25zZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZXNwb25zZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbG9hZCBjYXB0Y2hhLiBVc2VmdWwgd2hlbiBwcm9wZXJ0aWVzIChpLmUuIHRoZW1lKSBjaGFuZ2VkIGFuZCBjYXB0Y2hhIG5lZWQgdG8gcmVmbGVjdCB0aGVtXHJcbiAgICAqL1xyXG4gICAgcmVsb2FkQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGVuc3VyZUNhcHRjaGFFbGVtKGNhcHRjaGFFbGVtSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNhcHRjaGFFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2FwdGNoYUVsZW1JZCk7XHJcblxyXG4gICAgICAgIGlmICghY2FwdGNoYUVsZW0pIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYENhcHRjaGEgZWxlbWVudCB3aXRoIGlkICcke2NhcHRjaGFFbGVtSWR9JyB3YXMgbm90IGZvdW5kYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhc3NpZ24gY2FwdGNoYSBhbGVtXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbSA9IGNhcHRjaGFFbGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzcG9uc2libGUgZm9yIGluc3RhbnRpYXRpbmcgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlbmRlclJlQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNhcHRjaGFJZCA9IHRoaXMucmVDYXB0Y2hhQXBpLnJlbmRlcih0aGlzLmNhcHRjaGFFbGVtSWQsIHRoaXMuZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKSk7XHJcbiAgICAgICAgdGhpcy5yZWFkeS5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIHJlY2VpdmVzIHJlc3BvbnNlXHJcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQ2FsbGJhY2tcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNhbGxiYWNrKGNhbGxiYWNrOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRSZXNwb25zZSA9IGNhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMuc3VjY2Vzcy5uZXh0KGNhbGxiYWNrKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRDYXB0Y2hhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0ZXJzIHJlQ2FwdGNoYSBzY3JpcHQgaWYgaXRzIG5vdCBhdmFpbGFibGVcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk6IHZvaWQge1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVDYXB0Y2hhQXBpID0ge307XHJcblxyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJSZUNhcHRjaGFTY3JpcHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCBzY3JpcHQgdG8gcGFnZSB3aXRoIHJlZmVyZW5jZSB0byBjYXB0Y2hhIEFQSS4gVGhpcyBoYXMgdG8gYmUgZG9uZSBtYW51YWxseVxyXG4gICAgICogYXMgd2Ugd2FudCB0byBhdm9pZCBhZGRpbmcgc2NyaXB0IHRvIG1haW4gaW5kZXguaHRtbFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWdpc3RlclJlQ2FwdGNoYVNjcmlwdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICBzY3JpcHQuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgc2NyaXB0LnNyYyA9XHJcbiAgICAgICAgICAgIGBodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/b25sb2FkPSR7dGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5fSZyZW5kZXI9ZXhwbGljaXQke3RoaXMuZ2V0TGFuZ3VhZ2VQYXJhbSgpfWA7XHJcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcclxuICAgICAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmNhcHRjaGFTY3JpcHRFbGVtLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0TGFuZ3VhZ2VQYXJhbSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5obCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYCZobD0ke3RoaXMuaGx9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFBzZXVkb1VuaXF1ZU51bWJlcigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTk5OSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgcmVDYXB0Y2hhIEFwaSBpcyBkZWZpbmVkLiBJdCBtYXkgaGFwcGVuIHRoYXQgd2hlbiBuYXZpZ2F0aW5nIGZyb20gYW5ndWxhciBjb21wb25lbnQgdG8gYW5vdGhlclxyXG4gICAgICogdmlhIHJvdXRlciwgdGhlIEFwaSB3YXMgYWxyZWFkeSBsb2FkZWQgcHJldmlvdXNseS4gSW4gc3VjaCBjYXNlcywgZG8gbm90IHJlbmRlciBzY3JpcHQgYWdhaW4uXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc1JlQ2FwdGNoYUFwaURlZmluZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGNhcHRjaGEgc3BlY2lmaWMgc2V0dXBcclxuICAgICAgICB0aGlzLmNhcHRjaGFTcGVjaWZpY1NldHVwKCk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBjYXB0Y2hhIHdyYXBwZXJcclxuICAgICAgICB0aGlzLmNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk7XHJcblxyXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gcGF0Y2ggdGhlIGNhbGxiYWNrIHRocm91Z2ggZ2xvYmFsIHZhcmlhYmxlLCBvdGhlcndpc2UgY2FsbGJhY2sgaXMgbm90IGFjY2Vzc2libGVcclxuICAgICAgICAvLyBub3RlOiBodHRwczovL2dpdGh1Yi5jb20vRW5uZ2FnZS9uZ3gtY2FwdGNoYS9pc3N1ZXMvMlxyXG4gICAgICAgIHdpbmRvd1t0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHldID0gPGFueT4oKCkgPT4gdGhpcy56b25lLnJ1bihcclxuICAgICAgICAgICAgdGhpcy5vbmxvYWRDYWxsYmFjay5iaW5kKHRoaXMpXHJcbiAgICAgICAgKSk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBhbmQgcHV0IHJlQ2FwdGNoYSBzY3JpcHQgdG8gcGFnZVxyXG4gICAgICAgIHRoaXMuZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGdvb2dsZSdzIHJlY2FwdGNoYSBzY3JpcHQgaXMgcmVhZHlcclxuICAgICovXHJcbiAgICBwcml2YXRlIG9ubG9hZENhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGFzc2lnbiByZWZlcmVuY2UgdG8gcmVDYXB0Y2hhIEFwaSBvbmNlIGl0cyBsb2FkZWRcclxuICAgICAgICB0aGlzLnJlQ2FwdGNoYUFwaSA9IGdyZWNhcHRjaGE7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5yZUNhcHRjaGFBcGkpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFJlQ2FwdGNoYSBBcGkgd2FzIG5vdCBpbml0aWFsaXplZCBjb3JyZWN0bHlgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGxvYWRlZCBmbGFnXHJcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIGZpcmUgbG9hZCBldmVudFxyXG4gICAgICAgIHRoaXMubG9hZC5uZXh0KCk7XHJcblxyXG4gICAgICAgIC8vIHJlbmRlciBjYXB0Y2hhXHJcbiAgICAgICAgdGhpcy5yZW5kZXJSZUNhcHRjaGEoKTtcclxuXHJcbiAgICAgICAgLy8gc2V0dXAgY29tcG9uZW50IGlmIGl0IHdhcyBmbGFnZ2VzIGFzIHN1Y2hcclxuICAgICAgICBpZiAodGhpcy5zZXR1cEFmdGVyTG9hZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZU5ld0VsZW1JZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHRjaGFFbGVtUHJlZml4ICsgdGhpcy5nZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGdlbmVyYXRlIG5ldyBjYXB0Y2hhIGlkXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbUlkID0gdGhpcy5nZW5lcmF0ZU5ld0VsZW1JZCgpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2FwdGNoYUVsZW1JZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQ2FwdGNoYSBlbGVtIElkIGlzIG5vdCBzZXRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHJlbW92ZSBvbGQgaHRtbFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVdyYXBwZXJFbGVtLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgd3JhcHBlciBmb3IgY2FwdGNoYVxyXG4gICAgICAgIGNvbnN0IG5ld0VsZW0gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIG5ld0VsZW0uaWQgPSB0aGlzLmNhcHRjaGFFbGVtSWQ7XHJcblxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5jYXB0Y2hhV3JhcHBlckVsZW0ubmF0aXZlRWxlbWVudCwgbmV3RWxlbSk7XHJcblxyXG4gICAgICAgIC8vIHVwZGF0ZSBjYXB0Y2hhIGVsZW1cclxuICAgICAgICB0aGlzLmVuc3VyZUNhcHRjaGFFbGVtKHRoaXMuY2FwdGNoYUVsZW1JZCk7XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG4iLCJleHBvcnQgaW50ZXJmYWNlIElOZ3hDYXB0Y2hhQ29uZmlnIHtcclxuICAgIHJlQ2FwdGNoYTJTaXRlS2V5Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbiAgICBpbnZpc2libGVDYXB0Y2hhU2l0ZUtleT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTmd4Q2FwdGNoYUNvbmZpZyBpbXBsZW1lbnRzIElOZ3hDYXB0Y2hhQ29uZmlnIHtcclxuXHJcbiAgICBwdWJsaWMgcmVDYXB0Y2hhMlNpdGVLZXk/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuICAgIHB1YmxpYyBpbnZpc2libGVDYXB0Y2hhU2l0ZUtleT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG59XHJcbiIsImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBOZ1pvbmUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi9yZWNhcHRjaGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1yZWNhcHRjaGEyJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gIDxkaXYgI2NhcHRjaGFTY3JpcHRFbGVtPjwvZGl2PlxyXG4gIDxkaXYgI2NhcHRjaGFXcmFwcGVyRWxlbT48L2Rpdj5gXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZUNhcHRjaGEyQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqXHJcbiAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgZXhwaXJlIGNhbGxiYWNrXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2luZG93T25FcnJvckNhbGxiYWNrUHJvcGVydHkgPSAnbmd4X2NhcHRjaGFfZXJyb3JfY2FsbGJhY2snO1xyXG5cclxuICAvKipcclxuICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBlcnJvciBjYWxsYmFja1xyXG4gICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eSA9ICduZ3hfY2FwdGNoYV9leHBpcmVfY2FsbGJhY2snO1xyXG5cclxuICAvKipcclxuICAgKiBUaGVtZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRoZW1lOiAnZGFyaycgfCAnbGlnaHQnID0gJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgKiBTaXplXHJcbiAgKi9cclxuICBASW5wdXQoKSBzaXplOiAnY29tcGFjdCcgfCAnbm9ybWFsJyA9ICdub3JtYWwnO1xyXG5cclxuICAvKipcclxuICAgKiBMYW5ndWFnZSBjb2RlLiBBdXRvLWRldGVjdHMgdGhlIHVzZXIncyBsYW5ndWFnZSBpZiB1bnNwZWNpZmllZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBobDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAqIEV4cGlyZWQgY2FsbGJhY2tcclxuICAqL1xyXG4gIEBPdXRwdXQoKSBleHBpcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICogRXJyb3IgY2FsbGJhY2tcclxuICAqL1xyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlY2FwdGNoYVR5cGU6IFJlQ2FwdGNoYVR5cGUgPSBSZUNhcHRjaGFUeXBlLlJlQ2FwdGNoYTI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGdsb2JhbENvbmZpZzogTmd4Q2FwdGNoYUNvbmZpZyxcclxuICApIHtcclxuICAgIHN1cGVyKHJlbmRlcmVyLCB6b25lLCBnbG9iYWxDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcblxyXG4gICAgd2luZG93W3RoaXMud2luZG93T25FcnJvckNhbGxiYWNrUHJvcGVydHldID0ge307XHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkV4cGlyZUNhbGxiYWNrUHJvcGVydHldID0ge307XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2FwdGNoYVNwZWNpZmljU2V0dXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZ2lzdGVyQ2FsbGJhY2tzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHJlQ2FwdGNoYSBwcm9wZXJ0aWVzXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdzaXRla2V5JzogdGhpcy5fc2l0ZUtleSxcclxuICAgICAgJ2NhbGxiYWNrJzogKHJlc3BvbnNlKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuaGFuZGxlQ2FsbGJhY2socmVzcG9uc2UpKSxcclxuICAgICAgJ2V4cGlyZWQtY2FsbGJhY2snOiAoKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuaGFuZGxlRXhwaXJlQ2FsbGJhY2soKSksXHJcbiAgICAgICdlcnJvci1jYWxsYmFjayc6ICgpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVFcnJvckNhbGxiYWNrKCkpLFxyXG4gICAgICAndGhlbWUnOiB0aGlzLnRoZW1lLFxyXG4gICAgICAndHlwZSc6IHRoaXMudHlwZSxcclxuICAgICAgJ3NpemUnOiB0aGlzLnNpemUsXHJcbiAgICAgICd0YWJpbmRleCc6IHRoaXMudGFiSW5kZXhcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlcnMgZ2xvYmFsIGNhbGxiYWNrc1xyXG4gICovXHJcbiAgcHJpdmF0ZSByZWdpc3RlckNhbGxiYWNrcygpOiB2b2lkIHtcclxuICAgIHdpbmRvd1t0aGlzLndpbmRvd09uRXJyb3JDYWxsYmFja1Byb3BlcnR5XSA9IHRoaXMuaGFuZGxlRXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpO1xyXG4gICAgd2luZG93W3RoaXMud2luZG93T25FeHBpcmVDYWxsYmFja1Byb3BlcnR5XSA9IHRoaXMuaGFuZGxlRXhwaXJlQ2FsbGJhY2suYmluZCh0aGlzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgZXJyb3IgY2FsbGJhY2tcclxuICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlRXJyb3JDYWxsYmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZXJyb3IubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBleHBpcmVkIGNhbGxiYWNrXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVFeHBpcmVDYWxsYmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwaXJlLm5leHQoKTtcclxuXHJcbiAgICAvLyByZXNldCBjYXB0Y2hhIG9uIGV4cGlyZSBjYWxsYmFja1xyXG4gICAgdGhpcy5yZXNldENhcHRjaGEoKTtcclxuICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT3B0aW9uYWwsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcywgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi9yZWNhcHRjaGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtaW52aXNpYmxlLXJlY2FwdGNoYScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8ZGl2ICNjYXB0Y2hhU2NyaXB0RWxlbT48L2Rpdj5cclxuICA8ZGl2ICNjYXB0Y2hhV3JhcHBlckVsZW0+PC9kaXY+YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgc2l6ZSByZXByZXNlbnRpbmcgaW52aXNpYmxlIGNhcHRjaGFcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2l6ZSA9ICdpbnZpc2libGUnO1xyXG5cclxuICAvKipcclxuICAgKiBCYWRnZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJhZGdlOiAnYm90dG9tcmlnaHQnIHwgJ2JvdHRvbWxlZnQnIHwgJ2lubGluZScgPSAnYm90dG9tcmlnaHQnO1xyXG5cclxuICAvKipcclxuICAgKiBMYW5ndWFnZSBjb2RlLiBBdXRvLWRldGVjdHMgdGhlIHVzZXIncyBsYW5ndWFnZSBpZiB1bnNwZWNpZmllZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBobDogc3RyaW5nO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVjYXB0Y2hhVHlwZTogUmVDYXB0Y2hhVHlwZSA9IFJlQ2FwdGNoYVR5cGUuSW52aXNpYmxlUmVDYXB0Y2hhO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSxcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBnbG9iYWxDb25maWc6IE5neENhcHRjaGFDb25maWcsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgem9uZSwgZ2xvYmFsQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvZ3JhbWF0aWNhbGx5IGludm9rZSB0aGUgcmVDQVBUQ0hBIGNoZWNrLiBVc2VkIGlmIHRoZSBpbnZpc2libGUgcmVDQVBUQ0hBIGlzIG9uIGEgZGl2IGluc3RlYWQgb2YgYSBidXR0b24uXHJcbiAgICovXHJcbiAgZXhlY3V0ZSgpOiB2b2lkIHtcclxuICAgIC8vIGV4ZWN1dGUgY2FwdGNoYVxyXG4gICAgdGhpcy5yZUNhcHRjaGFBcGkuZXhlY3V0ZSh0aGlzLmNhcHRjaGFJZCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2FwdGNoYVNwZWNpZmljU2V0dXAoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAqL1xyXG4gIHByb3RlY3RlZCBnZXRDYXB0Y2hhUHJvcGVydGllcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ3NpdGVrZXknOiB0aGlzLl9zaXRlS2V5LFxyXG4gICAgICAnY2FsbGJhY2snOiAocmVzcG9uc2UpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVDYWxsYmFjayhyZXNwb25zZSkpLFxyXG4gICAgICAnYmFkZ2UnOiB0aGlzLmJhZGdlLFxyXG4gICAgICAndHlwZSc6IHRoaXMudHlwZSxcclxuICAgICAgJ3RhYmluZGV4JzogdGhpcy50YWJJbmRleCxcclxuICAgICAgJ3NpemUnOiB0aGlzLnNpemVcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG4iLCJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSAnLi9pbnZpc2libGUtcmVjYXB0Y2hhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZUNhcHRjaGEyQ29tcG9uZW50IH0gZnJvbSAnLi9yZWNhcHRjaGEtMi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUmVDYXB0Y2hhMkNvbXBvbmVudCxcbiAgICBJbnZpc2libGVSZUNhcHRjaGFDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFJlQ2FwdGNoYTJDb21wb25lbnQsXG4gICAgSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4Q2FwdGNoYU1vZHVsZSB7XG5cbiAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogTmd4Q2FwdGNoYUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTmd4Q2FwdGNoYU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogTmd4Q2FwdGNoYUNvbmZpZyxcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnLFxuICAgICAgICB9XG4g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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNhcHRjaGEuanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1jYXB0Y2hhL2xpYi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQudHMiLCJuZzovL25neC1jYXB0Y2hhL2xpYi9yZWNhcHRjaGEuY29uZmlnLnRzIiwibmc6Ly9uZ3gtY2FwdGNoYS9saWIvcmVjYXB0Y2hhLTIuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtY2FwdGNoYS9saWIvaW52aXNpYmxlLXJlY2FwdGNoYS5jb21wb25lbnQudHMiLCJuZzovL25neC1jYXB0Y2hhL2xpYi9uZ3gtY2FwdGNoYS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLCBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBOZ1pvbmUsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgUmVDYXB0Y2hhVHlwZSB9IGZyb20gJy4vcmVjYXB0Y2hhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE5neENhcHRjaGFDb25maWcgfSBmcm9tICcuL3JlY2FwdGNoYS5jb25maWcnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmRlY2xhcmUgdmFyIGdyZWNhcHRjaGE6IGFueTtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogRm9ybSBDb250cm9sIHRvIGJlIGVuYWJsZSB1c2FnZSBpbiByZWFjdGl2ZSBmb3Jtc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNvbnRyb2w6IEZvcm1Db250cm9sO1xyXG5cclxuICAgIHByaXZhdGUgc2V0dXBBZnRlckxvYWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICogTmFtZSBvZiB0aGUgZ2xvYmFsIGNhbGxiYWNrXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHkgPSAnbmd4X29ubG9hZF9jYWxsYmFja18nICsgdGhpcy5nZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgb2YgdGhlIGdsb2JhbCByZUNhcHRjaGEgcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5ID0gJ2dyZWNhcHRjaGEnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlZml4IG9mIHRoZSBjYXB0Y2hhIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhcHRjaGFFbGVtUHJlZml4ID0gJ25neF9jYXB0Y2hhX2lkXyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgICogR29vZ2xlJ3Mgc2l0ZSBrZXkuXHJcbiAgICAgICogWW91IGNhbiBmaW5kIHRoaXMgdW5kZXIgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGFcclxuICAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfc2l0ZUtleT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICogQ29uZmlnIHRvIHVzZVxyXG4gICAgKi9cclxuICAgIEBJbnB1dCgpIHNpdGVLZXk6IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHlwZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB0eXBlOiAnYXVkaW8nIHwgJ2ltYWdlJyA9ICdpbWFnZSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMYW5ndWFnZSBjb2RlLiBBdXRvLWRldGVjdHMgdGhlIHVzZXIncyBsYW5ndWFnZSBpZiB1bnNwZWNpZmllZC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgaGw6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICogVGFiIGluZGV4XHJcbiAgICAqL1xyXG4gICAgQElucHV0KCkgdGFiSW5kZXggPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSByZWNlaXZlcyBzdWNjZXNzZnVsIHJlc3BvbnNlLlxyXG4gICAgICogQ2FwdGNoYSByZXNwb25zZSB0b2tlbiBpcyBwYXNzZWQgdG8gZXZlbnQuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgaXMgbG9hZGVkLiBFdmVudCByZWNlaXZlcyBpZCBvZiB0aGUgY2FwdGNoYVxyXG4gICAgKi9cclxuICAgIEBPdXRwdXQoKSBsb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgaXMgbG9hZGVkICYgcmVhZHkuIEkuZS4gd2hlbiB5b3UgbmVlZCB0byBleGVjdXRlIGNhcHRjaGEgb24gY29tcG9uZW50IGxvYWQuXHJcbiAgICAqL1xyXG4gICAgQE91dHB1dCgpIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2NhcHRjaGFXcmFwcGVyRWxlbScpIGNhcHRjaGFXcmFwcGVyRWxlbTogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoJ2NhcHRjaGFTY3JpcHRFbGVtJykgY2FwdGNoYVNjcmlwdEVsZW06IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYXB0Y2hhIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNhcHRjaGFFbGVtPzogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZCBvZiB0aGUgY2FwdGNoYSBlbGVtXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjYXB0Y2hhSWQ/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb2xkcyBsYXN0IHJlc3BvbnNlIHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjdXJyZW50UmVzcG9uc2U/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBlbmFibGVkLCBjYXB0Y2hhIHdpbGwgcmVzZXQgYWZ0ZXIgcmVjZWl2aW5nIHN1Y2Nlc3MgcmVzcG9uc2UuIFRoaXMgaXMgdXNlZnVsXHJcbiAgICAgKiB3aGVuIGludmlzaWJsZSBjYXB0Y2hhIG5lZWQgdG8gYmUgcmVzb2x2ZWQgbXVsdGlwbGUgdGltZXMgb24gc2FtZSBwYWdlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZXNldENhcHRjaGFBZnRlclN1Y2Nlc3MgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyBpZiBjYXB0Y2hhIGlzIGxvYWRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICogUmVmZXJlbmNlIHRvIGdsb2JhbCByZUNhcHRjaGEgQVBJXHJcbiAgICAqL1xyXG4gICAgcHVibGljIHJlQ2FwdGNoYUFwaT86IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElkIG9mIHRoZSBET00gZWxlbWVudCB3cmFwcGluZyBjYXB0Y2hhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjYXB0Y2hhRWxlbUlkPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FwdGNoYSB0eXBlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWNhcHRjaGFUeXBlOiBSZUNhcHRjaGFUeXBlO1xyXG5cclxuICAvKipcclxuICAgKiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3NvclxyXG4gICAqL1xyXG4gICAgcHJvdGVjdGVkIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZyApID0+IHZvaWQ7XHJcbiAgICBwcm90ZWN0ZWQgb25Ub3VjaGVkOiAodmFsdWU6IHN0cmluZyApID0+IHZvaWQ7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByb3RlY3RlZCB6b25lOiBOZ1pvbmUsXHJcbiAgICAgICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcm90ZWN0ZWQgZ2xvYmFsQ29uZmlnPzogTmd4Q2FwdGNoYUNvbmZpZyxcclxuICAgICkge31cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCkuY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogR2V0cyByZUNhcHRjaGEgcHJvcGVydGllc1xyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRDYXB0Y2hhUHJvcGVydGllcygpOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVc2VkIGZvciBjYXB0Y2hhIHNwZWNpZmljIHNldHVwXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNhcHRjaGFTcGVjaWZpY1NldHVwKCk6IHZvaWQ7XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRHbG9iYWxTaXRlS2V5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnKSB7XHJcbiAgICAgICAgICAgIC8vIEludmlzaWJsZSBjYXB0Y2hhXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlY2FwdGNoYVR5cGUgPT09IFJlQ2FwdGNoYVR5cGUuSW52aXNpYmxlUmVDYXB0Y2hhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpdGVLZXkgZm9yIGludmlzaWJsZSByZUNhcHRjaGEgaXMgbm90IHNldCFgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSgpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gcmVjYXB0Y2hhIDJcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlY2FwdGNoYVR5cGUgPT09IFJlQ2FwdGNoYVR5cGUuUmVDYXB0Y2hhMikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBTaXRlS2V5IGZvciByZUNhcHRjaGEyIGlzIG5vdCBzZXQhYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBVbnN1cHBvcnRlZCBjYXB0Y2hhIHR5cGUgJyR7dGhpcy5yZWNhcHRjaGFUeXBlfSchYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2l0ZUtleSkge1xyXG4gICAgICAgICAgICAvLyB1c2UgZ2xvYmFsIHNpdGUga2V5IGlmIGtleSBpcyBub3QgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgIHRoaXMuX3NpdGVLZXkgPSB0aGlzLmdldEdsb2JhbFNpdGVLZXkoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB1c2UgY29tbnBvbmVudCBzaXRlIGtleVxyXG4gICAgICAgICAgICBpZiAodGhpcy5zaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NpdGVLZXkgPSB0aGlzLnNpdGVLZXkoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NpdGVLZXkgPSB0aGlzLnNpdGVLZXk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHldID0ge307XHJcbiAgICAgICAgd2luZG93W3RoaXMuZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHldID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGNhcHRjaGEgcmVzcG9uc2UgYXMgcGVyIHJlQ2FwdGNoYSBkb2NzXHJcbiAgICAqL1xyXG4gICAgZ2V0UmVzcG9uc2UoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZUNhcHRjaGFBcGkuZ2V0UmVzcG9uc2UodGhpcy5jYXB0Y2hhSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBJZCBvZiBjYXB0Y2hhIHdpZGdldFxyXG4gICAgKi9cclxuICAgIGdldENhcHRjaGFJZCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHRjaGFJZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogUmVzZXRzIGNhcHRjaGFcclxuICAgICovXHJcbiAgICByZXNldENhcHRjaGEoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQobnVsbCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5yZUNhcHRjaGFBcGkucmVzZXQodGhpcy5jYXB0Y2hhSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBsYXN0IHN1Ym1pdHRlZCBjYXB0Y2hhIHJlc3BvbnNlXHJcbiAgICAqL1xyXG4gICAgZ2V0Q3VycmVudFJlc3BvbnNlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVsb2FkIGNhcHRjaGEuIFVzZWZ1bCB3aGVuIHByb3BlcnRpZXMgKGkuZS4gdGhlbWUpIGNoYW5nZWQgYW5kIGNhcHRjaGEgbmVlZCB0byByZWZsZWN0IHRoZW1cclxuICAgICovXHJcbiAgICByZWxvYWRDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZW5zdXJlQ2FwdGNoYUVsZW0oY2FwdGNoYUVsZW1JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY2FwdGNoYUVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjYXB0Y2hhRWxlbUlkKTtcclxuXHJcbiAgICAgICAgaWYgKCFjYXB0Y2hhRWxlbSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQ2FwdGNoYSBlbGVtZW50IHdpdGggaWQgJyR7Y2FwdGNoYUVsZW1JZH0nIHdhcyBub3QgZm91bmRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGFzc2lnbiBjYXB0Y2hhIGFsZW1cclxuICAgICAgICB0aGlzLmNhcHRjaGFFbGVtID0gY2FwdGNoYUVsZW07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNwb25zaWJsZSBmb3IgaW5zdGFudGlhdGluZyBjYXB0Y2hhIGVsZW1lbnRcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVuZGVyUmVDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2FwdGNoYUlkID0gdGhpcy5yZUNhcHRjaGFBcGkucmVuZGVyKHRoaXMuY2FwdGNoYUVsZW1JZCwgdGhpcy5nZXRDYXB0Y2hhUHJvcGVydGllcygpKTtcclxuICAgICAgICB0aGlzLnJlYWR5Lm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgcmVjZWl2ZXMgcmVzcG9uc2VcclxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsYmFja1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgaGFuZGxlQ2FsbGJhY2soY2FsbGJhY2s6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFJlc3BvbnNlID0gY2FsbGJhY2s7XHJcbiAgICAgICAgdGhpcy5zdWNjZXNzLm5leHQoY2FsbGJhY2spO1xyXG5cclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25DaGFuZ2UoY2FsbGJhY2spO1xyXG4gICAgICAgICAgdGhpcy5vblRvdWNoZWQoY2FsbGJhY2spO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5yZXNldENhcHRjaGFBZnRlclN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNldENhcHRjaGEoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RlcnMgcmVDYXB0Y2hhIHNjcmlwdCBpZiBpdHMgbm90IGF2YWlsYWJsZVxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBlbnN1cmVSZUNhcHRjaGFTY3JpcHQoKTogdm9pZCB7XHJcbiAgICAgICAgd2luZG93W3RoaXMuZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHldID0ge307XHJcbiAgICAgICAgdGhpcy5yZUNhcHRjaGFBcGkgPSB7fTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWdpc3RlclJlQ2FwdGNoYVNjcmlwdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIHNjcmlwdCB0byBwYWdlIHdpdGggcmVmZXJlbmNlIHRvIGNhcHRjaGEgQVBJLiBUaGlzIGhhcyB0byBiZSBkb25lIG1hbnVhbGx5XHJcbiAgICAgKiBhcyB3ZSB3YW50IHRvIGF2b2lkIGFkZGluZyBzY3JpcHQgdG8gbWFpbiBpbmRleC5odG1sXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlZ2lzdGVyUmVDYXB0Y2hhU2NyaXB0KCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAgICAgIHNjcmlwdC5pbm5lckhUTUwgPSAnJztcclxuICAgICAgICBzY3JpcHQuc3JjID1cclxuICAgICAgICAgICAgYGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS5qcz9vbmxvYWQ9JHt0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHl9JnJlbmRlcj1leHBsaWNpdCR7dGhpcy5nZXRMYW5ndWFnZVBhcmFtKCl9YDtcclxuICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xyXG4gICAgICAgIHNjcmlwdC5kZWZlciA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVNjcmlwdEVsZW0ubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRMYW5ndWFnZVBhcmFtKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBgJmhsPSR7dGhpcy5obH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA5OTk5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiByZUNhcHRjaGEgQXBpIGlzIGRlZmluZWQuIEl0IG1heSBoYXBwZW4gdGhhdCB3aGVuIG5hdmlnYXRpbmcgZnJvbSBhbmd1bGFyIGNvbXBvbmVudCB0byBhbm90aGVyXHJcbiAgICAgKiB2aWEgcm91dGVyLCB0aGUgQXBpIHdhcyBhbHJlYWR5IGxvYWRlZCBwcmV2aW91c2x5LiBJbiBzdWNoIGNhc2VzLCBkbyBub3QgcmVuZGVyIHNjcmlwdCBhZ2Fpbi5cclxuICAgICovXHJcbiAgICBwcml2YXRlIGlzUmVDYXB0Y2hhQXBpRGVmaW5lZCgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0dXBDb21wb25lbnQoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gY2FwdGNoYSBzcGVjaWZpYyBzZXR1cFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVNwZWNpZmljU2V0dXAoKTtcclxuXHJcbiAgICAgICAgLy8gY3JlYXRlIGNhcHRjaGEgd3JhcHBlclxyXG4gICAgICAgIHRoaXMuY3JlYXRlQW5kU2V0Q2FwdGNoYUVsZW0oKTtcclxuXHJcbiAgICAgICAgLy8gd2UgbmVlZCB0byBwYXRjaCB0aGUgY2FsbGJhY2sgdGhyb3VnaCBnbG9iYWwgdmFyaWFibGUsIG90aGVyd2lzZSBjYWxsYmFjayBpcyBub3QgYWNjZXNzaWJsZVxyXG4gICAgICAgIC8vIG5vdGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Fbm5nYWdlL25neC1jYXB0Y2hhL2lzc3Vlcy8yXHJcbiAgICAgICAgd2luZG93W3RoaXMud2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eV0gPSA8YW55PigoKSA9PiB0aGlzLnpvbmUucnVuKFxyXG4gICAgICAgICAgICB0aGlzLm9ubG9hZENhbGxiYWNrLmJpbmQodGhpcylcclxuICAgICAgICApKTtcclxuXHJcbiAgICAgICAgLy8gY3JlYXRlIGFuZCBwdXQgcmVDYXB0Y2hhIHNjcmlwdCB0byBwYWdlXHJcbiAgICAgICAgdGhpcy5lbnN1cmVSZUNhcHRjaGFTY3JpcHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQ2FsbGVkIHdoZW4gZ29vZ2xlJ3MgcmVjYXB0Y2hhIHNjcmlwdCBpcyByZWFkeVxyXG4gICAgKi9cclxuICAgIHByaXZhdGUgb25sb2FkQ2FsbGJhY2soKTogdm9pZCB7XHJcbiAgICAgICAgLy8gYXNzaWduIHJlZmVyZW5jZSB0byByZUNhcHRjaGEgQXBpIG9uY2UgaXRzIGxvYWRlZFxyXG4gICAgICAgIHRoaXMucmVDYXB0Y2hhQXBpID0gZ3JlY2FwdGNoYTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnJlQ2FwdGNoYUFwaSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgUmVDYXB0Y2hhIEFwaSB3YXMgbm90IGluaXRpYWxpemVkIGNvcnJlY3RseWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbG9hZGVkIGZsYWdcclxuICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gZmlyZSBsb2FkIGV2ZW50XHJcbiAgICAgICAgdGhpcy5sb2FkLm5leHQoKTtcclxuXHJcbiAgICAgICAgLy8gcmVuZGVyIGNhcHRjaGFcclxuICAgICAgICB0aGlzLnJlbmRlclJlQ2FwdGNoYSgpO1xyXG5cclxuICAgICAgICAvLyBzZXR1cCBjb21wb25lbnQgaWYgaXQgd2FzIGZsYWdnZWQgYXMgc3VjaFxyXG4gICAgICAgIGlmICh0aGlzLnNldHVwQWZ0ZXJMb2FkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBBZnRlckxvYWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlTmV3RWxlbUlkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwdGNoYUVsZW1QcmVmaXggKyB0aGlzLmdldFBzZXVkb1VuaXF1ZU51bWJlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlQW5kU2V0Q2FwdGNoYUVsZW0oKTogdm9pZCB7XHJcbiAgICAgICAgLy8gZ2VuZXJhdGUgbmV3IGNhcHRjaGEgaWRcclxuICAgICAgICB0aGlzLmNhcHRjaGFFbGVtSWQgPSB0aGlzLmdlbmVyYXRlTmV3RWxlbUlkKCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jYXB0Y2hhRWxlbUlkKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBDYXB0Y2hhIGVsZW0gSWQgaXMgbm90IHNldGApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gcmVtb3ZlIG9sZCBodG1sXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhV3JhcHBlckVsZW0ubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcclxuXHJcbiAgICAgICAgLy8gY3JlYXRlIG5ldyB3cmFwcGVyIGZvciBjYXB0Y2hhXHJcbiAgICAgICAgY29uc3QgbmV3RWxlbSA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgbmV3RWxlbS5pZCA9IHRoaXMuY2FwdGNoYUVsZW1JZDtcclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmNhcHRjaGFXcmFwcGVyRWxlbS5uYXRpdmVFbGVtZW50LCBuZXdFbGVtKTtcclxuXHJcbiAgICAgICAgLy8gdXBkYXRlIGNhcHRjaGEgZWxlbVxyXG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwdGNoYUVsZW0odGhpcy5jYXB0Y2hhRWxlbUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRvIGJlIGFsaWduZWQgd2l0aCB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kXHJcbiAgICAgKiBIb3dldmVyIGFzIHdlIGRvbid0IHdhbnQgdG8gdXBkYXRlIHRoZSByZWNhcHRjaGEsIHRoaXMgZG9lc24ndCBuZWVkIHRvIGJlIGltcGxlbWVudGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7fVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgaGVscHMgdXMgdGllIHRvZ2V0aGVyIHJlY2FwdGNoYSBhbmQgb3VyIGZvcm1Db250cm9sIHZhbHVlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQXQgc29tZSBwb2ludCB3ZSBtaWdodCBiZSBpbnRlcmVzdGVkIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHRvdWNoZWQgb3VyIGNvbXBvbmVudFxyXG4gICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcbn1cclxuXHJcbiIsImV4cG9ydCBpbnRlcmZhY2UgSU5neENhcHRjaGFDb25maWcge1xyXG4gICAgcmVDYXB0Y2hhMlNpdGVLZXk/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuICAgIGludmlzaWJsZUNhcHRjaGFTaXRlS2V5Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBOZ3hDYXB0Y2hhQ29uZmlnIGltcGxlbWVudHMgSU5neENhcHRjaGFDb25maWcge1xyXG5cclxuICAgIHB1YmxpYyByZUNhcHRjaGEyU2l0ZUtleT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG4gICAgcHVibGljIGludmlzaWJsZUNhcHRjaGFTaXRlS2V5Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbn1cclxuIiwiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE5nWm9uZSwgSW5qZWN0b3IsIGZvcndhcmRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi9yZWNhcHRjaGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtcmVjYXB0Y2hhMicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8ZGl2ICNjYXB0Y2hhU2NyaXB0RWxlbT48L2Rpdj5cclxuICA8ZGl2ICNjYXB0Y2hhV3JhcHBlckVsZW0+PC9kaXY+YCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlQ2FwdGNoYTJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZUNhcHRjaGEyQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqXHJcbiAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgZXhwaXJlIGNhbGxiYWNrXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2luZG93T25FcnJvckNhbGxiYWNrUHJvcGVydHkgPSAnbmd4X2NhcHRjaGFfZXJyb3JfY2FsbGJhY2snO1xyXG5cclxuICAvKipcclxuICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBlcnJvciBjYWxsYmFja1xyXG4gICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eSA9ICduZ3hfY2FwdGNoYV9leHBpcmVfY2FsbGJhY2snO1xyXG5cclxuICAvKipcclxuICAgKiBUaGVtZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRoZW1lOiAnZGFyaycgfCAnbGlnaHQnID0gJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgKiBTaXplXHJcbiAgKi9cclxuICBASW5wdXQoKSBzaXplOiAnY29tcGFjdCcgfCAnbm9ybWFsJyA9ICdub3JtYWwnO1xyXG5cclxuICAvKipcclxuICAgKiBMYW5ndWFnZSBjb2RlLiBBdXRvLWRldGVjdHMgdGhlIHVzZXIncyBsYW5ndWFnZSBpZiB1bnNwZWNpZmllZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBobDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAqIEV4cGlyZWQgY2FsbGJhY2tcclxuICAqL1xyXG4gIEBPdXRwdXQoKSBleHBpcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICogRXJyb3IgY2FsbGJhY2tcclxuICAqL1xyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlY2FwdGNoYVR5cGU6IFJlQ2FwdGNoYVR5cGUgPSBSZUNhcHRjaGFUeXBlLlJlQ2FwdGNoYTI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBnbG9iYWxDb25maWc6IE5neENhcHRjaGFDb25maWcsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgem9uZSwgaW5qZWN0b3IsIGdsb2JhbENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuXHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkVycm9yQ2FsbGJhY2tQcm9wZXJ0eV0gPSB7fTtcclxuICAgIHdpbmRvd1t0aGlzLndpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eV0gPSB7fTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjYXB0Y2hhU3BlY2lmaWNTZXR1cCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVnaXN0ZXJDYWxsYmFja3MoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAqL1xyXG4gIHByb3RlY3RlZCBnZXRDYXB0Y2hhUHJvcGVydGllcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ3NpdGVrZXknOiB0aGlzLl9zaXRlS2V5LFxyXG4gICAgICAnY2FsbGJhY2snOiAocmVzcG9uc2UpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVDYWxsYmFjayhyZXNwb25zZSkpLFxyXG4gICAgICAnZXhwaXJlZC1jYWxsYmFjayc6ICgpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVFeHBpcmVDYWxsYmFjaygpKSxcclxuICAgICAgJ2Vycm9yLWNhbGxiYWNrJzogKCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUVycm9yQ2FsbGJhY2soKSksXHJcbiAgICAgICd0aGVtZSc6IHRoaXMudGhlbWUsXHJcbiAgICAgICd0eXBlJzogdGhpcy50eXBlLFxyXG4gICAgICAnc2l6ZSc6IHRoaXMuc2l6ZSxcclxuICAgICAgJ3RhYmluZGV4JzogdGhpcy50YWJJbmRleFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVycyBnbG9iYWwgY2FsbGJhY2tzXHJcbiAgKi9cclxuICBwcml2YXRlIHJlZ2lzdGVyQ2FsbGJhY2tzKCk6IHZvaWQge1xyXG4gICAgd2luZG93W3RoaXMud2luZG93T25FcnJvckNhbGxiYWNrUHJvcGVydHldID0gdGhpcy5oYW5kbGVFcnJvckNhbGxiYWNrLmJpbmQodGhpcyk7XHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkV4cGlyZUNhbGxiYWNrUHJvcGVydHldID0gdGhpcy5oYW5kbGVFeHBpcmVDYWxsYmFjay5iaW5kKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBlcnJvciBjYWxsYmFja1xyXG4gICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvckNhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKG51bGwpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lcnJvci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGV4cGlyZWQgY2FsbGJhY2tcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUV4cGlyZUNhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBpcmUubmV4dCgpO1xyXG5cclxuICAgIC8vIHJlc2V0IGNhcHRjaGEgb24gZXhwaXJlIGNhbGxiYWNrXHJcbiAgICB0aGlzLnJlc2V0Q2FwdGNoYSgpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPcHRpb25hbCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzLCBOZ1pvbmUsIEluamVjdG9yLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi9yZWNhcHRjaGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LWludmlzaWJsZS1yZWNhcHRjaGEnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgPGRpdiAjY2FwdGNoYVNjcmlwdEVsZW0+PC9kaXY+XHJcbiAgPGRpdiAjY2FwdGNoYVdyYXBwZXJFbGVtPjwvZGl2PmAsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnZpc2libGVSZUNhcHRjaGFDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnZpc2libGVSZUNhcHRjaGFDb21wb25lbnQgZXh0ZW5kcyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBzaXplIHJlcHJlc2VudGluZyBpbnZpc2libGUgY2FwdGNoYVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBzaXplID0gJ2ludmlzaWJsZSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhZGdlXHJcbiAgICovXHJcbiAgQElucHV0KCkgYmFkZ2U6ICdib3R0b21yaWdodCcgfCAnYm90dG9tbGVmdCcgfCAnaW5saW5lJyA9ICdib3R0b21yaWdodCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIExhbmd1YWdlIGNvZGUuIEF1dG8tZGV0ZWN0cyB0aGUgdXNlcidzIGxhbmd1YWdlIGlmIHVuc3BlY2lmaWVkLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhsOiBzdHJpbmc7XHJcblxyXG4gIHByb3RlY3RlZCByZWNhcHRjaGFUeXBlOiBSZUNhcHRjaGFUeXBlID0gUmVDYXB0Y2hhVHlwZS5JbnZpc2libGVSZUNhcHRjaGE7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBnbG9iYWxDb25maWc6IE5neENhcHRjaGFDb25maWcsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgem9uZSwgaW5qZWN0b3IsIGdsb2JhbENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2dyYW1hdGljYWxseSBpbnZva2UgdGhlIHJlQ0FQVENIQSBjaGVjay4gVXNlZCBpZiB0aGUgaW52aXNpYmxlIHJlQ0FQVENIQSBpcyBvbiBhIGRpdiBpbnN0ZWFkIG9mIGEgYnV0dG9uLlxyXG4gICAqL1xyXG4gIGV4ZWN1dGUoKTogdm9pZCB7XHJcbiAgICAvLyBleGVjdXRlIGNhcHRjaGFcclxuICAgIHRoaXMucmVDYXB0Y2hhQXBpLmV4ZWN1dGUodGhpcy5jYXB0Y2hhSWQpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNhcHRjaGFTcGVjaWZpY1NldHVwKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBHZXRzIHJlQ2FwdGNoYSBwcm9wZXJ0aWVzXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdzaXRla2V5JzogdGhpcy5fc2l0ZUtleSxcclxuICAgICAgJ2NhbGxiYWNrJzogKHJlc3BvbnNlKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuaGFuZGxlQ2FsbGJhY2socmVzcG9uc2UpKSxcclxuICAgICAgJ2JhZGdlJzogdGhpcy5iYWRnZSxcclxuICAgICAgJ3R5cGUnOiB0aGlzLnR5cGUsXHJcbiAgICAgICd0YWJpbmRleCc6IHRoaXMudGFiSW5kZXgsXHJcbiAgICAgICdzaXplJzogdGhpcy5zaXplXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cclxuIiwiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEludmlzaWJsZVJlQ2FwdGNoYUNvbXBvbmVudCB9IGZyb20gJy4vaW52aXNpYmxlLXJlY2FwdGNoYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVDYXB0Y2hhMkNvbXBvbmVudCB9IGZyb20gJy4vcmVjYXB0Y2hhLTIuY29tcG9uZW50JztcbmltcG9ydCB7IE5neENhcHRjaGFDb25maWcgfSBmcm9tICcuL3JlY2FwdGNoYS5jb25maWcnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFJlQ2FwdGNoYTJDb21wb25lbnQsXG4gICAgSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBSZUNhcHRjaGEyQ29tcG9uZW50LFxuICAgIEludmlzaWJsZVJlQ2FwdGNoYUNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neENhcHRjaGFNb2R1bGUge1xuXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IE5neENhcHRjaGFDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE5neENhcHRjaGFNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IE5neENhcHRjaGFDb25maWcsXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cblxuXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0FBb0JBOzs7Ozs7O0lBbUhJLFlBQ2MsUUFBbUIsRUFDbkIsSUFBWSxFQUNaLFFBQWtCLEVBQ2xCLFlBQStCO1FBSC9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsaUJBQVksR0FBWixZQUFZLENBQW1COzhCQWpIcEIsS0FBSzs7Ozs0Q0FLb0Isc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFOzs7O3VDQUsxRCxZQUFZOzs7O2lDQUtsQixpQkFBaUI7Ozs7b0JBZ0JyQixPQUFPOzs7O3dCQVV0QixDQUFDOzs7Ozt1QkFNRCxJQUFJLFlBQVksRUFBVTs7OztvQkFLN0IsSUFBSSxZQUFZLEVBQVU7Ozs7cUJBS3pCLElBQUksWUFBWSxFQUFROzs7Ozt3Q0F3QkwsS0FBSzs7Ozt3QkFLeEIsS0FBSztLQTRCbkI7Ozs7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFT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 |
@@ -1,8 +0,14 @@ | ||
import { ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core'; | ||
import { AfterViewInit, ElementRef, EventEmitter, Injector, NgZone, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core'; | ||
import { ReCaptchaType } from './recaptcha-type.enum'; | ||
import { NgxCaptchaConfig } from './recaptcha.config'; | ||
export declare abstract class BaseReCaptchaComponent implements OnChanges, OnDestroy { | ||
import { ControlValueAccessor } from '@angular/forms'; | ||
export declare abstract class BaseReCaptchaComponent implements OnChanges, OnDestroy, ControlValueAccessor, AfterViewInit { | ||
protected renderer: Renderer2; | ||
protected zone: NgZone; | ||
protected injector: Injector; | ||
protected globalConfig: NgxCaptchaConfig; | ||
/** | ||
* Form Control to be enable usage in reactive forms | ||
*/ | ||
private control; | ||
private setupAfterLoad; | ||
@@ -90,4 +96,10 @@ /** | ||
protected abstract recaptchaType: ReCaptchaType; | ||
constructor(renderer: Renderer2, zone: NgZone, globalConfig?: NgxCaptchaConfig); | ||
/** | ||
* Required by ControlValueAccessor | ||
*/ | ||
protected onChange: (value: string) => void; | ||
protected onTouched: (value: string) => void; | ||
protected constructor(renderer: Renderer2, zone: NgZone, injector: Injector, globalConfig?: NgxCaptchaConfig); | ||
ngAfterViewInit(): void; | ||
/** | ||
* Gets reCaptcha properties | ||
@@ -156,2 +168,15 @@ */ | ||
private createAndSetCaptchaElem(); | ||
/** | ||
* To be aligned with the ControlValueAccessor interface we need to implement this method | ||
* However as we don't want to update the recaptcha, this doesn't need to be implemented | ||
*/ | ||
writeValue(obj: any): void; | ||
/** | ||
* This method helps us tie together recaptcha and our formControl values | ||
*/ | ||
registerOnChange(fn: any): void; | ||
/** | ||
* At some point we might be interested whether the user has touched our component | ||
*/ | ||
registerOnTouched(fn: any): void; | ||
} |
@@ -1,2 +0,2 @@ | ||
import { OnChanges, Renderer2, SimpleChanges, NgZone } from '@angular/core'; | ||
import { OnChanges, Renderer2, SimpleChanges, NgZone, Injector } from '@angular/core'; | ||
import { BaseReCaptchaComponent } from './base-recaptcha.component'; | ||
@@ -8,2 +8,3 @@ import { ReCaptchaType } from './recaptcha-type.enum'; | ||
protected zone: NgZone; | ||
protected injector: Injector; | ||
protected globalConfig: NgxCaptchaConfig; | ||
@@ -23,3 +24,3 @@ /** | ||
protected recaptchaType: ReCaptchaType; | ||
constructor(renderer: Renderer2, zone: NgZone, globalConfig: NgxCaptchaConfig); | ||
constructor(renderer: Renderer2, zone: NgZone, injector: Injector, globalConfig: NgxCaptchaConfig); | ||
ngOnChanges(changes: SimpleChanges): void; | ||
@@ -26,0 +27,0 @@ /** |
@@ -1,2 +0,2 @@ | ||
import { EventEmitter, OnChanges, OnDestroy, Renderer2, SimpleChanges, NgZone } from '@angular/core'; | ||
import { EventEmitter, OnChanges, OnDestroy, Renderer2, SimpleChanges, NgZone, Injector } from '@angular/core'; | ||
import { BaseReCaptchaComponent } from './base-recaptcha.component'; | ||
@@ -8,2 +8,3 @@ import { ReCaptchaType } from './recaptcha-type.enum'; | ||
protected zone: NgZone; | ||
protected injector: Injector; | ||
protected globalConfig: NgxCaptchaConfig; | ||
@@ -39,3 +40,3 @@ /** | ||
protected recaptchaType: ReCaptchaType; | ||
constructor(renderer: Renderer2, zone: NgZone, globalConfig: NgxCaptchaConfig); | ||
constructor(renderer: Renderer2, zone: NgZone, injector: Injector, globalConfig: NgxCaptchaConfig); | ||
ngOnChanges(changes: SimpleChanges): void; | ||
@@ -42,0 +43,0 @@ ngOnDestroy(): void; |
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"metadata":{"ReCaptcha2Component":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":17,"character":1},"arguments":[{"selector":"ngx-recaptcha2","template":"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>"}]}],"members":{"theme":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"hl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"expire":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":53,"character":3}}]}],"error":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":58,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":65,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":63,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":64,"character":20},{"__symbolic":"reference","name":"NgxCaptchaConfig"}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"captchaSpecificSetup":[{"__symbolic":"method"}],"getCaptchaProperties":[{"__symbolic":"method"}],"registerCallbacks":[{"__symbolic":"method"}],"handleErrorCallback":[{"__symbolic":"method"}],"handleExpireCallback":[{"__symbolic":"method"}]}},"InvisibleReCaptchaComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"ngx-invisible-recaptcha","template":"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>"}]}],"members":{"badge":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"hl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":35,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":33,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":34,"character":20},{"__symbolic":"reference","name":"NgxCaptchaConfig"}]}],"ngOnChanges":[{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"captchaSpecificSetup":[{"__symbolic":"method"}],"getCaptchaProperties":[{"__symbolic":"method"}]}},"INgxCaptchaConfig":{"__symbolic":"interface"},"NgxCaptchaConfig":{"__symbolic":"class","members":{}},"NgxCaptchaModule":{"__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":4}],"declarations":[{"__symbolic":"reference","name":"ReCaptcha2Component"},{"__symbolic":"reference","name":"InvisibleReCaptchaComponent"}],"exports":[{"__symbolic":"reference","name":"ReCaptcha2Component"},{"__symbolic":"reference","name":"InvisibleReCaptchaComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"NgxCaptchaModule"},"providers":[{"provide":{"__symbolic":"reference","name":"NgxCaptchaConfig"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"ɵa":{"__symbolic":"class","members":{"siteKey":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":5}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":5}}]}],"hl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":5}}]}],"tabIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":5}}]}],"success":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":67,"character":5}}]}],"load":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":72,"character":5}}]}],"ready":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":77,"character":5}}]}],"captchaWrapperElem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":79,"character":5},"arguments":["captchaWrapperElem"]}]}],"captchaScriptElem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":80,"character":5},"arguments":["captchaScriptElem"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":124,"character":28},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":125,"character":24},{"__symbolic":"reference","name":"NgxCaptchaConfig"}]}],"getCaptchaProperties":[{"__symbolic":"method"}],"captchaSpecificSetup":[{"__symbolic":"method"}],"getGlobalSiteKey":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getResponse":[{"__symbolic":"method"}],"getCaptchaId":[{"__symbolic":"method"}],"resetCaptcha":[{"__symbolic":"method"}],"getCurrentResponse":[{"__symbolic":"method"}],"reloadCaptcha":[{"__symbolic":"method"}],"ensureCaptchaElem":[{"__symbolic":"method"}],"renderReCaptcha":[{"__symbolic":"method"}],"handleCallback":[{"__symbolic":"method"}],"ensureReCaptchaScript":[{"__symbolic":"method"}],"registerReCaptchaScript":[{"__symbolic":"method"}],"getLanguageParam":[{"__symbolic":"method"}],"getPseudoUniqueNumber":[{"__symbolic":"method"}],"isReCaptchaApiDefined":[{"__symbolic":"method"}],"setupComponent":[{"__symbolic":"method"}],"onloadCallback":[{"__symbolic":"method"}],"generateNewElemId":[{"__symbolic":"method"}],"createAndSetCaptchaElem":[{"__symbolic":"method"}]}}},"origins":{"ReCaptcha2Component":"./lib/recaptcha-2.component","InvisibleReCaptchaComponent":"./lib/invisible-recaptcha.component","INgxCaptchaConfig":"./lib/recaptcha.config","NgxCaptchaConfig":"./lib/recaptcha.config","NgxCaptchaModule":"./lib/ngx-captcha.module","ɵa":"./lib/base-recaptcha.component"},"importAs":"ngx-captcha"} | ||
{"__symbolic":"module","version":4,"metadata":{"ReCaptcha2Component":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"ngx-recaptcha2","template":"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":25,"character":15},"useExisting":{"__symbolic":"reference","name":"ReCaptcha2Component"},"multi":true}]}]}],"members":{"theme":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"hl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"expire":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":61,"character":3}}]}],"error":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":66,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":74,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":71,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":72,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":73,"character":24},{"__symbolic":"reference","name":"NgxCaptchaConfig"}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"captchaSpecificSetup":[{"__symbolic":"method"}],"getCaptchaProperties":[{"__symbolic":"method"}],"registerCallbacks":[{"__symbolic":"method"}],"handleErrorCallback":[{"__symbolic":"method"}],"handleExpireCallback":[{"__symbolic":"method"}]}},"InvisibleReCaptchaComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"ngx-invisible-recaptcha","template":"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":15,"character":15},"useExisting":{"__symbolic":"reference","name":"InvisibleReCaptchaComponent"},"multi":true}]}]}],"members":{"badge":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"hl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":44,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":41,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":42,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":43,"character":24},{"__symbolic":"reference","name":"NgxCaptchaConfig"}]}],"ngOnChanges":[{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"captchaSpecificSetup":[{"__symbolic":"method"}],"getCaptchaProperties":[{"__symbolic":"method"}]}},"INgxCaptchaConfig":{"__symbolic":"interface"},"NgxCaptchaConfig":{"__symbolic":"class","members":{}},"NgxCaptchaModule":{"__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":4}],"declarations":[{"__symbolic":"reference","name":"ReCaptcha2Component"},{"__symbolic":"reference","name":"InvisibleReCaptchaComponent"}],"exports":[{"__symbolic":"reference","name":"ReCaptcha2Component"},{"__symbolic":"reference","name":"InvisibleReCaptchaComponent"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"NgxCaptchaModule"},"providers":[{"provide":{"__symbolic":"reference","name":"NgxCaptchaConfig"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"ɵa":{"__symbolic":"class","members":{"siteKey":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":5}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":5}}]}],"hl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":5}}]}],"tabIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":5}}]}],"success":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":73,"character":5}}]}],"load":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":78,"character":5}}]}],"ready":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":83,"character":5}}]}],"captchaWrapperElem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":85,"character":5},"arguments":["captchaWrapperElem"]}]}],"captchaScriptElem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":86,"character":5},"arguments":["captchaScriptElem"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":136,"character":28},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":137,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":138,"character":28},{"__symbolic":"reference","name":"NgxCaptchaConfig"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"getCaptchaProperties":[{"__symbolic":"method"}],"captchaSpecificSetup":[{"__symbolic":"method"}],"getGlobalSiteKey":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getResponse":[{"__symbolic":"method"}],"getCaptchaId":[{"__symbolic":"method"}],"resetCaptcha":[{"__symbolic":"method"}],"getCurrentResponse":[{"__symbolic":"method"}],"reloadCaptcha":[{"__symbolic":"method"}],"ensureCaptchaElem":[{"__symbolic":"method"}],"renderReCaptcha":[{"__symbolic":"method"}],"handleCallback":[{"__symbolic":"method"}],"ensureReCaptchaScript":[{"__symbolic":"method"}],"registerReCaptchaScript":[{"__symbolic":"method"}],"getLanguageParam":[{"__symbolic":"method"}],"getPseudoUniqueNumber":[{"__symbolic":"method"}],"isReCaptchaApiDefined":[{"__symbolic":"method"}],"setupComponent":[{"__symbolic":"method"}],"onloadCallback":[{"__symbolic":"method"}],"generateNewElemId":[{"__symbolic":"method"}],"createAndSetCaptchaElem":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}]}}},"origins":{"ReCaptcha2Component":"./lib/recaptcha-2.component","InvisibleReCaptchaComponent":"./lib/invisible-recaptcha.component","INgxCaptchaConfig":"./lib/recaptcha.config","NgxCaptchaConfig":"./lib/recaptcha.config","NgxCaptchaModule":"./lib/ngx-captcha.module","ɵa":"./lib/base-recaptcha.component"},"importAs":"ngx-captcha"} |
{ | ||
"name": "ngx-captcha", | ||
"version": "3.1.2", | ||
"version": "4.0.0", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -19,4 +19,13 @@ [![npm version](https://badge.fury.io/js/ngx-captcha.svg)](https://badge.fury.io/js/ngx-captcha) | ||
### Use with Angular forms | ||
Depending on whether you want to use [reactive forms](https://angular.io/guide/reactive-forms) or [template-driven forms](https://angular.io/guide/forms) you need to include the appropriate modules, too. | ||
Add `ReactiveFormsModule` to your imports in case you want to use reactive forms. If you prefer the the template-driven approach simple add the `FormsModule` to your module. | ||
Both can be imported from `@angular/forms`. In the demo project you can check out the *normal* demo to see how to use reactive forms or the *invisible* demo to see what the template-driven approach looks like. With the template-driven approach you don't necessarily need to use a from element to wrap the component, you can instead use the `[ngModelOptions]="{ standalone: true }"`. | ||
However, using it with the standalone option is not recommended but can be used if needed. | ||
```javascript | ||
import { NgModule } from '@angular/core'; | ||
import { ReactiveFormsModule } from '@angular/forms'; | ||
import { NgxCaptchaModule } from 'ngx-captcha'; | ||
@@ -26,2 +35,3 @@ | ||
imports: [ | ||
ReactiveFormsModule, | ||
NgxCaptchaModule.forRoot({ | ||
@@ -37,17 +47,36 @@ reCaptcha2SiteKey: 'xxxx', // optional, can be overridden with 'siteKey' component property | ||
## Usage | ||
The configuration properties are a copy of the official ones that google provides. For explanation of what these properties do and how to use them, please refer to [https://developers.google.com/recaptcha/docs/display](https://developers.google.com/recaptcha/docs/display) and [https://developers.google.com/recaptcha/docs/invisible](https://developers.google.com/recaptcha/docs/invisible). | ||
The configuration properties are a copy of the official ones that google provides. For explanation of what these properties do and how to use them, please refer to [https://developers.google.com/recaptcha/docs/display](https://developers.google.com/recaptcha/docs/display) and [https://developers.google.com/recaptcha/docs/invisible](https://developers.google.com/recaptcha/docs/invisible) | ||
### reCaptcha2 | ||
your.component.ts | ||
```javascript | ||
export class YourComponent implements OnInit { | ||
protected aFormGroup: FormGroup; | ||
constructor(private formBuilder: FormBuilder) {} | ||
ngOnInit() { | ||
this.aFormGroup = this.formBuilder.group({ | ||
recaptcha: ['', Validators.required] | ||
}); | ||
} | ||
} | ||
``` | ||
your.template.html | ||
```html | ||
<ngx-recaptcha2 | ||
[size]="size" | ||
[hl]="lang" | ||
[theme]="theme" | ||
[type]="type" | ||
(expire)="handleExpire()" | ||
(load)="handleLoad()" | ||
(success)="handleSuccess($event)"> | ||
</ngx-recaptcha2> | ||
<form [formGroup]="aFormGroup"> | ||
<ngx-recaptcha2 | ||
[size]="size" | ||
[hl]="lang" | ||
[theme]="theme" | ||
[type]="type" | ||
(expire)="handleExpire()" | ||
(load)="handleLoad()" | ||
(success)="handleSuccess($event)" | ||
formControlName="recaptcha"> | ||
</ngx-recaptcha2> | ||
</form> | ||
``` | ||
@@ -58,8 +87,11 @@ | ||
```html | ||
<ngx-invisible-recaptcha | ||
[type]="type" | ||
[badge]="badge" | ||
(load)="handleLoad()" | ||
(success)="handleSuccess($event)"> | ||
</ngx-invisible-recaptcha> | ||
<form [formGroup]="aFormGroup"> | ||
<ngx-invisible-recaptcha | ||
[type]="type" | ||
[badge]="badge" | ||
(load)="handleLoad()" | ||
(success)="handleSuccess($event)" | ||
formControlName="recaptcha"> | ||
</ngx-invisible-recaptcha> | ||
</form> | ||
``` |
Sorry, the diff of this file is too big to display
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 too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
525059
4635
94
0