@opcua/for-node-red 2.1.7 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,57 +4,10 @@
4
4
  </style>
5
5
 
6
6
  <script type="text/javascript">
7
- function _0xe546(){const _0x316e00=['apply','widget','.input-name','#toggleAdvancedSection','attr','Default\x20Subscription','32Uwogro','.template','log','#node-input-maxMessageSize','editableList','html','160194cceEET','.input-priority','licence-widget-icon','children','-success','readonly','Fast\x20Subscription','create','subscriptions','#subscriptions-container','/opcua-endpoint2','#node-input-localkeyfile','.subscription-id','split','find','None','fa\x20fa-exclamation-circle','suppressed','.red-ui-editableList-item-remove','4227538BBwnsO',':checked','2682gKPcOl','Licence\x20expired','text','<br>','resize','addItem','OpcUa-Endpoint2','<span>','registerType','SuppressedError','prop','Basic256Sha256','Please\x20<a\x20href=\x22mailto:contact@sterfive.com\x22>\x20contact\x20our\x20support\x20team</a>\x20or\x20visit\x20our\x20website\x20to\x20renew\x20your\x20license\x20and\x20regain\x20access\x20to\x20our\x20services.','password','removeClass','854439ueWucU','#node-config-input-endpoint','requestedPublishingInterval','Your\x20license\x20has\x20expired.\x20Please\x20contact\x20our\x20support\x20team\x20or\x20visit\x20our\x20website\x20to\x20renew\x20your\x20license\x20and\x20regain\x20access\x20to\x20our\x20services.','checked','.input-requestedMaxKeepAliveCount','maxNotificationsPerPublish','licence-widget-msg','css','typedInput','endpoint','error','data-i','#test-connection','application/json','#node-input-localfile','</p>','150px','status','change','Slow\x20Subscription','result','fa\x20fa-check-circle','314hypBjd','catch','endpoint-tab-subscriptions','priority','#node-config-input-userIdentityType','then','#node-input-certificate','protocol','POST','.section-securityPolicy','4582184PirhRV','join','-failure','invalid\x20userIdentityType\x20','UserName','Connection','#node-input-maxChunkCount','invalid\x20endpoint','label','publishingEnabled','.input-isDefault','invalid\x20securityMode\x20','click','append','addClass','5410uMpqdW','FAILED','val','userIdentityType','#node-config-input-securityMode','throw','7289410DKIAOV','baseUrl','#node-config-input-password','stringify','push','value','next','element','.input-publishingEnabled','message','sterfive.licenceWidget','appendTo','json','#node-input-sendBufferSize','length','#node-config-input-userName','135wyzoNm','statusText','parameters','.section-userIdentityType-Certificate','addTab','clone','isArray','#node-input-useTransport','map','Subscriptions','.input-requestedLifetimeCount','requestedLifetimeCount','hide','isDefault','#node-config-input-userPrivatekey','.input-maxNotificationsPerPublish','.input-requestedPublishingInterval','fa\x20fa-calendar-time','config','securityMode','items','-pending','requestedMaxKeepAliveCount','licenceWidget','err','name','disabled','Anonymous','show','-messages','#node-config-input-userCertificate','Sign'];_0xe546=function(){return _0x316e00;};return _0xe546();}function _0x2e63(_0x2194f0,_0x48c7b2){const _0xe54690=_0xe546();return _0x2e63=function(_0x2e6304,_0x3f73f2){_0x2e6304=_0x2e6304-0xcf;let _0x573c3b=_0xe54690[_0x2e6304];return _0x573c3b;},_0x2e63(_0x2194f0,_0x48c7b2);}(function(_0x1b7013,_0x1178f7){const _0x1dd927=_0x2e63,_0x534d2d=_0x1b7013();while(!![]){try{const _0xfd715f=-parseInt(_0x1dd927(0x163))/0x1*(parseInt(_0x1dd927(0xe6))/0x2)+-parseInt(_0x1dd927(0x14c))/0x3+parseInt(_0x1dd927(0xd7))/0x4+-parseInt(_0x1dd927(0xfc))/0x5*(parseInt(_0x1dd927(0x128))/0x6)+parseInt(_0x1dd927(0x13b))/0x7+-parseInt(_0x1dd927(0x122))/0x8*(-parseInt(_0x1dd927(0x13d))/0x9)+parseInt(_0x1dd927(0xec))/0xa;if(_0xfd715f===_0x1178f7)break;else _0x534d2d['push'](_0x534d2d['shift']());}catch(_0x52ba26){_0x534d2d['push'](_0x534d2d['shift']());}}}(_0xe546,0x987ad),(function(){'use strict';const _0xce8763=_0x2e63;function _0x5e299f(_0x46bf4f,_0x59b119,_0x2f5474,_0x1e0b5f){const _0x58dcad=_0x2e63,_0x5a62e0=$('#'+_0x46bf4f+_0x58dcad(0x12c)),_0x3d1267=$('#'+_0x46bf4f+_0x58dcad(0xd9)),_0x3f8759=$('#'+_0x46bf4f+_0x58dcad(0x111)),_0x28654a=$('#'+_0x46bf4f+_0x58dcad(0x119));let _0x3f947a=![];_0x5a62e0[_0x58dcad(0x108)](),_0x3d1267[_0x58dcad(0x108)](),_0x3f8759[_0x58dcad(0x108)](),_0x59b119['on'](_0x58dcad(0xe3),()=>{const _0x116049=_0x58dcad;if(_0x3f947a)return;_0x3f947a=!![],_0x3f8759[_0x116049(0x14b)](_0x116049(0x108)),_0x3f8759[_0x116049(0x127)]('Testing\x20Connection\x20...'),_0x5a62e0[_0x116049(0xe5)](_0x116049(0x108)),_0x3d1267['addClass'](_0x116049(0x108)),_0x28654a[_0x116049(0x127)]('');const {body:_0x251102,url:_0x1eecae}=_0x2f5474();fetch(_0x1eecae,{'method':_0x116049(0xd5),'headers':{'Content-Type':_0x116049(0x15a)},'body':JSON[_0x116049(0xef)](_0x251102)})['then'](_0x3378f5=>_0x3378f5[_0x116049(0xf8)]())[_0x116049(0xd2)](_0x57451d=>{const _0x1166fe=_0x116049;_0x3f947a=![],_0x3f8759[_0x1166fe(0x108)](),console[_0x1166fe(0x124)](JSON['stringify'](_0x57451d,null,'\x20'));if(_0x57451d[_0x1166fe(0x161)]==='ok')_0x5a62e0[_0x1166fe(0x14b)](_0x1166fe(0x108)),_0x3d1267[_0x1166fe(0xe5)](_0x1166fe(0x108)),_0x28654a['html'](_0x57451d['message']['replace']('\x0a',_0x1166fe(0x140))),_0x1e0b5f(null,_0x57451d);else{const _0x3fe8d7=_0x3c8ebc=>!_0x3c8ebc?'':_0x3c8ebc[_0x1166fe(0x135)]('\x0a')[_0x1166fe(0x104)](_0x1cd8cd=>'<p>'+_0x1cd8cd+_0x1166fe(0x15c))[_0x1166fe(0xd8)]('\x0a'),_0x2c2247=_0x2900cf=>Array[_0x1166fe(0x102)](_0x2900cf)?_0x2900cf[_0x1166fe(0x104)](_0x3fe8d7)[_0x1166fe(0xd8)]('\x0a'):_0x3fe8d7(_0x2900cf);_0x5a62e0[_0x1166fe(0xe5)](_0x1166fe(0x108)),_0x3d1267[_0x1166fe(0x14b)](_0x1166fe(0x108)),_0x28654a[_0x1166fe(0x127)](_0x2c2247(_0x57451d['message'])+_0x2c2247(_0x57451d['extra'])),_0x1e0b5f(new Error(_0x57451d[_0x1166fe(0x161)]),_0x57451d);}})['catch'](_0x3a2c84=>{const _0x4d9538=_0x116049;_0x3f947a=![],_0x3f8759[_0x4d9538(0xe5)](_0x4d9538(0x108)),_0x5a62e0['addClass'](_0x4d9538(0x108)),_0x3d1267[_0x4d9538(0x14b)](_0x4d9538(0x108)),_0x28654a[_0x4d9538(0x127)]('internal\x20error\x20'+_0x3a2c84[_0x4d9538(0xf5)]),console[_0x4d9538(0x124)](_0x4d9538(0x114),_0x3a2c84),_0x1e0b5f(_0x3a2c84,null);});});}function _0x5d85e6(_0x2a7b75,_0x36bcc4,_0x2c5748,_0x5d4082){function _0x2510b8(_0x3067f5){return _0x3067f5 instanceof _0x2c5748?_0x3067f5:new _0x2c5748(function(_0x55e296){_0x55e296(_0x3067f5);});}return new(_0x2c5748||(_0x2c5748=Promise))(function(_0x41373a,_0x3ffc96){const _0x5ad036=_0x2e63;function _0x24ee99(_0x3f4531){const _0x271d9c=_0x2e63;try{_0x3da7be(_0x5d4082[_0x271d9c(0xf2)](_0x3f4531));}catch(_0x321f7a){_0x3ffc96(_0x321f7a);}}function _0xf8072b(_0x5a3b94){const _0x299585=_0x2e63;try{_0x3da7be(_0x5d4082[_0x299585(0xeb)](_0x5a3b94));}catch(_0x27a555){_0x3ffc96(_0x27a555);}}function _0x3da7be(_0x511894){const _0x248e53=_0x2e63;_0x511894['done']?_0x41373a(_0x511894['value']):_0x2510b8(_0x511894[_0x248e53(0xf1)])[_0x248e53(0xd2)](_0x24ee99,_0xf8072b);}_0x3da7be((_0x5d4082=_0x5d4082[_0x5ad036(0x11c)](_0x2a7b75,_0x36bcc4||[]))[_0x5ad036(0xf2)]());});}typeof SuppressedError==='function'?SuppressedError:function(_0x5627f5,_0x13bbbe,_0x58f950){const _0x49d81e=_0x2e63;var _0x4ee992=new Error(_0x58f950);return _0x4ee992['name']=_0x49d81e(0x146),_0x4ee992[_0x49d81e(0x157)]=_0x5627f5,_0x4ee992[_0x49d81e(0x139)]=_0x13bbbe,_0x4ee992;};function _0x4c854a(_0x5a8d16=''){return _0x5d85e6(this,void 0x0,void 0x0,function*(){const _0x4ea934=_0x2e63,_0x41ceae=_0x5a8d16+_0x4ea934(0x132),_0x24efc6=_0x41ceae+'/licenceInfo',_0x171d89=yield fetch(_0x24efc6,{'method':_0x4ea934(0xd5),'headers':{'Content-Type':_0x4ea934(0x15a)}});if(_0x171d89[_0x4ea934(0x15e)]!==0xc8)return console[_0x4ea934(0x124)]('fetching\x20failed\x20with\x20error',_0x171d89[_0x4ea934(0x15e)],_0x171d89[_0x4ea934(0xfd)]),{};const _0x366698=yield _0x171d89[_0x4ea934(0xf8)]();return _0x366698;});}const _0x4c8190=()=>{const _0x405c45=_0x2e63;$[_0x405c45(0x11d)](_0x405c45(0xf6),{'options':{'baseUrl':''},'_create'(){const _0x68de89=_0x405c45,_0x454371=this;_0x4c854a(_0x454371[_0x68de89(0xed)])[_0x68de89(0xd2)](_0x237a00=>{const _0x1cba70=_0x68de89;let _0x1e4127='',_0xd30020='',_0xc3a057='';const _0x265fda=_0x237a00[_0x1cba70(0x15e)];switch(_0x265fda){case'AUTHORIZED':_0x1e4127=_0x1cba70(0x162);_0x237a00['isDemo']?_0xd30020='Demo\x20licence':(_0xd30020='Your\x20licence\x20is\x20valid.',_0xc3a057='');break;case'EXPIRED':_0x1e4127=_0x1cba70(0x10d),_0xd30020=_0x1cba70(0x13e),_0xc3a057=_0x1cba70(0x14f);break;case _0x1cba70(0xe7):default:_0x1e4127=_0x1cba70(0x138),_0xd30020='Your\x20license\x20is\x20currently\x20invalid.',_0xc3a057=_0x1cba70(0x149);break;}this[_0x1cba70(0xf3)]['addClass']('licence-widget'),this[_0x1cba70(0xf3)]['addClass']('licence-widget-'+_0x265fda),this[_0x1cba70(0xf3)][_0x1cba70(0xe4)]($('<span>')[_0x1cba70(0xe5)](_0x1cba70(0x12a))[_0x1cba70(0xe4)]($('<i>')[_0x1cba70(0xe5)](_0x1e4127))),this['element'][_0x1cba70(0xe4)]($('<span>')['addClass'](_0x1cba70(0x153))['text'](_0xd30020)),this[_0x1cba70(0xf3)][_0x1cba70(0xe4)]($(_0x1cba70(0x140))),this['element'][_0x1cba70(0xe4)]($(_0x1cba70(0x144))['addClass']('licence-widget-details')['append'](_0xc3a057));})[_0x68de89(0x164)](_0x4691e5=>{const _0x175cea=_0x68de89;console[_0x175cea(0x124)](_0x4691e5);});}});};_0x4c8190();function _0x24d9a2(_0x1c229c){const _0xca5236=_0x2e63;let _0x297224;try{_0x297224=new URL(_0x1c229c);}catch(_0x1a0ced){return![];}return _0x297224[_0xca5236(0xd4)]==='opc.tcp:';}const _0x4d8c43={'publishingEnabled':!![],'requestedLifetimeCount':0x3e8,'requestedMaxKeepAliveCount':0xa,'requestedPublishingInterval':0x3e8,'maxNotificationsPerPublish':0x0,'priority':0x64};RED['nodes'][_0xce8763(0x145)](_0xce8763(0x143),{'category':_0xce8763(0x10e),'paletteLabel':'opcua\x20endpoint','defaults':{'name':{'value':''},'endpoint':{'value':'opc.tcp://opcuademo.sterfive.com:26543/UA/SampleServer','required':!![],'validate':_0x24d9a2},'securityMode':{'value':_0xce8763(0x137)},'securityPolicy':{'value':'None','validate':_0x36e6a2=>{if(!_0x36e6a2)return![];return!![];}},'userIdentityType':{'value':_0xce8763(0x117)},'userName':{'value':''},'password':{'value':'','type':_0xce8763(0x14a)},'userCertificate':{'value':''},'userPrivatekey':{'value':''},'certificate':{'value':'n'},'localfile':{'value':''},'localkeyfile':{'value':''},'useTransport':{'value':![],'required':![]},'maxChunkCount':{'value':0x1,'required':![]},'maxMessageSize':{'value':0x2000,'required':![]},'receiveBufferSize':{'value':0x2000,'required':![]},'sendBufferSize':{'value':0x2000,'required':![]},'subscriptions':{'value':[{'id':'s1','name':_0xce8763(0x121),'isDefault':!![],'parameters':Object['assign']({},_0x4d8c43)},{'id':'s2','name':_0xce8763(0x160),'isDefault':![],'parameters':{'publishingEnabled':!![],'requestedLifetimeCount':0x64,'requestedMaxKeepAliveCount':0x14,'requestedPublishingInterval':0x1388,'maxNotificationsPerPublish':0x64,'priority':0xa}},{'id':'s3','name':_0xce8763(0x12e),'isDefault':![],'parameters':{'publishingEnabled':!![],'requestedLifetimeCount':0xfa0,'requestedMaxKeepAliveCount':0x64,'requestedPublishingInterval':0xfa,'maxNotificationsPerPublish':0x64,'priority':0xc8}}],'required':![]}},'credentials':{'user':{'type':_0xce8763(0x13f)},'password':{'type':_0xce8763(0x14a)}},'label':function(){const _0x398be2=_0xce8763;return this[_0x398be2(0x115)]||this[_0x398be2(0x156)]||_0x398be2(0xde);},'oneditsave'(){const _0x36876f=_0xce8763,_0x23dfac=$('#node-config-input-securityPolicy'),_0x3cd486=$(_0x36876f(0xea));_0x23dfac[_0x36876f(0xe8)]()==='None'&&_0x3cd486['text']('None');const _0x46e4a1=$(_0x36876f(0x131))[_0x36876f(0x126)](_0x36876f(0x110)),_0x3242ce=[],_0x4524d4=_0x140dd4=>_0x140dd4;_0x46e4a1['each'](function(_0x4f1016,_0x2da506){const _0x3d9e1b=_0x36876f,_0x3821ea=$(this),_0xfc67b3={'id':'s'+_0x4f1016,'name':_0x3821ea[_0x3d9e1b(0x136)](_0x3d9e1b(0x11e))[_0x3d9e1b(0xe8)](),'isDefault':!!_0x3821ea[_0x3d9e1b(0x136)](_0x3d9e1b(0xe1))[_0x3d9e1b(0xe8)](),'parameters':{'publishingEnabled':!!_0x3821ea[_0x3d9e1b(0x136)](_0x3d9e1b(0xf4))['is'](_0x3d9e1b(0x13c)),'requestedLifetimeCount':_0x4524d4(_0x3821ea[_0x3d9e1b(0x136)](_0x3d9e1b(0x106))['val']()),'requestedMaxKeepAliveCount':_0x4524d4(_0x3821ea['find']('.input-requestedMaxKeepAliveCount')[_0x3d9e1b(0xe8)]()),'requestedPublishingInterval':_0x4524d4(_0x3821ea[_0x3d9e1b(0x136)](_0x3d9e1b(0x10c))[_0x3d9e1b(0xe8)]()),'maxNotificationsPerPublish':_0x4524d4(_0x3821ea[_0x3d9e1b(0x136)](_0x3d9e1b(0x10b))[_0x3d9e1b(0xe8)]()),'priority':_0x4524d4(_0x3821ea['find'](_0x3d9e1b(0x129))['val']())}};_0xfc67b3[_0x3d9e1b(0xfe)][_0x3d9e1b(0xe0)]=!![],_0xfc67b3['isDefault']&&_0xfc67b3['id']==='s0'&&(_0xfc67b3[_0x3d9e1b(0x115)]='Default\x20Subscription'),_0x3242ce['push'](_0xfc67b3);}),this[_0x36876f(0x130)]=_0x3242ce;},'oneditprepare'(){const _0x4508db=_0xce8763,_0x176c6b=this,_0x2fa684=RED['tabs'][_0x4508db(0x12f)]({'id':'node-config-endpoint-tabs','onchange':function(_0x341cb4){const _0x3f95d4=_0x4508db;$('#node-config-endpoint-tabs-content')[_0x3f95d4(0x12b)]()['hide'](),$('#'+_0x341cb4['id'])[_0x3f95d4(0x118)]();}});_0x2fa684[_0x4508db(0x100)]({'id':'endpoint-tab-connection','label':_0x4508db(0xdc)},0x0),_0x2fa684[_0x4508db(0x100)]({'id':_0x4508db(0xcf),'label':_0x4508db(0x105)},0x1),setTimeout(function(){const _0x268e2f=_0x4508db;_0x2fa684[_0x268e2f(0x141)]();},0x0);{const _0x100ae5=_0x1b7852=>{const _0x15ce98=_0x4508db;switch(_0x1b7852){case null:case undefined:case'':case'None':$(_0x15ce98(0xd6))['hide']();break;case _0x15ce98(0x11b):case'SignAndEncrypt':{const _0xfced1d=$(_0x15ce98(0xd6));(_0xfced1d[_0x15ce98(0xe8)]()===_0x15ce98(0x137)||_0xfced1d['val']()==='')&&_0xfced1d[_0x15ce98(0xe8)](_0x15ce98(0x148)),$(_0x15ce98(0xd6))[_0x15ce98(0x118)]();}break;default:console[_0x15ce98(0x124)](_0x15ce98(0xe2)+_0x1b7852);}};_0x100ae5(_0x176c6b[_0x4508db(0x10f)]);const _0x9e15b9=$('#node-config-input-securityMode');_0x9e15b9['on'](_0x4508db(0x15f),()=>{const _0x5afdff=_0x4508db,_0x1d8b2d=_0x9e15b9[_0x5afdff(0xe8)]();_0x100ae5(_0x1d8b2d);});}const _0x364a0e=$('#licenceWidget');_0x364a0e[_0x4508db(0x113)]({'baseUrl':''});{const _0x25232f=$('.section-userIdentityType-UserName'),_0x1628ce=$(_0x4508db(0xff)),_0x3535a9=_0x4c49be=>{const _0x490afe=_0x4508db;_0x4c49be=_0x4c49be||_0x490afe(0x117);switch(_0x4c49be){case'Anonymous':$(_0x490afe(0xfb))[_0x490afe(0xe8)](''),$(_0x490afe(0xee))['val'](''),_0x25232f['hide'](),_0x1628ce[_0x490afe(0x108)]();break;case _0x490afe(0xdb):_0x25232f[_0x490afe(0x118)](),_0x1628ce[_0x490afe(0x108)]();break;case'Certificate':$(_0x490afe(0xfb))['val'](''),$(_0x490afe(0xee))['val'](''),_0x1628ce['show'](),_0x25232f[_0x490afe(0x108)]();break;default:console[_0x490afe(0x124)](_0x490afe(0xda)+_0x4c49be);}};_0x3535a9(_0x176c6b[_0x4508db(0xe9)]);const _0x1c302a=$(_0x4508db(0xd1));_0x1c302a['on'](_0x4508db(0x15f),()=>{const _0x1d15dd=_0x1c302a['val']();_0x3535a9(_0x1d15dd);}),$('#section-Advanced')[_0x4508db(0x108)](),$(_0x4508db(0x11f))['on'](_0x4508db(0x15f),function(){const _0x14ed36=_0x4508db;$(this)[_0x14ed36(0x147)]('checked')?$('#section-Advanced')['show']():$('#section-Advanced')[_0x14ed36(0x108)]();}),_0x5e299f('connection',$(_0x4508db(0x159)),()=>({'url':'/opcua-endpoint2/test-connection','body':{'endpointNode':{'id':_0x176c6b['id'],'endpoint':$(_0x4508db(0x14d))[_0x4508db(0xe8)](),'securityMode':$(_0x4508db(0xea))[_0x4508db(0xe8)](),'securityPolicy':$('#node-config-input-securityPolicy')[_0x4508db(0xe8)](),'userIdentityType':$(_0x4508db(0xd1))[_0x4508db(0xe8)](),'userName':$(_0x4508db(0xfb))[_0x4508db(0xe8)](),'password':$(_0x4508db(0xee))['val'](),'userCertificate':$(_0x4508db(0x11a))[_0x4508db(0xe8)](),'userPrivatekey':$(_0x4508db(0x10a))[_0x4508db(0xe8)](),'certificate':$(_0x4508db(0xd3))[_0x4508db(0xe8)](),'localfile':$(_0x4508db(0x15b))[_0x4508db(0xe8)](),'localkeyfile':$(_0x4508db(0x133))[_0x4508db(0xe8)](),'useTransport':$(_0x4508db(0x103))[_0x4508db(0x147)](_0x4508db(0x150)),'maxChunkCount':$(_0x4508db(0xdd))['val'](),'maxMessageSize':$(_0x4508db(0x125))['val'](),'receiveBufferSize':$('#node-input-receiveBufferSize')[_0x4508db(0xe8)](),'sendBufferSize':$(_0x4508db(0xf9))['val']()}}}),()=>{});const _0x452182=(_0x3f5aac,_0x45ebc7)=>{const _0x52590f=_0x4508db;var _0x20e009=_0x3f5aac['width']()||0x64;_0x3f5aac[_0x52590f(0x136)](_0x52590f(0xdf))[_0x52590f(0x155)]('width',_0x20e009-0xf);},_0x978841=$(_0x4508db(0x131))[_0x4508db(0x154)]({'min-height':_0x4508db(0x15d),'min-width':'260px'})['editableList']({'addItem':(_0x208522,_0xfaef34,_0x291f65)=>{const _0x957341=_0x4508db,_0xde50b2=_0x291f65,_0x1065ff=$(_0x957341(0x123))[_0x957341(0x101)]()[_0x957341(0xf7)](_0x208522);_0x1065ff['removeAttr']('id')['removeClass'](_0x957341(0x108))['removeClass']('template')[_0x957341(0x120)](_0x957341(0x158),_0xfaef34),_0x1065ff[_0x957341(0x136)](_0x957341(0x11e))[_0x957341(0xe8)](_0xde50b2[_0x957341(0x115)]),_0x1065ff[_0x957341(0x136)]('.input-requestedPublishingInterval')['val'](_0xde50b2[_0x957341(0xfe)][_0x957341(0x14e)]),_0x1065ff[_0x957341(0x136)](_0x957341(0x151))[_0x957341(0xe8)](_0xde50b2[_0x957341(0xfe)][_0x957341(0x112)]),_0x1065ff[_0x957341(0x136)]('.input-requestedLifetimeCount')[_0x957341(0xe8)](_0xde50b2['parameters'][_0x957341(0x107)]),_0x1065ff['find']('.input-maxNotificationsPerPublish')['val'](_0xde50b2[_0x957341(0xfe)][_0x957341(0x152)]||0x0),_0x1065ff['find'](_0x957341(0x129))[_0x957341(0xe8)](_0xde50b2[_0x957341(0xfe)][_0x957341(0xd0)]||0x0),_0x1065ff['find'](_0x957341(0x134))['text'](''+_0xfaef34),_0xde50b2[_0x957341(0x109)]&&_0x1065ff[_0x957341(0x136)](_0x957341(0x11e))[_0x957341(0x147)](_0x957341(0x12d),!![]),_0x1065ff[_0x957341(0x136)](_0x957341(0xe1))['prop'](_0x957341(0x150),_0xde50b2[_0x957341(0x109)]),_0xde50b2[_0x957341(0x109)]&&(_0x208522[_0x957341(0x136)](_0x957341(0x13a))[_0x957341(0xe5)](_0x957341(0x108)),setTimeout(()=>_0x1065ff[_0x957341(0x136)](_0x957341(0xe1))[_0x957341(0x147)](_0x957341(0x116),!![]),0xa));},'removable':!![],'resizeItem':_0x452182}),_0x316537=()=>{const _0x1ce363=_0x4508db,_0x3f48c1=_0x176c6b['subscriptions']||[];_0x3f48c1[_0x1ce363(0xfa)]===0x0&&_0x3f48c1[_0x1ce363(0xf0)]({'id':'s1','name':_0x1ce363(0x121),'isDefault':!![],'parameters':Object['assign']({},_0x4d8c43)});_0x978841[_0x1ce363(0x126)]('empty');for(const _0x27cb30 of _0x3f48c1){_0x978841[_0x1ce363(0x126)](_0x1ce363(0x142),_0x27cb30);}};_0x316537();}}});}()));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg1ZTI5OWYiLCJfMHg0NmJmNGYiLCJfMHg1OWIxMTkiLCJfMHgyZjU0NzQiLCJfMHgxZTBiNWYiLCJfMHg1YTYyZTAiLCIkIiwiXzB4M2QxMjY3IiwiXzB4M2Y4NzU5IiwiXzB4Mjg2NTRhIiwiXzB4M2Y5NDdhIiwiYm9keSIsIl8weDI1MTEwMiIsInVybCIsIl8weDFlZWNhZSIsImZldGNoIiwiSlNPTiIsIl8weDMzNzhmNSIsIl8weDU3NDUxZCIsImNvbnNvbGUiLCJfMHgzZmU4ZDciLCJfMHgzYzhlYmMiLCJfMHgxY2Q4Y2QiLCJfMHgyYzIyNDciLCJfMHgyOTAwY2YiLCJBcnJheSIsIkVycm9yIiwiXzB4M2EyYzg0IiwiXzB4NWQ4NWU2IiwiXzB4MmE3Yjc1IiwiXzB4MzZiY2M0IiwiXzB4MmM1NzQ4IiwiXzB4NWQ0MDgyIiwiXzB4MjUxMGI4IiwiXzB4MzA2N2Y1IiwiXzB4NTVlMjk2IiwiUHJvbWlzZSIsIl8weDQxMzczYSIsIl8weDNmZmM5NiIsIl8weDI0ZWU5OSIsIl8weDNmNDUzMSIsIl8weDNkYTdiZSIsIl8weDMyMWY3YSIsIl8weGY4MDcyYiIsIl8weDVhM2I5NCIsIl8weDI3YTU1NSIsIl8weDUxMTg5NCIsIlN1cHByZXNzZWRFcnJvciIsIl8weDU2MjdmNSIsIl8weDEzYmJiZSIsIl8weDU4Zjk1MCIsIl8weDRlZTk5MiIsIl8weDRjODU0YSIsIl8weDVhOGQxNiIsIl8weDQxY2VhZSIsIl8weDI0ZWZjNiIsIl8weDE3MWQ4OSIsIl8weDM2NjY5OCIsIl8weDRjODE5MCIsIl8weDQ1NDM3MSIsIl8weDIzN2EwMCIsIl8weDFlNDEyNyIsIl8weGQzMDAyMCIsIl8weGMzYTA1NyIsIl8weDI2NWZkYSIsIl8weDQ2OTFlNSIsIl8weDI0ZDlhMiIsIl8weDFjMjI5YyIsIl8weDI5NzIyNCIsIlVSTCIsIl8weDFhMGNlZCIsIl8weDRkOGM0MyIsIlJFRCIsIl8weDM2ZTZhMiIsIk9iamVjdCIsIl8weDIzZGZhYyIsIl8weDNjZDQ4NiIsIl8weDQ2ZTRhMSIsIl8weDMyNDJjZSIsIl8weDQ1MjRkNCIsIl8weDE0MGRkNCIsIl8weDRmMTAxNiIsIl8weDJkYTUwNiIsIl8weDM4MjFlYSIsIl8weGZjNjdiMyIsIl8weDE3NmM2YiIsIl8weDJmYTY4NCIsIl8weDM0MWNiNCIsInNldFRpbWVvdXQiLCJfMHgxMDBhZTUiLCJfMHgxYjc4NTIiLCJ1bmRlZmluZWQiLCJfMHhmY2VkMWQiLCJfMHg5ZTE1YjkiLCJfMHgxZDhiMmQiLCJfMHgzNjRhMGUiLCJfMHgyNTIzMmYiLCJfMHgxNjI4Y2UiLCJfMHgzNTM1YTkiLCJfMHg0YzQ5YmUiLCJfMHgxYzMwMmEiLCJfMHgxZDE1ZGQiLCJfMHg0NTIxODIiLCJfMHgzZjVhYWMiLCJfMHg0NWViYzciLCJfMHgyMGUwMDkiLCJfMHg5Nzg4NDEiLCJfMHgyMDg1MjIiLCJfMHhmYWVmMzQiLCJfMHgyOTFmNjUiLCJfMHhkZTUwYjIiLCJfMHgxMDY1ZmYiLCJfMHgzMTY1MzciLCJfMHgzZjQ4YzEiLCJfMHgyN2NiMzAiXSwibWFwcGluZ3MiOiJnbkhBQUEsQ0FBQyxVLENBQ0csYSx3QkFFQSxTQUFTQSxTQUFULENBQXVCQyxTQUF2QixDQUErQkMsU0FBL0IsQ0FBb0NDLFNBQXBDLENBQTBDQyxTQUExQyxDLHlCQUNVQyxTQUFBLENBQWNDLENBQUEsQyxJQUFNTCxTLGlCQUFOLEMsQ0FDZE0sU0FBQSxDQUFjRCxDQUFBLEMsSUFBTUwsUyxnQkFBTixDLENBQ2RPLFNBQUEsQ0FBY0YsQ0FBQSxDLElBQU1MLFMsaUJBQU4sQyxDQUNkUSxTQUFBLENBQVdILENBQUEsQyxJQUFNTCxTLGlCQUFOLEMsQ0FDakIsSUFBSVMsU0FBQSxDLEdBQUosQ0FDQUwsU0FBQSxDLGdCQUFBLEcsQ0FDQUUsU0FBQSxDLGdCQUFBLEcsQ0FDQUMsU0FBQSxDLGdCQUFBLEcsQ0FDQU4sU0FBQSxDLElBQUEsRSxlQUFBLENBQWdCLEksOEJBQ1JRLFMsQ0FDQSxPQUNKQSxTQUFBLEMsS0FDQUYsU0FB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Q0FBa0IsSSwyQkFDZEMsU0FBQSxDQUFnQjVCLFNBQUEsQyxlQUFBLEdBQXNCLEUsQ0FDeEM0QixTQUFBLEMsZUFBQSxJLEtBRUFBLFNBQUEsQyxlQUFBLEVBQW1CLEMsSUFDZixDLElBRGUsQyxNQUVmLEMsZ0JBRmUsQyxXQUdmLEMsSUFIZSxDLFlBSWYsQ0FBWXZDLE1BQUEsQyxRQUFBLEVBQWMsRUFBZCxDQUFrQkgsU0FBbEIsQ0FKRyxDQUFuQixDLENBT0ptQyxTQUFBLEMsZ0JBQUEsRSxPQUFBLEVBQ0EsVUFBV1EsU0FBWCxJQUEyQkQsU0FBM0IsQyxDQUVJUCxTQUFBLEMsZ0JBQUEsRSxnQkFBQSxDQUF5Q1EsU0FBekMsQyxHQTlDUixDQWlEQUYsU0FBQSxFLEdBaFQ4QixDQUExQyxDLEVBNUxKLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIGZ1bmN0aW9uIG1hbmFnZUFQSUNhbGwocHJlZml4LCBidG4sIGZ1bmMsIG9uUmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NJY29uID0gJChgIyR7cHJlZml4fS1zdWNjZXNzYCk7XG4gICAgICAgIGNvbnN0IGZhaWx1cmVJY29uID0gJChgIyR7cHJlZml4fS1mYWlsdXJlYCk7XG4gICAgICAgIGNvbnN0IHBlbmRpbmdJY29uID0gJChgIyR7cHJlZml4fS1wZW5kaW5nYCk7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gJChgIyR7cHJlZml4fS1tZXNzYWdlc2ApO1xuICAgICAgICBsZXQgYWN0aW9uUGVuZGluZyA9IGZhbHNlO1xuICAgICAgICBzdWNjZXNzSWNvbi5oaWRlKCk7XG4gICAgICAgIGZhaWx1cmVJY29uLmhpZGUoKTtcbiAgICAgICAgcGVuZGluZ0ljb24uaGlkZSgpO1xuICAgICAgICBidG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYWN0aW9uUGVuZGluZylcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBhY3Rpb25QZW5kaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHBlbmRpbmdJY29uLnJlbW92ZUNsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgIHBlbmRpbmdJY29uLmh0bWwoXCJUZXN0aW5nIENvbm5lY3Rpb24gLi4uXCIpO1xuICAgICAgICAgICAgc3VjY2Vzc0ljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgZmFpbHVyZUljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgbWVzc2FnZXMuaHRtbChcIlwiKTtcbiAgICAgICAgICAgIGNvbnN0IHsgYm9keSwgdXJsIH0gPSBmdW5jKCk7XG4gICAgICAgICAgICAvLyB4eCBjb25zb2xlLmxvZyhcInh4eHh4XCIsIGJvZHkpO1xuICAgICAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiBkYXRhLmpzb24oKSlcbiAgICAgICAgICAgICAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgICAgICAgICAgIGFjdGlvblBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nSWNvbi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgXCIgXCIpKTtcbiAgICAgICAgICAgICAgICBpZiAoanNvbi5yZXN1bHQgPT09IFwib2tcIikge1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzSWNvbi5yZW1vdmVDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgICAgIGZhaWx1cmVJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMuaHRtbChqc29uLm1lc3NhZ2UucmVwbGFjZShcIlxcblwiLCBcIjxicj5cIikpO1xuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdChudWxsLCBqc29uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkYXB0ID0gKHN0cikgPT4gIXN0clxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHN0clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdChcIlxcblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGEpID0+IGA8cD4ke2F9PC9wPmApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkYXB0MiA9IChzdHIpID0+IChBcnJheS5pc0FycmF5KHN0cikgPyBzdHIubWFwKGFkYXB0KS5qb2luKFwiXFxuXCIpIDogYWRhcHQoc3RyKSk7XG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgZmFpbHVyZUljb24ucmVtb3ZlQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcy5odG1sKGFkYXB0Mihqc29uLm1lc3NhZ2UpICsgYWRhcHQyKGpzb24uZXh0cmEpKTtcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQobmV3IEVycm9yKGpzb24ucmVzdWx0KSwganNvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIGFjdGlvblBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgc3VjY2Vzc0ljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgIGZhaWx1cmVJY29uLnJlbW92ZUNsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICBtZXNzYWdlcy5odG1sKFwiaW50ZXJuYWwgZXJyb3IgXCIgKyBlcnIubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJcIiwgZXJyKTtcbiAgICAgICAgICAgICAgICBvblJlc3VsdChlcnIsIG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBmZXRjaExpY2VuY2VJbmZvKGJhc2VVcmwgPSBcIlwiKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2xpY2VuY2VJbmZvYDtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoaW5nIGZhaWxlZCB3aXRoIGVycm9yXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgICAgIHJldHVybiBqc29uO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZGVjbGFyZUxpY2VuY2VXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUubGljZW5jZVdpZGdldFwiLCB7XG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGZldGNoTGljZW5jZUluZm8odGhhdC5iYXNlVXJsKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaWNvbiA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtc2cgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGV0YWlscyA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGpzb24uc3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkFVVEhPUklaRURcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uID0gXCJmYSBmYS1jaGVjay1jaXJjbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5pc0RlbW8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gXCJEZW1vIGxpY2VuY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IFwiWW91ciBsaWNlbmNlIGlzIHZhbGlkLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiRVhQSVJFRFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24gPSBcImZhIGZhLWNhbGVuZGFyLXRpbWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBcIkxpY2VuY2UgZXhwaXJlZFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gUGxlYXNlIGNvbnRhY3Qgb3VyIHN1cHBvcnQgdGVhbSBvciB2aXNpdCBvdXIgd2Vic2l0ZSB0byByZW5ldyB5b3VyIGxpY2Vuc2UgYW5kIHJlZ2FpbiBhY2Nlc3MgdG8gb3VyIHNlcnZpY2VzLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkZBSUxFRFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uID0gXCJmYSBmYS1leGNsYW1hdGlvbi1jaXJjbGVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBcIllvdXIgbGljZW5zZSBpcyBjdXJyZW50bHkgaW52YWxpZC5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSA8YSBocmVmPVwibWFpbHRvOmNvbnRhY3RAc3RlcmZpdmUuY29tXCI+IGNvbnRhY3Qgb3VyIHN1cHBvcnQgdGVhbTwvYT4gb3IgdmlzaXQgb3VyIHdlYnNpdGUgdG8gcmVuZXcgeW91ciBsaWNlbnNlIGFuZCByZWdhaW4gYWNjZXNzIHRvIG91ciBzZXJ2aWNlcy4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8qKiAqL1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmVsZW1lbnQudGV4dChcIkxpY2VuY2UgXCIgKyBKU09OLnN0cmluZ2lmeShqc29uKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRDbGFzcyhcImxpY2VuY2Utd2lkZ2V0XCIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoXCJsaWNlbmNlLXdpZGdldC1cIiArIHN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmQoJChcIjxzcGFuPlwiKS5hZGRDbGFzcyhcImxpY2VuY2Utd2lkZ2V0LWljb25cIikuYXBwZW5kKCQoXCI8aT5cIikuYWRkQ2xhc3MoaWNvbikpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZCgkKFwiPHNwYW4+XCIpLmFkZENsYXNzKFwibGljZW5jZS13aWRnZXQtbXNnXCIpLnRleHQobXNnKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmQoJChcIjxicj5cIikpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKCQoXCI8c3Bhbj5cIikuYWRkQ2xhc3MoXCJsaWNlbmNlLXdpZGdldC1kZXRhaWxzXCIpLmFwcGVuZChkZXRhaWxzKSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBkZWNsYXJlTGljZW5jZVdpZGdldCgpO1xuICAgIGZ1bmN0aW9uIGlzVmFsaWRPUENfVUFfVVJJKHN0cikge1xuICAgICAgICBsZXQgdXJsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdXJsID0gbmV3IFVSTChzdHIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVybC5wcm90b2NvbCA9PT0gXCJvcGMudGNwOlwiO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0U3Vic2NyaXB0aW9uUGFyYW1ldGVycyA9IHtcbiAgICAgICAgcHVibGlzaGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIHJlcXVlc3RlZExpZmV0aW1lQ291bnQ6IDEwMDAsXG4gICAgICAgIHJlcXVlc3RlZE1heEtlZXBBbGl2ZUNvdW50OiAxMCwgLy8gZXZlcnkgMTAgc2Vjb25kc1xuICAgICAgICByZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWw6IDEwMDAsXG4gICAgICAgIG1heE5vdGlmaWNhdGlvbnNQZXJQdWJsaXNoOiAwLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgIH07XG4gICAgUkVELm5vZGVzLnJlZ2lzdGVyVHlwZShcIk9wY1VhLUVuZHBvaW50MlwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcImNvbmZpZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwib3BjdWEgZW5kcG9pbnRcIixcbiAgICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgICAgIG5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwib3BjLnRjcDovL29wY3VhZGVtby5zdGVyZml2ZS5jb206MjY1NDMvVUEvU2FtcGxlU2VydmVyXCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGU6IGlzVmFsaWRPUENfVUFfVVJJLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIFNlY3VyaXR5IE1vZGVcbiAgICAgICAgICAgIHNlY3VyaXR5TW9kZTogeyB2YWx1ZTogXCJOb25lXCIgfSxcbiAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5OiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiTm9uZVwiLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRlOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlOiB7IHZhbHVlOiBcIkFub255bW91c1wiIH0sXG4gICAgICAgICAgICAvLyB0byB1c2Ugd2hlbiB1c2VySWRlbnRpdHlUeXBlIGlzIFVzZXJOYW1lXG4gICAgICAgICAgICB1c2VyTmFtZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHsgdmFsdWU6IFwiXCIsIHR5cGU6IFwicGFzc3dvcmRcIiB9LFxuICAgICAgICAgICAgLy8gdG8gdXNlIHdoZW4gdXNlcklkZW50aXR5VHlwZSBpcyBDZXJ0aWZpY2F0ZVxuICAgICAgICAgICAgdXNlckNlcnRpZmljYXRlOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICB1c2VyUHJpdmF0ZWtleTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgLy8gdXNlcm5hbWVcbiAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBmaXhlZCBvciBjYW4gYmUgcmVhZCB0aHJvdWdoIGVuZFBvaW50XG4gICAgICAgICAgICBjZXJ0aWZpY2F0ZTogeyB2YWx1ZTogXCJuXCIgfSxcbiAgICAgICAgICAgIGxvY2FsZmlsZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgbG9jYWxrZXlmaWxlOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgdXNlVHJhbnNwb3J0OiB7IHZhbHVlOiBmYWxzZSwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICBtYXhDaHVua0NvdW50OiB7IHZhbHVlOiAxLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIG1heE1lc3NhZ2VTaXplOiB7IHZhbHVlOiA4MTkyLCByZXF1aXJlZDogZmFsc2UgfSwgLy8gc2hvdWxkIGJlIGF0IGxlYXN0IDgxOTJcbiAgICAgICAgICAgIHJlY2VpdmVCdWZmZXJTaXplOiB7IHZhbHVlOiA4MTkyLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHNlbmRCdWZmZXJTaXplOiB7IHZhbHVlOiA4MTkyLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJzMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEZWZhdWx0IFN1YnNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFN1YnNjcmlwdGlvblBhcmFtZXRlcnMpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJzMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTbG93IFN1YnNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRMaWZldGltZUNvdW50OiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnQ6IDIwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFB1Ymxpc2hpbmdJbnRlcnZhbDogNTAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaDogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcInMzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkZhc3QgU3Vic2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdFbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZExpZmV0aW1lQ291bnQ6IDQwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnQ6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWw6IDI1MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaDogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiAyMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgICAgIHVzZXI6IHsgdHlwZTogXCJ0ZXh0XCIgfSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiB7IHR5cGU6IFwicGFzc3dvcmRcIiB9LFxuICAgICAgICB9LFxuICAgICAgICBsYWJlbDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCB0aGlzLmVuZHBvaW50IHx8IFwiaW52YWxpZCBlbmRwb2ludFwiO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkge1xuICAgICAgICAgICAgY29uc3QgX3NlY3VyaXR5UG9saWN5ID0gJChcIiNub2RlLWNvbmZpZy1pbnB1dC1zZWN1cml0eVBvbGljeVwiKTtcbiAgICAgICAgICAgIGNvbnN0IF9zZWN1cml0eU1vZGUgPSAkKFwiI25vZGUtY29uZmlnLWlucHV0LXNlY3VyaXR5TW9kZVwiKTtcbiAgICAgICAgICAgIGlmIChfc2VjdXJpdHlQb2xpY3kudmFsKCkgPT09IFwiTm9uZVwiKSB7XG4gICAgICAgICAgICAgICAgX3NlY3VyaXR5TW9kZS50ZXh0KFwiTm9uZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vICgoKCgoKCgoKCggcmV0cmlldmUgc3Vic2NyaXB0aW9uIGRhdGEgKSkpKSkpKSkpKVxuICAgICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uc0l0ZW1zID0gJChcIiNzdWJzY3JpcHRpb25zLWNvbnRhaW5lclwiKS5lZGl0YWJsZUxpc3QoXCJpdGVtc1wiKTtcbiAgICAgICAgICAgIGNvbnN0IHMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSAoeCkgPT4geDtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbnNJdGVtcy5lYWNoKGZ1bmN0aW9uIChpbmRleCwgaXRlbSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcInNcIiArIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBlLmZpbmQoXCIuaW5wdXQtbmFtZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0OiAhIWUuZmluZChcIi5pbnB1dC1pc0RlZmF1bHRcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hpbmdFbmFibGVkOiAhIWUuZmluZChcIi5pbnB1dC1wdWJsaXNoaW5nRW5hYmxlZFwiKS5pcyhcIjpjaGVja2VkXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkTGlmZXRpbWVDb3VudDogbihlLmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkTGlmZXRpbWVDb3VudFwiKS52YWwoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudDogbihlLmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnRcIikudmFsKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsOiBuKGUuZmluZChcIi5pbnB1dC1yZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWxcIikudmFsKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2g6IG4oZS5maW5kKFwiLmlucHV0LW1heE5vdGlmaWNhdGlvbnNQZXJQdWJsaXNoXCIpLnZhbCgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiBuKGUuZmluZChcIi5pbnB1dC1wcmlvcml0eVwiKS52YWwoKSksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAvLyBmb3JjZSB0byBiZSB0cnVlXG4gICAgICAgICAgICAgICAgYS5wYXJhbWV0ZXJzLnB1Ymxpc2hpbmdFbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoYS5pc0RlZmF1bHQgJiYgYS5pZCA9PT0gXCJzMFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSBkZWZhdWx0IHN1YnNjcmlwdGlvbiBuYW1lXG4gICAgICAgICAgICAgICAgICAgIGEubmFtZSA9IFwiRGVmYXVsdCBTdWJzY3JpcHRpb25cIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcy5wdXNoKGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBzO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRwcmVwYXJlKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXM7XG4gICAgICAgICAgICBjb25zdCB0YWJzID0gUkVELnRhYnMuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICBpZDogXCJub2RlLWNvbmZpZy1lbmRwb2ludC10YWJzXCIsXG4gICAgICAgICAgICAgICAgb25jaGFuZ2U6IGZ1bmN0aW9uICh0YWIpIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWNvbmZpZy1lbmRwb2ludC10YWJzLWNvbnRlbnRcIikuY2hpbGRyZW4oKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjXCIgKyB0YWIuaWQpLnNob3coKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0YWJzLmFkZFRhYih7XG4gICAgICAgICAgICAgICAgaWQ6IFwiZW5kcG9pbnQtdGFiLWNvbm5lY3Rpb25cIixcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJDb25uZWN0aW9uXCIsXG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIHRhYnMuYWRkVGFiKHtcbiAgICAgICAgICAgICAgICBpZDogXCJlbmRwb2ludC10YWItc3Vic2NyaXB0aW9uc1wiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIlN1YnNjcmlwdGlvbnNcIixcbiAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGFicy5yZXNpemUoKTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBTZWN1cml0eSBjb250cm9sc1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVTZWN1cml0eUNvbnRyb2wgPSAoc2VjdXJpdHlNb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc2VjdXJpdHlNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJOb25lXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIi5zZWN0aW9uLXNlY3VyaXR5UG9saWN5XCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJTaWduXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiU2lnbkFuZEVuY3J5cHRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwID0gJChcIi5zZWN0aW9uLXNlY3VyaXR5UG9saWN5XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3AudmFsKCkgPT09IFwiTm9uZVwiIHx8IHNwLnZhbCgpID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcC52YWwoXCJCYXNpYzI1NlNoYTI1NlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiLnNlY3Rpb24tc2VjdXJpdHlQb2xpY3lcIikuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJpbnZhbGlkIHNlY3VyaXR5TW9kZSBcIiArIHNlY3VyaXR5TW9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHVwZGF0ZVNlY3VyaXR5Q29udHJvbChub2RlLnNlY3VyaXR5TW9kZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgX3NlY3VyaXR5TW9kZSA9ICQoXCIjbm9kZS1jb25maWctaW5wdXQtc2VjdXJpdHlNb2RlXCIpO1xuICAgICAgICAgICAgICAgIF9zZWN1cml0eU1vZGUub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdTZWN1cml0eU1vZGUgPSBfc2VjdXJpdHlNb2RlLnZhbCgpO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVTZWN1cml0eUNvbnRyb2wobmV3U2VjdXJpdHlNb2RlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxpY2VuY2VXaWRnZXQgPSAkKFwiI2xpY2VuY2VXaWRnZXRcIik7XG4gICAgICAgICAgICBsaWNlbmNlV2lkZ2V0LmxpY2VuY2VXaWRnZXQoe1xuICAgICAgICAgICAgICAgIGJhc2VVcmw6IFwiXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgdGhlIFVzZXIgSWRlbnRpdHkgQ29udHJvbHNcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXV0aFJvdyA9ICQoXCIuc2VjdGlvbi11c2VySWRlbnRpdHlUeXBlLVVzZXJOYW1lXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlcnRSb3cgPSAkKFwiLnNlY3Rpb24tdXNlcklkZW50aXR5VHlwZS1DZXJ0aWZpY2F0ZVwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVJZGVudGl0eUNvbnRyb2xzID0gKHVzZXJJZGVudGl0eVR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdXNlcklkZW50aXR5VHlwZSA9IHVzZXJJZGVudGl0eVR5cGUgfHwgXCJBbm9ueW1vdXNcIjtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh1c2VySWRlbnRpdHlUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiQW5vbnltb3VzXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWNvbmZpZy1pbnB1dC11c2VyTmFtZVwiKS52YWwoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWNvbmZpZy1pbnB1dC1wYXNzd29yZFwiKS52YWwoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aFJvdy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydFJvdy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiVXNlck5hbWVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoUm93LnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0Um93LmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJDZXJ0aWZpY2F0ZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlck5hbWVcIikudmFsKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1jb25maWctaW5wdXQtcGFzc3dvcmRcIikudmFsKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRSb3cuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhSb3cuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImludmFsaWQgdXNlcklkZW50aXR5VHlwZSBcIiArIHVzZXJJZGVudGl0eVR5cGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB1cGRhdGVJZGVudGl0eUNvbnRyb2xzKG5vZGUudXNlcklkZW50aXR5VHlwZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgX3VzZXJJZGVudGl0eVR5cGUgPSAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJJZGVudGl0eVR5cGVcIik7XG4gICAgICAgICAgICAgICAgX3VzZXJJZGVudGl0eVR5cGUub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdJZGVudGl0eVR5cGUgPSBfdXNlcklkZW50aXR5VHlwZS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSWRlbnRpdHlDb250cm9scyhuZXdJZGVudGl0eVR5cGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlIGFkdmFuY2VkIGNvbnRyb2xzXG4gICAgICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICAkKFwiI3NlY3Rpb24tQWR2YW5jZWRcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgICQoXCIjdG9nZ2xlQWR2YW5jZWRTZWN0aW9uXCIpLm9uKFwiY2hhbmdlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykucHJvcChcImNoZWNrZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLCBzaG93IHRoZSBkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1BZHZhbmNlZFwiKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGhpZGUgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjc2VjdGlvbi1BZHZhbmNlZFwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSB0aGUgVGVzdCBidXR0b25cbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIG1hbmFnZUFQSUNhbGwoXCJjb25uZWN0aW9uXCIsICQoXCIjdGVzdC1jb25uZWN0aW9uXCIpLCAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB1cmw6IFwiL29wY3VhLWVuZHBvaW50Mi90ZXN0LWNvbm5lY3Rpb25cIixcbiAgICAgICAgICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG5vZGUuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtZW5kcG9pbnRcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJpdHlNb2RlOiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXNlY3VyaXR5TW9kZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cml0eVBvbGljeTogJChcIiNub2RlLWNvbmZpZy1pbnB1dC1zZWN1cml0eVBvbGljeVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlOiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJJZGVudGl0eVR5cGVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck5hbWU6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlck5hbWVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtcGFzc3dvcmRcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckNlcnRpZmljYXRlOiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJDZXJ0aWZpY2F0ZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyUHJpdmF0ZWtleTogJChcIiNub2RlLWNvbmZpZy1pbnB1dC11c2VyUHJpdmF0ZWtleVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8gbm90IHRlc3RlZCB5ZXQgLi4uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlOiAkKFwiI25vZGUtaW5wdXQtY2VydGlmaWNhdGVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxmaWxlOiAkKFwiI25vZGUtaW5wdXQtbG9jYWxmaWxlXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsa2V5ZmlsZTogJChcIiNub2RlLWlucHV0LWxvY2Fsa2V5ZmlsZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VUcmFuc3BvcnQ6ICQoXCIjbm9kZS1pbnB1dC11c2VUcmFuc3BvcnRcIikucHJvcChcImNoZWNrZWRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Q2h1bmtDb3VudDogJChcIiNub2RlLWlucHV0LW1heENodW5rQ291bnRcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TWVzc2FnZVNpemU6ICQoXCIjbm9kZS1pbnB1dC1tYXhNZXNzYWdlU2l6ZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlQnVmZmVyU2l6ZTogJChcIiNub2RlLWlucHV0LXJlY2VpdmVCdWZmZXJTaXplXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRCdWZmZXJTaXplOiAkKFwiI25vZGUtaW5wdXQtc2VuZEJ1ZmZlclNpemVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLCAoKSA9PiB7IH0pO1xuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gIEluc3RhbGwgc3Vic2NyaXB0aW9ucyBMaXN0IG1hbmFnZW1lbnRcbiAgICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2l6ZVRvcGljcyA9ICh0b3BpYywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1dpZHRoID0gdG9waWMud2lkdGgoKSB8fCAxMDA7XG4gICAgICAgICAgICAgICAgICAgIHRvcGljLmZpbmQoXCJsYWJlbFwiKS50eXBlZElucHV0KFwid2lkdGhcIiwgbmV3V2lkdGggLSAxNSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25MaXN0ID0gJChcIiNzdWJzY3JpcHRpb25zLWNvbnRhaW5lclwiKVxuICAgICAgICAgICAgICAgICAgICAuY3NzKHsgXCJtaW4taGVpZ2h0XCI6IFwiMTUwcHhcIiwgXCJtaW4td2lkdGhcIjogXCIyNjBweFwiIH0pXG4gICAgICAgICAgICAgICAgICAgIC5lZGl0YWJsZUxpc3Qoe1xuICAgICAgICAgICAgICAgICAgICBhZGRJdGVtOiAoY29udGFpbmVyLCBpbmRleCwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX2RhdGEgPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9ICQoXCIudGVtcGxhdGVcIikuY2xvbmUoKS5hcHBlbmRUbyhjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyKFwiaWRcIikucmVtb3ZlQ2xhc3MoXCJoaWRlXCIpLnJlbW92ZUNsYXNzKFwidGVtcGxhdGVcIikuYXR0cihcImRhdGEtaVwiLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtbmFtZVwiKS52YWwoX2RhdGEubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsXCIpLnZhbChfZGF0YS5wYXJhbWV0ZXJzLnJlcXVlc3RlZFB1Ymxpc2hpbmdJbnRlcnZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnRcIikudmFsKF9kYXRhLnBhcmFtZXRlcnMucmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5maW5kKFwiLmlucHV0LXJlcXVlc3RlZExpZmV0aW1lQ291bnRcIikudmFsKF9kYXRhLnBhcmFtZXRlcnMucmVxdWVzdGVkTGlmZXRpbWVDb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtbWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2hcIikudmFsKF9kYXRhLnBhcmFtZXRlcnMubWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2ggfHwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtcHJpb3JpdHlcIikudmFsKF9kYXRhLnBhcmFtZXRlcnMucHJpb3JpdHkgfHwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuc3Vic2NyaXB0aW9uLWlkXCIpLnRleHQoXCJcIiArIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZGF0YS5pc0RlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtbmFtZVwiKS5wcm9wKFwicmVhZG9ubHlcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtaXNEZWZhdWx0XCIpLnByb3AoXCJjaGVja2VkXCIsIF9kYXRhLmlzRGVmYXVsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBkZWZhdWx0IHN1YnNjcmlwdGlvbiBjYW5ub3QgYmUgYWNjaWRlbnRhbGx5IHJlbW92ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZGF0YS5pc0RlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZmluZChcIi5yZWQtdWktZWRpdGFibGVMaXN0LWl0ZW0tcmVtb3ZlXCIpLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGVsZW1lbnQuZmluZChcIi5pbnB1dC1pc0RlZmF1bHRcIikucHJvcChcImRpc2FibGVkXCIsIHRydWUpLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIC8vIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICByZW1vdmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHJlc2l6ZUl0ZW06IHJlc2l6ZVRvcGljcyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBBZGRTdWJzY3JpcHRpb24gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSBub2RlLnN1YnNjcmlwdGlvbnMgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWJzY3JpcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkIG1pc3NpbmcgZGVmYXVsdCBzdWJzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiczFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRlZmF1bHQgU3Vic2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRTdWJzY3JpcHRpb25QYXJhbWV0ZXJzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbkxpc3QuZWRpdGFibGVMaXN0KFwiZW1wdHlcIik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1YnNjcmlwdGlvbi5pc0RlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbkxpc3QuZWRpdGFibGVMaXN0KFwiYWRkSXRlbVwiLCBzdWJzY3JpcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBBZGRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxufSkoKTsiXX0=
7
+ function _0x1fbf(_0x12ddfe,_0x124669){const _0x27055e=_0x2705();return _0x1fbf=function(_0x1fbf8d,_0x3de7a6){_0x1fbf8d=_0x1fbf8d-0x169;let _0x5bb5fa=_0x27055e[_0x1fbf8d];return _0x5bb5fa;},_0x1fbf(_0x12ddfe,_0x124669);}(function(_0x385a78,_0x2cea18){const _0x4319dc=_0x1fbf,_0x36834b=_0x385a78();while(!![]){try{const _0x29afdc=-parseInt(_0x4319dc(0x1c9))/0x1*(-parseInt(_0x4319dc(0x1e2))/0x2)+-parseInt(_0x4319dc(0x190))/0x3*(-parseInt(_0x4319dc(0x216))/0x4)+parseInt(_0x4319dc(0x171))/0x5+-parseInt(_0x4319dc(0x19f))/0x6+-parseInt(_0x4319dc(0x1a9))/0x7*(-parseInt(_0x4319dc(0x1d8))/0x8)+parseInt(_0x4319dc(0x198))/0x9+parseInt(_0x4319dc(0x17c))/0xa*(-parseInt(_0x4319dc(0x179))/0xb);if(_0x29afdc===_0x2cea18)break;else _0x36834b['push'](_0x36834b['shift']());}catch(_0x3792fe){_0x36834b['push'](_0x36834b['shift']());}}}(_0x2705,0xe7db1),(function(){'use strict';const _0x1f52bc=_0x1fbf;function _0x20a403(_0x8611b5,_0x587680,_0x17f30e,_0x5b10f2){function _0x1c63d6(_0x4e018f){return _0x4e018f instanceof _0x17f30e?_0x4e018f:new _0x17f30e(function(_0x218e24){_0x218e24(_0x4e018f);});}return new(_0x17f30e||(_0x17f30e=Promise))(function(_0x510360,_0x172bb1){const _0x27e751=_0x1fbf;function _0x4bfcdb(_0x518c5e){const _0x41ec55=_0x1fbf;try{_0x35d4bc(_0x5b10f2[_0x41ec55(0x1df)](_0x518c5e));}catch(_0x2b7686){_0x172bb1(_0x2b7686);}}function _0x3e62fd(_0x5d8b9a){const _0x520157=_0x1fbf;try{_0x35d4bc(_0x5b10f2[_0x520157(0x1fb)](_0x5d8b9a));}catch(_0x49eeeb){_0x172bb1(_0x49eeeb);}}function _0x35d4bc(_0x3871f3){const _0x297419=_0x1fbf;_0x3871f3[_0x297419(0x218)]?_0x510360(_0x3871f3[_0x297419(0x1cc)]):_0x1c63d6(_0x3871f3[_0x297419(0x1cc)])['then'](_0x4bfcdb,_0x3e62fd);}_0x35d4bc((_0x5b10f2=_0x5b10f2[_0x27e751(0x209)](_0x8611b5,_0x587680||[]))['next']());});}typeof SuppressedError===_0x1f52bc(0x20c)?SuppressedError:function(_0x2f5e6e,_0x317a78,_0x461032){const _0x477195=_0x1f52bc;var _0x361cdc=new Error(_0x461032);return _0x361cdc[_0x477195(0x1e7)]=_0x477195(0x1fc),_0x361cdc[_0x477195(0x21c)]=_0x2f5e6e,_0x361cdc[_0x477195(0x1ae)]=_0x317a78,_0x361cdc;};function _0x592f14(_0x454c5c,_0x13d5fa,_0x201e55,_0x1e54b8){const _0x422409=_0x1f52bc,_0x44c70e=$('#'+_0x454c5c+'-success'),_0x16bdf9=$('#'+_0x454c5c+_0x422409(0x1e1)),_0x2bc6ce=$('#'+_0x454c5c+'-pending'),_0x8246c0=$('#'+_0x454c5c+'-messages');let _0x5ddca1=![];_0x44c70e[_0x422409(0x1e9)](),_0x16bdf9['hide'](),_0x2bc6ce[_0x422409(0x1e9)](),_0x13d5fa['on'](_0x422409(0x20e),()=>{const _0x2dfcab=_0x422409;if(_0x5ddca1)return;_0x5ddca1=!![],_0x2bc6ce[_0x2dfcab(0x16c)](_0x2dfcab(0x1e9)),_0x2bc6ce[_0x2dfcab(0x1d5)](_0x2dfcab(0x1ca)),_0x44c70e['addClass']('hide'),_0x16bdf9['addClass'](_0x2dfcab(0x1e9)),_0x8246c0[_0x2dfcab(0x1d5)]('');const {body:_0x942bf4,url:_0x35ba20}=_0x201e55();fetch(_0x35ba20,{'method':_0x2dfcab(0x19e),'headers':{'Content-Type':_0x2dfcab(0x1fd)},'body':JSON['stringify'](_0x942bf4)})[_0x2dfcab(0x18d)](_0x5e0478=>_0x5e0478[_0x2dfcab(0x205)]())['then'](_0x3cb2b7=>{const _0x2cc40a=_0x2dfcab;_0x5ddca1=![],_0x2bc6ce[_0x2cc40a(0x1e9)](),console[_0x2cc40a(0x1b3)](JSON[_0x2cc40a(0x18f)](_0x3cb2b7,null,'\x20'));if(_0x3cb2b7[_0x2cc40a(0x1d6)]==='ok')_0x44c70e[_0x2cc40a(0x16c)](_0x2cc40a(0x1e9)),_0x16bdf9[_0x2cc40a(0x176)](_0x2cc40a(0x1e9)),_0x8246c0[_0x2cc40a(0x1d5)](_0x3cb2b7[_0x2cc40a(0x1c5)][_0x2cc40a(0x1b7)]('\x0a','<br>')),_0x1e54b8(null,_0x3cb2b7);else{const _0x88eedb=_0x1780ac=>!_0x1780ac?'':_0x1780ac[_0x2cc40a(0x1dc)]('\x0a')[_0x2cc40a(0x20f)](_0x598fce=>_0x2cc40a(0x1a2)+_0x598fce+_0x2cc40a(0x1f2))['join']('\x0a'),_0x2d0a71=_0x3cabe0=>Array[_0x2cc40a(0x1ad)](_0x3cabe0)?_0x3cabe0['map'](_0x88eedb)[_0x2cc40a(0x1a6)]('\x0a'):_0x88eedb(_0x3cabe0);_0x44c70e[_0x2cc40a(0x176)](_0x2cc40a(0x1e9)),_0x16bdf9[_0x2cc40a(0x16c)]('hide'),_0x8246c0[_0x2cc40a(0x1d5)](_0x2d0a71(_0x3cb2b7[_0x2cc40a(0x1c5)])+_0x2d0a71(_0x3cb2b7[_0x2cc40a(0x1be)])),_0x1e54b8(new Error(_0x3cb2b7['result']),_0x3cb2b7);}})[_0x2dfcab(0x1db)](_0x4ccfd6=>{const _0x4753a3=_0x2dfcab;_0x5ddca1=![],_0x2bc6ce['addClass']('hide'),_0x44c70e['addClass'](_0x4753a3(0x1e9)),_0x16bdf9[_0x4753a3(0x16c)](_0x4753a3(0x1e9)),_0x8246c0['html'](_0x4753a3(0x1b8)+_0x4ccfd6[_0x4753a3(0x1c5)]),console[_0x4753a3(0x1b3)]('err',_0x4ccfd6),_0x1e54b8(_0x4ccfd6,null);});});}const _0x421de9=_0x1f52bc(0x1d4),_0x1a8f8f='pk_live_51HsE1sBCNccbzsVzt7zaq2uv20pkryWllAzvZgZd5AhwFI9A3qBIeOJvJwQF08lDoLpFqLjwmyA79wnPnYLsvKjt009f00VpCW';function _0x28332a(_0x4d9579=''){return _0x20a403(this,void 0x0,void 0x0,function*(){const _0x5cb498=_0x1fbf,_0x42ef8e=_0x4d9579+_0x5cb498(0x185),_0x273447=_0x42ef8e+_0x5cb498(0x19b),_0x4c4bd6=yield fetch(_0x273447,{'method':_0x5cb498(0x19e),'headers':{'Content-Type':_0x5cb498(0x1fd)}});if(_0x4c4bd6['status']!==0xc8)return console['log'](_0x5cb498(0x189),_0x4c4bd6[_0x5cb498(0x18a)],_0x4c4bd6[_0x5cb498(0x195)]),{};const _0x406ea5=yield _0x4c4bd6[_0x5cb498(0x205)]();return _0x406ea5;});}const _0x393e94=()=>{$['widget']('sterfive.licenceWidget',{'options':{'baseUrl':''},'_create'(){const _0x20ccf1=_0x1fbf,_0x52ac0b=this;_0x28332a(_0x52ac0b[_0x20ccf1(0x20d)])[_0x20ccf1(0x18d)](_0xbe910a=>{const _0x4252c0=_0x20ccf1;let _0x4a5e5b='',_0x485cce='',_0x544fdd='';const _0x5260f3=_0xbe910a[_0x4252c0(0x18a)];switch(_0x5260f3){case _0x4252c0(0x169):_0x4a5e5b='fa\x20fa-check-circle';_0xbe910a['isDemo']?(_0x485cce=_0x4252c0(0x1bf),_0x544fdd=_0x4252c0(0x172)):(_0x485cce='Your\x20licence\x20is\x20valid.',_0x544fdd='');break;case _0x4252c0(0x18e):_0x4a5e5b=_0x4252c0(0x183),_0x485cce=_0x4252c0(0x208),_0x544fdd=_0x4252c0(0x1f6);break;case _0x4252c0(0x211):default:_0x4a5e5b=_0x4252c0(0x1c8),_0x485cce=_0x4252c0(0x202),_0x544fdd='Please\x20<a\x20href=\x22mailto:contact@sterfive.com\x22>\x20contact\x20our\x20support\x20team</a>\x20or\x20visit\x20our\x20website\x20to\x20renew\x20your\x20license\x20and\x20regain\x20access\x20to\x20our\x20services.';break;}this[_0x4252c0(0x1a5)]['addClass'](_0x4252c0(0x1c7)),this[_0x4252c0(0x1a5)][_0x4252c0(0x176)](_0x4252c0(0x1a0)+_0x5260f3),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)]($(_0x4252c0(0x21a))[_0x4252c0(0x176)](_0x4252c0(0x1a4))[_0x4252c0(0x188)]($('<i>')[_0x4252c0(0x176)](_0x4a5e5b))),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)]($(_0x4252c0(0x21a))[_0x4252c0(0x176)](_0x4252c0(0x1ba))[_0x4252c0(0x1e6)](_0x485cce)),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)]($(_0x4252c0(0x1aa))),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)]($('<span>')[_0x4252c0(0x176)]('licence-widget-details')[_0x4252c0(0x188)](_0x544fdd));if(_0x5260f3===_0x4252c0(0x18e)||_0x5260f3==='FAILED'){const _0xbbf02d=$(_0x4252c0(0x16b));_0xbbf02d[_0x4252c0(0x1fe)]('id',_0x4252c0(0x206)),_0xbbf02d[_0x4252c0(0x1fe)]('class',_0x4252c0(0x1a7)),_0xbbf02d[_0x4252c0(0x1fe)](_0x4252c0(0x214),_0x4252c0(0x180)),_0xbbf02d['text'](_0x4252c0(0x204)),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)](_0xbbf02d);const _0x513c21=document[_0x4252c0(0x178)](_0x4252c0(0x1b9));_0x513c21['src']=_0x4252c0(0x20b),_0x513c21[_0x4252c0(0x16e)]=!![],$(_0x4252c0(0x1d3))[_0x4252c0(0x188)](_0x513c21);const _0x4224a8=$(_0x4252c0(0x1d1));_0x4224a8[_0x4252c0(0x1fe)](_0x4252c0(0x174),_0x421de9),_0x4224a8[_0x4252c0(0x1fe)](_0x4252c0(0x17b),_0x1a8f8f),_0x4224a8[_0x4252c0(0x1fe)](_0x4252c0(0x214),_0x4252c0(0x213)),_0x4224a8['hide'](),this[_0x4252c0(0x1a5)][_0x4252c0(0x188)](_0x4224a8),_0xbbf02d['on'](_0x4252c0(0x20e),()=>{const _0x4b8ced=_0x4252c0;_0x4224a8[_0x4b8ced(0x1ea)](),_0xbbf02d[_0x4b8ced(0x1e9)](),this[_0x4b8ced(0x1a5)][_0x4b8ced(0x1fe)]('style','height:\x20100%\x20!important;');});}})[_0x20ccf1(0x1db)](_0x165bd8=>{const _0x467bc8=_0x20ccf1;console[_0x467bc8(0x1b3)](_0x165bd8);});}});};_0x393e94();function _0x553970(_0x565315){let _0x26f5cf;try{_0x26f5cf=new URL(_0x565315);}catch(_0x1f7924){return![];}return _0x26f5cf['protocol']==='opc.tcp:';}const _0x36d8d0={'publishingEnabled':!![],'requestedLifetimeCount':0x3e8,'requestedMaxKeepAliveCount':0xa,'requestedPublishingInterval':0x3e8,'maxNotificationsPerPublish':0x0,'priority':0x64};RED[_0x1f52bc(0x181)][_0x1f52bc(0x197)](_0x1f52bc(0x199),{'category':_0x1f52bc(0x184),'paletteLabel':_0x1f52bc(0x207),'defaults':{'name':{'value':''},'endpoint':{'value':'opc.tcp://opcuademo.sterfive.com:26543/UA/SampleServer','required':!![],'validate':_0x553970},'securityMode':{'value':'None'},'securityPolicy':{'value':_0x1f52bc(0x17e),'validate':_0xe0edc9=>{if(!_0xe0edc9)return![];return!![];}},'userIdentityType':{'value':_0x1f52bc(0x16d)},'userName':{'value':''},'password':{'value':'','type':'password'},'userCertificate':{'value':''},'userPrivatekey':{'value':''},'certificate':{'value':'n'},'localfile':{'value':''},'localkeyfile':{'value':''},'useTransport':{'value':![],'required':![]},'maxChunkCount':{'value':0x1,'required':![]},'maxMessageSize':{'value':0x2000,'required':![]},'receiveBufferSize':{'value':0x2000,'required':![]},'sendBufferSize':{'value':0x2000,'required':![]},'subscriptions':{'value':[{'id':'s1','name':_0x1f52bc(0x1b2),'isDefault':!![],'parameters':Object['assign']({},_0x36d8d0)},{'id':'s2','name':_0x1f52bc(0x17a),'isDefault':![],'parameters':{'publishingEnabled':!![],'requestedLifetimeCount':0x64,'requestedMaxKeepAliveCount':0x14,'requestedPublishingInterval':0x1388,'maxNotificationsPerPublish':0x64,'priority':0xa}},{'id':'s3','name':'Fast\x20Subscription','isDefault':![],'parameters':{'publishingEnabled':!![],'requestedLifetimeCount':0xfa0,'requestedMaxKeepAliveCount':0x64,'requestedPublishingInterval':0xfa,'maxNotificationsPerPublish':0x64,'priority':0xc8}}],'required':![]}},'credentials':{'user':{'type':_0x1f52bc(0x1e6)},'password':{'type':_0x1f52bc(0x1e0)}},'label':function(){const _0x207723=_0x1f52bc;return this[_0x207723(0x1e7)]||this[_0x207723(0x19d)]||'invalid\x20endpoint';},'oneditsave'(){const _0x57c886=_0x1f52bc,_0x10e164=$(_0x57c886(0x17f)),_0x1e074b=$(_0x57c886(0x212));_0x10e164[_0x57c886(0x20a)]()==='None'&&_0x1e074b[_0x57c886(0x1e6)](_0x57c886(0x17e));const _0x158910=$(_0x57c886(0x173))[_0x57c886(0x1c6)](_0x57c886(0x1d7)),_0x168089=[],_0x3a45c4=_0xfa70fb=>_0xfa70fb;_0x158910[_0x57c886(0x217)](function(_0x4e8449,_0x49eb80){const _0x2873e1=_0x57c886,_0x1e1ff2=$(this),_0x1c1eca={'id':'s'+_0x4e8449,'name':_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x196))[_0x2873e1(0x20a)](),'isDefault':!!_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x16a))[_0x2873e1(0x20a)](),'parameters':{'publishingEnabled':!!_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x1f9))['is'](':checked'),'requestedLifetimeCount':_0x3a45c4(_0x1e1ff2['find'](_0x2873e1(0x191))['val']()),'requestedMaxKeepAliveCount':_0x3a45c4(_0x1e1ff2[_0x2873e1(0x1ff)]('.input-requestedMaxKeepAliveCount')[_0x2873e1(0x20a)]()),'requestedPublishingInterval':_0x3a45c4(_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x187))['val']()),'maxNotificationsPerPublish':_0x3a45c4(_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x186))['val']()),'priority':_0x3a45c4(_0x1e1ff2[_0x2873e1(0x1ff)](_0x2873e1(0x1f5))['val']())}};_0x1c1eca[_0x2873e1(0x1f3)]['publishingEnabled']=!![],_0x1c1eca[_0x2873e1(0x1d2)]&&_0x1c1eca['id']==='s0'&&(_0x1c1eca['name']=_0x2873e1(0x1b2)),_0x168089[_0x2873e1(0x1b0)](_0x1c1eca);}),this[_0x57c886(0x1cd)]=_0x168089;},'oneditprepare'(){const _0x1a7ff6=_0x1f52bc,_0x25805f=this,_0x31df80=RED[_0x1a7ff6(0x1a8)][_0x1a7ff6(0x1ee)]({'id':_0x1a7ff6(0x1e5),'onchange':function(_0x479d38){const _0x2e7cfe=_0x1a7ff6;$(_0x2e7cfe(0x1a3))[_0x2e7cfe(0x201)]()[_0x2e7cfe(0x1e9)](),$('#'+_0x479d38['id'])[_0x2e7cfe(0x1ea)]();}});_0x31df80['addTab']({'id':'endpoint-tab-connection','label':_0x1a7ff6(0x1cf)},0x0),_0x31df80['addTab']({'id':'endpoint-tab-subscriptions','label':_0x1a7ff6(0x18c)},0x1),setTimeout(function(){const _0x1e7ca6=_0x1a7ff6;_0x31df80[_0x1e7ca6(0x1b5)]();},0x0);{const _0x55f908=_0x537b17=>{const _0x148b82=_0x1a7ff6;switch(_0x537b17){case null:case undefined:case'':case'None':$('.section-securityPolicy')[_0x148b82(0x1e9)]();break;case'Sign':case _0x148b82(0x1e3):{const _0x23f8ca=$(_0x148b82(0x1ab));(_0x23f8ca[_0x148b82(0x20a)]()===_0x148b82(0x17e)||_0x23f8ca[_0x148b82(0x20a)]()==='')&&_0x23f8ca[_0x148b82(0x20a)](_0x148b82(0x1c4)),$('.section-securityPolicy')[_0x148b82(0x1ea)]();}break;default:console[_0x148b82(0x1b3)](_0x148b82(0x177)+_0x537b17);}};_0x55f908(_0x25805f[_0x1a7ff6(0x1a1)]);const _0x4d602b=$(_0x1a7ff6(0x212));_0x4d602b['on'](_0x1a7ff6(0x17d),()=>{const _0x2c0ebf=_0x4d602b['val']();_0x55f908(_0x2c0ebf);});}const _0x26f179=$('#licenceWidget');_0x26f179[_0x1a7ff6(0x19a)]({'baseUrl':''});{const _0x20749f=$(_0x1a7ff6(0x215)),_0x4a0494=$(_0x1a7ff6(0x1f7)),_0x20e3b4=_0x2cf3e2=>{const _0xd92134=_0x1a7ff6;_0x2cf3e2=_0x2cf3e2||_0xd92134(0x16d);switch(_0x2cf3e2){case _0xd92134(0x16d):$(_0xd92134(0x21b))[_0xd92134(0x20a)](''),$(_0xd92134(0x175))['val'](''),_0x20749f[_0xd92134(0x1e9)](),_0x4a0494['hide']();break;case _0xd92134(0x1de):_0x20749f['show'](),_0x4a0494[_0xd92134(0x1e9)]();break;case'Certificate':$(_0xd92134(0x21b))[_0xd92134(0x20a)](''),$(_0xd92134(0x175))[_0xd92134(0x20a)](''),_0x4a0494[_0xd92134(0x1ea)](),_0x20749f[_0xd92134(0x1e9)]();break;default:console['log'](_0xd92134(0x1d9)+_0x2cf3e2);}};_0x20e3b4(_0x25805f['userIdentityType']);const _0x4ba55a=$('#node-config-input-userIdentityType');_0x4ba55a['on']('change',()=>{const _0x5aa33f=_0x1a7ff6,_0x199634=_0x4ba55a[_0x5aa33f(0x20a)]();_0x20e3b4(_0x199634);});}{$(_0x1a7ff6(0x1fa))[_0x1a7ff6(0x1e9)](),$(_0x1a7ff6(0x170))['on'](_0x1a7ff6(0x17d),function(){const _0x1884ce=_0x1a7ff6;$(this)[_0x1884ce(0x1b4)]('checked')?$(_0x1884ce(0x1fa))[_0x1884ce(0x1ea)]():$(_0x1884ce(0x1fa))[_0x1884ce(0x1e9)]();});}{$(_0x1a7ff6(0x1bb))['on'](_0x1a7ff6(0x20e),()=>_0x20a403(this,void 0x0,void 0x0,function*(){const _0x1996c3=_0x1a7ff6,_0x5b8969=yield fetch(_0x1996c3(0x1c0)),_0x326236=yield _0x5b8969[_0x1996c3(0x205)](),_0x556801=JSON[_0x1996c3(0x18f)](_0x326236,null,'\x20');alert(_0x556801);}));}{_0x592f14(_0x1a7ff6(0x192),$(_0x1a7ff6(0x194)),()=>({'url':_0x1a7ff6(0x1c1),'body':{'endpointNode':{'id':_0x25805f['id'],'endpoint':$(_0x1a7ff6(0x1f0))[_0x1a7ff6(0x20a)](),'securityMode':$('#node-config-input-securityMode')[_0x1a7ff6(0x20a)](),'securityPolicy':$(_0x1a7ff6(0x17f))[_0x1a7ff6(0x20a)](),'userIdentityType':$('#node-config-input-userIdentityType')['val'](),'userName':$(_0x1a7ff6(0x21b))[_0x1a7ff6(0x20a)](),'password':$(_0x1a7ff6(0x175))[_0x1a7ff6(0x20a)](),'userCertificate':$(_0x1a7ff6(0x1eb))[_0x1a7ff6(0x20a)](),'userPrivatekey':$(_0x1a7ff6(0x18b))[_0x1a7ff6(0x20a)](),'certificate':$(_0x1a7ff6(0x1dd))['val'](),'localfile':$(_0x1a7ff6(0x193))[_0x1a7ff6(0x20a)](),'localkeyfile':$(_0x1a7ff6(0x1b1))[_0x1a7ff6(0x20a)](),'useTransport':$(_0x1a7ff6(0x210))[_0x1a7ff6(0x1b4)](_0x1a7ff6(0x1cb)),'maxChunkCount':$(_0x1a7ff6(0x1f8))[_0x1a7ff6(0x20a)](),'maxMessageSize':$(_0x1a7ff6(0x1bd))[_0x1a7ff6(0x20a)](),'receiveBufferSize':$(_0x1a7ff6(0x16f))[_0x1a7ff6(0x20a)](),'sendBufferSize':$('#node-input-sendBufferSize')[_0x1a7ff6(0x20a)]()}}}),()=>{});}{const _0x3d661a=(_0x2bde7a,_0xe26c51)=>{const _0x53da91=_0x1a7ff6;var _0x51f8bb=_0x2bde7a[_0x53da91(0x1b6)]()||0x64;_0x2bde7a[_0x53da91(0x1ff)](_0x53da91(0x1ac))['typedInput']('width',_0x51f8bb-0xf);},_0xc7313e=$(_0x1a7ff6(0x173))['css']({'min-height':_0x1a7ff6(0x1c3),'min-width':_0x1a7ff6(0x203)})[_0x1a7ff6(0x1c6)]({'addItem':(_0x5626b4,_0x536e57,_0x2903fb)=>{const _0x487f60=_0x1a7ff6,_0x1f0000=_0x2903fb,_0x2e81c0=$(_0x487f60(0x1ed))[_0x487f60(0x1ce)]()['appendTo'](_0x5626b4);_0x2e81c0[_0x487f60(0x1e8)]('id')[_0x487f60(0x16c)](_0x487f60(0x1e9))[_0x487f60(0x16c)](_0x487f60(0x1d0))['attr'](_0x487f60(0x1ec),_0x536e57),_0x2e81c0[_0x487f60(0x1ff)](_0x487f60(0x196))[_0x487f60(0x20a)](_0x1f0000[_0x487f60(0x1e7)]),_0x2e81c0['find']('.input-requestedPublishingInterval')[_0x487f60(0x20a)](_0x1f0000[_0x487f60(0x1f3)][_0x487f60(0x200)]),_0x2e81c0[_0x487f60(0x1ff)](_0x487f60(0x219))[_0x487f60(0x20a)](_0x1f0000[_0x487f60(0x1f3)]['requestedMaxKeepAliveCount']),_0x2e81c0[_0x487f60(0x1ff)](_0x487f60(0x191))[_0x487f60(0x20a)](_0x1f0000[_0x487f60(0x1f3)][_0x487f60(0x19c)]),_0x2e81c0['find']('.input-maxNotificationsPerPublish')[_0x487f60(0x20a)](_0x1f0000['parameters'][_0x487f60(0x182)]||0x0),_0x2e81c0['find'](_0x487f60(0x1f5))[_0x487f60(0x20a)](_0x1f0000['parameters'][_0x487f60(0x1ef)]||0x0),_0x2e81c0[_0x487f60(0x1ff)](_0x487f60(0x1e4))['text'](''+_0x536e57),_0x1f0000[_0x487f60(0x1d2)]&&_0x2e81c0['find'](_0x487f60(0x196))['prop']('readonly',!![]),_0x2e81c0[_0x487f60(0x1ff)]('.input-isDefault')[_0x487f60(0x1b4)]('checked',_0x1f0000[_0x487f60(0x1d2)]),_0x1f0000['isDefault']&&(_0x5626b4['find'](_0x487f60(0x1bc))[_0x487f60(0x176)](_0x487f60(0x1e9)),setTimeout(()=>_0x2e81c0['find'](_0x487f60(0x16a))[_0x487f60(0x1b4)](_0x487f60(0x1c2),!![]),0xa));},'removable':!![],'resizeItem':_0x3d661a}),_0x1084a7=()=>{const _0x463fef=_0x1a7ff6,_0x552db1=_0x25805f[_0x463fef(0x1cd)]||[];_0x552db1[_0x463fef(0x1da)]===0x0&&_0x552db1[_0x463fef(0x1b0)]({'id':'s1','name':_0x463fef(0x1b2),'isDefault':!![],'parameters':Object[_0x463fef(0x1f1)]({},_0x36d8d0)});_0xc7313e[_0x463fef(0x1c6)](_0x463fef(0x1af));for(const _0x42270f of _0x552db1){_0xc7313e[_0x463fef(0x1c6)](_0x463fef(0x1f4),_0x42270f);}};_0x1084a7();}}});}()));function _0x2705(){const _0x3727b7=['Connection','template','<stripe-pricing-table/>','isDefault','head','prctbl_1OJt49BCNccbzsVzkaANOgFL','html','result','items','11161944xuJzui','invalid\x20userIdentityType\x20','length','catch','split','#node-input-certificate','UserName','next','password','-failure','1838wisSRe','SignAndEncrypt','.subscription-id','node-config-endpoint-tabs','text','name','removeAttr','hide','show','#node-config-input-userCertificate','data-i','.template','create','priority','#node-config-input-endpoint','assign','</p>','parameters','addItem','.input-priority','Your\x20license\x20has\x20expired.\x20Please\x20contact\x20our\x20support\x20team\x20or\x20visit\x20our\x20website\x20to\x20renew\x20your\x20license\x20and\x20regain\x20access\x20to\x20our\x20services.','.section-userIdentityType-Certificate','#node-input-maxChunkCount','.input-publishingEnabled','#section-Advanced','throw','SuppressedError','application/json','attr','find','requestedPublishingInterval','children','Your\x20license\x20is\x20currently\x20invalid.','260px','Subscribe','json','subscribe-button','opcua\x20endpoint','Licence\x20expired','apply','val','https://js.stripe.com/v3/pricing-table.js','function','baseUrl','click','map','#node-input-useTransport','FAILED','#node-config-input-securityMode','height:\x20100%;max-height:\x20100%;','style','.section-userIdentityType-UserName','4IXxtqN','each','done','.input-requestedMaxKeepAliveCount','<span>','#node-config-input-userName','error','AUTHORIZED','.input-isDefault','<button/>','removeClass','Anonymous','async','#node-input-receiveBufferSize','#toggleAdvancedSection','2730315uzSuNq','This\x20is\x20a\x20demo\x20licence\x20and\x20will\x20expire\x20soon.\x20Please\x20contact\x20our\x20support\x20team\x20or\x20visit\x20our\x20website\x20to\x20acquire\x20a\x20license\x20and\x20gain\x20access\x20to\x20full\x20functionality.','#subscriptions-container','pricing-table-id','#node-config-input-password','addClass','invalid\x20securityMode\x20','createElement','3551768OgRdup','Slow\x20Subscription','publishable-key','80mjALRf','change','None','#node-config-input-securityPolicy','margin-top:\x2020px;','nodes','maxNotificationsPerPublish','fa\x20fa-calendar-time','config','/opcua-endpoint2','.input-maxNotificationsPerPublish','.input-requestedPublishingInterval','append','fetching\x20failed\x20with\x20error','status','#node-config-input-userPrivatekey','Subscriptions','then','EXPIRED','stringify','1210914UBKegx','.input-requestedLifetimeCount','connection','#node-input-localfile','#test-connection','statusText','.input-name','registerType','7140402WYBMsI','OpcUa-Endpoint2','licenceWidget','/licenceInfo','requestedLifetimeCount','endpoint','POST','3626940SAHGvA','licence-widget-','securityMode','<p>','#node-config-endpoint-tabs-content','licence-widget-icon','element','join','btn\x20btn-primary','tabs','7ISVvKu','<br>','.section-securityPolicy','label','isArray','suppressed','empty','push','#node-input-localkeyfile','Default\x20Subscription','log','prop','resize','width','replace','internal\x20error\x20','script','licence-widget-msg','#checkCertificate','.red-ui-editableList-item-remove','#node-input-maxMessageSize','extra','Demo\x20licence','/opcua-endpoint2/client_certificate.json','/opcua-endpoint2/test-connection','disabled','150px','Basic256Sha256','message','editableList','licence-widget','fa\x20fa-exclamation-circle','1087PwWEWv','Testing\x20Connection\x20...','checked','value','subscriptions','clone'];_0x2705=function(){return _0x3727b7;};return _0x2705();}
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgyMGE0MDMiLCJfMHg4NjExYjUiLCJfMHg1ODc2ODAiLCJfMHgxN2YzMGUiLCJfMHg1YjEwZjIiLCJfMHgxYzYzZDYiLCJfMHg0ZTAxOGYiLCJfMHgyMThlMjQiLCJQcm9taXNlIiwiXzB4NTEwMzYwIiwiXzB4MTcyYmIxIiwiXzB4NGJmY2RiIiwiXzB4NTE4YzVlIiwiXzB4MzVkNGJjIiwiXzB4MmI3Njg2IiwiXzB4M2U2MmZkIiwiXzB4NWQ4YjlhIiwiXzB4NDllZWViIiwiXzB4Mzg3MWYzIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4MmY1ZTZlIiwiXzB4MzE3YTc4IiwiXzB4NDYxMDMyIiwiXzB4MzYxY2RjIiwiRXJyb3IiLCJfMHg1OTJmMTQiLCJfMHg0NTRjNWMiLCJfMHgxM2Q1ZmEiLCJfMHgyMDFlNTUiLCJfMHgxZTU0YjgiLCJfMHg0NGM3MGUiLCIkIiwiXzB4MTZiZGY5IiwiXzB4MmJjNmNlIiwiXzB4ODI0NmMwIiwiXzB4NWRkY2ExIiwiYm9keSIsIl8weDk0MmJmNCIsInVybCIsIl8weDM1YmEyMCIsImZldGNoIiwiSlNPTiIsIl8weDVlMDQ3OCIsIl8weDNjYjJiNyIsImNvbnNvbGUiLCJfMHg4OGVlZGIiLCJfMHgxNzgwYWMiLCJfMHg1OThmY2UiLCJfMHgyZDBhNzEiLCJfMHgzY2FiZTAiLCJBcnJheSIsIl8weDRjY2ZkNiIsIl8weDQyMWRlOSIsIl8weDFhOGY4ZiIsIl8weDI4MzMyYSIsIl8weDRkOTU3OSIsIl8weDQyZWY4ZSIsIl8weDI3MzQ0NyIsIl8weDRjNGJkNiIsIl8weDQwNmVhNSIsIl8weDM5M2U5NCIsIl8weDUyYWMwYiIsIl8weGJlOTEwYSIsIl8weDRhNWU1YiIsIl8weDQ4NWNjZSIsIl8weDU0NGZkZCIsIl8weDUyNjBmMyIsIl8weGJiZjAyZCIsIl8weDUxM2MyMSIsImRvY3VtZW50IiwiXzB4NDIyNGE4IiwiXzB4MTY1YmQ4IiwiXzB4NTUzOTcwIiwiXzB4NTY1MzE1IiwiXzB4MjZmNWNmIiwiVVJMIiwiXzB4MWY3OTI0IiwiXzB4MzZkOGQwIiwiUkVEIiwiXzB4ZTBlZGM5IiwiT2JqZWN0IiwiXzB4MTBlMTY0IiwiXzB4MWUwNzRiIiwiXzB4MTU4OTEwIiwiXzB4MTY4MDg5IiwiXzB4M2E0NWM0IiwiXzB4ZmE3MGZiIiwiXzB4NGU4NDQ5IiwiXzB4NDllYjgwIiwiXzB4MWUxZmYyIiwiXzB4MWMxZWNhIiwiXzB4MjU4MDVmIiwiXzB4MzFkZjgwIiwiXzB4NDc5ZDM4Iiwic2V0VGltZW91dCIsIl8weDU1ZjkwOCIsIl8weDUzN2IxNyIsInVuZGVmaW5lZCIsIl8weDIzZjhjYSIsIl8weDRkNjAyYiIsIl8weDJjMGViZiIsIl8weDI2ZjE3OSIsIl8weDIwNzQ5ZiIsIl8weDRhMDQ5NCIsIl8weDIwZTNiNCIsIl8weDJjZjNlMiIsIl8weDRiYTU1YSIsIl8weDE5OTYzNCIsIl8weDViODk2OSIsIl8weDMyNjIzNiIsIl8weDU1NjgwMSIsImFsZXJ0IiwiXzB4M2Q2NjFhIiwiXzB4MmJkZTdhIiwiXzB4ZTI2YzUxIiwiXzB4NTFmOGJiIiwiXzB4YzczMTNlIiwiXzB4NTYyNmI0IiwiXzB4NTM2ZTU3IiwiXzB4MjkwM2ZiIiwiXzB4MWYwMDAwIiwiXzB4MmU4MWMwIiwiXzB4MTA4NGE3IiwiXzB4NTUyZGIxIiwiXzB4NDIyNzBmIl0sIm1hcHBpbmdzIjoidzBCQUFBLENBQUMsVSxDQUNHLGEsd0JBbUJBLFNBQVNBLFNBQVQsQ0FBbUJDLFNBQW5CLENBQTRCQyxTQUE1QixDQUF3Q0MsU0FBeEMsQ0FBMkNDLFNBQTNDLEMsQ0FDSSxTQUFTQyxTQUFULENBQWVDLFNBQWYsQyxRQUErQkEsU0FBQSxZQUFpQkgsU0FBakIsQ0FBcUJHLFNBQXJCLENBQTZCLElBQUlILFNBQUosQ0FBTSxTQUFVSSxTQUFWLEMsQ0FBcUJBLFNBQUEsQ0FBUUQsU0FBUixDLEVBQTNCLEMsU0FDckQsR0FBSyxDQUFBSCxTQUFBLEVBQU0sQ0FBQUEsU0FBQSxDQUFJSyxPQUFKLENBQU4sQ0FBTCxDQUF5QixT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QUEsRSxnQkFBQSxFLE1BQUEsRSxFQUFzQyxDQUFLSCxTQUEzQyxDLENBQ0lFLFNBQUEsQyxnQkFBQSxDLEVBQ0FDLFNBQUEsQyxNQUFBLEUsZ0JBQUEsRSxNQUFBLEUsVUFBQSxDLElBQUEsQyxDQUVKQSxTQUFBLEMsZ0JBQUEsRSxrQkFBQSxFLGdCQUFBLEUsU0FBQSxDQUFpREQsU0FBQSxDLGdCQUFBLENBQWpELEMsQ0FFSUEsU0FBQSxDLFdBQUEsQyxHQUNBSCxTQUFBLEMsTUFBQSxFLGdCQUFBLEUsZ0JBQUEsRSxnQkFBQSxDLENBQ0F2QixVQUFBLENBQVcsSUFBTTJCLFNBQUEsQyxNQUFBLEUsZ0JBQUEsRSxnQkFBQSxFLGdCQUFBLEMsSUFBQSxDQUFqQixDLEdBQUEsQyxHQW5CTSxDLFdBdUJkLEMsSUF2QmMsQyxZQXdCZCxDQUFZVCxTQXhCRSxDQUZPLENBSnpCLENBZ0NNVSxTQUFBLENBQWtCLEksMkJBQ2RDLFNBQUEsQ0FBZ0JoQyxTQUFBLEMsZ0JBQUEsR0FBc0IsRSxDQUN4Q2dDLFNBQUEsQyxnQkFBQSxJLEtBRUFBLFNBQUEsQyxnQkFBQSxFQUFtQixDLElBQ2YsQyxJQURlLEMsTUFFZixDLGdCQUZlLEMsV0FHZixDLElBSGUsQyxZQUlmLENBQVkzQyxNQUFBLEMsZ0JBQUEsRUFBYyxFQUFkLENBQWtCSCxTQUFsQixDQUpHLENBQW5CLEMsQ0FPSnVDLFNBQUEsQyxnQkFBQSxFLGdCQUFBLEVBQ0EsVUFBV1EsU0FBWCxJQUEyQkQsU0FBM0IsQyxDQUVJUCxTQUFBLEMsZ0JBQUEsRSxnQkFBQSxDQUF5Q1EsU0FBekMsQyxHQTlDUixDQWlEQUYsU0FBQSxFLEdBalU4QixDQUExQyxDLEVBMU5KLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYW5hZ2VBUElDYWxsKHByZWZpeCwgYnRuLCBmdW5jLCBvblJlc3VsdCkge1xuICAgICAgICBjb25zdCBzdWNjZXNzSWNvbiA9ICQoYCMke3ByZWZpeH0tc3VjY2Vzc2ApO1xuICAgICAgICBjb25zdCBmYWlsdXJlSWNvbiA9ICQoYCMke3ByZWZpeH0tZmFpbHVyZWApO1xuICAgICAgICBjb25zdCBwZW5kaW5nSWNvbiA9ICQoYCMke3ByZWZpeH0tcGVuZGluZ2ApO1xuICAgICAgICBjb25zdCBtZXNzYWdlcyA9ICQoYCMke3ByZWZpeH0tbWVzc2FnZXNgKTtcbiAgICAgICAgbGV0IGFjdGlvblBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgc3VjY2Vzc0ljb24uaGlkZSgpO1xuICAgICAgICBmYWlsdXJlSWNvbi5oaWRlKCk7XG4gICAgICAgIHBlbmRpbmdJY29uLmhpZGUoKTtcbiAgICAgICAgYnRuLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGlvblBlbmRpbmcpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgYWN0aW9uUGVuZGluZyA9IHRydWU7XG4gICAgICAgICAgICBwZW5kaW5nSWNvbi5yZW1vdmVDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICBwZW5kaW5nSWNvbi5odG1sKFwiVGVzdGluZyBDb25uZWN0aW9uIC4uLlwiKTtcbiAgICAgICAgICAgIHN1Y2Nlc3NJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgIGZhaWx1cmVJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgIG1lc3NhZ2VzLmh0bWwoXCJcIik7XG4gICAgICAgICAgICBjb25zdCB7IGJvZHksIHVybCB9ID0gZnVuYygpO1xuICAgICAgICAgICAgLy8geHggY29uc29sZS5sb2coXCJ4eHh4eFwiLCBib2R5KTtcbiAgICAgICAgICAgIGZldGNoKHVybCwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4gZGF0YS5qc29uKCkpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGpzb24pID0+IHtcbiAgICAgICAgICAgICAgICBhY3Rpb25QZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0ljb24uaGlkZSgpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIFwiIFwiKSk7XG4gICAgICAgICAgICAgICAgaWYgKGpzb24ucmVzdWx0ID09PSBcIm9rXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0ljb24ucmVtb3ZlQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICBmYWlsdXJlSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmh0bWwoanNvbi5tZXNzYWdlLnJlcGxhY2UoXCJcXG5cIiwgXCI8YnI+XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQobnVsbCwganNvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGFwdCA9IChzdHIpID0+ICFzdHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzdHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChhKSA9PiBgPHA+JHthfTwvcD5gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGFwdDIgPSAoc3RyKSA9PiAoQXJyYXkuaXNBcnJheShzdHIpID8gc3RyLm1hcChhZGFwdCkuam9pbihcIlxcblwiKSA6IGFkYXB0KHN0cikpO1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgICAgIGZhaWx1cmVJY29uLnJlbW92ZUNsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMuaHRtbChhZGFwdDIoanNvbi5tZXNzYWdlKSArIGFkYXB0Mihqc29uLmV4dHJhKSk7XG4gICAgICAgICAgICAgICAgICAgIG9uUmVzdWx0KG5ldyBFcnJvcihqc29uLnJlc3VsdCksIGpzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBhY3Rpb25QZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0ljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3NJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICBmYWlsdXJlSWNvbi5yZW1vdmVDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgbWVzc2FnZXMuaHRtbChcImludGVybmFsIGVycm9yIFwiICsgZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICAgICAgb25SZXN1bHQoZXJyLCBudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmljaW5nVGFibGVJZCA9IFwicHJjdGJsXzFPSnQ0OUJDTmNjYnpzVnprYUFOT2dGTFwiO1xuICAgIGNvbnN0IHB1Ymxpc2hhYmxlS2V5ID0gXCJwa19saXZlXzUxSHNFMXNCQ05jY2J6c1Z6dDd6YXEydXYyMHBrcnlXbGxBenZaZ1pkNUFod0ZJOUEzcUJJZU9Kdkp3UUYwOGxEb0xwRnFMandteUE3OXduUG5ZTHN2S2p0MDA5ZjAwVnBDV1wiO1xuICAgIGZ1bmN0aW9uIGZldGNoTGljZW5jZUluZm8oYmFzZVVybCA9IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vbGljZW5jZUluZm9gO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QganNvbiA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICAgICAgcmV0dXJuIGpzb247XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBkZWNsYXJlTGljZW5jZVdpZGdldCA9ICgpID0+IHtcbiAgICAgICAgJC53aWRnZXQoXCJzdGVyZml2ZS5saWNlbmNlV2lkZ2V0XCIsIHtcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgZmV0Y2hMaWNlbmNlSW5mbyh0aGF0LmJhc2VVcmwpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpY29uID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1zZyA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXRhaWxzID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0ganNvbi5zdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiQVVUSE9SSVpFRFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24gPSBcImZhIGZhLWNoZWNrLWNpcmNsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLmlzRGVtbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBcIkRlbW8gbGljZW5jZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyBpcyBhIGRlbW8gbGljZW5jZSBhbmQgd2lsbCBleHBpcmUgc29vbi4gUGxlYXNlIGNvbnRhY3Qgb3VyIHN1cHBvcnQgdGVhbSBvciB2aXNpdCBvdXIgd2Vic2l0ZSB0byBhY3F1aXJlIGEgbGljZW5zZSBhbmQgZ2FpbiBhY2Nlc3MgdG8gZnVsbCBmdW5jdGlvbmFsaXR5LlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gXCJZb3VyIGxpY2VuY2UgaXMgdmFsaWQuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJFWFBJUkVEXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbiA9IFwiZmEgZmEtY2FsZW5kYXItdGltZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IFwiTGljZW5jZSBleHBpcmVkXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiWW91ciBsaWNlbnNlIGhhcyBleHBpcmVkLiBQbGVhc2UgY29udGFjdCBvdXIgc3VwcG9ydCB0ZWFtIG9yIHZpc2l0IG91ciB3ZWJzaXRlIHRvIHJlbmV3IHlvdXIgbGljZW5zZSBhbmQgcmVnYWluIGFjY2VzcyB0byBvdXIgc2VydmljZXMuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiRkFJTEVEXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24gPSBcImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IFwiWW91ciBsaWNlbnNlIGlzIGN1cnJlbnRseSBpbnZhbGlkLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIDxhIGhyZWY9XCJtYWlsdG86Y29udGFjdEBzdGVyZml2ZS5jb21cIj4gY29udGFjdCBvdXIgc3VwcG9ydCB0ZWFtPC9hPiBvciB2aXNpdCBvdXIgd2Vic2l0ZSB0byByZW5ldyB5b3VyIGxpY2Vuc2UgYW5kIHJlZ2FpbiBhY2Nlc3MgdG8gb3VyIHNlcnZpY2VzLic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLyoqICovXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZWxlbWVudC50ZXh0KFwiTGljZW5jZSBcIiArIEpTT04uc3RyaW5naWZ5KGpzb24pKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZENsYXNzKFwibGljZW5jZS13aWRnZXRcIik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRDbGFzcyhcImxpY2VuY2Utd2lkZ2V0LVwiICsgc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZCgkKFwiPHNwYW4+XCIpLmFkZENsYXNzKFwibGljZW5jZS13aWRnZXQtaWNvblwiKS5hcHBlbmQoJChcIjxpPlwiKS5hZGRDbGFzcyhpY29uKSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKCQoXCI8c3Bhbj5cIikuYWRkQ2xhc3MoXCJsaWNlbmNlLXdpZGdldC1tc2dcIikudGV4dChtc2cpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZCgkKFwiPGJyPlwiKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmQoJChcIjxzcGFuPlwiKS5hZGRDbGFzcyhcImxpY2VuY2Utd2lkZ2V0LWRldGFpbHNcIikuYXBwZW5kKGRldGFpbHMpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gXCJFWFBJUkVEXCIgfHwgc3RhdHVzID09PSBcIkZBSUxFRFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpYmVCdXR0b24gPSAkKFwiPGJ1dHRvbi8+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlQnV0dG9uLmF0dHIoXCJpZFwiLCBcInN1YnNjcmliZS1idXR0b25cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVCdXR0b24uYXR0cihcImNsYXNzXCIsIFwiYnRuIGJ0bi1wcmltYXJ5XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlQnV0dG9uLmF0dHIoXCJzdHlsZVwiLCBcIm1hcmdpbi10b3A6IDIwcHg7XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlQnV0dG9uLnRleHQoXCJTdWJzY3JpYmVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKHN1YnNjcmliZUJ1dHRvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBzY3JpcHQgZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LnNyYyA9IFwiaHR0cHM6Ly9qcy5zdHJpcGUuY29tL3YzL3ByaWNpbmctdGFibGUuanNcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBoZWFkIChvciBib2R5KSBvZiB0aGUgZG9jdW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCJoZWFkXCIpLmFwcGVuZChzY3JpcHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaXBlUHJpY2luZ1RhYmxlID0gJChcIjxzdHJpcGUtcHJpY2luZy10YWJsZS8+XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpcGVQcmljaW5nVGFibGUuYXR0cihcInByaWNpbmctdGFibGUtaWRcIiwgcHJpY2luZ1RhYmxlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBlUHJpY2luZ1RhYmxlLmF0dHIoXCJwdWJsaXNoYWJsZS1rZXlcIiwgcHVibGlzaGFibGVLZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBlUHJpY2luZ1RhYmxlLmF0dHIoXCJzdHlsZVwiLCBcImhlaWdodDogMTAwJTttYXgtaGVpZ2h0OiAxMDAlO1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwZVByaWNpbmdUYWJsZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kKHN0cmlwZVByaWNpbmdUYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVCdXR0b24ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBlUHJpY2luZ1RhYmxlLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVCdXR0b24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hdHRyKFwic3R5bGVcIiwgXCJoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgZGVjbGFyZUxpY2VuY2VXaWRnZXQoKTtcbiAgICBmdW5jdGlvbiBpc1ZhbGlkT1BDX1VBX1VSSShzdHIpIHtcbiAgICAgICAgbGV0IHVybDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHVybCA9IG5ldyBVUkwoc3RyKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoXykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1cmwucHJvdG9jb2wgPT09IFwib3BjLnRjcDpcIjtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdFN1YnNjcmlwdGlvblBhcmFtZXRlcnMgPSB7XG4gICAgICAgIHB1Ymxpc2hpbmdFbmFibGVkOiB0cnVlLFxuICAgICAgICByZXF1ZXN0ZWRMaWZldGltZUNvdW50OiAxMDAwLFxuICAgICAgICByZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudDogMTAsIC8vIGV2ZXJ5IDEwIHNlY29uZHNcbiAgICAgICAgcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsOiAxMDAwLFxuICAgICAgICBtYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaDogMCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICB9O1xuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1FbmRwb2ludDJcIiwge1xuICAgICAgICBjYXRlZ29yeTogXCJjb25maWdcIixcbiAgICAgICAgcGFsZXR0ZUxhYmVsOiBcIm9wY3VhIGVuZHBvaW50XCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIm9wYy50Y3A6Ly9vcGN1YWRlbW8uc3RlcmZpdmUuY29tOjI2NTQzL1VBL1NhbXBsZVNlcnZlclwiLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRlOiBpc1ZhbGlkT1BDX1VBX1VSSSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBTZWN1cml0eSBNb2RlXG4gICAgICAgICAgICBzZWN1cml0eU1vZGU6IHsgdmFsdWU6IFwiTm9uZVwiIH0sXG4gICAgICAgICAgICBzZWN1cml0eVBvbGljeToge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIk5vbmVcIixcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZTogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXNlcklkZW50aXR5VHlwZTogeyB2YWx1ZTogXCJBbm9ueW1vdXNcIiB9LFxuICAgICAgICAgICAgLy8gdG8gdXNlIHdoZW4gdXNlcklkZW50aXR5VHlwZSBpcyBVc2VyTmFtZVxuICAgICAgICAgICAgdXNlck5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiB7IHZhbHVlOiBcIlwiLCB0eXBlOiBcInBhc3N3b3JkXCIgfSxcbiAgICAgICAgICAgIC8vIHRvIHVzZSB3aGVuIHVzZXJJZGVudGl0eVR5cGUgaXMgQ2VydGlmaWNhdGVcbiAgICAgICAgICAgIHVzZXJDZXJ0aWZpY2F0ZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgdXNlclByaXZhdGVrZXk6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIC8vIHVzZXJuYW1lXG4gICAgICAgICAgICAvLyBUaGVzZSBhcmUgZml4ZWQgb3IgY2FuIGJlIHJlYWQgdGhyb3VnaCBlbmRQb2ludFxuICAgICAgICAgICAgY2VydGlmaWNhdGU6IHsgdmFsdWU6IFwiblwiIH0sXG4gICAgICAgICAgICBsb2NhbGZpbGU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGxvY2Fsa2V5ZmlsZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIHVzZVRyYW5zcG9ydDogeyB2YWx1ZTogZmFsc2UsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgbWF4Q2h1bmtDb3VudDogeyB2YWx1ZTogMSwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICBtYXhNZXNzYWdlU2l6ZTogeyB2YWx1ZTogODE5MiwgcmVxdWlyZWQ6IGZhbHNlIH0sIC8vIHNob3VsZCBiZSBhdCBsZWFzdCA4MTkyXG4gICAgICAgICAgICByZWNlaXZlQnVmZmVyU2l6ZTogeyB2YWx1ZTogODE5MiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICBzZW5kQnVmZmVyU2l6ZTogeyB2YWx1ZTogODE5MiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiczFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRGVmYXVsdCBTdWJzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRTdWJzY3JpcHRpb25QYXJhbWV0ZXJzKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiczJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2xvdyBTdWJzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlzaGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkTGlmZXRpbWVDb3VudDogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZE1heEtlZXBBbGl2ZUNvdW50OiAyMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWw6IDUwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2g6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJzM1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJGYXN0IFN1YnNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRMaWZldGltZUNvdW50OiA0MDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZE1heEtlZXBBbGl2ZUNvdW50OiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsOiAyNTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2g6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogMjAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICAgICAgICB1c2VyOiB7IHR5cGU6IFwidGV4dFwiIH0sXG4gICAgICAgICAgICBwYXNzd29yZDogeyB0eXBlOiBcInBhc3N3b3JkXCIgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgfHwgdGhpcy5lbmRwb2ludCB8fCBcImludmFsaWQgZW5kcG9pbnRcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0c2F2ZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IF9zZWN1cml0eVBvbGljeSA9ICQoXCIjbm9kZS1jb25maWctaW5wdXQtc2VjdXJpdHlQb2xpY3lcIik7XG4gICAgICAgICAgICBjb25zdCBfc2VjdXJpdHlNb2RlID0gJChcIiNub2RlLWNvbmZpZy1pbnB1dC1zZWN1cml0eU1vZGVcIik7XG4gICAgICAgICAgICBpZiAoX3NlY3VyaXR5UG9saWN5LnZhbCgpID09PSBcIk5vbmVcIikge1xuICAgICAgICAgICAgICAgIF9zZWN1cml0eU1vZGUudGV4dChcIk5vbmVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAoKCgoKCgoKCgoIHJldHJpZXZlIHN1YnNjcmlwdGlvbiBkYXRhICkpKSkpKSkpKSlcbiAgICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbnNJdGVtcyA9ICQoXCIjc3Vic2NyaXB0aW9ucy1jb250YWluZXJcIikuZWRpdGFibGVMaXN0KFwiaXRlbXNcIik7XG4gICAgICAgICAgICBjb25zdCBzID0gW107XG4gICAgICAgICAgICBjb25zdCBuID0gKHgpID0+IHg7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb25zSXRlbXMuZWFjaChmdW5jdGlvbiAoaW5kZXgsIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0ge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJzXCIgKyBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZS5maW5kKFwiLmlucHV0LW5hbWVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgIGlzRGVmYXVsdDogISFlLmZpbmQoXCIuaW5wdXQtaXNEZWZhdWx0XCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoaW5nRW5hYmxlZDogISFlLmZpbmQoXCIuaW5wdXQtcHVibGlzaGluZ0VuYWJsZWRcIikuaXMoXCI6Y2hlY2tlZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZExpZmV0aW1lQ291bnQ6IG4oZS5maW5kKFwiLmlucHV0LXJlcXVlc3RlZExpZmV0aW1lQ291bnRcIikudmFsKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnQ6IG4oZS5maW5kKFwiLmlucHV0LXJlcXVlc3RlZE1heEtlZXBBbGl2ZUNvdW50XCIpLnZhbCgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZFB1Ymxpc2hpbmdJbnRlcnZhbDogbihlLmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsXCIpLnZhbCgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heE5vdGlmaWNhdGlvbnNQZXJQdWJsaXNoOiBuKGUuZmluZChcIi5pbnB1dC1tYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaFwiKS52YWwoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogbihlLmZpbmQoXCIuaW5wdXQtcHJpb3JpdHlcIikudmFsKCkpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgLy8gZm9yY2UgdG8gYmUgdHJ1ZVxuICAgICAgICAgICAgICAgIGEucGFyYW1ldGVycy5wdWJsaXNoaW5nRW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGEuaXNEZWZhdWx0ICYmIGEuaWQgPT09IFwiczBcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWxpemUgZGVmYXVsdCBzdWJzY3JpcHRpb24gbmFtZVxuICAgICAgICAgICAgICAgICAgICBhLm5hbWUgPSBcIkRlZmF1bHQgU3Vic2NyaXB0aW9uXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHMucHVzaChhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gcztcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgdGFicyA9IFJFRC50YWJzLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgaWQ6IFwibm9kZS1jb25maWctZW5kcG9pbnQtdGFic1wiLFxuICAgICAgICAgICAgICAgIG9uY2hhbmdlOiBmdW5jdGlvbiAodGFiKSB7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1jb25maWctZW5kcG9pbnQtdGFicy1jb250ZW50XCIpLmNoaWxkcmVuKCkuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiI1wiICsgdGFiLmlkKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGFicy5hZGRUYWIoe1xuICAgICAgICAgICAgICAgIGlkOiBcImVuZHBvaW50LXRhYi1jb25uZWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiQ29ubmVjdGlvblwiLFxuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB0YWJzLmFkZFRhYih7XG4gICAgICAgICAgICAgICAgaWQ6IFwiZW5kcG9pbnQtdGFiLXN1YnNjcmlwdGlvbnNcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJTdWJzY3JpcHRpb25zXCIsXG4gICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRhYnMucmVzaXplKCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgU2VjdXJpdHkgY29udHJvbHNcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlU2VjdXJpdHlDb250cm9sID0gKHNlY3VyaXR5TW9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHNlY3VyaXR5TW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBudWxsOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiTm9uZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIuc2VjdGlvbi1zZWN1cml0eVBvbGljeVwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiU2lnblwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIlNpZ25BbmRFbmNyeXB0XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcCA9ICQoXCIuc2VjdGlvbi1zZWN1cml0eVBvbGljeVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwLnZhbCgpID09PSBcIk5vbmVcIiB8fCBzcC52YWwoKSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3AudmFsKFwiQmFzaWMyNTZTaGEyNTZcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIi5zZWN0aW9uLXNlY3VyaXR5UG9saWN5XCIpLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiaW52YWxpZCBzZWN1cml0eU1vZGUgXCIgKyBzZWN1cml0eU1vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB1cGRhdGVTZWN1cml0eUNvbnRyb2wobm9kZS5zZWN1cml0eU1vZGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IF9zZWN1cml0eU1vZGUgPSAkKFwiI25vZGUtY29uZmlnLWlucHV0LXNlY3VyaXR5TW9kZVwiKTtcbiAgICAgICAgICAgICAgICBfc2VjdXJpdHlNb2RlLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2VjdXJpdHlNb2RlID0gX3NlY3VyaXR5TW9kZS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2VjdXJpdHlDb250cm9sKG5ld1NlY3VyaXR5TW9kZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsaWNlbmNlV2lkZ2V0ID0gJChcIiNsaWNlbmNlV2lkZ2V0XCIpO1xuICAgICAgICAgICAgbGljZW5jZVdpZGdldC5saWNlbmNlV2lkZ2V0KHtcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gaGFuZGxlIHRoZSBVc2VyIElkZW50aXR5IENvbnRyb2xzXG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF1dGhSb3cgPSAkKFwiLnNlY3Rpb24tdXNlcklkZW50aXR5VHlwZS1Vc2VyTmFtZVwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZXJ0Um93ID0gJChcIi5zZWN0aW9uLXVzZXJJZGVudGl0eVR5cGUtQ2VydGlmaWNhdGVcIik7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlSWRlbnRpdHlDb250cm9scyA9ICh1c2VySWRlbnRpdHlUeXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZGVudGl0eVR5cGUgPSB1c2VySWRlbnRpdHlUeXBlIHx8IFwiQW5vbnltb3VzXCI7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodXNlcklkZW50aXR5VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkFub255bW91c1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlck5hbWVcIikudmFsKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1jb25maWctaW5wdXQtcGFzc3dvcmRcIikudmFsKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhSb3cuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRSb3cuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcIlVzZXJOYW1lXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aFJvdy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydFJvdy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiQ2VydGlmaWNhdGVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJOYW1lXCIpLnZhbChcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtY29uZmlnLWlucHV0LXBhc3N3b3JkXCIpLnZhbChcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0Um93LnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoUm93LmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJpbnZhbGlkIHVzZXJJZGVudGl0eVR5cGUgXCIgKyB1c2VySWRlbnRpdHlUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdXBkYXRlSWRlbnRpdHlDb250cm9scyhub2RlLnVzZXJJZGVudGl0eVR5cGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IF91c2VySWRlbnRpdHlUeXBlID0gJChcIiNub2RlLWNvbmZpZy1pbnB1dC11c2VySWRlbnRpdHlUeXBlXCIpO1xuICAgICAgICAgICAgICAgIF91c2VySWRlbnRpdHlUeXBlLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3SWRlbnRpdHlUeXBlID0gX3VzZXJJZGVudGl0eVR5cGUudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUlkZW50aXR5Q29udHJvbHMobmV3SWRlbnRpdHlUeXBlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgYWR2YW5jZWQgY29udHJvbHNcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJChcIiNzZWN0aW9uLUFkdmFuY2VkXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAkKFwiI3RvZ2dsZUFkdmFuY2VkU2VjdGlvblwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoXCJjaGVja2VkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY2hlY2tib3ggaXMgY2hlY2tlZCwgc2hvdyB0aGUgZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3NlY3Rpb24tQWR2YW5jZWRcIikuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBoaWRlIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiI3NlY3Rpb24tQWR2YW5jZWRcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gY2hlY2tDZXJ0aWZpY2F0ZVxuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAkKFwiI2NoZWNrQ2VydGlmaWNhdGVcIikub24oXCJjbGlja1wiLCAoKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaChcIi9vcGN1YS1lbmRwb2ludDIvY2xpZW50X2NlcnRpZmljYXRlLmpzb25cIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZm8gPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IEpTT04uc3RyaW5naWZ5KGluZm8sIG51bGwsIFwiIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQodCk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vIGhhbmRsZSB0aGUgVGVzdCBidXR0b25cbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWFuYWdlQVBJQ2FsbChcImNvbm5lY3Rpb25cIiwgJChcIiN0ZXN0LWNvbm5lY3Rpb25cIiksICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHVybDogXCIvb3BjdWEtZW5kcG9pbnQyL3Rlc3QtY29ubmVjdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbm9kZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogJChcIiNub2RlLWNvbmZpZy1pbnB1dC1lbmRwb2ludFwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cml0eU1vZGU6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtc2VjdXJpdHlNb2RlXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5OiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXNlY3VyaXR5UG9saWN5XCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJZGVudGl0eVR5cGU6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlcklkZW50aXR5VHlwZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyTmFtZTogJChcIiNub2RlLWNvbmZpZy1pbnB1dC11c2VyTmFtZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogJChcIiNub2RlLWNvbmZpZy1pbnB1dC1wYXNzd29yZFwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyQ2VydGlmaWNhdGU6ICQoXCIjbm9kZS1jb25maWctaW5wdXQtdXNlckNlcnRpZmljYXRlXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJQcml2YXRla2V5OiAkKFwiI25vZGUtY29uZmlnLWlucHV0LXVzZXJQcml2YXRla2V5XCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLyBub3QgdGVzdGVkIHlldCAuLi46XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU6ICQoXCIjbm9kZS1pbnB1dC1jZXJ0aWZpY2F0ZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGZpbGU6ICQoXCIjbm9kZS1pbnB1dC1sb2NhbGZpbGVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxrZXlmaWxlOiAkKFwiI25vZGUtaW5wdXQtbG9jYWxrZXlmaWxlXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVRyYW5zcG9ydDogJChcIiNub2RlLWlucHV0LXVzZVRyYW5zcG9ydFwiKS5wcm9wKFwiY2hlY2tlZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhDaHVua0NvdW50OiAkKFwiI25vZGUtaW5wdXQtbWF4Q2h1bmtDb3VudFwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhNZXNzYWdlU2l6ZTogJChcIiNub2RlLWlucHV0LW1heE1lc3NhZ2VTaXplXCIpLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVCdWZmZXJTaXplOiAkKFwiI25vZGUtaW5wdXQtcmVjZWl2ZUJ1ZmZlclNpemVcIikudmFsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZEJ1ZmZlclNpemU6ICQoXCIjbm9kZS1pbnB1dC1zZW5kQnVmZmVyU2l6ZVwiKS52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksICgpID0+IHsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gIEluc3RhbGwgc3Vic2NyaXB0aW9ucyBMaXN0IG1hbmFnZW1lbnRcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplVG9waWNzID0gKHRvcGljLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV3V2lkdGggPSB0b3BpYy53aWR0aCgpIHx8IDEwMDtcbiAgICAgICAgICAgICAgICAgICAgdG9waWMuZmluZChcImxhYmVsXCIpLnR5cGVkSW5wdXQoXCJ3aWR0aFwiLCBuZXdXaWR0aCAtIDE1KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbkxpc3QgPSAkKFwiI3N1YnNjcmlwdGlvbnMtY29udGFpbmVyXCIpXG4gICAgICAgICAgICAgICAgICAgIC5jc3MoeyBcIm1pbi1oZWlnaHRcIjogXCIxNTBweFwiLCBcIm1pbi13aWR0aFwiOiBcIjI2MHB4XCIgfSlcbiAgICAgICAgICAgICAgICAgICAgLmVkaXRhYmxlTGlzdCh7XG4gICAgICAgICAgICAgICAgICAgIGFkZEl0ZW06IChjb250YWluZXIsIGluZGV4LCBkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gJChcIi50ZW1wbGF0ZVwiKS5jbG9uZSgpLmFwcGVuZFRvKGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHIoXCJpZFwiKS5yZW1vdmVDbGFzcyhcImhpZGVcIikucmVtb3ZlQ2xhc3MoXCJ0ZW1wbGF0ZVwiKS5hdHRyKFwiZGF0YS1pXCIsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1uYW1lXCIpLnZhbChfZGF0YS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1yZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWxcIikudmFsKF9kYXRhLnBhcmFtZXRlcnMucmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1yZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudFwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5yZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoXCIuaW5wdXQtcmVxdWVzdGVkTGlmZXRpbWVDb3VudFwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5yZXF1ZXN0ZWRMaWZldGltZUNvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1tYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaFwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5tYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaCB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1wcmlvcml0eVwiKS52YWwoX2RhdGEucGFyYW1ldGVycy5wcmlvcml0eSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5zdWJzY3JpcHRpb24taWRcIikudGV4dChcIlwiICsgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9kYXRhLmlzRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1uYW1lXCIpLnByb3AoXCJyZWFkb25seVwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZChcIi5pbnB1dC1pc0RlZmF1bHRcIikucHJvcChcImNoZWNrZWRcIiwgX2RhdGEuaXNEZWZhdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGRlZmF1bHQgc3Vic2NyaXB0aW9uIGNhbm5vdCBiZSBhY2NpZGVudGFsbHkgcmVtb3ZlZFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9kYXRhLmlzRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKFwiLnJlZC11aS1lZGl0YWJsZUxpc3QtaXRlbS1yZW1vdmVcIikuYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWxlbWVudC5maW5kKFwiLmlucHV0LWlzRGVmYXVsdFwiKS5wcm9wKFwiZGlzYWJsZWRcIiwgdHJ1ZSksIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgLy8gc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHJlbW92YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgcmVzaXplSXRlbTogcmVzaXplVG9waWNzLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IEFkZFN1YnNjcmlwdGlvbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IG5vZGUuc3Vic2NyaXB0aW9ucyB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgbWlzc2luZyBkZWZhdWx0IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJzMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRGVmYXVsdCBTdWJzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFN1YnNjcmlwdGlvblBhcmFtZXRlcnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uTGlzdC5lZGl0YWJsZUxpc3QoXCJlbXB0eVwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2Ygc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Vic2NyaXB0aW9uLmlzRGVmYXVsdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uTGlzdC5lZGl0YWJsZUxpc3QoXCJhZGRJdGVtXCIsIHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIEFkZFN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
9
9
  </script>
10
10
  <script type="text/x-red" data-template-name="OpcUa-Endpoint2">
11
- <style>
12
- .custom-checkbox-container {
13
- width: 100%;
14
- cursor: pointer;
15
- user-select: none;
16
- }
17
-
18
- .custom-checkbox-label {
19
- cursor: pointer;
20
- font-family: "FontAwesome";
21
- }
22
-
23
- .custom-checkbox-input:checked + .custom-checkbox-label::before {
24
- content: "\f205";
25
- font-size: 24px;
26
- /* fa-toggle-on */
27
- }
28
-
29
- .custom-checkbox-input:not(:checked) + .custom-checkbox-label::before {
30
- content: "\f204";
31
- font-size: 24px;
32
- /* fa-toggle-off */
33
- }
34
-
35
- .custom-checkbox-input {
36
- display: none;
37
- }
38
-
39
- .subscription-mini-form table {
40
- width: 100%;
41
- border: 1;
42
- }
43
-
44
- .subscription-mini-form label {
45
- display: block;
46
- cursor: pointer;
47
- display: block;
48
- width: auto;
49
- }
50
-
51
- .subscription-mini-form input {
52
- width: calc(100% - 10px);
53
- /* Takes the full width minus 10px for right spacing */
54
- box-sizing: border-box;
55
- /* Ensures padding and borders are included in the width */
56
- }
57
- </style>
58
11
  <div id="licenceWidget"></div>
59
12
 
60
13
  <div class="form-row">
@@ -211,6 +164,101 @@ function _0xe546(){const _0x316e00=['apply','widget','.input-name','#toggleAdvan
211
164
  }
212
165
  </style>
213
166
 
167
+ <style>
168
+ .custom-checkbox-container {
169
+ width: 100%;
170
+ cursor: pointer;
171
+ user-select: none;
172
+ }
173
+
174
+ .custom-checkbox-label {
175
+ cursor: pointer;
176
+ font-family: "FontAwesome";
177
+ }
178
+
179
+ .custom-checkbox-input:checked + .custom-checkbox-label::before {
180
+ content: "\f205";
181
+ font-size: 24px;
182
+ /* fa-toggle-on */
183
+ }
184
+
185
+ .custom-checkbox-input:not(:checked) + .custom-checkbox-label::before {
186
+ content: "\f204";
187
+ font-size: 24px;
188
+ /* fa-toggle-off */
189
+ }
190
+
191
+ .custom-checkbox-input {
192
+ display: none !important;
193
+ }
194
+
195
+ .subscription-mini-form table {
196
+ width: 100%;
197
+ border: 1;
198
+ }
199
+
200
+ .subscription-mini-form label {
201
+ display: block;
202
+ cursor: pointer;
203
+ display: block;
204
+ width: auto;
205
+ }
206
+
207
+ .subscription-mini-form input {
208
+ width: calc(100% - 10px);
209
+ /* Takes the full width minus 10px for right spacing */
210
+ box-sizing: border-box;
211
+ /* Ensures padding and borders are included in the width */
212
+ }
213
+
214
+ .button-style a {
215
+ display: inline-block;
216
+ padding: 10px 20px;
217
+ background-color: #4caf50;
218
+ color: white;
219
+ text-decoration: none;
220
+ border-radius: 4px;
221
+ border: none;
222
+ cursor: pointer;
223
+ font-size: 16px;
224
+ }
225
+
226
+ .button-style a:hover {
227
+ background-color: #45a049;
228
+ }
229
+
230
+ .button-style a:active {
231
+ background-color: #3e8e41;
232
+ }
233
+ </style>
234
+ <div class="form-row">
235
+ <button id="checkCertificate">Check Certificate</button>
236
+ &nbsp;
237
+ <button>
238
+ <a
239
+ href="/opcua-endpoint2/client_certificate.pem"
240
+ id="downloadPEMCertificateLink"
241
+ class="button-style"
242
+ download="client_certificate.pem"
243
+ >
244
+ download in PEM format&nbsp;
245
+ <i class="fa fa-download"></i>
246
+ </a>
247
+ </button>
248
+ &nbsp;
249
+ <button>
250
+ <a
251
+ href="/opcua-endpoint2/client_certificate.der"
252
+ id="downloadDERCertificateLink"
253
+ class="button-style"
254
+ download="client_certificate.der"
255
+ >
256
+ download in DER format&nbsp;
257
+ <i class="fa fa-download"></i>
258
+ </a>
259
+ </button>
260
+ </div>
261
+
214
262
  <div class="form-row">
215
263
  <label class="custom-checkbox-container" style="width: 100%">
216
264
  <input id="toggleAdvancedSection" checked="false" type="checkbox" class="custom-checkbox-input" />
@@ -220,13 +268,19 @@ function _0xe546(){const _0x316e00=['apply','widget','.input-name','#toggleAdvan
220
268
 
221
269
  <div id="section-Advanced">
222
270
  <!--- For PKI -->
271
+
272
+ <!--
273
+
274
+ Specifying a server certificate doesn't really make sense as the server certificate is
275
+ provided by the server itself.
276
+
277
+
223
278
  <fieldset>
224
279
  <legend>Server certificate</legend>
225
280
  <div class="form-row" id="node-config-input-servercertificate">
226
- <label for="node-config-input-location"
227
- ><i class="icon-time" placeholder="enter the preloaded server certificate" style="width: 100%"></i>Server
228
- Certificate</label
229
- >>
281
+ <label for="node-config-input-location"><i class="icon-time"
282
+ placeholder="enter the preloaded server certificate" style="width: 100%"></i>Server
283
+ Certificate</label>>
230
284
  <select id="node-config-input-certificate" style="width: 72%">
231
285
  <option value="n">None, use generated self-signed certificate</option>
232
286
  <option value="l">Local certificate file, give path with filename (pem)</option>
@@ -234,21 +288,30 @@ function _0xe546(){const _0x316e00=['apply','widget','.input-name','#toggleAdvan
234
288
  </div>
235
289
  </fieldset>
236
290
 
291
+ -->
292
+ <!--
293
+
294
+ we don't want certificate to be overwritten by the user
295
+ instead user have to modify the private key and certificate by hand.
296
+
297
+
298
+
237
299
  <fieldset>
238
300
  <legend>Overwrite client certificate & private key</legend>
239
301
  <div class="form-row">
240
- <label style="width: 100%" for="node-config-input-path"
241
- ><i class="fa fa-certificate"></i> Local certificate file with absolute path</label
242
- >
243
- <input type="text" id="node-config-input-localfile" placeholder="selfSigned.pem" accept=".pem .der" />
302
+ <label style="width: 100%" for="node-config-input-path"><i class="fa fa-certificate"></i> Local
303
+ certificate file with absolute path</label>
304
+ <input type="text" id="node-config-input-localfile" placeholder="selfSigned.pem"
305
+ accept=".pem .der" />
244
306
  </div>
245
307
  <div class="form-row">
246
- <label style="width: 100%" for="node-config-input-path"
247
- ><i class="fa fa-key"></i> Local private key file with absolute path</label
248
- >
249
- <input type="text" id="node-config-input-localkeyfile" placeholder="private_key.pem" accept=".pem .der" />
308
+ <label style="width: 100%" for="node-config-input-path"><i class="fa fa-key"></i> Local private key
309
+ file with absolute path</label>
310
+ <input type="text" id="node-config-input-localkeyfile" placeholder="private_key.pem"
311
+ accept=".pem .der" />
250
312
  </div>
251
313
  </fieldset>
314
+ -->
252
315
 
253
316
  <!--- For Transport settings -->
254
317
  <fieldset>
@@ -265,19 +328,19 @@ function _0xe546(){const _0x316e00=['apply','widget','.input-name','#toggleAdvan
265
328
  <div class="section-TransportSettings">
266
329
  <div class="form-row">
267
330
  <label for="node-config-input-maxChunkCount"><i class="icon-tasks"></i> Max ChunkCount</label>
268
- <input type="number" id="node-config-input-maxChunkCount" placeholder="10" style="width: 20%" />
331
+ <input type="number" id="node-config-input-maxChunkCount" placeholder="1000" style="width: 20%" />
269
332
  </div>
270
333
  <div class="form-row">
271
334
  <label for="node-config-input-maxMessageSize"><i class="icon-tasks"></i> Max MessageSize</label>
272
- <input type="number" id="node-config-input-maxMessageSize" placeholder="8192" style="width: 20%" />
335
+ <input type="number" id="node-config-input-maxMessageSize" placeholder="8192000000" style="width: 20%" />
273
336
  </div>
274
337
  <div class="form-row">
275
338
  <label for="node-config-input-receiveBufferSize"><i class="icon-tasks"></i> Receive BufferSize</label>
276
- <input type="number" id="node-config-input-receiveBufferSize" placeholder="8192" style="width: 20%" />
339
+ <input type="number" id="node-config-input-receiveBufferSize" placeholder="65535" style="width: 20%" />
277
340
  </div>
278
341
  <div class="form-row">
279
342
  <label for="node-config-input-sendBufferSize"><i class="icon-tasks"></i> Send BufferSize</label>
280
- <input type="number" id="node-config-input-sendBufferSize" placeholder="8192" style="width: 20%" />
343
+ <input type="number" id="node-config-input-sendBufferSize" placeholder="65535" style="width: 20%" />
281
344
  </div>
282
345
  </div>
283
346
  </fieldset>
@@ -354,18 +417,77 @@ function _0xe546(){const _0x316e00=['apply','widget','.input-name','#toggleAdvan
354
417
  </script>
355
418
 
356
419
  <script type="text/markdown" data-help-name="OpcUa-Endpoint2">
357
- # Server certificate options are:
420
+ # notes:
421
+
422
+ ## Where is the PKI ?
423
+
424
+ - `@opcua/for-node-red` stores its PKI in the following folder
425
+
426
+ | Platform | Location |
427
+ | -------- | ------------------------------------------------- |
428
+ | Linux | "~/.config/opcua-for-node-red-nodejs/PKI" |
429
+ | Windows | %APP_DATA%\Roaming\opcua-for-node-red-nodejs\PKI" |
430
+
431
+ - This PKI is shared by all endpoint connection nodes in order to avoid having to generate multiple certificates for each endpoint and facilitate the management of the certificates.
432
+ - all OPCUA Client connection that are created by the OPCUA Endpoint node will use this PKI.
433
+
434
+ #### PKI folder structure
435
+
436
+ ```console
437
+ └─ 📂 certificates
438
+ └─📂 PKI
439
+ ├─📂 issuers
440
+ │ ├─📂 certs
441
+ │ └─📂 crl
442
+ ├─📂 own
443
+ │ ├─📂 certs
444
+ │ │ └─🔐 client_certificate.pem
445
+ │ └─📂 private
446
+ │ └─🔐 private_key.pem
447
+ ├─📂 rejected
448
+ └─📂 trusted
449
+ ├─📂 certs
450
+ └─📂 crl
451
+ ```
452
+
453
+ ## Secure connections:
454
+
455
+ When using a secure connection to the OPCUA server, you'll have to make sure that the server certificate is trusted by the client and that the client certificate is trusted by the server.
456
+
457
+ This is needed to ensure that the connection is secure and that the data is not intercepted by a third party. Client and Server uses public key stored in certificates of the other party and its own private key to encrypt and decrypt data.
458
+
459
+ If the `@opcua/for-node-red` client certificate is not trusted by the server, the server will refuse the connection.
460
+
461
+ connection to endpoint opc.tcp://machine:4840 could not be established
462
+
463
+ ### ensuring that the `@opcua/for-node-red` client certificate is trusted by the server
464
+
465
+ - If you are using a "Sign" or "SignAndEncrypt" connection to the OPCUA Server, you'll have to make sure that your client certificate is trusted by the server.
466
+ - This can be done by copying the client certificate of your `@opcua/for-node-red` instance to the server and adding it to the trusted certificates folder in the PKI of the server.
467
+ - (you can download the client certificate in PEM or DER format from the OPCUA Endpoint node, using the provided buttons)
468
+ - The client certificate can be found in the "pki" folder of the OPCUA Endpoint node.
469
+ - The certificate is named `client_certificate.pem` and is located in the PKI folder (see above) at this location
470
+
471
+ `PKI/own/certs/`
472
+
473
+ - Refers to your server documentation to know where to copy the client certificate.
474
+
475
+ ### ensuring that `@opcua/for-node-red` trusts the server certificate
358
476
 
359
- - None
360
- - Local certificate file (.pem)
361
- - Local private key file (.pem)
477
+ - Similarly, if you are using a "Sign" or "SignAndEncrypt" connection to the OPCUA Server, you'll have to make sure that the server certificate is trusted by the client.
478
+ - By default, `@opcua/for-node-red` is setup to automatically accept any server certificate. This can be changed by setting the "rejectUnauthorized" option to true the global settings of the OPCUA Endpoint node. ( available to Pro version only)
362
479
 
363
- Certificate is not needed if security is None.
480
+ ## default certificate generation
364
481
 
365
- Client will try to load server certificate from endpoint if server can provide it (copy server certificate under pki folder).
482
+ - A default self-signed certificate generation is done by the `@opcua/for-node-red` node when it is first deployed.
483
+ - The certificate is generated in the "pki" folder of the OPCUA Endpoint node.
484
+ - The certificate is named "client_certificate.pem" and is located in the folder
366
485
 
367
- Local file with relative path and certificate filename can be then used to use server certificate (.pem ending file).
486
+ ## How to provided my own key pair (client certificate and private key) ?
368
487
 
369
- User can manually copy server certificate.
488
+ - You can provide your own key pair by copying the client certificate and private key in the "pki" folder of the OPCUA Endpoint node.
489
+ - The certificate must be named "client_certificate.pem" and stored in the "pki/own/certs" folder.
490
+ - The private key must be named "private_key.pem" and stored in the "pki/own/private" folder.
491
+ - If your certificate is not a self-signed certificate, you'll have to also copy the certificate of the Certificate Authority that signed your certificate in the "pki/issuers/certs" folder and its CRL (Certificate revocation list) in the "pki/issuers/crl" folder.
370
492
 
371
493
  </script>