@opcua/for-node-red 2.1.4 → 2.1.5

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opcua/for-node-red",
3
- "version": "2.1.4",
3
+ "version": "2.1.5",
4
4
  "description": "The Node-RED node to communicate via OPC UA, powered NodeOPCUA and developed by Sterfive's team",
5
5
  "repository": {
6
6
  "type": "git",
@@ -4,8 +4,8 @@
4
4
  </style>
5
5
 
6
6
  <script type="text/javascript">
7
- function _0xb20c(_0x229477,_0x42852d){const _0x5a629a=_0x5a62();return _0xb20c=function(_0xb20c7b,_0x38567e){_0xb20c7b=_0xb20c7b-0x127;let _0x582388=_0x5a629a[_0xb20c7b];return _0x582388;},_0xb20c(_0x229477,_0x42852d);}function _0x5a62(){const _0x1353b0=['References','nodeClass','$combo','$input','join','change','/opcua-endpoint2','registerType',':visible','nodeId','name','displayName','toggle','application/json','<div\x20class=\x22info-text\x22></div>','number','6571496PDnulJ','fa-folder','suppressed','36OicCKB','!!failure!!','Variable','error','HasTypeDefinition','addClass','<li>error\x20','fa-object-group','<div\x20class=\x22spinner\x22></div>','widget','left','resolveParentNode','DarkOrange','baseUrl','next','selected','toString','node_label_italic','Inverse','\x20Fetching\x20done','HasChild','map','HasSubtype','isTypeRef','typeDefinition','already\x20fetched','children','<ul\x20class=\x22sterfive-tree\x22></ul>','options','stopPropagation','CadetBlue','Forward','find','expanded','filter','top','i=61','<span\x20class=\x22custom-checkbox\x22></span>','sterfive-dropdown','fa-sliders','175DqVfMm','remove','status','browse','empty','flagEditor','ReferenceType','removeClass','SandyBrown','already\x20loading','ns=0;i=47','HasComponent','<ul></ul></li>','catch','sterfive.flagEditor','browseName','BrowseName','ReferenceType\x20|\x20BrowseName\x20|\x20TypeDefinition\x20|\x20DisplayName\x20|\x20NodeClass\x20|\x20IsForward','attr','DodgerBlue','4248WEAiPJ','log','Organizes','828391PtVOjK','length','i=31','Unknown\x20bit\x20name','grey','sterfive-combo-box','\x20|\x20','SteelBlue','parentElement','sterfive-info','insertAfter','<div\x20class=\x22custom-option\x22\x20data-value=\x22','View','TypeDefinition','1801041MQGDMz','fetched','assign',';\x22></i>\x20','hide','each','statusCode','2hGtbJj','OPCUA\x20Browse','data','$tree','SeaGreen','fa-cog','updateValue','13772eIAsto','1375493PBwCxf','click','ns=0;i=46','$toggleTreeBtn','split','DisplayName','hasClass','ObjectType','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','value','throw','2467839aQlXlK','input-group','HasProperty','toggleClass','sterfive.nodeBrowser','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','referenceTypeId','$inputGroup','$verifyBtn','failure','Method','fa-question','SuppressedError','right','endpointNode','parentNode','POST','references','replaceChild','ns=0;i=45','reference','namesToBits','OpcUa-Endpoint2','$info','trim','.spinner','ns=0;i=85','loading','text','offset','6RRICtP','reset','rgba(61,\x2060,\x204,\x200.525)','placeholder','expandable','#C0DEED','.custom-option','pageY','nodeAddressString','12020zYmKUz','inputs','json','then','append','Unspecified','DataType','Object','Invalid','opcua','appendTo','apply','replaceWith','element','function','fa-list-alt','<div/>','endpoint','isSelectable','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','val','/checkNodeId','expandable\x20expanded','$dropdown','NodeClass','../../icons/opcuanodeLogo.png','Both','target','trigger','message','stringify','Objects','ns=0;i=61','<li><i\x20class=\x22fa\x20','closest','statusText','</li>','ns=0;i=35','browseResult','verify','currentParent','entries','nodeBrowser','pageX','VariableType'];_0x5a62=function(){return _0x1353b0;};return _0x5a62();}(function(_0x2040e6,_0x15e0ee){const _0x235e7d=_0xb20c,_0x4d65ba=_0x2040e6();while(!![]){try{const _0x29a791=-parseInt(_0x235e7d(0x153))/0x1*(-parseInt(_0x235e7d(0x168))/0x2)+parseInt(_0x235e7d(0x17b))/0x3+parseInt(_0x235e7d(0x16f))/0x4*(parseInt(_0x235e7d(0x13c))/0x5)+parseInt(_0x235e7d(0x199))/0x6*(-parseInt(_0x235e7d(0x170))/0x7)+-parseInt(_0x235e7d(0x1df))/0x8+parseInt(_0x235e7d(0x150))/0x9*(-parseInt(_0x235e7d(0x1a2))/0xa)+-parseInt(_0x235e7d(0x161))/0xb*(-parseInt(_0x235e7d(0x1e2))/0xc);if(_0x29a791===_0x15e0ee)break;else _0x4d65ba['push'](_0x4d65ba['shift']());}catch(_0x1cedd3){_0x4d65ba['push'](_0x4d65ba['shift']());}}}(_0x5a62,0xa562e),(function(){'use strict';const _0x53caf8=_0xb20c;function _0x350d57(_0x558fc7,_0x418c91,_0x57c66d,_0x4717cc){function _0x2fc7af(_0x1008d4){return _0x1008d4 instanceof _0x57c66d?_0x1008d4:new _0x57c66d(function(_0x15cf29){_0x15cf29(_0x1008d4);});}return new(_0x57c66d||(_0x57c66d=Promise))(function(_0x193549,_0x3652d5){const _0x5092b2=_0xb20c;function _0x4b7840(_0xf3860f){const _0x3ecc1e=_0xb20c;try{_0x578c31(_0x4717cc[_0x3ecc1e(0x1f0)](_0xf3860f));}catch(_0x44c10c){_0x3652d5(_0x44c10c);}}function _0x2e31ca(_0x59f68a){const _0x39f0cd=_0xb20c;try{_0x578c31(_0x4717cc[_0x39f0cd(0x17a)](_0x59f68a));}catch(_0x4dcbcc){_0x3652d5(_0x4dcbcc);}}function _0x578c31(_0x10ae09){const _0x20f7c2=_0xb20c;_0x10ae09['done']?_0x193549(_0x10ae09['value']):_0x2fc7af(_0x10ae09[_0x20f7c2(0x179)])[_0x20f7c2(0x1a5)](_0x4b7840,_0x2e31ca);}_0x578c31((_0x4717cc=_0x4717cc[_0x5092b2(0x1ad)](_0x558fc7,_0x418c91||[]))[_0x5092b2(0x1f0)]());});}typeof SuppressedError===_0x53caf8(0x1b0)?SuppressedError:function(_0x24eed0,_0x10de20,_0x4b8fca){const _0x3498f6=_0x53caf8;var _0x3cd4ef=new Error(_0x4b8fca);return _0x3cd4ef[_0x3498f6(0x1d9)]=_0x3498f6(0x187),_0x3cd4ef['error']=_0x24eed0,_0x3cd4ef[_0x3498f6(0x1e1)]=_0x10de20,_0x3cd4ef;};const _0x36883a=_0x53caf8(0x1c7),_0x42ab97=_0x53caf8(0x1c2),_0x4b25d8=_0x53caf8(0x146),_0x51a77b=_0x53caf8(0x172),_0x352d95='ns=0;i=34',_0x5aa8c5=_0x53caf8(0x18e),_0x4729a7='ns=0;i=40';var _0x2f8fe7;(function(_0x2f8656){const _0x36e450=_0x53caf8;_0x2f8656[_0x2f8656[_0x36e450(0x133)]=0x0]=_0x36e450(0x133),_0x2f8656[_0x2f8656[_0x36e450(0x1f4)]=0x1]=_0x36e450(0x1f4),_0x2f8656[_0x2f8656['Both']=0x2]=_0x36e450(0x1bc),_0x2f8656[_0x2f8656['Invalid']=0x3]=_0x36e450(0x1aa);}(_0x2f8fe7||(_0x2f8fe7={})));var _0x5bccf4;(function(_0x39914b){const _0x4920cf=_0x53caf8;_0x39914b[_0x39914b[_0x4920cf(0x1a7)]=0x0]=_0x4920cf(0x1a7),_0x39914b[_0x39914b['Object']=0x1]=_0x4920cf(0x1a9),_0x39914b[_0x39914b['Variable']=0x2]=_0x4920cf(0x1e4),_0x39914b[_0x39914b[_0x4920cf(0x185)]=0x4]=_0x4920cf(0x185),_0x39914b[_0x39914b['ObjectType']=0x8]=_0x4920cf(0x177),_0x39914b[_0x39914b[_0x4920cf(0x1ce)]=0x10]=_0x4920cf(0x1ce),_0x39914b[_0x39914b[_0x4920cf(0x142)]=0x20]='ReferenceType',_0x39914b[_0x39914b[_0x4920cf(0x1a8)]=0x40]=_0x4920cf(0x1a8),_0x39914b[_0x39914b[_0x4920cf(0x15f)]=0x80]=_0x4920cf(0x15f);}(_0x5bccf4||(_0x5bccf4={})));var _0xb9808f;(function(_0x158cc8){const _0x588433=_0x53caf8;_0x158cc8[_0x158cc8[_0x588433(0x1a9)]=0x1]=_0x588433(0x1a9),_0x158cc8[_0x158cc8[_0x588433(0x1e4)]=0x2]=_0x588433(0x1e4),_0x158cc8[_0x158cc8[_0x588433(0x185)]=0x4]='Method',_0x158cc8[_0x158cc8[_0x588433(0x177)]=0x8]='ObjectType',_0x158cc8[_0x158cc8['VariableType']=0x10]=_0x588433(0x1ce),_0x158cc8[_0x158cc8[_0x588433(0x142)]=0x20]=_0x588433(0x142),_0x158cc8[_0x158cc8[_0x588433(0x1a8)]=0x40]='DataType',_0x158cc8[_0x158cc8['View']=0x80]=_0x588433(0x15f);}(_0xb9808f||(_0xb9808f={})));function _0x3dbfe1(_0x3ec1a8,_0x5277e4){const _0x15e795=_0x53caf8;if(typeof _0x5277e4===_0x15e795(0x1de))return _0x5277e4;const _0x2f6791=parseInt(_0x5277e4,0xa);if(!isNaN(_0x2f6791))return _0x2f6791;const _0xb0deb2=_0x5277e4[_0x15e795(0x174)](/\||;|,/)[_0x15e795(0x129)](_0x356f24=>_0x356f24[_0x15e795(0x193)]());let _0xeacc02=0x0;for(const _0x2bea04 of _0xb0deb2){_0xeacc02|=_0x3ec1a8[_0x2bea04];}return _0xeacc02;}function _0x169e8c(_0x5b3feb,_0x3a3da7){const _0x37c18a=_0x53caf8;_0x3a3da7=_0x3dbfe1(_0x5b3feb,_0x3a3da7);const _0x1c0aaf=[];for(const [_0x3cf104,_0x156b70]of Object[_0x37c18a(0x1cb)](_0x5b3feb)){typeof _0x3a3da7===_0x37c18a(0x1de)&&((_0x3a3da7&_0x156b70)===_0x156b70&&_0x1c0aaf['push'](_0x3cf104));}return _0x1c0aaf[_0x37c18a(0x1d3)](_0x37c18a(0x159));}var _0x439fe8;(function(_0x283ab7){const _0x451444=_0x53caf8;_0x283ab7[_0x283ab7[_0x451444(0x142)]=0x1]=_0x451444(0x142),_0x283ab7[_0x283ab7['IsForward']=0x2]='IsForward',_0x283ab7[_0x283ab7['NodeClass']=0x4]=_0x451444(0x1ba),_0x283ab7[_0x283ab7[_0x451444(0x14c)]=0x8]=_0x451444(0x14c),_0x283ab7[_0x283ab7['DisplayName']=0x10]=_0x451444(0x175),_0x283ab7[_0x283ab7['TypeDefinition']=0x20]=_0x451444(0x160);}(_0x439fe8||(_0x439fe8={})));function _0x5049e0(_0x437e5f){const _0x23e2a1=_0x53caf8;switch(_0x437e5f){case _0x23e2a1(0x152):return _0x36883a;case _0x23e2a1(0x17d):return _0x51a77b;case _0x23e2a1(0x147):return _0x4b25d8;case'HasChild':return _0x352d95;case _0x23e2a1(0x12a):return _0x5aa8c5;case _0x23e2a1(0x1e6):return _0x4729a7;}}const _0x134302=_0x495484=>{const _0x98b530=_0x53caf8;switch(_0x495484[_0x98b530(0x1d0)]){case _0x98b530(0x1a9):if(_0x495484[_0x98b530(0x181)]===_0x36883a);if(_0x495484[_0x98b530(0x12c)]===_0x42ab97||_0x495484[_0x98b530(0x181)]===_0x98b530(0x138))return{'icon':_0x98b530(0x1e0),'color':_0x98b530(0x19b)};return{'icon':_0x98b530(0x1e9),'color':_0x98b530(0x16c)};case _0x98b530(0x1e4):if(_0x495484[_0x98b530(0x181)]===_0x4b25d8)return{'icon':_0x98b530(0x1b1),'color':_0x98b530(0x15a)};else return _0x495484[_0x98b530(0x181)]===_0x51a77b?{'icon':_0x98b530(0x1b1),'color':_0x98b530(0x14f)}:{'icon':_0x98b530(0x1b1),'color':_0x98b530(0x132)};case _0x98b530(0x185):return{'icon':_0x98b530(0x16d),'color':_0x98b530(0x144)};case _0x98b530(0x177):return{'icon':'fa-object-group','color':_0x98b530(0x1ee)};case _0x98b530(0x1ce):return{'icon':_0x98b530(0x13b),'color':'DarkOrange'};}return{'icon':_0x98b530(0x186),'color':_0x98b530(0x157)};},_0x53f771=({endpointNode:_0xf98096,endpoint:_0x5765ae,baseUrl:_0x142385},_0x4d0fea,_0x3927de)=>_0x350d57(void 0x0,void 0x0,void 0x0,function*(){const _0x448e3f=_0x53caf8,_0x1f4ed7=_0x142385+_0x448e3f(0x1d5),_0x170c77=_0x1f4ed7+'/browse',_0x27873c=Object[_0x448e3f(0x163)](Object[_0x448e3f(0x163)]({},_0x3927de),{'nodeId':_0x4d0fea,'resultMask':0x3f}),_0x5712ff=yield fetch(_0x170c77,{'method':_0x448e3f(0x18b),'body':JSON[_0x448e3f(0x1c0)]({'endpointNode':_0xf98096,'endpoint':_0x5765ae,'browseDescription':_0x27873c}),'headers':{'Content-Type':_0x448e3f(0x1dc)}});if(_0x5712ff[_0x448e3f(0x13e)]!==0xc8)return console[_0x448e3f(0x151)]('fetching\x20failed\x20with\x20error',_0x5712ff['status'],_0x5712ff[_0x448e3f(0x1c5)]),{'references':[]};console['log']('fetched\x20:\x20',_0x5712ff[_0x448e3f(0x13e)],_0x5712ff['statusText']);const _0x4ec86f=yield _0x5712ff[_0x448e3f(0x1a4)](),_0x2880d2=_0x4ec86f[_0x448e3f(0x1c8)][_0x448e3f(0x18c)]||[];return{'references':_0x2880d2};}),_0x27eaee={'referenceTypeId':_0x5049e0('HasChild'),'includeSubtypes':!![],'browseDirection':_0x2f8fe7[_0x53caf8(0x133)],'nodeClassMask':_0x5bccf4[_0x53caf8(0x1e4)]|_0x5bccf4[_0x53caf8(0x1a9)]|_0x5bccf4['Method'],'resultMask':0x3f},_0x5bf3ab={'referenceTypeId':_0x5049e0(_0x53caf8(0x152)),'includeSubtypes':!![],'browseDirection':_0x2f8fe7[_0x53caf8(0x133)],'nodeClassMask':_0x5bccf4['Variable']|_0x5bccf4[_0x53caf8(0x1a9)]|_0x5bccf4[_0x53caf8(0x185)],'resultMask':0x3f},_0x42a23=({endpointNode:_0x2dcd61,endpoint:_0x1aac25,baseUrl:_0x15f219},_0x1b573f,_0x5ecce6)=>_0x350d57(void 0x0,void 0x0,void 0x0,function*(){const _0x5b5710=_0x53caf8,_0x55dd93=_0x15f219+'/opcua-endpoint2',_0x378ef8=_0x1b573f[_0x5b5710(0x1b6)](),_0x5807ea=yield fetch(_0x55dd93+_0x5b5710(0x1b7),{'method':'POST','body':JSON[_0x5b5710(0x1c0)]({'endpointNode':_0x2dcd61,'endpoint':_0x1aac25,'nodeId':_0x378ef8}),'headers':{'Content-Type':_0x5b5710(0x1dc)}}),_0x2aed44=(_0x41bed3,_0x3f50bf)=>{const _0x24cbd0=_0x5b5710;_0x5ecce6[_0x24cbd0(0x197)](_0x41bed3)['addClass'](_0x24cbd0(0x15c))['addClass'](_0x3f50bf),_0x5ecce6['show'](),setTimeout(()=>{const _0x41a108=_0x24cbd0;_0x5ecce6[_0x41a108(0x143)](_0x3f50bf),_0x5ecce6[_0x41a108(0x165)]();},0xbb8);},_0x399958=yield _0x5807ea[_0x5b5710(0x1a4)]();_0x5807ea[_0x5b5710(0x13e)]!==0xc8?_0x2aed44(_0x5b5710(0x1e3)+_0x378ef8,'failure'):_0x399958[_0x5b5710(0x167)]['match'](/Good/)?(_0x1b573f['val'](_0x399958[_0x5b5710(0x1a1)]),_0x1b573f[_0x5b5710(0x1be)](_0x5b5710(0x1d4)),_0x2aed44('Good','ok')):(_0x1b573f[_0x5b5710(0x1b6)](''+_0x378ef8),_0x2aed44(_0x399958[_0x5b5710(0x167)]+'\x20'+_0x5807ea[_0x5b5710(0x1c5)],_0x5b5710(0x184)));});function _0x31281e(_0x4f4387,_0x4836c7){return _0x350d57(this,void 0x0,void 0x0,function*(){const _0xa90282=_0xb20c,_0x22f399=_0x4f4387[_0xa90282(0x16a)](_0xa90282(0x179)),_0x2e7918=yield _0x53f771(_0x4836c7,_0x22f399,_0x27eaee),_0x3653f2=yield _0x53f771(_0x4836c7,_0x22f399,_0x5bf3ab);return{'references':[..._0x2e7918[_0xa90282(0x18c)],..._0x3653f2[_0xa90282(0x18c)]]};});}const _0x446459={'referenceTypeId':_0x5049e0(_0x53caf8(0x12a)),'includeSubtypes':!![],'browseDirection':_0x2f8fe7[_0x53caf8(0x133)],'nodeClassMask':_0x5bccf4['ReferenceType']|_0x5bccf4[_0x53caf8(0x177)]|_0x5bccf4[_0x53caf8(0x1a8)]|_0x5bccf4[_0x53caf8(0x1ce)],'resultMask':0x3f};function _0x9ef56(_0x30873c,_0x52b577){return _0x350d57(this,void 0x0,void 0x0,function*(){const _0x5f0e7e=_0xb20c,_0x174721=_0x30873c[_0x5f0e7e(0x16a)](_0x5f0e7e(0x179)),_0x1043c3=yield _0x53f771(_0x52b577,_0x174721,_0x446459);return _0x1043c3;});}const _0x23c618=_0x26412c=>{const _0x112eac=_0x53caf8;var _0x56738d,_0x4302a9;if(!_0x26412c){const _0x1193a1=$(_0x112eac(0x180));return _0x1193a1;}const _0x5e378e=_0x26412c['nodeId'][_0x112eac(0x1f2)](),_0x38c9c1=((_0x56738d=_0x26412c[_0x112eac(0x1da)])===null||_0x56738d===void 0x0?void 0x0:_0x56738d[_0x112eac(0x197)])||((_0x4302a9=_0x26412c['browseName'])===null||_0x4302a9===void 0x0?void 0x0:_0x4302a9[_0x112eac(0x1d9)])||_0x26412c['nodeId']['toString'](),{icon:_0x22799f,color:_0x5831af}=_0x134302(_0x26412c),_0x571f56=$(_0x112eac(0x1c3)+_0x22799f+'\x22\x20style=\x22color:'+_0x5831af+_0x112eac(0x164)+_0x38c9c1+_0x112eac(0x148));return _0x571f56[_0x112eac(0x1e7)](_0x112eac(0x19d)),_0x571f56[_0x112eac(0x16a)](_0x112eac(0x179),_0x5e378e),_0x571f56[_0x112eac(0x16a)](_0x112eac(0x18f),_0x26412c),_0x571f56;},_0x5c2e2b=()=>{const _0x26076b=_0x53caf8;$[_0x26076b(0x1eb)](_0x26076b(0x17f),{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x26076b(0x1c1)},'nodeClass':_0x26076b(0x1a9),'nodeId':_0x26076b(0x195),'displayName':{'text':_0x26076b(0x1c1)},'typeDefinition':_0x42ab97}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x350d57(this,void 0x0,void 0x0,function*(){const _0x1bf02e=_0xb20c,_0x52b0cc=this,_0x2d6e8b=typeof _0x52b0cc[_0x1bf02e(0x130)][_0x1bf02e(0x18a)]==='function'?_0x52b0cc['options'][_0x1bf02e(0x18a)]():_0x52b0cc[_0x1bf02e(0x130)]['parentNode'];if(_0x2d6e8b instanceof Promise)return yield _0x2d6e8b;return _0x2d6e8b;});},'reset'(){const _0x35c260=_0x26076b,_0x51221f=this;_0x51221f[_0x35c260(0x16b)][_0x35c260(0x140)](),this['resolveParentNode']()[_0x35c260(0x1a5)](_0x56f40b=>{const _0x502389=_0x35c260,_0x1288ea=_0x23c618(_0x56f40b);_0x51221f[_0x502389(0x16b)][_0x502389(0x1a6)](_0x1288ea),_0x51221f[_0x502389(0x1ca)]=_0x56f40b;});},'verify'(){const _0xc619b8=_0x26076b,_0x2726a7=this,_0x522f4a={'baseUrl':_0x2726a7[_0xc619b8(0x130)][_0xc619b8(0x1ef)],'endpointNode':typeof _0x2726a7[_0xc619b8(0x130)][_0xc619b8(0x189)]===_0xc619b8(0x1b0)?_0x2726a7[_0xc619b8(0x130)]['endpointNode']():_0x2726a7[_0xc619b8(0x130)][_0xc619b8(0x189)],'endpoint':typeof _0x2726a7[_0xc619b8(0x130)][_0xc619b8(0x1b3)]===_0xc619b8(0x1b0)?_0x2726a7[_0xc619b8(0x130)][_0xc619b8(0x1b3)]():_0x2726a7[_0xc619b8(0x130)][_0xc619b8(0x1b3)]};_0x42a23(_0x522f4a,_0x2726a7[_0xc619b8(0x1d2)],_0x2726a7[_0xc619b8(0x192)]);},'_create'(){const _0x5b0a1e=_0x26076b,_0x1aadd3=this;function _0x428ced(_0x3ee525,_0x3eec3b,_0x3a735f){return _0x350d57(this,void 0x0,void 0x0,function*(){const _0x4175ba=_0xb20c;if(_0x3ee525[_0x4175ba(0x176)](_0x4175ba(0x162))){console[_0x4175ba(0x151)](_0x4175ba(0x12d));return;}if(_0x3ee525['hasClass'](_0x4175ba(0x196))){console['log'](_0x4175ba(0x145));return;}_0x3ee525[_0x4175ba(0x1e7)](_0x4175ba(0x196)),_0x3ee525[_0x4175ba(0x1a6)](_0x4175ba(0x1ea));try{_0x3ee525[_0x4175ba(0x12e)]('ul')[_0x4175ba(0x140)]();const {references:_0x4b6312}=yield _0x3eec3b(_0x3ee525,_0x3a735f);for(const _0x3ba080 of _0x4b6312){if(_0x1aadd3[_0x4175ba(0x130)][_0x4175ba(0x136)]&&!_0x1aadd3[_0x4175ba(0x130)][_0x4175ba(0x136)](_0x3ba080))continue;const _0x35646b=_0x23c618(_0x3ba080);_0x3ee525['children']('ul')[_0x4175ba(0x1a6)](_0x35646b);}_0x3ee525[_0x4175ba(0x1e7)]('fetched');}catch(_0x31dc03){_0x3ee525[_0x4175ba(0x12e)]('ul')[_0x4175ba(0x1a6)](_0x4175ba(0x1e8)+_0x31dc03[_0x4175ba(0x1bf)]+_0x4175ba(0x1c6)),console[_0x4175ba(0x151)]('err',_0x31dc03);}_0x3ee525[_0x4175ba(0x134)](_0x4175ba(0x194))[_0x4175ba(0x13d)](),_0x3ee525[_0x4175ba(0x143)]('loading');});}_0x1aadd3[_0x5b0a1e(0x1d2)]=this[_0x5b0a1e(0x1af)],_0x1aadd3[_0x5b0a1e(0x1d1)]=$(_0x5b0a1e(0x1b2)),_0x1aadd3[_0x5b0a1e(0x1d1)][_0x5b0a1e(0x1e7)](_0x5b0a1e(0x158)),this[_0x5b0a1e(0x1af)][_0x5b0a1e(0x1ae)](_0x1aadd3[_0x5b0a1e(0x1d1)]),_0x1aadd3['$inputGroup']=$('<div/>')['addClass'](_0x5b0a1e(0x17c)),_0x1aadd3['$combo']['append'](_0x1aadd3[_0x5b0a1e(0x182)]),_0x1aadd3[_0x5b0a1e(0x182)][_0x5b0a1e(0x1a6)](_0x1aadd3['$input']),_0x1aadd3[_0x5b0a1e(0x173)]=$('<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>'),_0x1aadd3[_0x5b0a1e(0x182)]['append'](_0x1aadd3[_0x5b0a1e(0x173)]),_0x1aadd3[_0x5b0a1e(0x173)]['on']('click',function(){const _0x5ec658=_0x5b0a1e;!_0x1aadd3['$dropdown']['is'](_0x5ec658(0x1d7))&&(_0x1aadd3[_0x5ec658(0x1ed)]()[_0x5ec658(0x1a5)](_0x53118d=>{const _0x43da5b=_0x5ec658;var _0x4c5bb3;(_0x53118d!==_0x1aadd3[_0x43da5b(0x1ca)]||((_0x4c5bb3=_0x1aadd3[_0x43da5b(0x1ca)])===null||_0x4c5bb3===void 0x0?void 0x0:_0x4c5bb3[_0x43da5b(0x1d8)])!==_0x53118d[_0x43da5b(0x1d8)])&&_0x1aadd3[_0x43da5b(0x19a)]();}),_0x1aadd3[_0x5ec658(0x192)][_0x5ec658(0x165)]()),_0x1aadd3[_0x5ec658(0x1b9)][_0x5ec658(0x1db)]();}),_0x1aadd3[_0x5b0a1e(0x183)]=$(_0x5b0a1e(0x178)),_0x1aadd3[_0x5b0a1e(0x182)][_0x5b0a1e(0x1a6)](_0x1aadd3[_0x5b0a1e(0x183)]),_0x1aadd3[_0x5b0a1e(0x183)]['on'](_0x5b0a1e(0x171),()=>{const _0x5da93a=_0x5b0a1e;this[_0x5da93a(0x1c9)]();}),!_0x1aadd3[_0x5b0a1e(0x1d2)][_0x5b0a1e(0x14e)](_0x5b0a1e(0x19c))&&_0x1aadd3[_0x5b0a1e(0x1d2)][_0x5b0a1e(0x14e)](_0x5b0a1e(0x19c),_0x5b0a1e(0x1b5)),_0x1aadd3[_0x5b0a1e(0x192)]=$(_0x5b0a1e(0x1dd)),_0x1aadd3['$info']['hide'](),{'baseUrl':_0x1aadd3['options'][_0x5b0a1e(0x1ef)],'endpointNode':typeof _0x1aadd3[_0x5b0a1e(0x130)][_0x5b0a1e(0x189)]===_0x5b0a1e(0x1b0)?_0x1aadd3[_0x5b0a1e(0x130)][_0x5b0a1e(0x189)]():_0x1aadd3['options']['endpointNode'],'endpoint':typeof _0x1aadd3[_0x5b0a1e(0x130)][_0x5b0a1e(0x1b3)]===_0x5b0a1e(0x1b0)?_0x1aadd3[_0x5b0a1e(0x130)][_0x5b0a1e(0x1b3)]():_0x1aadd3[_0x5b0a1e(0x130)][_0x5b0a1e(0x1b3)]},_0x1aadd3[_0x5b0a1e(0x1b9)]=$(_0x5b0a1e(0x1b2))['addClass'](_0x5b0a1e(0x13a))[_0x5b0a1e(0x165)](),_0x1aadd3[_0x5b0a1e(0x1d1)]['append'](_0x1aadd3[_0x5b0a1e(0x192)]),_0x1aadd3[_0x5b0a1e(0x1d1)][_0x5b0a1e(0x1a6)](_0x1aadd3[_0x5b0a1e(0x1b9)]),_0x1aadd3[_0x5b0a1e(0x16b)]=$(_0x5b0a1e(0x12f))[_0x5b0a1e(0x1ac)](_0x1aadd3[_0x5b0a1e(0x1b9)]),this[_0x5b0a1e(0x19a)](),_0x1aadd3['$tree']['on'](_0x5b0a1e(0x171),'li',function(_0x8cee40){const _0x4473e9=_0x5b0a1e;var _0xf9f72,_0x1de9d0;_0x8cee40[_0x4473e9(0x131)]();let _0x29d642=$(this);const _0x4a3343=0x14,_0x26bb50=0x14,_0x146a44=$(this)[_0x4473e9(0x198)](),_0x23df19=_0x8cee40;if(_0x23df19[_0x4473e9(0x1cd)]>=_0x146a44[_0x4473e9(0x1ec)]&&_0x23df19[_0x4473e9(0x1cd)]<=_0x146a44[_0x4473e9(0x1ec)]+_0x4a3343&&_0x23df19[_0x4473e9(0x1a0)]>=_0x146a44[_0x4473e9(0x137)]&&_0x23df19[_0x4473e9(0x1a0)]<=_0x146a44[_0x4473e9(0x137)]+_0x26bb50){if(_0x29d642[_0x4473e9(0x176)](_0x4473e9(0x19d))){if(_0x29d642[_0x4473e9(0x176)](_0x4473e9(0x162))){_0x29d642[_0x4473e9(0x143)]('expandable')[_0x4473e9(0x1e7)]('expanded'),_0x29d642['children']('ul')[_0x4473e9(0x1db)]();return;}const _0x49b5d3={'baseUrl':_0x1aadd3[_0x4473e9(0x130)][_0x4473e9(0x1ef)],'endpointNode':typeof _0x1aadd3[_0x4473e9(0x130)]['endpointNode']===_0x4473e9(0x1b0)?_0x1aadd3['options'][_0x4473e9(0x189)]():_0x1aadd3['options'][_0x4473e9(0x189)],'endpoint':typeof _0x1aadd3['options']['endpoint']===_0x4473e9(0x1b0)?_0x1aadd3['options'][_0x4473e9(0x1b3)]():_0x1aadd3['options'][_0x4473e9(0x1b3)]},_0x353ea9=!_0x1aadd3[_0x4473e9(0x130)][_0x4473e9(0x12b)]?_0x31281e:_0x9ef56;_0x428ced(_0x29d642,_0x353ea9,_0x49b5d3)[_0x4473e9(0x1a5)](()=>{const _0x1e8557=_0x4473e9;console[_0x1e8557(0x151)](_0x1e8557(0x127)),console[_0x1e8557(0x151)]('fetched'),_0x29d642[_0x1e8557(0x143)](_0x1e8557(0x19d))['addClass'](_0x1e8557(0x135));})[_0x4473e9(0x149)](_0x4c12c9=>{const _0x3dfd06=_0x4473e9;_0x29d642[_0x3dfd06(0x143)](_0x3dfd06(0x19d))[_0x3dfd06(0x1e7)](_0x3dfd06(0x135)),console[_0x3dfd06(0x151)](_0x3dfd06(0x1e5),_0x4c12c9);});}else{if(_0x29d642[_0x4473e9(0x176)]('expanded'))_0x29d642[_0x4473e9(0x12e)]('ul')[_0x4473e9(0x1db)](),_0x29d642[_0x4473e9(0x17e)](_0x4473e9(0x1b8));else{if(_0x29d642[_0x4473e9(0x12e)]('ul')['children']()['length']>0x0)_0x29d642['children']('ul')[_0x4473e9(0x1db)](),_0x29d642[_0x4473e9(0x17e)](_0x4473e9(0x1b8));else;}}}else{const _0x47ecd1=_0x29d642['data'](_0x4473e9(0x179)),_0x3ea359=_0x29d642[_0x4473e9(0x16a)](_0x4473e9(0x18f));if(_0x1aadd3[_0x4473e9(0x130)][_0x4473e9(0x1b4)]&&!_0x1aadd3[_0x4473e9(0x130)][_0x4473e9(0x1b4)](_0x3ea359))return;_0x1aadd3[_0x4473e9(0x1d2)]['data']('reference',_0x3ea359);const _0x469825=((_0xf9f72=_0x3ea359[_0x4473e9(0x1da)])===null||_0xf9f72===void 0x0?void 0x0:_0xf9f72[_0x4473e9(0x197)])||((_0x1de9d0=_0x3ea359[_0x4473e9(0x14b)])===null||_0x1de9d0===void 0x0?void 0x0:_0x1de9d0[_0x4473e9(0x1d9)])||_0x3ea359[_0x4473e9(0x1d8)]['toString'](),_0x14e7fe='['+_0x469825+']('+_0x47ecd1+')';_0x1aadd3[_0x4473e9(0x1d2)][_0x4473e9(0x1b6)](_0x14e7fe),_0x1aadd3[_0x4473e9(0x1d2)][_0x4473e9(0x1be)]('change'),_0x1aadd3['$dropdown'][_0x4473e9(0x165)]();}}),$(document)['on']('click',function(_0x30a687){const _0x2b7558=_0x5b0a1e;!$(_0x30a687[_0x2b7558(0x1bd)])[_0x2b7558(0x1c4)](_0x1aadd3[_0x2b7558(0x1d1)])[_0x2b7558(0x154)]&&_0x1aadd3['$dropdown'][_0x2b7558(0x165)]();});}});},_0x2841cb=()=>{const _0x4c2c79=_0x53caf8;$[_0x4c2c79(0x1eb)](_0x4c2c79(0x14a),{'options':{'namesToBits':{},'value':0x0},'_create'(){const _0xd50895=_0x4c2c79,_0x57983f=this;_0x57983f[_0xd50895(0x1d2)]=this[_0xd50895(0x1af)],_0x57983f[_0xd50895(0x1d1)]=$(_0xd50895(0x1b2)),_0x57983f['$combo'][_0xd50895(0x1e7)](_0xd50895(0x158)),this[_0xd50895(0x1af)][0x0][_0xd50895(0x15b)][_0xd50895(0x18d)](_0x57983f[_0xd50895(0x1d1)][0x0],this['element'][0x0]),_0x57983f['$inputGroup']=$(_0xd50895(0x1b2))[_0xd50895(0x1e7)]('input-group'),_0x57983f[_0xd50895(0x1d1)][_0xd50895(0x1a6)](_0x57983f[_0xd50895(0x182)]),_0x57983f['$inputGroup'][_0xd50895(0x1a6)](_0x57983f['$input']),_0x57983f['$toggleTreeBtn']=$('<button><i\x20class=\x22fa\x20fa-eye\x22></i></button>'),_0x57983f['$inputGroup'][_0xd50895(0x1a6)](_0x57983f[_0xd50895(0x173)]),_0x57983f['$toggleTreeBtn']['on'](_0xd50895(0x171),function(){const _0x451f35=_0xd50895;_0x57983f[_0x451f35(0x1b9)][_0x451f35(0x1db)](),_0x57983f[_0x451f35(0x1b9)]['is'](_0x451f35(0x1d7))&&(_0x61ab5d(),_0x57983f[_0x451f35(0x1d1)][_0x451f35(0x134)](_0x451f35(0x19f))[_0x451f35(0x166)](function(){const _0x38e9f9=_0x451f35;let _0x913a2e=$(this)[_0x38e9f9(0x197)]();const _0x39cda9=_0x57983f['options'][_0x38e9f9(0x190)][_0x913a2e];if(_0x39cda9===undefined)throw new Error('Unknown\x20bit\x20name');(_0x57983f['options'][_0x38e9f9(0x179)]&_0x39cda9)===_0x39cda9?$(this)[_0x38e9f9(0x1e7)](_0x38e9f9(0x1f1)):$(this)['removeClass']('selected');}),_0x57983f[_0x451f35(0x16e)]());}),_0x57983f[_0xd50895(0x1b9)]=$('<div\x20class=\x22custom-select\x22></div>')[_0xd50895(0x165)]()[_0xd50895(0x15d)](this['element']),$[_0xd50895(0x166)](this[_0xd50895(0x130)]['namesToBits'],function(_0x88840){const _0x1174af=_0xd50895,_0x4aa14f=$(_0x1174af(0x15e)+_0x88840+'\x22>'+_0x1174af(0x139)+_0x88840+'</div>');_0x57983f[_0x1174af(0x1b9)][_0x1174af(0x1a6)](_0x4aa14f);}),_0x57983f[_0xd50895(0x1b9)]['on']('click',_0xd50895(0x19f),function(){const _0x156202=_0xd50895;$(this)['toggleClass'](_0x156202(0x1f1));const _0x1cb974=$(this)[_0x156202(0x16a)](_0x156202(0x179));$(this)[_0x156202(0x176)](_0x156202(0x1f1))?_0x417e81(_0x1cb974):_0x54a4d8(_0x1cb974),_0x57983f['updateValue']();}),_0x57983f['$combo'][_0xd50895(0x1a6)](_0x57983f[_0xd50895(0x1b9)]);const _0x61ab5d=()=>{const _0x380e1e=_0xd50895,_0x480a83=this['element'][_0x380e1e(0x1b6)]();_0x57983f['options']['value']=_0x3dbfe1(_0x57983f[_0x380e1e(0x130)]['namesToBits'],_0x480a83);},_0x417e81=_0x27e181=>{const _0x192137=_0xd50895,_0x3dd473=_0x57983f[_0x192137(0x130)][_0x192137(0x190)][_0x27e181];if(_0x3dd473===undefined)throw new Error(_0x192137(0x156));this['options'][_0x192137(0x179)]|=_0x3dd473;},_0x54a4d8=_0x380b00=>{const _0x5d2697=_0xd50895,_0x56842a=_0x57983f[_0x5d2697(0x130)][_0x5d2697(0x190)][_0x380b00];if(_0x56842a===undefined)throw new Error(_0x5d2697(0x156));this[_0x5d2697(0x130)]['value']&=~_0x56842a,this[_0x5d2697(0x1af)]['val'](_0x169e8c(_0x57983f[_0x5d2697(0x130)][_0x5d2697(0x190)],this['options'][_0x5d2697(0x179)]));};_0x61ab5d();},'updateValue'(){const _0x2e9f3f=_0x4c2c79,_0x452d46=this;this[_0x2e9f3f(0x1af)][_0x2e9f3f(0x1b6)](_0x169e8c(_0x452d46['options'][_0x2e9f3f(0x190)],this[_0x2e9f3f(0x130)]['value']));},'_destroy'(){const _0x437dd5=_0x4c2c79,_0x2373a0=this;_0x2373a0[_0x437dd5(0x1b9)][_0x437dd5(0x13d)]();}});};RED['nodes'][_0x53caf8(0x1d6)]('OpcUa-Client2-Browse',{'category':_0x53caf8(0x1ab),'color':_0x53caf8(0x19e),'align':_0x53caf8(0x188),'icon':_0x53caf8(0x1bb),'paletteLabel':_0x53caf8(0x13f),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x53caf8(0x191)},'nodeId':{'value':'','required':![]},'referenceTypeId':{'value':_0x53caf8(0x128),'required':![]},'includeSubtypes':{'value':![],'required':!![]},'browseDirection':{'value':_0x53caf8(0x133),'required':!![]},'nodeClassMask':{'value':'Variable\x20|\x20Object\x20|\x20Method\x20|\x20ObjectType\x20|\x20VariableType','required':![]},'resultMask':{'value':_0x53caf8(0x14d),'required':![]}},'outputs':0x1,'label'(){const _0x256d5e=_0x53caf8;return this[_0x256d5e(0x1d9)]||_0x256d5e(0x169);},'labelStyle'(){const _0x4ef0e2=_0x53caf8;return this[_0x4ef0e2(0x1d9)]?_0x4ef0e2(0x1f3):'';},'oneditprepare'(){const _0x3ae5ca=_0x53caf8,_0x515bde=this;_0x5c2e2b(),_0x2841cb(),_0x515bde[_0x3ae5ca(0x1a3)]=0x1;const _0x196d82=$('#node-input-nodeClassMask');_0x196d82[_0x3ae5ca(0x141)]({'namesToBits':{'Object':0x1,'Variable':0x2,'Method':0x4,'ObjectType':0x8,'VariableType':0x10,'ReferenceType':0x20,'DataType':0x40,'View':0x80},'value':0x0});const _0x13de83=$('#node-input-resultMask');_0x13de83['flagEditor']({'namesToBits':{'ReferenceType':0x1,'IsForward':0x2,'NodeClass':0x4,'BrowseName':0x8,'DisplayName':0x10,'TypeDefinition':0x20},'value':0x3f});const _0x37764e=$('#node-input-nodeId');_0x37764e[_0x3ae5ca(0x1cc)]({'isSelectable'(_0x27dd26){const _0x2e8940=_0x3ae5ca;return _0x27dd26[_0x2e8940(0x1d0)]===_0x2e8940(0x1e4)||_0x27dd26[_0x2e8940(0x1d0)]===_0x2e8940(0x1a9);}});const _0x35be09={'nodeId':_0x3ae5ca(0x155),'referenceTypeId':'','browseName':{'namespaceIndex':0x0,'name':_0x3ae5ca(0x1cf)},'displayName':{'text':'References'},'nodeClass':_0x3ae5ca(0x142),'typeDefinition':_0x3ae5ca(0x155)},_0x36dcc2=$('#node-input-referenceTypeId');_0x36dcc2[_0x3ae5ca(0x1cc)]({'parentNode':()=>_0x35be09,'isSelectable'(_0x85e8cb){const _0x5a09e4=_0x3ae5ca;return _0x85e8cb['nodeClass']===_0x5a09e4(0x142);},'isTypeRef':!![]});},'oneditsave'(){}});}()));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgzNTBkNTciLCJfMHg1NThmYzciLCJfMHg0MThjOTEiLCJfMHg1N2M2NmQiLCJfMHg0NzE3Y2MiLCJfMHgyZmM3YWYiLCJfMHgxMDA4ZDQiLCJfMHgxNWNmMjkiLCJQcm9taXNlIiwiXzB4MTkzNTQ5IiwiXzB4MzY1MmQ1IiwiXzB4NGI3ODQwIiwiXzB4ZjM4NjBmIiwiXzB4NTc4YzMxIiwiXzB4NDRjMTBjIiwiXzB4MmUzMWNhIiwiXzB4NTlmNjhhIiwiXzB4NGRjYmNjIiwiXzB4MTBhZTA5IiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4MjRlZWQwIiwiXzB4MTBkZTIwIiwiXzB4NGI4ZmNhIiwiXzB4M2NkNGVmIiwiRXJyb3IiLCJfMHgzNjg4M2EiLCJfMHg0MmFiOTciLCJfMHg0YjI1ZDgiLCJfMHg1MWE3N2IiLCJfMHgzNTJkOTUiLCJfMHg1YWE4YzUiLCJfMHg0NzI5YTciLCJfMHgyZjhmZTciLCJfMHgyZjg2NTYiLCJfMHg1YmNjZjQiLCJfMHgzOTkxNGIiLCJfMHhiOTgwOGYiLCJfMHgxNThjYzgiLCJfMHgzZGJmZTEiLCJfMHgzZWMxYTgiLCJfMHg1Mjc3ZTQiLCJfMHgyZjY3OTEiLCJwYXJzZUludCIsImlzTmFOIiwiXzB4YjBkZWIyIiwiXzB4MzU2ZjI0IiwiXzB4ZWFjYzAyIiwiXzB4MmJlYTA0IiwiXzB4MTY5ZThjIiwiXzB4NWIzZmViIiwiXzB4M2EzZGE3IiwiXzB4MWMwYWFmIiwiXzB4M2NmMTA0IiwiXzB4MTU2YjcwIiwiT2JqZWN0IiwiXzB4NDM5ZmU4IiwiXzB4MjgzYWI3IiwiXzB4NTA0OWUwIiwiXzB4NDM3ZTVmIiwiXzB4MTM0MzAyIiwiXzB4NDk1NDg0IiwiXzB4NTNmNzcxIiwiZW5kcG9pbnROb2RlIiwiXzB4Zjk4MDk2IiwiZW5kcG9pbnQiLCJfMHg1NzY1YWUiLCJiYXNlVXJsIiwiXzB4MTQyMzg1IiwiXzB4NGQwZmVhIiwiXzB4MzkyN2RlIiwiXzB4MWY0ZWQ3IiwiXzB4MTcwYzc3IiwiXzB4Mjc4NzNjIiwiXzB4NTcxMmZmIiwiZmV0Y2giLCJKU09OIiwiY29uc29sZSIsIl8weDRlYzg2ZiIsIl8weDI4ODBkMiIsIl8weDI3ZWFlZSIsIl8weDViZjNhYiIsIl8weDQyYTIzIiwiXzB4MmRjZDYxIiwiXzB4MWFhYzI1IiwiXzB4MTVmMjE5IiwiXzB4MWI1NzNmIiwiXzB4NWVjY2U2IiwiXzB4NTVkZDkzIiwiXzB4Mzc4ZWY4IiwiXzB4NTgwN2VhIiwiXzB4MmFlZDQ0IiwiXzB4NDFiZWQzIiwiXzB4M2Y1MGJmIiwic2V0VGltZW91dCIsIl8weDM5OTk1OCIsIl8weDMxMjgxZSIsIl8weDRmNDM4NyIsIl8weDQ4MzZjNyIsIl8weDIyZjM5OSIsIl8weDJlNzkxOCIsIl8weDM2NTNmMiIsIl8weDQ0NjQ1OSIsIl8weDllZjU2IiwiXzB4MzA4NzNjIiwiXzB4NTJiNTc3IiwiXzB4MTc0NzIxIiwiXzB4MTA0M2MzIiwiXzB4MjNjNjE4IiwiXzB4MjY0MTJjIiwiXzB4NTY3MzhkIiwiXzB4NDMwMmE5IiwiXzB4MTE5M2ExIiwiJCIsIl8weDVlMzc4ZSIsIl8weDM4YzljMSIsImljb24iLCJfMHgyMjc5OWYiLCJjb2xvciIsIl8weDU4MzFhZiIsIl8weDU3MWY1NiIsIl8weDVjMmUyYiIsInVuZGVmaW5lZCIsIl8weDUyYjBjYyIsIl8weDJkNmU4YiIsIl8weDUxMjIxZiIsIl8weDU2ZjQwYiIsIl8weDEyODhlYSIsIl8weDI3MjZhNyIsIl8weDUyMmY0YSIsIl8weDFhYWRkMyIsIl8weDQyOGNlZCIsIl8weDNlZTUyNSIsIl8weDNlZWMzYiIsIl8weDNhNzM1ZiIsInJlZmVyZW5jZXMiLCJfMHg0YjYzMTIiLCJfMHgzYmEwODAiLCJfMHgzNTY0NmIiLCJfMHgzMWRjMDMiLCJfMHg1MzExOGQiLCJfMHg0YzViYjMiLCJfMHg4Y2VlNDAiLCJfMHhmOWY3MiIsIl8weDFkZTlkMCIsIl8weDI5ZDY0MiIsIl8weDRhMzM0MyIsIl8weDI2YmI1MCIsIl8weDE0NmE0NCIsIl8weDIzZGYxOSIsIl8weDQ5YjVkMyIsIl8weDM1M2VhOSIsIl8weDRjMTJjOSIsIl8weDQ3ZWNkMSIsIl8weDNlYTM1OSIsIl8weDQ2OTgyNSIsIl8weDE0ZTdmZSIsImRvY3VtZW50IiwiXzB4MzBhNjg3IiwiXzB4Mjg0MWNiIiwiXzB4NTc5ODNmIiwiXzB4NjFhYjVkIiwiXzB4OTEzYTJlIiwiXzB4MzljZGE5IiwiXzB4ODg4NDAiLCJfMHg0YWExNGYiLCJfMHgxY2I5NzQiLCJfMHg0MTdlODEiLCJfMHg1NGE0ZDgiLCJfMHg0ODBhODMiLCJfMHgyN2UxODEiLCJfMHgzZGQ0NzMiLCJfMHgzODBiMDAiLCJfMHg1Njg0MmEiLCJfMHg0NTJkNDYiLCJfMHgyMzczYTAiLCJSRUQiLCJfMHg1MTViZGUiLCJfMHgxOTZkODIiLCJfMHgxM2RlODMiLCJfMHgzNzc2NGUiLCJfMHgyN2RkMjYiLCJfMHgzNWJlMDkiLCJfMHgzNmRjYzIiLCJfMHg4NWU4Y2IiXSwibWFwcGluZ3MiOiJ1NEhBQUEsQ0FBQyxVLENBQ0csYSx3QkFtQkEsU0FBU0EsU0FBVCxDQUFtQkMsU0FBbkIsQ0FBNEJDLFNBQTVCLENBQXdDQyxTQUF4QyxDQUEyQ0MsU0FBM0MsQyxDQUNJLFNBQVNDLFNBQVQsQ0FBZUMsU0FBZixDLFFBQStCQSxTQUFBLFlBQWlCSCxTQUFqQixDQUFxQkcsU0FBckIsQ0FBNkIsSUFBSUgsU0FBSixDQUFNLFNBQVVJLFNBQVYsQyxDQUFxQkEsU0FBQSxDQUFRRCxTQUFSLEMsRUFBM0IsQyxTQUNyRCxHQUFLLENBQUFILFNBQUEsRUFBTSxDQUFBQSxTQUFBLENBQUlLLE9BQUosQ0FBTixDQUFMLENBQXlCLFNBQVVDLFNBQVYsQ0FBbUJDLFNBQW5CLEMseUJBQzVCLFNBQVNDLFNBQVQsQ0FBbUJDLFNBQW5CLEMseUJBQTRCLEcsQ0FBTUMsU0FBQSxDQUFLVCxTQUFBLEMsZ0JBQUEsRUFBZVEsU0FBZixDQUFMLEMsRUFBK0IsTUFBT0UsU0FBUCxDLENBQVlKLFNBQUEsQ0FBT0ksU0FBUCxDLEdBQzdFLFNBQVNDLFNBQVQsQ0FBa0JDLFNB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RSxDQUFBLEMsNkJBQUEsQ0FSekIsQ0FTQXNFLFNBQUEsQyxnQkFBQSxFQUE2QixDLFlBQ3pCLENBQVksSUFBTUQsU0FETyxDLGNBRXpCLENBQWFFLFNBQWIsQyxrQ0FDV0EsU0FBQSxDLFdBQUEsSSxrQkFIYyxDLFdBS3pCLEMsSUFMeUIsQ0FBN0IsQyxFQXpFdUMsQyxZQWlGM0MsRSxFQWpGMkMsQ0FBL0MsQyxFQTNrQkosRyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG4gICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG4gICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG4gICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcbiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCAqL1xyXG5cclxuXHJcbiAgICBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG4gICAgfTtcblxuICAgIGNvbnN0IE9yZ2FuaXplc1JlZk5vZGVJZCA9IFwibnM9MDtpPTM1XCI7XG4gICAgY29uc3QgRm9sZGVyVHlwZSA9IFwibnM9MDtpPTYxXCI7XG4gICAgY29uc3QgSGFzQ29tcG9uZW50UmVmTm9kZUlkID0gXCJucz0wO2k9NDdcIjtcbiAgICBjb25zdCBIYXNQcm9wZXJ0eVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ2XCI7XG4gICAgY29uc3QgSGFzQ2hpbGRSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNFwiO1xuICAgIGNvbnN0IEhhc1N1YnR5cGVSZWZOb2RlSWQgPSBcIm5zPTA7aT00NVwiO1xuICAgIGNvbnN0IEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkID0gXCJucz0wO2k9NDBcIjtcblxuICAgIHZhciBCcm93c2VEaXJlY3Rpb247XG4gICAgKGZ1bmN0aW9uIChCcm93c2VEaXJlY3Rpb24pIHtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkZvcndhcmRcIl0gPSAwXSA9IFwiRm9yd2FyZFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52ZXJzZVwiXSA9IDFdID0gXCJJbnZlcnNlXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJCb3RoXCJdID0gMl0gPSBcIkJvdGhcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmFsaWRcIl0gPSAzXSA9IFwiSW52YWxpZFwiO1xuICAgIH0pKEJyb3dzZURpcmVjdGlvbiB8fCAoQnJvd3NlRGlyZWN0aW9uID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzKSB7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJVbnNwZWNpZmllZFwiXSA9IDBdID0gXCJVbnNwZWNpZmllZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3MgfHwgKE5vZGVDbGFzcyA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzc01hc2s7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3NNYXNrKSB7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3NNYXNrIHx8IChOb2RlQ2xhc3NNYXNrID0ge30pKTtcbiAgICBmdW5jdGlvbiBjb2VyY2VGbGFnTWFza1RvTnVtYmVyKHR5cGUsIHN0cikge1xuICAgICAgICBpZiAodHlwZW9mIHN0ciA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIHN0cjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdHJBc051bSA9IHBhcnNlSW50KHN0ciwgMTApO1xuICAgICAgICBpZiAoIWlzTmFOKHN0ckFzTnVtKSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0ckFzTnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZsYWdzID0gc3RyLnNwbGl0KC9cXHx8O3wsLykubWFwKChhKSA9PiBhLnRyaW0oKSk7XG4gICAgICAgIGxldCByZXN1bHQgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGZsYWcgb2YgZmxhZ3MpIHtcbiAgICAgICAgICAgIHJlc3VsdCB8PSB0eXBlW2ZsYWddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvZXJjZUZsYWdNYXNrVG9TdHJpbmcodHlwZSwgdmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSBjb2VyY2VGbGFnTWFza1RvTnVtYmVyKHR5cGUsIHZhbHVlKTtcbiAgICAgICAgY29uc3QgciA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIGJpdE1hc2tdIG9mIE9iamVjdC5lbnRyaWVzKHR5cGUpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCh2YWx1ZSAmIGJpdE1hc2spID09PSBiaXRNYXNrKSB7XG4gICAgICAgICAgICAgICAgICAgIHIucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gci5qb2luKFwiIHwgXCIpO1xuICAgIH1cbiAgICB2YXIgUmVzdWx0TWFzaztcbiAgICAoZnVuY3Rpb24gKFJlc3VsdE1hc2spIHtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDFdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIklzRm9yd2FyZFwiXSA9IDJdID0gXCJJc0ZvcndhcmRcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiTm9kZUNsYXNzXCJdID0gNF0gPSBcIk5vZGVDbGFzc1wiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJCcm93c2VOYW1lXCJdID0gOF0gPSBcIkJyb3dzZU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiRGlzcGxheU5hbWVcIl0gPSAxNl0gPSBcIkRpc3BsYXlOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlR5cGVEZWZpbml0aW9uXCJdID0gMzJdID0gXCJUeXBlRGVmaW5pdGlvblwiO1xuICAgIH0pKFJlc3VsdE1hc2sgfHwgKFJlc3VsdE1hc2sgPSB7fSkpO1xuICAgIC8vICBjb25zdCBxID0gUmVmZXJlbmNlVHlwZUlkcy5Pcmdhbml6ZXM7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGVJZChub2RlSWRMaWtlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZUlkTGlrZSkge1xuICAgICAgICAgICAgY2FzZSBcIk9yZ2FuaXplc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBPcmdhbml6ZXNSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzUHJvcGVydHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzUHJvcGVydHlSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ29tcG9uZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NvbXBvbmVudFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDaGlsZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDaGlsZFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNTdWJ0eXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1N1YnR5cGVSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzVHlwZURlZmluaXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRJY29uID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlZmVyZW5jZS5ub2RlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gT3JnYW5pemVzUmVmTm9kZUlkKSA7XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS50eXBlRGVmaW5pdGlvbiA9PT0gRm9sZGVyVHlwZSB8fCByZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBcImk9NjFcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWZvbGRlclwiLCBjb2xvcjogXCJyZ2JhKDYxLCA2MCwgNCwgMC41MjUpXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiU2VhR3JlZW5cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc0NvbXBvbmVudFJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIlN0ZWVsQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc1Byb3BlcnR5UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiRG9kZ2VyQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkNhZGV0Qmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIk1ldGhvZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtY29nXCIsIGNvbG9yOiBcIlNhbmR5QnJvd25cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXNsaWRlcnNcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1xdWVzdGlvblwiLCBjb2xvcjogXCJncmV5XCIgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgYnJvd3NlID0gKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQsIHRlbXBsYXRlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2Jyb3dzZWA7XG4gICAgICAgIGNvbnN0IGJyb3dzZURlc2NyaXB0aW9uID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0ZW1wbGF0ZSksIHsgbm9kZUlkLCByZXN1bHRNYXNrOiA2MyB9KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgYnJvd3NlRGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoaW5nIGZhaWxlZCB3aXRoIGVycm9yXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlczogW10gfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoZWQgOiBcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0geWllbGQgZGF0YS5qc29uKCk7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSByZXNwb25zZS5icm93c2VSZXN1bHQucmVmZXJlbmNlcyB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlcyB9O1xuICAgIH0pO1xuXG4gICAgY29uc3QgdGVtcGxhdGUxID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNDaGlsZFwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IHRlbXBsYXRlMiA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiT3JnYW5pemVzXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgaW50ZXJuYWxWZXJpZnkgPSAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sICRpbnB1dEVsZW1lbnQsICRpbmZvKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IG5vZGVJZCA9ICRpbnB1dEVsZW1lbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaChgJHtyb290fS9jaGVja05vZGVJZGAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2V0Tm90aWZpY2F0aW9uID0gKHRleHQsIGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgJGluZm8udGV4dCh0ZXh0KS5hZGRDbGFzcyhcInN0ZXJmaXZlLWluZm9cIikuYWRkQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICRpbmZvLnNob3coKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICRpbmZvLnJlbW92ZUNsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nO1xuICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiISFmYWlsdXJlISFcIiArIG5vZGVJZCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGpzb24uc3RhdHVzQ29kZS5tYXRjaCgvR29vZC8pKSB7XG4gICAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoanNvbi5ub2RlQWRkcmVzc1N0cmluZyk7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIkdvb2RcIiwgXCJva1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKGAke25vZGVJZH1gKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oYCR7anNvbi5zdGF0dXNDb2RlfSAke2RhdGEuc3RhdHVzVGV4dH1gLCBcImZhaWx1cmVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBmZXRjaENoaWxkcmVuKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUxKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDIgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTIpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbLi4uYnJvd3NlUmVzdWx0MS5yZWZlcmVuY2VzLCAuLi5icm93c2VSZXN1bHQyLnJlZmVyZW5jZXNdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHRlbXBsYXRlU1QgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc1N1YnR5cGVcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfCBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8IE5vZGVDbGFzcy5EYXRhVHlwZSB8IE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgZnVuY3Rpb24gZmV0Y2hTdWJ0eXBlcygkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlU1QpO1xuICAgICAgICAgICAgcmV0dXJuIGJyb3dzZVJlc3VsdDE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBtYWtlRWxlbWVudCA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgZmEtZXJyb3JcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj48L2k+bm8gcmVmZXJlbmNlICE8dWw+PC91bD48L2xpPmApO1xuICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHQgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB7IGljb24sIGNvbG9yIH0gPSBnZXRJY29uKHJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgJHtpY29ufVwiIHN0eWxlPVwiY29sb3I6JHtjb2xvcn07XCI+PC9pPiAke3R9PHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgJGVsZW1lbnQuYWRkQ2xhc3MoXCJleHBhbmRhYmxlXCIpO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwidmFsdWVcIiwgbik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgIH07XG4gICAgY29uc3QgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogWyBUZW1wZXJhdHVyZSAgXVxuICAgICAgICAgKiAgICggdG9vbHRpcCA6ICgvT2JqZWN0cy9NeVNlbnNvcikgKG5zPTE7cz1UZW1wZXJhdHVyZSkpXG4gICAgICAgICAqIFsgKyBbRm9sZGVyXSBPYmplY3RzXVxuICAgICAgICAgKiBbICAgICBbT2JqZWN0XSBNeVNlbnNvcl1cbiAgICAgICAgICogWyAgICAgKCApIFtWYXJpYWJsZV0gVGVtcGVyYXR1cmVdXG4gICAgICAgICAqL1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLm5vZGVCcm93c2VyXCIsIHtcbiAgICAgICAgICAgIC8qIGRlZmF1bHQgb3B0aW9ucyAqL1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogKCkgPT4gKHsgZW5kcG9pbnQ6IFwib3BjLnRjcDovL29wY3VhZGVtby5zdGVyZml2ZS5jb206MjY1NDNcIiB9KSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vZGVDbGFzczogXCJPYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgbm9kZUlkOiBcIm5zPTA7aT04NVwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogeyB0ZXh0OiBcIk9iamVjdHNcIiB9LFxuICAgICAgICAgICAgICAgICAgICB0eXBlRGVmaW5pdGlvbjogRm9sZGVyVHlwZSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgICAgICBpc1R5cGVSZWY6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc29sdmVQYXJlbnROb2RlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdHlwZW9mIHRoYXQub3B0aW9ucy5wYXJlbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkIGE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVBhcmVudE5vZGUoKS50aGVuKChwYXJlbnROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5jdXJyZW50UGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJpZnkoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFZlcmlmeShkYXRhLCB0aGF0LiRpbnB1dCwgdGhhdC4kaW5mbyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBfZmV0Y2hEYXRhRm9yTm9kZSgkbm9kZSwgZmV0Y2hGdW5jLCBkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwibG9hZGluZ1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmFwcGVuZCgnPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVmZXJlbmNlcyB9ID0geWllbGQgZmV0Y2hGdW5jKCRub2RlLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuZmlsdGVyICYmICF0aGF0Lm9wdGlvbnMuZmlsdGVyKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5hcHBlbmQoYDxsaT5lcnJvciAke2Vyci5tZXNzYWdlfTwvbGk+YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJcIiwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmZpbmQoXCIuc3Bpbm5lclwiKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLnJlbW92ZUNsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvID0gJChcIjxkaXYvPlwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcInN0ZXJmaXZlLWNvbWJvLWJveFwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVwbGFjZVdpdGgodGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAgPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwiaW5wdXQtZ3JvdXBcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGlucHV0R3JvdXApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJGlucHV0KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuID0gJChgPGJ1dHRvbj48aSBjbGFzcz1cImZhIGZhLXNpdGVtYXBcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdG9nZ2xlVHJlZUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmVlIHdpZGdldCBpcyBnb2luZyB0byBiZWNvbWUgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5yZXNvbHZlUGFyZW50Tm9kZSgpLnRoZW4oKHBhcmVudE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUgIT09IHRoYXQuY3VycmVudFBhcmVudCB8fCAoKF9hID0gdGhhdC5jdXJyZW50UGFyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eubm9kZUlkKSAhPT0gcGFyZW50Tm9kZS5ub2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuID0gJChgPGJ1dHRvbj48aSBjbGFzcz1cImZhIGZhLWZsYXNrXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHZlcmlmeUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiLCBcImVudGVyIGEgbm9kZUlkIG9yIGEgYnJvd3NlUGF0aCBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8gPSAkKGA8ZGl2IGNsYXNzPVwiaW5mby10ZXh0XCI+PC9kaXY+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24gPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwic3RlcmZpdmUtZHJvcGRvd25cIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbmZvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kZHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUgPSAkKGA8dWwgY2xhc3M9XCJzdGVyZml2ZS10cmVlXCI+PC91bD5gKS5hcHBlbmRUbyh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZVdpZHRoID0gMjA7IC8vIFNldCB3aWR0aCBvZiB0aGUgOjpiZWZvcmUgY29udGVudFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVIZWlnaHQgPSAyMDsgLy8gU2V0IGhlaWdodCBvZiB0aGUgOjpiZWZvcmUgY29udGVudFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50UG9zID0gJCh0aGlzKS5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5wYWdlWCA+PSBlbGVtZW50UG9zLmxlZnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVggPD0gZWxlbWVudFBvcy5sZWZ0ICsgYmVmb3JlV2lkdGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPj0gZWxlbWVudFBvcy50b3AgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPD0gZWxlbWVudFBvcy50b3AgKyBiZWZvcmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZiA9ICF0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmID8gZmV0Y2hDaGlsZHJlbiA6IGZldGNoU3VidHlwZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZldGNoRGF0YUZvck5vZGUoJGxpLCBmLCBkYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiIEZldGNoaW5nIGRvbmVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFyayBhcyBleHBhbmRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBpdHMgZXhwYW5kZWQvY29sbGFwc2VkIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5jaGlsZHJlbihcInVsXCIpLmNoaWxkcmVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJGxpLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9ICRsaS5kYXRhKFwicmVmZXJlbmNlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUgJiYgIXRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gYFske2Rpc3BsYXlOYW1lfV0oJHt2YWx1ZX0pYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnZhbChpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2xpY2tpbmcgb3V0c2lkZSB0aGUgcGFnZSB3aWxsIGhpZGUgdGhlIGRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QodGhhdC4kY29tYm8pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGVjbGFyZUZsYWdFZGl0b3JXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUuZmxhZ0VkaXRvclwiLCB7XG4gICAgICAgICAgICAvLyBkZWZhdWx0IG9wdGlvbnNcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBuYW1lc1RvQml0czoge1xuICAgICAgICAgICAgICAgIC8vIEFkZCBtb3JlIG5hbWVzIGFuZCBiaXQgdmFsdWVzXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIEN1c3RvbSBEcm9wZG93blxuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvID0gJChcIjxkaXYvPlwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcInN0ZXJmaXZlLWNvbWJvLWJveFwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbMF0ucGFyZW50RWxlbWVudC5yZXBsYWNlQ2hpbGQodGhhdC4kY29tYm9bMF0sIHRoaXMuZWxlbWVudFswXSk7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5lbGVtZW50LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgLy8gdGhlIHRvZ2dsZSB0cmVlIGJ1dHRvbjpcbiAgICAgICAgICAgICAgICAvLyAgIHdoZW4gd2UgY2xpY2sgaXQgdGhlIGRyb3AgZG93biBwYW5lbCBpcyBkaXNwbGF5ZWRcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuID0gJChgPGJ1dHRvbj48aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiR0b2dnbGVUcmVlQnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQuJGRyb3Bkb3duLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuJHNlbGVjdC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRnJvbUlucHV0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5maW5kKFwiLmN1c3RvbS1vcHRpb25cIikuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbk5hbWUgPSAkKHRoaXMpLnRleHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiaXRWYWx1ZSA9IHRoYXQub3B0aW9ucy5uYW1lc1RvQml0c1tvcHRpb25OYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYml0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGJpdCBuYW1lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHRoYXQub3B0aW9ucy52YWx1ZSAmIGJpdFZhbHVlKSA9PT0gYml0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBoaWRkZW4gc2VsZWN0IGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQudXBkYXRlVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIHRoZSBkcm9wIGRvd24gcGFuZWxcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93biA9ICQoJzxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0XCI+PC9kaXY+JykuaGlkZSgpLmluc2VydEFmdGVyKHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgJC5lYWNoKHRoaXMub3B0aW9ucy5uYW1lc1RvQml0cywgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJG9wdGlvbiA9ICQoJzxkaXYgY2xhc3M9XCJjdXN0b20tb3B0aW9uXCIgZGF0YS12YWx1ZT1cIicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9XCJjdXN0b20tY2hlY2tib3hcIj48L3NwYW4+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiPC9kaXY+XCIpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5hcHBlbmQoJG9wdGlvbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gd2hlbiBhIG9wdGlvbnMgaW4gdGhlIGRyb3AgZG93biBwYW5lbCBpcyBjbGlja2VkLFxuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLm9uKFwiY2xpY2tcIiwgXCIuY3VzdG9tLW9wdGlvblwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAkKHRoaXMpLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoXCJzZWxlY3RlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qml0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0Qml0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGF0LnVwZGF0ZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVGcm9tSW5wdXQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5lbGVtZW50LnZhbCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0Lm9wdGlvbnMudmFsdWUgPSBjb2VyY2VGbGFnTWFza1RvTnVtYmVyKHRoYXQub3B0aW9ucy5uYW1lc1RvQml0cywgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3Qgc2V0Qml0ID0gKGJpdE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYml0ID0gdGhhdC5vcHRpb25zLm5hbWVzVG9CaXRzW2JpdE5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYml0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gYml0IG5hbWVcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnZhbHVlIHw9IGJpdDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHVuc2V0Qml0ID0gKGJpdE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYml0ID0gdGhhdC5vcHRpb25zLm5hbWVzVG9CaXRzW2JpdE5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYml0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gYml0IG5hbWVcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnZhbHVlICY9IH5iaXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC52YWwoY29lcmNlRmxhZ01hc2tUb1N0cmluZyh0aGF0Lm9wdGlvbnMubmFtZXNUb0JpdHMsIHRoaXMub3B0aW9ucy52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdXBkYXRlRnJvbUlucHV0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlVmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnZhbChjb2VyY2VGbGFnTWFza1RvU3RyaW5nKHRoYXQub3B0aW9ucy5uYW1lc1RvQml0cywgdGhpcy5vcHRpb25zLnZhbHVlKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2Rlc3Ryb3koKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24ucmVtb3ZlKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgUkVELm5vZGVzLnJlZ2lzdGVyVHlwZShcIk9wY1VhLUNsaWVudDItQnJvd3NlXCIsIHtcbiAgICAgICAgY2F0ZWdvcnk6IFwib3BjdWFcIixcbiAgICAgICAgY29sb3I6IFwiI0MwREVFRFwiLFxuICAgICAgICBhbGlnbjogXCJyaWdodFwiLFxuICAgICAgICBpY29uOiBcIi4uLy4uL2ljb25zL29wY3Vhbm9kZUxvZ28ucG5nXCIsXG4gICAgICAgIHBhbGV0dGVMYWJlbDogXCJicm93c2VcIixcbiAgICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgICAgIGlucHV0czogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgb3V0cHV0OiB7IHZhbHVlOiA0IH0sXG4gICAgICAgICAgICAvLyBDb21tb25cbiAgICAgICAgICAgIG5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogXCJPcGNVYS1FbmRwb2ludDJcIiB9LFxuICAgICAgICAgICAgLy8gZm9yIGFjdGlvbiByZWFkXG4gICAgICAgICAgICBub2RlSWQ6IHsgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiB7IHZhbHVlOiBcIkhhc0NoaWxkXCIsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB7IHZhbHVlOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIGJyb3dzZURpcmVjdGlvbjogeyB2YWx1ZTogXCJGb3J3YXJkXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBub2RlQ2xhc3NNYXNrOiB7IHZhbHVlOiBcIlZhcmlhYmxlIHwgT2JqZWN0IHwgTWV0aG9kIHwgT2JqZWN0VHlwZSB8IFZhcmlhYmxlVHlwZVwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHJlc3VsdE1hc2s6IHsgdmFsdWU6IFwiUmVmZXJlbmNlVHlwZSB8IEJyb3dzZU5hbWUgfCBUeXBlRGVmaW5pdGlvbiB8IERpc3BsYXlOYW1lIHwgTm9kZUNsYXNzIHwgSXNGb3J3YXJkXCIsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRzOiAxLFxuICAgICAgICBsYWJlbCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgfHwgXCJPUENVQSBCcm93c2VcIjtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgPyBcIm5vZGVfbGFiZWxfaXRhbGljXCIgOiBcIlwiO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRwcmVwYXJlKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXM7XG4gICAgICAgICAgICBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQoKTtcbiAgICAgICAgICAgIGRlY2xhcmVGbGFnRWRpdG9yV2lkZ2V0KCk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IDE7XG4gICAgICAgICAgICBjb25zdCAkbm9kZUNsYXNzTWFzayA9ICQoXCIjbm9kZS1pbnB1dC1ub2RlQ2xhc3NNYXNrXCIpO1xuICAgICAgICAgICAgJG5vZGVDbGFzc01hc2suZmxhZ0VkaXRvcih7XG4gICAgICAgICAgICAgICAgbmFtZXNUb0JpdHM6IHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0OiAxLFxuICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZTogMixcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiA0LFxuICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlOiA4LFxuICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZVR5cGU6IDE2LFxuICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2VUeXBlOiAzMixcbiAgICAgICAgICAgICAgICAgICAgRGF0YVR5cGU6IDY0LFxuICAgICAgICAgICAgICAgICAgICBWaWV3OiAxMjgsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgJHJlc3VsdE1hc2sgPSAkKFwiI25vZGUtaW5wdXQtcmVzdWx0TWFza1wiKTtcbiAgICAgICAgICAgICRyZXN1bHRNYXNrLmZsYWdFZGl0b3Ioe1xuICAgICAgICAgICAgICAgIG5hbWVzVG9CaXRzOiB7XG4gICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZVR5cGU6IDEsXG4gICAgICAgICAgICAgICAgICAgIElzRm9yd2FyZDogMixcbiAgICAgICAgICAgICAgICAgICAgTm9kZUNsYXNzOiA0LFxuICAgICAgICAgICAgICAgICAgICBCcm93c2VOYW1lOiA4LFxuICAgICAgICAgICAgICAgICAgICBEaXNwbGF5TmFtZTogMTYsXG4gICAgICAgICAgICAgICAgICAgIFR5cGVEZWZpbml0aW9uOiAzMixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZhbHVlOiA2MyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgJG5vZGVJZCA9ICQoXCIjbm9kZS1pbnB1dC1ub2RlSWRcIik7XG4gICAgICAgICAgICAkbm9kZUlkLm5vZGVCcm93c2VyKHtcbiAgICAgICAgICAgICAgICBpc1NlbGVjdGFibGUobm9kZURlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJWYXJpYWJsZVwiIHx8IG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJPYmplY3RcIjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCByZWZlcmVuY2VzTm9kZURlc2MgPSB7XG4gICAgICAgICAgICAgICAgbm9kZUlkOiBcImk9MzFcIixcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJSZWZlcmVuY2VzXCIgfSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogeyB0ZXh0OiBcIlJlZmVyZW5jZXNcIiB9LFxuICAgICAgICAgICAgICAgIG5vZGVDbGFzczogXCJSZWZlcmVuY2VUeXBlXCIsXG4gICAgICAgICAgICAgICAgdHlwZURlZmluaXRpb246IFwiaT0zMVwiLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0ICRyZWZlcmVuY2VUeXBlSWQgPSAkKFwiI25vZGUtaW5wdXQtcmVmZXJlbmNlVHlwZUlkXCIpO1xuICAgICAgICAgICAgJHJlZmVyZW5jZVR5cGVJZC5ub2RlQnJvd3Nlcih7XG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogKCkgPT4gcmVmZXJlbmNlc05vZGVEZXNjLCAvLyBSZWZlcmVuY2VzLFxuICAgICAgICAgICAgICAgIGlzU2VsZWN0YWJsZShub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGlzVHlwZVJlZjogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkgeyB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
7
+ function _0x551c(_0x8ebf82,_0x4b3094){const _0xabc37d=_0xabc3();return _0x551c=function(_0x551ca6,_0x5e12c9){_0x551ca6=_0x551ca6-0x1b1;let _0x483478=_0xabc37d[_0x551ca6];return _0x483478;},_0x551c(_0x8ebf82,_0x4b3094);}function _0xabc3(){const _0x48a255=['trim','fa-question','Unknown\x20bit\x20name','NodeClass','function','ns=0;i=46','#node-input-resultMask','12DlalHO','ns=0;i=34','offset','fa-object-group','#node-input-nodeClassMask','Method','<ul\x20class=\x22sterfive-tree\x22></ul>',';\x22></i>\x20','../../icons/opcuanodeLogo.png','entries','$verifyBtn','currentParent','assign','parentElement','join','sterfive.flagEditor','application/json','next','/opcua-endpoint2','push','Invalid','reference','HasSubtype','verify','nodeAddressString','stopPropagation','appendTo','BrowseName','flagEditor','typeDefinition','fa-folder','append','replaceChild','catch','reset','registerType','Forward','then','closest','fetched','opc.tcp://opcuademo.sterfive.com:26543','expandable','endpointNode','updateValue','find','POST','replaceWith','resolveParentNode','json','input-group','<div\x20class=\x22custom-option\x22\x20data-value=\x22','each','ReferenceType','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','toString','sterfive-combo-box','hide','ReferenceType\x20|\x20BrowseName\x20|\x20TypeDefinition\x20|\x20DisplayName\x20|\x20NodeClass\x20|\x20IsForward','\x20|\x20','stringify','VariableType','ns=0;i=40','$combo','fa-sliders','SeaGreen','Inverse','fa-cog','Object','toggleClass','map','nodeClass','<div\x20class=\x22spinner\x22></div>','HasChild','selected','split','$inputGroup','hasClass','$input','81078gtdhaq','/browse','<div\x20class=\x22info-text\x22></div>','loading','\x20Fetching\x20done','number','<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','sterfive.nodeBrowser','nodeId','DarkOrange','references','error','OpcUa-Client2-Browse','sterfive-info','isSelectable','namesToBits','DataType','toggle','$info','.custom-option','<li><i\x20class=\x22fa\x20','expandable\x20expanded','sterfive-dropdown','<div\x20class=\x22custom-select\x22></div>','ns=0;i=35','filter','options','opcua','pageY','message','35gnbXgp','$dropdown','statusCode','status','name','baseUrl','element','removeClass','addClass','4732440RwaGJe','View','Both','show','log','Organizes','OPCUA\x20Browse','remove','i=31','/checkNodeId','val','referenceTypeId','326332alCeBS','nodeBrowser','data','fa-list-alt','pageX','Objects','click','change','browse','length','#node-input-nodeId','trigger','!!failure!!','ObjectType','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','displayName','<div/>','children','3015594gCkvCO','1198204OddOpH','value','failure','expanded','TypeDefinition','<li>error\x20','grey','endpoint','2920920WSTeMr','SuppressedError','statusText','HasComponent','IsForward','i=61','attr','DisplayName','text','Unspecified','browseResult','ns=0;i=47','$tree','parentNode','$toggleTreeBtn','Variable','suppressed','done','<span\x20class=\x22custom-checkbox\x22></span>','354704HmXvwC','nodes','top','apply','HasTypeDefinition','placeholder','OpcUa-Endpoint2','browseName','Good','<button><i\x20class=\x22fa\x20fa-eye\x22></i></button>','SandyBrown',':visible'];_0xabc3=function(){return _0x48a255;};return _0xabc3();}(function(_0x3ccbe0,_0x412031){const _0x46e968=_0x551c,_0x1af2d7=_0x3ccbe0();while(!![]){try{const _0x53b5a1=-parseInt(_0x46e968(0x1f4))/0x1+parseInt(_0x46e968(0x1d9))/0x2+parseInt(_0x46e968(0x207))/0x3*(parseInt(_0x46e968(0x1c6))/0x4)+-parseInt(_0x46e968(0x1e1))/0x5+parseInt(_0x46e968(0x255))/0x6*(parseInt(_0x46e968(0x1b1))/0x7)+parseInt(_0x46e968(0x1ba))/0x8+-parseInt(_0x46e968(0x1d8))/0x9;if(_0x53b5a1===_0x412031)break;else _0x1af2d7['push'](_0x1af2d7['shift']());}catch(_0x4ce111){_0x1af2d7['push'](_0x1af2d7['shift']());}}}(_0xabc3,0x4bd48),(function(){'use strict';const _0x272a42=_0x551c;function _0x160a85(_0x52c89a,_0xfc22aa,_0x1f1504,_0x44c3cf){function _0x1a133c(_0x1d5865){return _0x1d5865 instanceof _0x1f1504?_0x1d5865:new _0x1f1504(function(_0x2d9881){_0x2d9881(_0x1d5865);});}return new(_0x1f1504||(_0x1f1504=Promise))(function(_0x1bca89,_0x1975f7){const _0x4ee164=_0x551c;function _0x4065db(_0x54bbea){const _0x181e96=_0x551c;try{_0x1f3ed0(_0x44c3cf[_0x181e96(0x218)](_0x54bbea));}catch(_0x3005ab){_0x1975f7(_0x3005ab);}}function _0x5f65a1(_0x2799de){try{_0x1f3ed0(_0x44c3cf['throw'](_0x2799de));}catch(_0x22e351){_0x1975f7(_0x22e351);}}function _0x1f3ed0(_0x17897d){const _0x3b034c=_0x551c;_0x17897d[_0x3b034c(0x1f2)]?_0x1bca89(_0x17897d[_0x3b034c(0x1da)]):_0x1a133c(_0x17897d['value'])[_0x3b034c(0x22c)](_0x4065db,_0x5f65a1);}_0x1f3ed0((_0x44c3cf=_0x44c3cf[_0x4ee164(0x1f7)](_0x52c89a,_0xfc22aa||[]))[_0x4ee164(0x218)]());});}typeof SuppressedError==='function'?SuppressedError:function(_0x38865e,_0x37df93,_0xa1790d){const _0x4ffd2f=_0x551c;var _0x196d80=new Error(_0xa1790d);return _0x196d80[_0x4ffd2f(0x1b5)]=_0x4ffd2f(0x1e2),_0x196d80[_0x4ffd2f(0x260)]=_0x38865e,_0x196d80[_0x4ffd2f(0x1f1)]=_0x37df93,_0x196d80;};const _0xb3d622=_0x272a42(0x26d),_0x3b343d='ns=0;i=61',_0x4c3adc=_0x272a42(0x1ec),_0xc09ff1=_0x272a42(0x205),_0x1de323=_0x272a42(0x208),_0x22627a='ns=0;i=45',_0x5b4969=_0x272a42(0x244);var _0x307bb5;(function(_0x5c2872){const _0x45f51b=_0x272a42;_0x5c2872[_0x5c2872[_0x45f51b(0x22b)]=0x0]=_0x45f51b(0x22b),_0x5c2872[_0x5c2872[_0x45f51b(0x248)]=0x1]=_0x45f51b(0x248),_0x5c2872[_0x5c2872[_0x45f51b(0x1bc)]=0x2]=_0x45f51b(0x1bc),_0x5c2872[_0x5c2872[_0x45f51b(0x21b)]=0x3]=_0x45f51b(0x21b);}(_0x307bb5||(_0x307bb5={})));var _0x351e40;(function(_0x3a7a9e){const _0x2f210a=_0x272a42;_0x3a7a9e[_0x3a7a9e[_0x2f210a(0x1ea)]=0x0]=_0x2f210a(0x1ea),_0x3a7a9e[_0x3a7a9e['Object']=0x1]='Object',_0x3a7a9e[_0x3a7a9e['Variable']=0x2]=_0x2f210a(0x1f0),_0x3a7a9e[_0x3a7a9e['Method']=0x4]=_0x2f210a(0x20c),_0x3a7a9e[_0x3a7a9e[_0x2f210a(0x1d3)]=0x8]='ObjectType',_0x3a7a9e[_0x3a7a9e['VariableType']=0x10]=_0x2f210a(0x243),_0x3a7a9e[_0x3a7a9e[_0x2f210a(0x23b)]=0x20]=_0x2f210a(0x23b),_0x3a7a9e[_0x3a7a9e['DataType']=0x40]=_0x2f210a(0x265),_0x3a7a9e[_0x3a7a9e[_0x2f210a(0x1bb)]=0x80]=_0x2f210a(0x1bb);}(_0x351e40||(_0x351e40={})));var _0x28ce43;(function(_0x263152){const _0x23699f=_0x272a42;_0x263152[_0x263152[_0x23699f(0x24a)]=0x1]=_0x23699f(0x24a),_0x263152[_0x263152[_0x23699f(0x1f0)]=0x2]=_0x23699f(0x1f0),_0x263152[_0x263152[_0x23699f(0x20c)]=0x4]=_0x23699f(0x20c),_0x263152[_0x263152[_0x23699f(0x1d3)]=0x8]=_0x23699f(0x1d3),_0x263152[_0x263152[_0x23699f(0x243)]=0x10]='VariableType',_0x263152[_0x263152['ReferenceType']=0x20]=_0x23699f(0x23b),_0x263152[_0x263152[_0x23699f(0x265)]=0x40]=_0x23699f(0x265),_0x263152[_0x263152[_0x23699f(0x1bb)]=0x80]=_0x23699f(0x1bb);}(_0x28ce43||(_0x28ce43={})));function _0x5e1489(_0xd71ce,_0x494c1a){const _0x32fa6f=_0x272a42;if(typeof _0x494c1a==='number')return _0x494c1a;const _0x4b47df=parseInt(_0x494c1a,0xa);if(!isNaN(_0x4b47df))return _0x4b47df;const _0xd590bd=_0x494c1a[_0x32fa6f(0x251)](/\||;|,/)[_0x32fa6f(0x24c)](_0x215f6b=>_0x215f6b[_0x32fa6f(0x200)]());let _0x41882c=0x0;for(const _0x16b1c6 of _0xd590bd){_0x41882c|=_0xd71ce[_0x16b1c6];}return _0x41882c;}function _0x2d7986(_0x2a3993,_0x42d433){const _0x306b46=_0x272a42;_0x42d433=_0x5e1489(_0x2a3993,_0x42d433);const _0x1f120a=[];for(const [_0x34438d,_0x2efbc7]of Object[_0x306b46(0x210)](_0x2a3993)){typeof _0x42d433===_0x306b46(0x25a)&&((_0x42d433&_0x2efbc7)===_0x2efbc7&&_0x1f120a[_0x306b46(0x21a)](_0x34438d));}return _0x1f120a[_0x306b46(0x215)](_0x306b46(0x241));}var _0x38f1d7;(function(_0x205724){const _0x5a4c45=_0x272a42;_0x205724[_0x205724[_0x5a4c45(0x23b)]=0x1]='ReferenceType',_0x205724[_0x205724['IsForward']=0x2]=_0x5a4c45(0x1e5),_0x205724[_0x205724[_0x5a4c45(0x203)]=0x4]='NodeClass',_0x205724[_0x205724[_0x5a4c45(0x222)]=0x8]=_0x5a4c45(0x222),_0x205724[_0x205724[_0x5a4c45(0x1e8)]=0x10]=_0x5a4c45(0x1e8),_0x205724[_0x205724[_0x5a4c45(0x1dd)]=0x20]=_0x5a4c45(0x1dd);}(_0x38f1d7||(_0x38f1d7={})));function _0x2ebaf3(_0x5d315f){const _0x49e141=_0x272a42;switch(_0x5d315f){case _0x49e141(0x1bf):return _0xb3d622;case'HasProperty':return _0xc09ff1;case _0x49e141(0x1e4):return _0x4c3adc;case _0x49e141(0x24f):return _0x1de323;case _0x49e141(0x21d):return _0x22627a;case _0x49e141(0x1f8):return _0x5b4969;}}const _0x22d122=_0x59c5f3=>{const _0x4ec803=_0x272a42;switch(_0x59c5f3['nodeClass']){case'Object':if(_0x59c5f3[_0x4ec803(0x1c5)]===_0xb3d622);if(_0x59c5f3[_0x4ec803(0x224)]===_0x3b343d||_0x59c5f3[_0x4ec803(0x1c5)]===_0x4ec803(0x1e6))return{'icon':_0x4ec803(0x225),'color':'rgba(61,\x2060,\x204,\x200.525)'};return{'icon':_0x4ec803(0x20a),'color':_0x4ec803(0x247)};case _0x4ec803(0x1f0):if(_0x59c5f3[_0x4ec803(0x1c5)]===_0x4c3adc)return{'icon':_0x4ec803(0x1c9),'color':'SteelBlue'};else return _0x59c5f3[_0x4ec803(0x1c5)]===_0xc09ff1?{'icon':'fa-list-alt','color':'DodgerBlue'}:{'icon':_0x4ec803(0x1c9),'color':'CadetBlue'};case _0x4ec803(0x20c):return{'icon':_0x4ec803(0x249),'color':_0x4ec803(0x1fe)};case _0x4ec803(0x1d3):return{'icon':_0x4ec803(0x20a),'color':_0x4ec803(0x25e)};case _0x4ec803(0x243):return{'icon':_0x4ec803(0x246),'color':_0x4ec803(0x25e)};}return{'icon':_0x4ec803(0x201),'color':_0x4ec803(0x1df)};},_0x37f61a=({endpointNode:_0x1283a1,endpoint:_0x3ee90b,baseUrl:_0x43f5c0},_0x4d3bdc,_0x3fe658)=>_0x160a85(void 0x0,void 0x0,void 0x0,function*(){const _0x1ce117=_0x272a42,_0x37f14a=_0x43f5c0+_0x1ce117(0x219),_0x2419ac=_0x37f14a+_0x1ce117(0x256),_0x1628f9=Object[_0x1ce117(0x213)](Object[_0x1ce117(0x213)]({},_0x3fe658),{'nodeId':_0x4d3bdc,'resultMask':0x3f}),_0x4558ac=yield fetch(_0x2419ac,{'method':_0x1ce117(0x234),'body':JSON[_0x1ce117(0x242)]({'endpointNode':_0x1283a1,'endpoint':_0x3ee90b,'browseDescription':_0x1628f9}),'headers':{'Content-Type':_0x1ce117(0x217)}});if(_0x4558ac[_0x1ce117(0x1b4)]!==0xc8)return console[_0x1ce117(0x1be)]('fetching\x20failed\x20with\x20error',_0x4558ac[_0x1ce117(0x1b4)],_0x4558ac['statusText']),{'references':[]};console[_0x1ce117(0x1be)]('fetched\x20:\x20',_0x4558ac[_0x1ce117(0x1b4)],_0x4558ac[_0x1ce117(0x1e3)]);const _0x2d3f9c=yield _0x4558ac[_0x1ce117(0x237)](),_0x5aa172=_0x2d3f9c[_0x1ce117(0x1eb)][_0x1ce117(0x25f)]||[];return{'references':_0x5aa172};}),_0x17892b={'referenceTypeId':_0x2ebaf3(_0x272a42(0x24f)),'includeSubtypes':!![],'browseDirection':_0x307bb5[_0x272a42(0x22b)],'nodeClassMask':_0x351e40['Variable']|_0x351e40['Object']|_0x351e40['Method'],'resultMask':0x3f},_0x2babad={'referenceTypeId':_0x2ebaf3(_0x272a42(0x1bf)),'includeSubtypes':!![],'browseDirection':_0x307bb5[_0x272a42(0x22b)],'nodeClassMask':_0x351e40[_0x272a42(0x1f0)]|_0x351e40[_0x272a42(0x24a)]|_0x351e40['Method'],'resultMask':0x3f},_0x450ef7=({endpointNode:_0x459e02,endpoint:_0x51e588,baseUrl:_0x48e953},_0x580815,_0x2156ee)=>_0x160a85(void 0x0,void 0x0,void 0x0,function*(){const _0x12eb10=_0x272a42,_0x58adee=_0x48e953+_0x12eb10(0x219),_0x1ca9eb=_0x580815[_0x12eb10(0x1c4)](),_0x210cd4=yield fetch(_0x58adee+_0x12eb10(0x1c3),{'method':'POST','body':JSON[_0x12eb10(0x242)]({'endpointNode':_0x459e02,'endpoint':_0x51e588,'nodeId':_0x1ca9eb}),'headers':{'Content-Type':_0x12eb10(0x217)}}),_0x32502c=(_0x40c241,_0xb0f05)=>{const _0x4862e4=_0x12eb10;_0x2156ee[_0x4862e4(0x1e9)](_0x40c241)[_0x4862e4(0x1b9)](_0x4862e4(0x262))[_0x4862e4(0x1b9)](_0xb0f05),_0x2156ee[_0x4862e4(0x1bd)](),setTimeout(()=>{const _0x4ed67f=_0x4862e4;_0x2156ee[_0x4ed67f(0x1b8)](_0xb0f05),_0x2156ee[_0x4ed67f(0x23f)]();},0xbb8);},_0x1a21e2=yield _0x210cd4['json']();_0x210cd4[_0x12eb10(0x1b4)]!==0xc8?_0x32502c(_0x12eb10(0x1d2)+_0x1ca9eb,_0x12eb10(0x1db)):_0x1a21e2[_0x12eb10(0x1b3)]['match'](/Good/)?(_0x580815['val'](_0x1a21e2[_0x12eb10(0x21f)]),_0x580815['trigger'](_0x12eb10(0x1cd)),_0x32502c(_0x12eb10(0x1fc),'ok')):(_0x580815[_0x12eb10(0x1c4)](''+_0x1ca9eb),_0x32502c(_0x1a21e2[_0x12eb10(0x1b3)]+'\x20'+_0x210cd4[_0x12eb10(0x1e3)],_0x12eb10(0x1db)));});function _0x325521(_0x35d835,_0x1ae41b){return _0x160a85(this,void 0x0,void 0x0,function*(){const _0xbdbb28=_0x551c,_0x4c2c9a=_0x35d835[_0xbdbb28(0x1c8)]('value'),_0x500a5f=yield _0x37f61a(_0x1ae41b,_0x4c2c9a,_0x17892b),_0x427dac=yield _0x37f61a(_0x1ae41b,_0x4c2c9a,_0x2babad);return{'references':[..._0x500a5f[_0xbdbb28(0x25f)],..._0x427dac[_0xbdbb28(0x25f)]]};});}const _0x57ac10={'referenceTypeId':_0x2ebaf3(_0x272a42(0x21d)),'includeSubtypes':!![],'browseDirection':_0x307bb5[_0x272a42(0x22b)],'nodeClassMask':_0x351e40['ReferenceType']|_0x351e40[_0x272a42(0x1d3)]|_0x351e40[_0x272a42(0x265)]|_0x351e40[_0x272a42(0x243)],'resultMask':0x3f};function _0x10a75c(_0x4c188e,_0x13cdf3){return _0x160a85(this,void 0x0,void 0x0,function*(){const _0x589423=_0x551c,_0x51400e=_0x4c188e[_0x589423(0x1c8)](_0x589423(0x1da)),_0x4f0591=yield _0x37f61a(_0x13cdf3,_0x51400e,_0x57ac10);return _0x4f0591;});}const _0x2f87e3=_0xfc03dc=>{const _0x1239d1=_0x272a42;var _0x5cdd02,_0x13f5bc;if(!_0xfc03dc){const _0x2ca808=$('<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>');return _0x2ca808;}const _0x5318c4=_0xfc03dc[_0x1239d1(0x25d)]['toString'](),_0x3411dc=((_0x5cdd02=_0xfc03dc['displayName'])===null||_0x5cdd02===void 0x0?void 0x0:_0x5cdd02[_0x1239d1(0x1e9)])||((_0x13f5bc=_0xfc03dc[_0x1239d1(0x1fb)])===null||_0x13f5bc===void 0x0?void 0x0:_0x13f5bc[_0x1239d1(0x1b5)])||_0xfc03dc['nodeId'][_0x1239d1(0x23d)](),{icon:_0xe07323,color:_0x247e94}=_0x22d122(_0xfc03dc),_0x5ca749=$(_0x1239d1(0x269)+_0xe07323+'\x22\x20style=\x22color:'+_0x247e94+_0x1239d1(0x20e)+_0x3411dc+'<ul></ul></li>');return _0x5ca749[_0x1239d1(0x1b9)](_0x1239d1(0x230)),_0x5ca749[_0x1239d1(0x1c8)](_0x1239d1(0x1da),_0x5318c4),_0x5ca749[_0x1239d1(0x1c8)]('reference',_0xfc03dc),_0x5ca749;},_0xeb1ac5=()=>{const _0x520d6a=_0x272a42;$['widget'](_0x520d6a(0x25c),{'options':{'endpointNode':()=>({'endpoint':_0x520d6a(0x22f)}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x520d6a(0x1cb)},'nodeClass':'Object','nodeId':'ns=0;i=85','displayName':{'text':_0x520d6a(0x1cb)},'typeDefinition':_0x3b343d}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x160a85(this,void 0x0,void 0x0,function*(){const _0xe9a3e0=_0x551c,_0x499904=this,_0x396541=typeof _0x499904[_0xe9a3e0(0x26f)][_0xe9a3e0(0x1ee)]===_0xe9a3e0(0x204)?_0x499904[_0xe9a3e0(0x26f)][_0xe9a3e0(0x1ee)]():_0x499904[_0xe9a3e0(0x26f)][_0xe9a3e0(0x1ee)];if(_0x396541 instanceof Promise)return yield _0x396541;return _0x396541;});},'reset'(){const _0x5c49d2=_0x520d6a,_0x21145b=this;_0x21145b[_0x5c49d2(0x1ed)]['empty'](),this[_0x5c49d2(0x236)]()[_0x5c49d2(0x22c)](_0x47b2cc=>{const _0x233236=_0x5c49d2,_0x363767=_0x2f87e3(_0x47b2cc);_0x21145b[_0x233236(0x1ed)][_0x233236(0x226)](_0x363767),_0x21145b[_0x233236(0x212)]=_0x47b2cc;});},'verify'(){const _0x5c9763=_0x520d6a,_0x534921=this,_0x286951={'baseUrl':_0x534921[_0x5c9763(0x26f)][_0x5c9763(0x1b6)],'endpointNode':typeof _0x534921[_0x5c9763(0x26f)][_0x5c9763(0x231)]===_0x5c9763(0x204)?_0x534921[_0x5c9763(0x26f)][_0x5c9763(0x231)]():_0x534921[_0x5c9763(0x26f)][_0x5c9763(0x231)],'endpoint':typeof _0x534921[_0x5c9763(0x26f)][_0x5c9763(0x1e0)]==='function'?_0x534921['options'][_0x5c9763(0x1e0)]():_0x534921[_0x5c9763(0x26f)][_0x5c9763(0x1e0)]};_0x450ef7(_0x286951,_0x534921['$input'],_0x534921[_0x5c9763(0x267)]);},'_create'(){const _0x37e8ce=_0x520d6a,_0x25c664=this;function _0x40374a(_0x2c5cf2,_0x3afb5a,_0x4b5137){return _0x160a85(this,void 0x0,void 0x0,function*(){const _0x4b1344=_0x551c;if(_0x2c5cf2[_0x4b1344(0x253)](_0x4b1344(0x22e))){console['log']('already\x20fetched');return;}if(_0x2c5cf2[_0x4b1344(0x253)]('loading')){console[_0x4b1344(0x1be)]('already\x20loading');return;}_0x2c5cf2[_0x4b1344(0x1b9)](_0x4b1344(0x258)),_0x2c5cf2[_0x4b1344(0x226)](_0x4b1344(0x24e));try{_0x2c5cf2[_0x4b1344(0x1d7)]('ul')['empty']();const {references:_0x3213ec}=yield _0x3afb5a(_0x2c5cf2,_0x4b5137);for(const _0x1fbcf0 of _0x3213ec){if(_0x25c664[_0x4b1344(0x26f)][_0x4b1344(0x26e)]&&!_0x25c664[_0x4b1344(0x26f)][_0x4b1344(0x26e)](_0x1fbcf0))continue;const _0x408f89=_0x2f87e3(_0x1fbcf0);_0x2c5cf2[_0x4b1344(0x1d7)]('ul')['append'](_0x408f89);}_0x2c5cf2['addClass'](_0x4b1344(0x22e));}catch(_0x16d8bb){_0x2c5cf2[_0x4b1344(0x1d7)]('ul')['append'](_0x4b1344(0x1de)+_0x16d8bb[_0x4b1344(0x272)]+'</li>'),console['log']('err',_0x16d8bb);}_0x2c5cf2['find']('.spinner')['remove'](),_0x2c5cf2['removeClass'](_0x4b1344(0x258));});}_0x25c664['$input']=this[_0x37e8ce(0x1b7)],_0x25c664['$combo']=$('<div/>'),_0x25c664[_0x37e8ce(0x245)][_0x37e8ce(0x1b9)](_0x37e8ce(0x23e)),this[_0x37e8ce(0x1b7)][_0x37e8ce(0x235)](_0x25c664['$combo']),_0x25c664[_0x37e8ce(0x252)]=$('<div/>')[_0x37e8ce(0x1b9)](_0x37e8ce(0x238)),_0x25c664[_0x37e8ce(0x245)]['append'](_0x25c664[_0x37e8ce(0x252)]),_0x25c664[_0x37e8ce(0x252)][_0x37e8ce(0x226)](_0x25c664[_0x37e8ce(0x254)]),_0x25c664[_0x37e8ce(0x1ef)]=$(_0x37e8ce(0x25b)),_0x25c664[_0x37e8ce(0x252)][_0x37e8ce(0x226)](_0x25c664[_0x37e8ce(0x1ef)]),_0x25c664[_0x37e8ce(0x1ef)]['on']('click',function(){const _0x9b9c9d=_0x37e8ce;!_0x25c664['$dropdown']['is'](':visible')&&(_0x25c664[_0x9b9c9d(0x236)]()['then'](_0x46a83e=>{const _0xb9e4be=_0x9b9c9d;var _0x55ef62;(_0x46a83e!==_0x25c664[_0xb9e4be(0x212)]||((_0x55ef62=_0x25c664[_0xb9e4be(0x212)])===null||_0x55ef62===void 0x0?void 0x0:_0x55ef62[_0xb9e4be(0x25d)])!==_0x46a83e['nodeId'])&&_0x25c664[_0xb9e4be(0x229)]();}),_0x25c664[_0x9b9c9d(0x267)]['hide']()),_0x25c664[_0x9b9c9d(0x1b2)][_0x9b9c9d(0x266)]();}),_0x25c664[_0x37e8ce(0x211)]=$(_0x37e8ce(0x1d4)),_0x25c664[_0x37e8ce(0x252)][_0x37e8ce(0x226)](_0x25c664['$verifyBtn']),_0x25c664[_0x37e8ce(0x211)]['on']('click',()=>{const _0x11d5c3=_0x37e8ce;this[_0x11d5c3(0x21e)]();}),!_0x25c664['$input'][_0x37e8ce(0x1e7)](_0x37e8ce(0x1f9))&&_0x25c664[_0x37e8ce(0x254)]['attr'](_0x37e8ce(0x1f9),_0x37e8ce(0x23c)),_0x25c664[_0x37e8ce(0x267)]=$(_0x37e8ce(0x257)),_0x25c664['$info'][_0x37e8ce(0x23f)](),{'baseUrl':_0x25c664[_0x37e8ce(0x26f)][_0x37e8ce(0x1b6)],'endpointNode':typeof _0x25c664[_0x37e8ce(0x26f)]['endpointNode']===_0x37e8ce(0x204)?_0x25c664[_0x37e8ce(0x26f)][_0x37e8ce(0x231)]():_0x25c664[_0x37e8ce(0x26f)][_0x37e8ce(0x231)],'endpoint':typeof _0x25c664[_0x37e8ce(0x26f)][_0x37e8ce(0x1e0)]===_0x37e8ce(0x204)?_0x25c664[_0x37e8ce(0x26f)]['endpoint']():_0x25c664[_0x37e8ce(0x26f)][_0x37e8ce(0x1e0)]},_0x25c664[_0x37e8ce(0x1b2)]=$(_0x37e8ce(0x1d6))[_0x37e8ce(0x1b9)](_0x37e8ce(0x26b))[_0x37e8ce(0x23f)](),_0x25c664[_0x37e8ce(0x245)][_0x37e8ce(0x226)](_0x25c664[_0x37e8ce(0x267)]),_0x25c664[_0x37e8ce(0x245)][_0x37e8ce(0x226)](_0x25c664['$dropdown']),_0x25c664['$tree']=$(_0x37e8ce(0x20d))[_0x37e8ce(0x221)](_0x25c664[_0x37e8ce(0x1b2)]),this[_0x37e8ce(0x229)](),_0x25c664[_0x37e8ce(0x1ed)]['on'](_0x37e8ce(0x1cc),'li',function(_0x25a300){const _0x549685=_0x37e8ce;var _0x12298c,_0x4c14f6;_0x25a300[_0x549685(0x220)]();let _0x1a27f7=$(this);const _0x605f9a=0x14,_0x457347=0x14,_0x3451e7=$(this)[_0x549685(0x209)](),_0x4cf963=_0x25a300;if(_0x4cf963[_0x549685(0x1ca)]>=_0x3451e7['left']&&_0x4cf963[_0x549685(0x1ca)]<=_0x3451e7['left']+_0x605f9a&&_0x4cf963[_0x549685(0x271)]>=_0x3451e7[_0x549685(0x1f6)]&&_0x4cf963[_0x549685(0x271)]<=_0x3451e7['top']+_0x457347){if(_0x1a27f7[_0x549685(0x253)](_0x549685(0x230))){if(_0x1a27f7[_0x549685(0x253)](_0x549685(0x22e))){_0x1a27f7[_0x549685(0x1b8)](_0x549685(0x230))['addClass'](_0x549685(0x1dc)),_0x1a27f7[_0x549685(0x1d7)]('ul')[_0x549685(0x266)]();return;}const _0x5e5f4b={'baseUrl':_0x25c664['options'][_0x549685(0x1b6)],'endpointNode':typeof _0x25c664[_0x549685(0x26f)][_0x549685(0x231)]===_0x549685(0x204)?_0x25c664[_0x549685(0x26f)]['endpointNode']():_0x25c664[_0x549685(0x26f)][_0x549685(0x231)],'endpoint':typeof _0x25c664['options'][_0x549685(0x1e0)]===_0x549685(0x204)?_0x25c664[_0x549685(0x26f)][_0x549685(0x1e0)]():_0x25c664['options'][_0x549685(0x1e0)]},_0x2f3726=!_0x25c664[_0x549685(0x26f)]['isTypeRef']?_0x325521:_0x10a75c;_0x40374a(_0x1a27f7,_0x2f3726,_0x5e5f4b)['then'](()=>{const _0x4d7ef5=_0x549685;console['log'](_0x4d7ef5(0x259)),console['log'](_0x4d7ef5(0x22e)),_0x1a27f7[_0x4d7ef5(0x1b8)](_0x4d7ef5(0x230))[_0x4d7ef5(0x1b9)]('expanded');})[_0x549685(0x228)](_0x57e335=>{const _0x39c0ee=_0x549685;_0x1a27f7[_0x39c0ee(0x1b8)](_0x39c0ee(0x230))['addClass']('expanded'),console[_0x39c0ee(0x1be)](_0x39c0ee(0x260),_0x57e335);});}else{if(_0x1a27f7[_0x549685(0x253)]('expanded'))_0x1a27f7[_0x549685(0x1d7)]('ul')[_0x549685(0x266)](),_0x1a27f7['toggleClass'](_0x549685(0x26a));else{if(_0x1a27f7[_0x549685(0x1d7)]('ul')[_0x549685(0x1d7)]()['length']>0x0)_0x1a27f7[_0x549685(0x1d7)]('ul')['toggle'](),_0x1a27f7[_0x549685(0x24b)](_0x549685(0x26a));else;}}}else{const _0x450c29=_0x1a27f7[_0x549685(0x1c8)](_0x549685(0x1da)),_0x19d46d=_0x1a27f7[_0x549685(0x1c8)](_0x549685(0x21c));if(_0x25c664['options']['isSelectable']&&!_0x25c664[_0x549685(0x26f)][_0x549685(0x263)](_0x19d46d))return;_0x25c664['$input'][_0x549685(0x1c8)](_0x549685(0x21c),_0x19d46d);const _0x3a917d=((_0x12298c=_0x19d46d[_0x549685(0x1d5)])===null||_0x12298c===void 0x0?void 0x0:_0x12298c[_0x549685(0x1e9)])||((_0x4c14f6=_0x19d46d[_0x549685(0x1fb)])===null||_0x4c14f6===void 0x0?void 0x0:_0x4c14f6['name'])||_0x19d46d[_0x549685(0x25d)]['toString'](),_0x36fe2a='['+_0x3a917d+']('+_0x450c29+')';_0x25c664[_0x549685(0x254)][_0x549685(0x1c4)](_0x36fe2a),_0x25c664[_0x549685(0x254)][_0x549685(0x1d1)](_0x549685(0x1cd)),_0x25c664[_0x549685(0x1b2)][_0x549685(0x23f)]();}}),$(document)['on']('click',function(_0x4641a3){const _0x7635fe=_0x37e8ce;!$(_0x4641a3['target'])[_0x7635fe(0x22d)](_0x25c664['$combo'])[_0x7635fe(0x1cf)]&&_0x25c664['$dropdown'][_0x7635fe(0x23f)]();});}});},_0x1c2d97=()=>{const _0x14002e=_0x272a42;$['widget'](_0x14002e(0x216),{'options':{'namesToBits':{},'value':0x0},'_create'(){const _0x1498f7=_0x14002e,_0x359d86=this;_0x359d86[_0x1498f7(0x254)]=this[_0x1498f7(0x1b7)],_0x359d86[_0x1498f7(0x245)]=$(_0x1498f7(0x1d6)),_0x359d86['$combo'][_0x1498f7(0x1b9)](_0x1498f7(0x23e)),this[_0x1498f7(0x1b7)][0x0][_0x1498f7(0x214)][_0x1498f7(0x227)](_0x359d86[_0x1498f7(0x245)][0x0],this[_0x1498f7(0x1b7)][0x0]),_0x359d86[_0x1498f7(0x252)]=$(_0x1498f7(0x1d6))[_0x1498f7(0x1b9)]('input-group'),_0x359d86[_0x1498f7(0x245)][_0x1498f7(0x226)](_0x359d86['$inputGroup']),_0x359d86['$inputGroup']['append'](_0x359d86[_0x1498f7(0x254)]),_0x359d86[_0x1498f7(0x1ef)]=$(_0x1498f7(0x1fd)),_0x359d86[_0x1498f7(0x252)]['append'](_0x359d86[_0x1498f7(0x1ef)]),_0x359d86[_0x1498f7(0x1ef)]['on'](_0x1498f7(0x1cc),function(){const _0xaf3b60=_0x1498f7;_0x359d86[_0xaf3b60(0x1b2)][_0xaf3b60(0x266)](),_0x359d86[_0xaf3b60(0x1b2)]['is'](_0xaf3b60(0x1ff))&&(_0x36cfca(),_0x359d86['$combo'][_0xaf3b60(0x233)](_0xaf3b60(0x268))['each'](function(){const _0x45d6e9=_0xaf3b60;let _0x578587=$(this)[_0x45d6e9(0x1e9)]();const _0x2646a9=_0x359d86[_0x45d6e9(0x26f)]['namesToBits'][_0x578587];if(_0x2646a9===undefined)throw new Error(_0x45d6e9(0x202));(_0x359d86[_0x45d6e9(0x26f)][_0x45d6e9(0x1da)]&_0x2646a9)===_0x2646a9?$(this)[_0x45d6e9(0x1b9)](_0x45d6e9(0x250)):$(this)[_0x45d6e9(0x1b8)](_0x45d6e9(0x250));}),_0x359d86['updateValue']());}),_0x359d86[_0x1498f7(0x1b2)]=$(_0x1498f7(0x26c))[_0x1498f7(0x23f)]()['insertAfter'](this['element']),$[_0x1498f7(0x23a)](this['options']['namesToBits'],function(_0x2d822f){const _0x221e92=_0x1498f7,_0x4e97f4=$(_0x221e92(0x239)+_0x2d822f+'\x22>'+_0x221e92(0x1f3)+_0x2d822f+'</div>');_0x359d86['$dropdown'][_0x221e92(0x226)](_0x4e97f4);}),_0x359d86[_0x1498f7(0x1b2)]['on'](_0x1498f7(0x1cc),_0x1498f7(0x268),function(){const _0x66e6cd=_0x1498f7;$(this)[_0x66e6cd(0x24b)](_0x66e6cd(0x250));const _0x3c98ff=$(this)[_0x66e6cd(0x1c8)]('value');$(this)[_0x66e6cd(0x253)]('selected')?_0x189192(_0x3c98ff):_0x59e252(_0x3c98ff),_0x359d86[_0x66e6cd(0x232)]();}),_0x359d86[_0x1498f7(0x245)][_0x1498f7(0x226)](_0x359d86[_0x1498f7(0x1b2)]);const _0x36cfca=()=>{const _0x293177=_0x1498f7,_0x15e516=this[_0x293177(0x1b7)][_0x293177(0x1c4)]();_0x359d86['options'][_0x293177(0x1da)]=_0x5e1489(_0x359d86[_0x293177(0x26f)][_0x293177(0x264)],_0x15e516);},_0x189192=_0x2585ff=>{const _0x3240a8=_0x1498f7,_0x3c568e=_0x359d86[_0x3240a8(0x26f)][_0x3240a8(0x264)][_0x2585ff];if(_0x3c568e===undefined)throw new Error(_0x3240a8(0x202));this['options'][_0x3240a8(0x1da)]|=_0x3c568e;},_0x59e252=_0x1fab4d=>{const _0x35b286=_0x1498f7,_0x2a4c78=_0x359d86[_0x35b286(0x26f)][_0x35b286(0x264)][_0x1fab4d];if(_0x2a4c78===undefined)throw new Error(_0x35b286(0x202));this[_0x35b286(0x26f)][_0x35b286(0x1da)]&=~_0x2a4c78,this[_0x35b286(0x1b7)][_0x35b286(0x1c4)](_0x2d7986(_0x359d86['options'][_0x35b286(0x264)],this['options'][_0x35b286(0x1da)]));};_0x36cfca();},'updateValue'(){const _0x200492=_0x14002e,_0x237d26=this;this[_0x200492(0x1b7)]['val'](_0x2d7986(_0x237d26[_0x200492(0x26f)]['namesToBits'],this['options'][_0x200492(0x1da)]));},'_destroy'(){const _0x585e70=_0x14002e,_0x19f160=this;_0x19f160[_0x585e70(0x1b2)][_0x585e70(0x1c1)]();}});};RED[_0x272a42(0x1f5)][_0x272a42(0x22a)](_0x272a42(0x261),{'category':_0x272a42(0x270),'color':'#C0DEED','align':'right','icon':_0x272a42(0x20f),'paletteLabel':_0x272a42(0x1ce),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x272a42(0x1fa)},'nodeId':{'value':'','required':![]},'referenceTypeId':{'value':_0x272a42(0x24f),'required':![]},'includeSubtypes':{'value':![],'required':!![]},'browseDirection':{'value':_0x272a42(0x22b),'required':!![]},'nodeClassMask':{'value':'Variable\x20|\x20Object\x20|\x20Method\x20|\x20ObjectType\x20|\x20VariableType','required':![]},'resultMask':{'value':_0x272a42(0x240),'required':![]}},'outputs':0x1,'label'(){const _0x79b077=_0x272a42;return this[_0x79b077(0x1b5)]||_0x79b077(0x1c0);},'labelStyle'(){const _0x66c26b=_0x272a42;return this[_0x66c26b(0x1b5)]?'node_label_italic':'';},'oneditprepare'(){const _0x2276a3=_0x272a42,_0xd7c497=this;_0xeb1ac5(),_0x1c2d97(),_0xd7c497['inputs']=0x1;const _0x200a08=$(_0x2276a3(0x20b));_0x200a08[_0x2276a3(0x223)]({'namesToBits':{'Object':0x1,'Variable':0x2,'Method':0x4,'ObjectType':0x8,'VariableType':0x10,'ReferenceType':0x20,'DataType':0x40,'View':0x80},'value':0x0});const _0x35fb15=$(_0x2276a3(0x206));_0x35fb15[_0x2276a3(0x223)]({'namesToBits':{'ReferenceType':0x1,'IsForward':0x2,'NodeClass':0x4,'BrowseName':0x8,'DisplayName':0x10,'TypeDefinition':0x20},'value':0x3f});const _0x34b345=$(_0x2276a3(0x1d0));_0x34b345['nodeBrowser']({'isSelectable'(_0x16a443){const _0x31ee14=_0x2276a3;return _0x16a443[_0x31ee14(0x24d)]===_0x31ee14(0x1f0)||_0x16a443[_0x31ee14(0x24d)]===_0x31ee14(0x24a);}});const _0x5e2630={'nodeId':_0x2276a3(0x1c2),'referenceTypeId':'','browseName':{'namespaceIndex':0x0,'name':'References'},'displayName':{'text':'References'},'nodeClass':_0x2276a3(0x23b),'typeDefinition':_0x2276a3(0x1c2)},_0x343fc4=$('#node-input-referenceTypeId');_0x343fc4[_0x2276a3(0x1c7)]({'parentNode':()=>_0x5e2630,'isSelectable'(_0x12b4fa){const _0xcedbd5=_0x2276a3;return _0x12b4fa[_0xcedbd5(0x24d)]===_0xcedbd5(0x23b);},'isTypeRef':!![]});},'oneditsave'(){}});}()));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgxNjBhODUiLCJfMHg1MmM4OWEiLCJfMHhmYzIyYWEiLCJfMHgxZjE1MDQiLCJfMHg0NGMzY2YiLCJfMHgxYTEzM2MiLCJfMHgxZDU4NjUiLCJfMHgyZDk4ODEiLCJQcm9taXNlIiwiXzB4MWJjYTg5IiwiXzB4MTk3NWY3IiwiXzB4NDA2NWRiIiwiXzB4NTRiYmVhIiwiXzB4MWYzZWQwIiwiXzB4MzAwNWFiIiwiXzB4NWY2NWExIiwiXzB4Mjc5OWRlIiwiXzB4MjJlMzUxIiwiXzB4MTc4OTdkIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4Mzg4NjVlIiwiXzB4MzdkZjkzIiwiXzB4YTE3OTBkIiwiXzB4MTk2ZDgwIiwiRXJyb3IiLCJfMHhiM2Q2MjIiLCJfMHgzYjM0M2QiLCJfMHg0YzNhZGMiLCJfMHhjMDlmZjEiLCJfMHgxZGUzMjMiLCJfMHgyMjYyN2EiLCJfMHg1YjQ5NjkiLCJfMHgzMDdiYjUiLCJfMHg1YzI4NzIiLCJfMHgzNTFlNDAiLCJfMHgzYTdhOWUiLCJfMHgyOGNlNDMiLCJfMHgyNjMxNTIiLCJfMHg1ZTE0ODkiLCJfMHhkNzFjZSIsIl8weDQ5NGMxYSIsIl8weDRiNDdkZiIsInBhcnNlSW50IiwiaXNOYU4iLCJfMHhkNTkwYmQiLCJfMHgyMTVmNmIiLCJfMHg0MTg4MmMiLCJfMHgxNmIxYzYiLCJfMHgyZDc5ODYiLCJfMHgyYTM5OTMiLCJfMHg0MmQ0MzMiLCJfMHgxZjEyMGEiLCJfMHgzNDQzOGQiLCJfMHgyZWZiYzciLCJPYmplY3QiLCJfMHgzOGYxZDciLCJfMHgyMDU3MjQiLCJfMHgyZWJhZjMiLCJfMHg1ZDMxNWYiLCJfMHgyMmQxMjIiLCJfMHg1OWM1ZjMiLCJfMHgzN2Y2MWEiLCJlbmRwb2ludE5vZGUiLCJfMHgxMjgzYTEiLCJlbmRwb2ludCIsIl8weDNlZTkwYiIsImJhc2VVcmwiLCJfMHg0M2Y1YzAiLCJfMHg0ZDNiZGMiLCJfMHgzZmU2NTgiLCJfMHgzN2YxNGEiLCJfMHgyNDE5YWMiLCJfMHgxNjI4ZjkiLCJfMHg0NTU4YWMiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4MmQzZjljIiwiXzB4NWFhMTcyIiwiXzB4MTc4OTJiIiwiXzB4MmJhYmFkIiwiXzB4NDUwZWY3IiwiXzB4NDU5ZTAyIiwiXzB4NTFlNTg4IiwiXzB4NDhlOTUzIiwiXzB4NTgwODE1IiwiXzB4MjE1NmVlIiwiXzB4NThhZGVlIiwiXzB4MWNhOWViIiwiXzB4MjEwY2Q0IiwiXzB4MzI1MDJjIiwiXzB4NDBjMjQxIiwiXzB4YjBmMDUiLCJzZXRUaW1lb3V0IiwiXzB4MWEyMWUyIiwiXzB4MzI1NTIxIiwiXzB4MzVkODM1IiwiXzB4MWFlNDFiIiwiXzB4NGMyYzlhIiwiXzB4NTAwYTVmIiwiXzB4NDI3ZGFjIiwiXzB4NTdhYzEwIiwiXzB4MTBhNzVjIiwiXzB4NGMxODhlIiwiXzB4MTNjZGYzIiwiXzB4NTE0MDBlIiwiXzB4NGYwNTkxIiwiXzB4MmY4N2UzIiwiXzB4ZmMwM2RjIiwiXzB4NWNkZDAyIiwiXzB4MTNmNWJjIiwiXzB4MmNhODA4IiwiJCIsIl8weDUzMThjNCIsIl8weDM0MTFkYyIsImljb24iLCJfMHhlMDczMjMiLCJjb2xvciIsIl8weDI0N2U5NCIsIl8weDVjYTc0OSIsIl8weGViMWFjNSIsInVuZGVmaW5lZCIsIl8weDQ5OTkwNCIsIl8weDM5NjU0MSIsIl8weDIxMTQ1YiIsIl8weDQ3YjJjYyIsIl8weDM2Mzc2NyIsIl8weDUzNDkyMSIsIl8weDI4Njk1MSIsIl8weDI1YzY2NCIsIl8weDQwMzc0YSIsIl8weDJjNWNmMiIsIl8weDNhZmI1YSIsIl8weDRiNTEzNyIsInJlZmVyZW5jZXMiLCJfMHgzMjEzZWMiLCJfMHgxZmJjZjAiLCJfMHg0MDhmODkiLCJfMHgxNmQ4YmIiLCJfMHg0NmE4M2UiLCJfMHg1NWVmNjIiLCJfMHgyNWEzMDAiLCJfMHgxMjI5OGMiLCJfMHg0YzE0ZjYiLCJfMHgxYTI3ZjciLCJfMHg2MDVmOWEiLCJfMHg0NTczNDciLCJfMHgzNDUxZTciLCJfMHg0Y2Y5NjMiLCJfMHg1ZTVmNGIiLCJfMHgyZjM3MjYiLCJfMHg1N2UzMzUiLCJfMHg0NTBjMjkiLCJfMHgxOWQ0NmQiLCJfMHgzYTkxN2QiLCJfMHgzNmZlMmEiLCJkb2N1bWVudCIsIl8weDQ2NDFhMyIsIl8weDFjMmQ5NyIsIl8weDM1OWQ4NiIsIl8weDM2Y2ZjYSIsIl8weDU3ODU4NyIsIl8weDI2NDZhOSIsIl8weDJkODIyZiIsIl8weDRlOTdmNCIsIl8weDNjOThmZiIsIl8weDE4OTE5MiIsIl8weDU5ZTI1MiIsIl8weDE1ZTUxNiIsIl8weDI1ODVmZiIsIl8weDNjNTY4ZSIsIl8weDFmYWI0ZCIsIl8weDJhNGM3OCIsIl8weDIzN2QyNiIsIl8weDE5ZjE2MCIsIlJFRCIsIl8weGQ3YzQ5NyIsIl8weDIwMGEwOCIsIl8weDM1ZmIxNSIsIl8weDM0YjM0NSIsIl8weDE2YTQ0MyIsIl8weDVlMjYzMCIsIl8weDM0M2ZjNCIsIl8weDEyYjRmYSJdLCJtYXBwaW5ncyI6IjRzSEFBQSxDQUFDLFUsQ0FDRyxhLHdCQW1CQSxTQUFTQSxTQUFULENBQW1CQyxTQUFuQixDQUE0QkMsU0FBNUIsQ0FBd0NDLFNBQXhDLENBQTJDQyxTQUEzQyxDLENBQ0ksU0FBU0MsU0FBVCxDQUFlQyxTQUFmLEMsUUFBK0JBLFNBQUEsWUFBaUJILFNBQWpCLENBQXFCRyxTQUFyQixDQUE2QixJQUFJSCxTQUFKLENBQU0sU0FBVUksU0FBVixDLENBQXFCQSxTQUFBLENBQVFELFNBQVIsQyxFQUEzQixDLFNBQ3JELEdBQUssQ0FBQUgsU0FBQSxFQUFNLENBQUFBLFNBQUEsQ0FBSUssT0FBSixDQUFOLENBQUwsQ0FBeUIsU0FBVUMsU0FBVixDQUFtQkMsU0FBbkIsQyx5QkFDNUIsU0FBU0MsU0FBVCxDQUFtQkMsU0FBbkIsQyx5QkFBNEIsRyxDQUFNQyxTQUFBLENBQUtULFNBQUEsQyxnQkFBQSxFQUFlUSxTQUFmLENBQUwsQyxFQUErQixNQUFPRSxTQUFQLEMsQ0FBWUosU0FBQSxDQUFPSSxTQUFQLEMsR0FDN0UsU0FBU0MsU0FBVCxDQUFrQkMs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Q0FSekIsQ0FTQXNFLFNBQUEsQyxnQkFBQSxFQUE2QixDLFlBQ3pCLENBQVksSUFBTUQsU0FETyxDLGNBRXpCLENBQWFFLFNBQWIsQyxrQ0FDV0EsU0FBQSxDLGdCQUFBLEksa0JBSGMsQyxXQUt6QixDLElBTHlCLENBQTdCLEMsRUF6RXVDLEMsWUFpRjNDLEUsRUFqRjJDLENBQS9DLEMsRUEza0JKLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wgKi9cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxuICAgIH07XG5cbiAgICBjb25zdCBPcmdhbml6ZXNSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNVwiO1xuICAgIGNvbnN0IEZvbGRlclR5cGUgPSBcIm5zPTA7aT02MVwiO1xuICAgIGNvbnN0IEhhc0NvbXBvbmVudFJlZk5vZGVJZCA9IFwibnM9MDtpPTQ3XCI7XG4gICAgY29uc3QgSGFzUHJvcGVydHlSZWZOb2RlSWQgPSBcIm5zPTA7aT00NlwiO1xuICAgIGNvbnN0IEhhc0NoaWxkUmVmTm9kZUlkID0gXCJucz0wO2k9MzRcIjtcbiAgICBjb25zdCBIYXNTdWJ0eXBlUmVmTm9kZUlkID0gXCJucz0wO2k9NDVcIjtcbiAgICBjb25zdCBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZCA9IFwibnM9MDtpPTQwXCI7XG5cbiAgICB2YXIgQnJvd3NlRGlyZWN0aW9uO1xuICAgIChmdW5jdGlvbiAoQnJvd3NlRGlyZWN0aW9uKSB7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJGb3J3YXJkXCJdID0gMF0gPSBcIkZvcndhcmRcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmVyc2VcIl0gPSAxXSA9IFwiSW52ZXJzZVwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiQm90aFwiXSA9IDJdID0gXCJCb3RoXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZhbGlkXCJdID0gM10gPSBcIkludmFsaWRcIjtcbiAgICB9KShCcm93c2VEaXJlY3Rpb24gfHwgKEJyb3dzZURpcmVjdGlvbiA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzcztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzcykge1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVW5zcGVjaWZpZWRcIl0gPSAwXSA9IFwiVW5zcGVjaWZpZWRcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZhcmlhYmxlXCJdID0gMl0gPSBcIlZhcmlhYmxlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZhcmlhYmxlVHlwZVwiXSA9IDE2XSA9IFwiVmFyaWFibGVUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZpZXdcIl0gPSAxMjhdID0gXCJWaWV3XCI7XG4gICAgfSkoTm9kZUNsYXNzIHx8IChOb2RlQ2xhc3MgPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3NNYXNrO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzTWFzaykge1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZhcmlhYmxlXCJdID0gMl0gPSBcIlZhcmlhYmxlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZhcmlhYmxlVHlwZVwiXSA9IDE2XSA9IFwiVmFyaWFibGVUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZpZXdcIl0gPSAxMjhdID0gXCJWaWV3XCI7XG4gICAgfSkoTm9kZUNsYXNzTWFzayB8fCAoTm9kZUNsYXNzTWFzayA9IHt9KSk7XG4gICAgZnVuY3Rpb24gY29lcmNlRmxhZ01hc2tUb051bWJlcih0eXBlLCBzdHIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzdHIgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RyQXNOdW0gPSBwYXJzZUludChzdHIsIDEwKTtcbiAgICAgICAgaWYgKCFpc05hTihzdHJBc051bSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJBc051bTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmbGFncyA9IHN0ci5zcGxpdCgvXFx8fDt8LC8pLm1hcCgoYSkgPT4gYS50cmltKCkpO1xuICAgICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBmbGFnIG9mIGZsYWdzKSB7XG4gICAgICAgICAgICByZXN1bHQgfD0gdHlwZVtmbGFnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb2VyY2VGbGFnTWFza1RvU3RyaW5nKHR5cGUsIHZhbHVlKSB7XG4gICAgICAgIHZhbHVlID0gY29lcmNlRmxhZ01hc2tUb051bWJlcih0eXBlLCB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHIgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCBiaXRNYXNrXSBvZiBPYmplY3QuZW50cmllcyh0eXBlKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgIGlmICgodmFsdWUgJiBiaXRNYXNrKSA9PT0gYml0TWFzaykge1xuICAgICAgICAgICAgICAgICAgICByLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHIuam9pbihcIiB8IFwiKTtcbiAgICB9XG4gICAgdmFyIFJlc3VsdE1hc2s7XG4gICAgKGZ1bmN0aW9uIChSZXN1bHRNYXNrKSB7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAxXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJJc0ZvcndhcmRcIl0gPSAyXSA9IFwiSXNGb3J3YXJkXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIk5vZGVDbGFzc1wiXSA9IDRdID0gXCJOb2RlQ2xhc3NcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiQnJvd3NlTmFtZVwiXSA9IDhdID0gXCJCcm93c2VOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkRpc3BsYXlOYW1lXCJdID0gMTZdID0gXCJEaXNwbGF5TmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJUeXBlRGVmaW5pdGlvblwiXSA9IDMyXSA9IFwiVHlwZURlZmluaXRpb25cIjtcbiAgICB9KShSZXN1bHRNYXNrIHx8IChSZXN1bHRNYXNrID0ge30pKTtcbiAgICAvLyAgY29uc3QgcSA9IFJlZmVyZW5jZVR5cGVJZHMuT3JnYW5pemVzO1xuICAgIGZ1bmN0aW9uIHJlc29sdmVOb2RlSWQobm9kZUlkTGlrZSkge1xuICAgICAgICBzd2l0Y2ggKG5vZGVJZExpa2UpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPcmdhbml6ZXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JnYW5pemVzUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1Byb3BlcnR5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1Byb3BlcnR5UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NvbXBvbmVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDb21wb25lbnRSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ2hpbGRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ2hpbGRSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzU3VidHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNTdWJ0eXBlUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1R5cGVEZWZpbml0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0SWNvbiA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgc3dpdGNoIChyZWZlcmVuY2Uubm9kZUNsYXNzKSB7XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IE9yZ2FuaXplc1JlZk5vZGVJZCkgO1xuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UudHlwZURlZmluaXRpb24gPT09IEZvbGRlclR5cGUgfHwgcmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gXCJpPTYxXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1mb2xkZXJcIiwgY29sb3I6IFwicmdiYSg2MSwgNjAsIDQsIDAuNTI1KVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIlNlYUdyZWVuXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBIYXNDb21wb25lbnRSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJTdGVlbEJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBIYXNQcm9wZXJ0eVJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkRvZGdlckJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJNZXRob2RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWNvZ1wiLCBjb2xvcjogXCJTYW5keUJyb3duXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1zbGlkZXJzXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGljb246IFwiZmEtcXVlc3Rpb25cIiwgY29sb3I6IFwiZ3JleVwiIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGJyb3dzZSA9ICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbm9kZUlkLCB0ZW1wbGF0ZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9icm93c2VgO1xuICAgICAgICBjb25zdCBicm93c2VEZXNjcmlwdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGUpLCB7IG5vZGVJZCwgcmVzdWx0TWFzazogNjMgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGJyb3dzZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGluZyBmYWlsZWQgd2l0aCBlcnJvclwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXM6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGVkIDogXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VzID0gcmVzcG9uc2UuYnJvd3NlUmVzdWx0LnJlZmVyZW5jZXMgfHwgW107XG4gICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXMgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRlbXBsYXRlMSA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzQ2hpbGRcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZTIgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIk9yZ2FuaXplc1wiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IGludGVybmFsVmVyaWZ5ID0gKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCAkaW5wdXRFbGVtZW50LCAkaW5mbykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCBub2RlSWQgPSAkaW5wdXRFbGVtZW50LnZhbCgpO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2goYCR7cm9vdH0vY2hlY2tOb2RlSWRgLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNldE5vdGlmaWNhdGlvbiA9ICh0ZXh0LCBjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICRpbmZvLnRleHQodGV4dCkuYWRkQ2xhc3MoXCJzdGVyZml2ZS1pbmZvXCIpLmFkZENsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAkaW5mby5zaG93KCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAkaW5mby5yZW1vdmVDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZztcbiAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIiEhZmFpbHVyZSEhXCIgKyBub2RlSWQsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKGpzb24ubm9kZUFkZHJlc3NTdHJpbmcpO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCJHb29kXCIsIFwib2tcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChgJHtub2RlSWR9YCk7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKGAke2pzb24uc3RhdHVzQ29kZX0gJHtkYXRhLnN0YXR1c1RleHR9YCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gZmV0Y2hDaGlsZHJlbigkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMSk7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQyID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUyKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogWy4uLmJyb3dzZVJlc3VsdDEucmVmZXJlbmNlcywgLi4uYnJvd3NlUmVzdWx0Mi5yZWZlcmVuY2VzXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB0ZW1wbGF0ZVNUID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNTdWJ0eXBlXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHwgTm9kZUNsYXNzLk9iamVjdFR5cGUgfCBOb2RlQ2xhc3MuRGF0YVR5cGUgfCBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlLFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZldGNoU3VidHlwZXMoJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZVNUKTtcbiAgICAgICAgICAgIHJldHVybiBicm93c2VSZXN1bHQxO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgbWFrZUVsZW1lbnQgPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmICghcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhIGZhLWVycm9yXCIgc3R5bGU9XCJjb2xvcjpyZWQ7XCI+PC9pPm5vIHJlZmVyZW5jZSAhPHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuID0gcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0ID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgeyBpY29uLCBjb2xvciB9ID0gZ2V0SWNvbihyZWZlcmVuY2UpO1xuICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhICR7aWNvbn1cIiBzdHlsZT1cImNvbG9yOiR7Y29sb3J9O1wiPjwvaT4gJHt0fTx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICRlbGVtZW50LmFkZENsYXNzKFwiZXhwYW5kYWJsZVwiKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInZhbHVlXCIsIG4pO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICB9O1xuICAgIGNvbnN0IGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCA9ICgpID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFsgVGVtcGVyYXR1cmUgIF1cbiAgICAgICAgICogICAoIHRvb2x0aXAgOiAoL09iamVjdHMvTXlTZW5zb3IpIChucz0xO3M9VGVtcGVyYXR1cmUpKVxuICAgICAgICAgKiBbICsgW0ZvbGRlcl0gT2JqZWN0c11cbiAgICAgICAgICogWyAgICAgW09iamVjdF0gTXlTZW5zb3JdXG4gICAgICAgICAqIFsgICAgICggKSBbVmFyaWFibGVdIFRlbXBlcmF0dXJlXVxuICAgICAgICAgKi9cbiAgICAgICAgJC53aWRnZXQoXCJzdGVyZml2ZS5ub2RlQnJvd3NlclwiLCB7XG4gICAgICAgICAgICAvKiBkZWZhdWx0IG9wdGlvbnMgKi9cbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6ICgpID0+ICh7IGVuZHBvaW50OiBcIm9wYy50Y3A6Ly9vcGN1YWRlbW8uc3RlcmZpdmUuY29tOjI2NTQzXCIgfSksXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBicm93c2VOYW1lOiB7IG5hbWVzcGFjZUluZGV4OiAwLCBuYW1lOiBcIk9iamVjdHNcIiB9LFxuICAgICAgICAgICAgICAgICAgICBub2RlQ2xhc3M6IFwiT2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIG5vZGVJZDogXCJucz0wO2k9ODVcIixcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZURlZmluaXRpb246IEZvbGRlclR5cGUsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsdGVyOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgIGJhc2VVcmw6IFwiXCIsXG4gICAgICAgICAgICAgICAgaXNUeXBlUmVmOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNvbHZlUGFyZW50Tm9kZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHR5cGVvZiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLnBhcmVudE5vZGUoKSA6IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCBhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVQYXJlbnROb2RlKCkudGhlbigocGFyZW50Tm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY3VycmVudFBhcmVudCA9IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyaWZ5KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxWZXJpZnkoZGF0YSwgdGhhdC4kaW5wdXQsIHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gX2ZldGNoRGF0YUZvck5vZGUoJG5vZGUsIGZldGNoRnVuYywgZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImxvYWRpbmdcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgbG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHJlZmVyZW5jZXMgfSA9IHlpZWxkIGZldGNoRnVuYygkbm9kZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmZpbHRlciAmJiAhdGhhdC5vcHRpb25zLmZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKGA8bGk+ZXJyb3IgJHtlcnIubWVzc2FnZX08L2xpPmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5maW5kKFwiLnNwaW5uZXJcIikucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbm9kZS5yZW1vdmVDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC4kZHJvcGRvd24uaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJlZSB3aWRnZXQgaXMgZ29pbmcgdG8gYmVjb21lIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQucmVzb2x2ZVBhcmVudE5vZGUoKS50aGVuKChwYXJlbnROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICE9PSB0aGF0LmN1cnJlbnRQYXJlbnQgfHwgKChfYSA9IHRoYXQuY3VycmVudFBhcmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZCkgIT09IHBhcmVudE5vZGUubm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1mbGFza1wiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiR2ZXJpZnlCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0bi5vbihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIiwgXCJlbnRlciBhIG5vZGVJZCBvciBhIGJyb3dzZVBhdGggXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvID0gJChgPGRpdiBjbGFzcz1cImluZm8tdGV4dFwiPjwvZGl2PmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWRyb3Bkb3duXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5mbyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlID0gJChgPHVsIGNsYXNzPVwic3RlcmZpdmUtdHJlZVwiPjwvdWw+YCkuYXBwZW5kVG8odGhhdC4kZHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVXaWR0aCA9IDIwOyAvLyBTZXQgd2lkdGggb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gMjA7IC8vIFNldCBoZWlnaHQgb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvcyA9ICQodGhpcykub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUucGFnZVggPj0gZWxlbWVudFBvcy5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VYIDw9IGVsZW1lbnRQb3MubGVmdCArIGJlZm9yZVdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZID49IGVsZW1lbnRQb3MudG9wICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZIDw9IGVsZW1lbnRQb3MudG9wICsgYmVmb3JlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoYXQub3B0aW9ucy5iYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhhdC5vcHRpb25zLmVuZHBvaW50Tm9kZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50OiB0eXBlb2YgdGhhdC5vcHRpb25zLmVuZHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGYgPSAhdGhhdC5vcHRpb25zLmlzVHlwZVJlZiA/IGZldGNoQ2hpbGRyZW4gOiBmZXRjaFN1YnR5cGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9mZXRjaERhdGFGb3JOb2RlKCRsaSwgZiwgZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIiBGZXRjaGluZyBkb25lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgZXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaXRzIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuY2hpbGRyZW4oXCJ1bFwiKS5jaGlsZHJlbigpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICRsaS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2UgPSAkbGkuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlICYmICF0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlY2xhcmVGbGFnRWRpdG9yV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLmZsYWdFZGl0b3JcIiwge1xuICAgICAgICAgICAgLy8gZGVmYXVsdCBvcHRpb25zXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgbmFtZXNUb0JpdHM6IHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgbW9yZSBuYW1lcyBhbmQgYml0IHZhbHVlc1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAvLyBDdXN0b20gRHJvcGRvd25cbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50WzBdLnBhcmVudEVsZW1lbnQucmVwbGFjZUNoaWxkKHRoYXQuJGNvbWJvWzBdLCB0aGlzLmVsZW1lbnRbMF0pO1xuICAgICAgICAgICAgICAgIC8vIHRoaXMuZWxlbWVudC5yZXBsYWNlV2l0aCh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cCA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJpbnB1dC1ncm91cFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5wdXRHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kaW5wdXQpO1xuICAgICAgICAgICAgICAgIC8vIHRoZSB0b2dnbGUgdHJlZSBidXR0b246XG4gICAgICAgICAgICAgICAgLy8gICB3aGVuIHdlIGNsaWNrIGl0IHRoZSBkcm9wIGRvd24gcGFuZWwgaXMgZGlzcGxheWVkXG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1leWVcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdG9nZ2xlVHJlZUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRzZWxlY3QuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUZyb21JbnB1dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uZmluZChcIi5jdXN0b20tb3B0aW9uXCIpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcHRpb25OYW1lID0gJCh0aGlzKS50ZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYml0VmFsdWUgPSB0aGF0Lm9wdGlvbnMubmFtZXNUb0JpdHNbb3B0aW9uTmFtZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpdFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBiaXQgbmFtZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0aGF0Lm9wdGlvbnMudmFsdWUgJiBiaXRWYWx1ZSkgPT09IGJpdFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgaGlkZGVuIHNlbGVjdCBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnVwZGF0ZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcCBkb3duIHBhbmVsXG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24gPSAkKCc8ZGl2IGNsYXNzPVwiY3VzdG9tLXNlbGVjdFwiPjwvZGl2PicpLmhpZGUoKS5pbnNlcnRBZnRlcih0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICQuZWFjaCh0aGlzLm9wdGlvbnMubmFtZXNUb0JpdHMsIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRvcHRpb24gPSAkKCc8ZGl2IGNsYXNzPVwiY3VzdG9tLW9wdGlvblwiIGRhdGEtdmFsdWU9XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1wiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCI+PC9zcGFuPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIjwvZGl2PlwiKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uYXBwZW5kKCRvcHRpb24pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIHdoZW4gYSBvcHRpb25zIGluIHRoZSBkcm9wIGRvd24gcGFuZWwgaXMgY2xpY2tlZCxcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5vbihcImNsaWNrXCIsIFwiLmN1c3RvbS1vcHRpb25cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJCh0aGlzKS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKFwic2VsZWN0ZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1bnNldEJpdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhhdC51cGRhdGVWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlRnJvbUlucHV0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZWxlbWVudC52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5vcHRpb25zLnZhbHVlID0gY29lcmNlRmxhZ01hc2tUb051bWJlcih0aGF0Lm9wdGlvbnMubmFtZXNUb0JpdHMsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHNldEJpdCA9IChiaXROYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpdCA9IHRoYXQub3B0aW9ucy5uYW1lc1RvQml0c1tiaXROYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJpdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGJpdCBuYW1lXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSB8PSBiaXQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB1bnNldEJpdCA9IChiaXROYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpdCA9IHRoYXQub3B0aW9ucy5uYW1lc1RvQml0c1tiaXROYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJpdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGJpdCBuYW1lXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSAmPSB+Yml0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQudmFsKGNvZXJjZUZsYWdNYXNrVG9TdHJpbmcodGhhdC5vcHRpb25zLm5hbWVzVG9CaXRzLCB0aGlzLm9wdGlvbnMudmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHVwZGF0ZUZyb21JbnB1dCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZVZhbHVlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC52YWwoY29lcmNlRmxhZ01hc2tUb1N0cmluZyh0aGF0Lm9wdGlvbnMubmFtZXNUb0JpdHMsIHRoaXMub3B0aW9ucy52YWx1ZSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9kZXN0cm95KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnJlbW92ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1DbGllbnQyLUJyb3dzZVwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCIuLi8uLi9pY29ucy9vcGN1YW5vZGVMb2dvLnBuZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwiYnJvd3NlXCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBpbnB1dHM6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgIG91dHB1dDogeyB2YWx1ZTogNCB9LFxuICAgICAgICAgICAgLy8gQ29tbW9uXG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IFwiT3BjVWEtRW5kcG9pbnQyXCIgfSxcbiAgICAgICAgICAgIC8vIGZvciBhY3Rpb24gcmVhZFxuICAgICAgICAgICAgbm9kZUlkOiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHJlZmVyZW5jZVR5cGVJZDogeyB2YWx1ZTogXCJIYXNDaGlsZFwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIGluY2x1ZGVTdWJ0eXBlczogeyB2YWx1ZTogZmFsc2UsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBicm93c2VEaXJlY3Rpb246IHsgdmFsdWU6IFwiRm9yd2FyZFwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgbm9kZUNsYXNzTWFzazogeyB2YWx1ZTogXCJWYXJpYWJsZSB8IE9iamVjdCB8IE1ldGhvZCB8IE9iamVjdFR5cGUgfCBWYXJpYWJsZVR5cGVcIiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICByZXN1bHRNYXNrOiB7IHZhbHVlOiBcIlJlZmVyZW5jZVR5cGUgfCBCcm93c2VOYW1lIHwgVHlwZURlZmluaXRpb24gfCBEaXNwbGF5TmFtZSB8IE5vZGVDbGFzcyB8IElzRm9yd2FyZFwiLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0czogMSxcbiAgICAgICAgbGFiZWwoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IFwiT1BDVUEgQnJvd3NlXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsU3R5bGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gXCJub2RlX2xhYmVsX2l0YWxpY1wiIDogXCJcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBkZWNsYXJlRmxhZ0VkaXRvcldpZGdldCgpO1xuICAgICAgICAgICAgbm9kZS5pbnB1dHMgPSAxO1xuICAgICAgICAgICAgY29uc3QgJG5vZGVDbGFzc01hc2sgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUNsYXNzTWFza1wiKTtcbiAgICAgICAgICAgICRub2RlQ2xhc3NNYXNrLmZsYWdFZGl0b3Ioe1xuICAgICAgICAgICAgICAgIG5hbWVzVG9CaXRzOiB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdDogMSxcbiAgICAgICAgICAgICAgICAgICAgVmFyaWFibGU6IDIsXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogNCxcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZTogOCxcbiAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVUeXBlOiAxNixcbiAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlVHlwZTogMzIsXG4gICAgICAgICAgICAgICAgICAgIERhdGFUeXBlOiA2NCxcbiAgICAgICAgICAgICAgICAgICAgVmlldzogMTI4LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0ICRyZXN1bHRNYXNrID0gJChcIiNub2RlLWlucHV0LXJlc3VsdE1hc2tcIik7XG4gICAgICAgICAgICAkcmVzdWx0TWFzay5mbGFnRWRpdG9yKHtcbiAgICAgICAgICAgICAgICBuYW1lc1RvQml0czoge1xuICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2VUeXBlOiAxLFxuICAgICAgICAgICAgICAgICAgICBJc0ZvcndhcmQ6IDIsXG4gICAgICAgICAgICAgICAgICAgIE5vZGVDbGFzczogNCxcbiAgICAgICAgICAgICAgICAgICAgQnJvd3NlTmFtZTogOCxcbiAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWU6IDE2LFxuICAgICAgICAgICAgICAgICAgICBUeXBlRGVmaW5pdGlvbjogMzIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogNjMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0ICRub2RlSWQgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUlkXCIpO1xuICAgICAgICAgICAgJG5vZGVJZC5ub2RlQnJvd3Nlcih7XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIiB8fCBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiT2JqZWN0XCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlc05vZGVEZXNjID0ge1xuICAgICAgICAgICAgICAgIG5vZGVJZDogXCJpPTMxXCIsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiBcIlwiLFxuICAgICAgICAgICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiUmVmZXJlbmNlc1wiIH0sXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHsgdGV4dDogXCJSZWZlcmVuY2VzXCIgfSxcbiAgICAgICAgICAgICAgICBub2RlQ2xhc3M6IFwiUmVmZXJlbmNlVHlwZVwiLFxuICAgICAgICAgICAgICAgIHR5cGVEZWZpbml0aW9uOiBcImk9MzFcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCAkcmVmZXJlbmNlVHlwZUlkID0gJChcIiNub2RlLWlucHV0LXJlZmVyZW5jZVR5cGVJZFwiKTtcbiAgICAgICAgICAgICRyZWZlcmVuY2VUeXBlSWQubm9kZUJyb3dzZXIoe1xuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+IHJlZmVyZW5jZXNOb2RlRGVzYywgLy8gUmVmZXJlbmNlcyxcbiAgICAgICAgICAgICAgICBpc1NlbGVjdGFibGUobm9kZURlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpc1R5cGVSZWY6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0c2F2ZSgpIHsgfSxcbiAgICB9KTtcblxufSkoKTsiXX0=
9
9
  </script>
10
10
  <script type="text/x-red" data-template-name="OpcUa-Client2-Browse">
11
11
  <style>