@opcua/for-node-red 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/README.md +2 -1
  2. package/all.js +1 -4
  3. package/config-panel/assets/index-DDkINW5U.js +49 -0
  4. package/config-panel/assets/index-DayGs2U8.css +1 -0
  5. package/config-panel/index.html +2 -2
  6. package/examples/explore_coffee_machine.json +1 -1
  7. package/examples/job_manager.json +1 -1
  8. package/examples/monitored-items.json +630 -0
  9. package/package.json +1 -1
  10. package/source/OpcUa-Client2-Browse/OpcUa-Client2-Browse.css +1 -1
  11. package/source/OpcUa-Client2-Browse/OpcUa-Client2-Browse.html +55 -9
  12. package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.css +1 -1
  13. package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.html +31 -5
  14. package/source/OpcUa-Client2-Explore/OpcUa-Client2-Explore.css +1 -1
  15. package/source/OpcUa-Client2-Explore/OpcUa-Client2-Explore.html +4 -4
  16. package/source/OpcUa-Client2-ExtensionObject/OpcUa-Client2-ExtensionObject.css +1 -1
  17. package/source/OpcUa-Client2-ExtensionObject/OpcUa-Client2-ExtensionObject.html +10 -4
  18. package/source/OpcUa-Client2-HistoryRead/OpcUa-Client2-HistoryRead.css +1 -1
  19. package/source/OpcUa-Client2-HistoryRead/OpcUa-Client2-HistoryRead.html +169 -92
  20. package/source/OpcUa-Client2-Monitor/OpcUa-Client2-Monitor.css +1 -1
  21. package/source/OpcUa-Client2-Monitor/OpcUa-Client2-Monitor.html +199 -38
  22. package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.css +1 -1
  23. package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.html +61 -13
  24. package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.css +1 -1
  25. package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.html +4 -4
  26. package/source/OpcUa-Client2-Write/OpcUa-Client2-Write.css +1 -1
  27. package/source/OpcUa-Client2-Write/OpcUa-Client2-Write.html +4 -4
  28. package/source/OpcUa-Endpoint2/OpcUa-Endpoint2.html +2 -2
  29. package/config-panel/assets/index-2UIiGW7e.js +0 -40
  30. package/config-panel/assets/index-D642mSgA.css +0 -1
@@ -1,11 +1,11 @@
1
1
  <style>
2
- :root{--red-ui-primary-font:Arial,sans-serif;--red-ui-primary-font-size:16px;--red-ui-primary-border-color:#ccc;--red-ui-secondary-border-color:#999;--red-ui-form-text-color:#333;--red-ui-workspace-button-background-hover:#f0f0f0;--red-ui-workspace-button-background-active:#e0e0e0;--red-ui-primary-text-color:#000;--red-ui-form-input-border-error-color:red;--red-ui-form-button-background:#efefef;--red-ui-secondary-background-hover:#e5e5e5}.sterfive-combo-box{position:relative;width:100%}.sterfive-online-menu{height:auto;position:fixed;width:auto}.input-error{border-color:var(--red-ui-form-input-border-error-color)!important;border-style:solid;border-width:1px}.sterfive-typedInput-options{background:#fff;border-style:solid;border-width:1px;border:1px solid var(--red-ui-primary-border-color);box-shadow:1px 1px 4px var(--red-ui-shadow);box-sizing:border-box;max-height:350px;overflow-y:auto;position:absolute;white-space:nowrap;z-index:2000}.sterfive-typedInput-options a{align-items:center;border-bottom:1px solid;border-color:var(--red-ui-secondary-border-color);border-style:solid;border-width:1px;color:var(--red-ui-form-text-color);display:flex;font-size:13px;padding:6px 18px 6px 6px;text-decoration:none}.sterfive-typedInput-options a:hover{background:var(--red-ui-workspace-button-background-hover);text-decoration:none}.sterfive-typedInput-options a:focus{outline:none}.sterfive-typedInput-options a:active,.sterfive-typedInput-options a:focus{background:var(--red-ui-workspace-button-background-active);text-decoration:none}.sterfive-typedInput-options a input[type=checkbox]{margin:0 6px 0 0}.sterfive-typedInput-options .sterfive-typedInput-icon{margin-right:6px}.sterfive-typedInput-options .sterfive-typedInput-icon:not(.fa){background-color:var(--red-ui-primary-text-color);height:14px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:cover;mask-size:cover;width:12px}.sterfive-combo-box .sterfive-dropdown{background-color:#fff;border:1px solid #ccc;display:none;left:0;max-height:400px;overflow-y:auto;position:absolute;top:100%;width:100%;z-index:1000}.sterfive-combo-box li:before{content:none}.sterfive-tree li.expandable:before,.sterfive-tree li.no-expandable:before{content:"\f0da";cursor:pointer;font-family:FontAwesome;font-size:12pt;font-weight:900;margin-right:5px}.sterfive-tree li.no-expandable:before{opacity:0}.sterfive-tree li.expanded:before{content:"\f0d7";cursor:pointer;font-family:FontAwesome;font-size:12pt;font-weight:900;margin-right:5px}.sterfive-tree li span.selected{border:.5px dotted #33f}.sterfive-tree .fa{color:#333;margin-right:10px}.sterfive-tree ul{list-style:none;padding-inline-start:2%!important}.sterfive-tree li{cursor:pointer;padding:5px}.sterfive-tree{list-style-type:none}.sterfive-tree,.sterfive-tree ol,.sterfive-tree ul{list-style-type:none;margin:0;padding:0}.sterfive-tree li:hover{background-color:#eee}.sterfive-tree li.loading:before{animation:fa-spin 1s linear infinite;content:"\f110";cursor:pointer;font-family:FontAwesome;font-weight:900;margin-right:5px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.sterfive-tree .spinner{animation:spin .7s linear infinite;border:2px solid transparent;border-radius:50%;border-top-color:#666;display:inline-block;height:16px;width:16px}.sterfive-info{background-color:#fafad2;border-radius:10px;border-style:groove;display:block;font-size:10pt;margin:5px 0;padding:5px}.sterfive-info .ok{color:green}.sterfive-info .warning{color:darkred}.input-wrapper{border:0 solid #ccc;border-radius:5px;padding:0}.input-group{border:1px solid #ccc;border-radius:5px;display:flex;overflow:hidden}.input-group button,.input-group input{border:none;outline:none;padding:10px}.input-group input{flex:1}.input-group button{background-color:var(--red-ui-form-button-background);color:#7b7a7a;cursor:pointer}.input-group button:hover{background-color:var(--red-ui-secondary-background-hover)}.info-text{color:#777;font-size:12px;margin-left:10px;margin-top:5px}.custom-checkbox{cursor:pointer;display:inline-block;font-family:FontAwesome;font-size:16px;font-weight:900;margin-right:10px;text-align:center;width:1em}.custom-checkbox.unchecked:before{content:"\f096"}.custom-checkbox.checked:before{content:"\f046"}.validate-cancel-buttons{background-color:#fff;position:sticky;right:0;top:0;z-index:1001}.cancel-button,.validate-button{cursor:pointer;font-size:16px;margin:5px}.sterfive-combo-box .sterfive-dropdown{position:relative}.floating-buttons{position:fixed;z-index:1003}
2
+ .sterfive-combo-box{position:relative;width:100%}.sterfive-online-menu{height:auto;position:fixed;width:auto}.sterfive-input-error{border-color:var(--red-ui-form-input-border-error-color)!important;border-style:solid;border-width:1px}.sterfive-typedInput-options{background:#fff;border-style:solid;border-width:1px;border:1px solid var(--red-ui-primary-border-color);box-sizing:border-box;max-height:350px;overflow-y:auto;position:absolute;white-space:nowrap;z-index:2000}.sterfive-typedInput-options a{align-items:center;border-bottom:1px solid;border-color:var(--red-ui-secondary-border-color);border-style:solid;border-width:1px;color:var(--red-ui-form-text-color);display:flex;font-size:13px;padding:6px 18px 6px 6px;text-decoration:none}.sterfive-typedInput-options a:hover{background:var(--red-ui-workspace-button-background-hover);text-decoration:none}.sterfive-typedInput-options a:focus{outline:none}.sterfive-typedInput-options a:active,.sterfive-typedInput-options a:focus{background:var(--red-ui-workspace-button-background-active);text-decoration:none}.sterfive-typedInput-options a input[type=checkbox]{margin:0 6px 0 0}.sterfive-typedInput-options .sterfive-typedInput-icon{margin-right:6px}.sterfive-typedInput-options .sterfive-typedInput-icon:not(.fa){background-color:var(--red-ui-primary-text-color);height:14px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:cover;mask-size:cover;width:12px}.sterfive-combo-box .sterfive-dropdown{background-color:#fff;border:1px solid #ccc;display:none;left:0;max-height:400px;overflow-y:auto;position:absolute;top:100%;width:100%;z-index:1000}.sterfive-combo-box li:before{content:none}.sterfive-tree li.expandable:before,.sterfive-tree li.no-expandable:before{content:"\f0da";cursor:pointer;font-family:FontAwesome;font-size:12pt;font-weight:900;margin-right:5px}.sterfive-tree li.no-expandable:before{opacity:0}.sterfive-tree li.expanded:before{content:"\f0d7";cursor:pointer;font-family:FontAwesome;font-size:12pt;font-weight:900;margin-right:5px}.sterfive-tree li span.selected{border:.5px dotted #33f}.sterfive-tree .fa{color:#333;margin-right:10px}.sterfive-tree ul{list-style:none;padding-inline-start:2%!important}.sterfive-tree li{cursor:pointer;padding:5px}.sterfive-tree{list-style-type:none}.sterfive-tree,.sterfive-tree ol,.sterfive-tree ul{list-style-type:none;margin:0;padding:0}.sterfive-tree li:hover{background-color:#eee}.sterfive-tree li.loading:before{animation:fa-spin 1s linear infinite;content:"\f110";cursor:pointer;font-family:FontAwesome;font-weight:900;margin-right:5px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.sterfive-tree .spinner{animation:spin .7s linear infinite;border:2px solid transparent;border-radius:50%;border-top-color:#666;display:inline-block;height:16px;width:16px}.sterfive-info{background-color:#fafad2;border-radius:10px;border-style:groove;display:block;font-size:10pt;margin:5px 0;padding:5px}.sterfive-info .ok{color:green}.sterfive-info .warning{color:darkred}.input-wrapper{border:0 solid #ccc;border-radius:5px;padding:0}.sterfive-input-group{border:1px solid #ccc;border-radius:5px;display:flex;overflow:hidden}.sterfive-input-group button,.sterfive-input-group input{border:none;outline:none;padding:10px}.sterfive-input-group input{flex:1}.sterfive-input-group button{background-color:var(--red-ui-form-button-background);color:#7b7a7a;cursor:pointer}.sterfive-input-group button:hover{background-color:var(--red-ui-secondary-background-hover)}.sterfive-info-text{color:#777;font-size:12px;margin-left:10px;margin-top:5px}.custom-checkbox{cursor:pointer;display:inline-block;font-family:FontAwesome;font-size:16px;font-weight:900;margin-right:10px;text-align:center;width:1em}.custom-checkbox.unchecked:before{content:"\f096"}.custom-checkbox.checked:before{content:"\f046"}.validate-cancel-buttons{background-color:#fff;position:sticky;right:0;top:0;z-index:1001}.cancel-button,.validate-button{cursor:pointer;font-size:16px;margin:5px}.sterfive-combo-box .sterfive-dropdown{position:relative}.floating-buttons{position:fixed;z-index:1003}
3
3
  /*# sourceMappingURL=OpcUa-Client2-Monitor.css.map */
4
4
  </style>
5
5
 
6
6
  <script type="text/javascript">
7
- function _0x5ced(){const _0x305615=['push','offset','status','checked','</span><ul></ul></li>','toggle','disarmClick','scrollTop','<li>error\x20','node','subscriptions','88VibWLE','.tree-text:first','nodeId','ObjectType','nodeIds','pointer-events','#node-input-inputs','statusCode:\x20','keyCode','string','change','7955YtiZJJ','Aliased\x20NodeId','references','30px','.red-ui-tray-body','<span\x20class=\x22red-ui-typedInput-type-label\x22></span>','fetched','_initMenu','node\x20class:\x20','stringify','removeClass','#node-input-endpoint','input-error','setMode','$combo','callback','top','sterfive-combo-box','$menu','aliasedBrowsePath','><i\x20class=\x22fa\x20','opts','red-ui-typedInput-focus','tabindex','replaceWith','nodeId_nsu','append','/opcua-for-node-red/support-frame.html','DarkOrange','join','true','fa-list-alt','ReferenceType','hide','displayName','isTypeRef','4334GSxaAB','16px','#node-input-startImmediately','_showMenu','IsForward','mousedown','.spinner','DisplayName','preventDefault','Method','selected','sterfive-typedInput-options\x20sterfive-online-menu','Object','background-color:transparent;overflow:hidden;border:3px','../../icons/opcuanodeLogo.png','namespaceAliases','OpcUa-Endpoint2','endpoint','ns=0;i=45','BrowsePath','$elementDiv','animate','<input\x20type=\x22checkbox\x22>','136014VOIBYr','throw','slideDown','<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>','closest','DataType','mode','<ul\x20class=\x22sterfive-tree\x22></ul>','opcua','fa-folder','element','<i\x20class=\x22fa\x20fa-id-card\x22/>&nbsp;\x20','browseResult','ns=0;i=34','_hideMenu','$info','isSelectable','__parentNode','HasTypeDefinition','$selectTrigger','NodeId','loading','data','nodeId_aliased','OpcUa-Client2-Monitor','Forward','<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;','mousedown.red-ui-typedInput-close-property-select','keydown','nodeId:\x20','main-wrapper','done','value','right','auto','installFeedbackWidget\x20','BrowseName','next','css','children','fetching\x20failed\x20with\x20error','none','prev','HasSubtype','function','filter','$verifyBtn','currentParent','<div\x20class=\x22info-text\x22></div>','\x22\x20style=\x22color:','localeCompare','endpointNode','<li\x20key=\x22','hasClass','mask-image:\x20url(','180px','$input','<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;','name','failure','View','red-ui-typedInput-icon','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','20px','_delay','indexOf','sort','Invalid','li\x20>\x20.tree-text','!!failure!!','SuppressedError','application/json','[value=\x27','18px',');\x20-webkit-mask-image:\x20url(','<div\x20class=\x22spinner\x22></div>','mousedown.red-ui-typedInput-focus-block','i=61','<i\x20class=\x22fa\x20fa-font\x22/i>\x20','2saSiKk','NodeClass','height','json','registerType','Both','</span>','dblclick','statusCode','_showTypeMenu','input[type=\x22checkbox\x22]','call',';\x22></i>\x20','find','Unspecified','<a\x20href=\x22#\x22></a>','ns=0;i=85','after','$toggleTreeBtn','19944jKCopt','9pagtbM','HasChild','installing\x20iframe','expandable\x20expanded','\x22}><span\x20class=\x22tree-text\x22\x20title=','toggleClass','reference','sterfive-info','nsu','$inputGroup','Aliased\x20Browse\x20Path','position','catch','match','val','nsu\x20nodeId:\x20','icon','<i>','err','</li>','error','log','remove','#node-input-nodeId','click','placeholder','appendTo',':focus','fa-object-group','assign','<span\x20title=','<option/>','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>','Inverse','nodes','$selectLabel','absolute','fa-question','POST','Variable','message','apply','SeaGreen','2766OcrjTr','sterfive-dropdown','grey','aliasedNodeId','attr','node_label_italic','bp_indexed','parentNode','prop','multiple','CadetBlue',':visible','VariableType','ns=0;i=35','$dropdown','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','TypeDefinition','nodeClass','referenceTypeId','msg.','ns=0;i=46','empty','selectedMenuItem','toString','title','trigger','<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','_createMenu','5671870JbrXnz','aliased\x20NodeId:\x20','blur','baseUrl','<div/>','resolveParentNode','ns=0;i=40','prependTo','SandyBrown','stopPropagation','browseName','browsePath','target','reset','addClass','Organizes','pageY','before','already\x20fetched','body','$uiSelect','length','/opcua-for-node-red','>&nbsp;\x20','statusText','40930565eIqutX','msg','<i\x20class=\x22fa\x20fa-bookmark\x22/>&nbsp;\x20','subscription','325129IJFLNh','Value\x20is\x20not\x20verified','parent','/checkNodeId','$tree','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>','8545960FsUYHn','<div>','Good','opc.tcp://opcuademo.sterfive.com:26543','expanded','suppressed','nsuNodeID','inputs','/Server/ServerStatus/CurrentTime','<i\x20class=\x22fa\x20fa-tag\x22/>1\x20&nbsp;\x20','bp_aliased','focus','<iframe></iframe>','Objects','expandable','7zIpLTY','li[key=\x22','relativePath','text','HasComponent','aliased\x20browsePath:\x20','left','label','input-group','fa-cog','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','options'];_0x5ced=function(){return _0x305615;};return _0x5ced();}function _0x94d8(_0x25251a,_0xfe6c71){const _0x5ced7e=_0x5ced();return _0x94d8=function(_0x94d821,_0x535912){_0x94d821=_0x94d821-0x76;let _0x247022=_0x5ced7e[_0x94d821];return _0x247022;},_0x94d8(_0x25251a,_0xfe6c71);}(function(_0xc2273a,_0x2931f7){const _0x23a63f=_0x94d8,_0x1439ed=_0xc2273a();while(!![]){try{const _0xfcf49e=-parseInt(_0x23a63f(0x17e))/0x1*(parseInt(_0x23a63f(0x106))/0x2)+parseInt(_0x23a63f(0xb7))/0x3*(parseInt(_0x23a63f(0x1aa))/0x4)+parseInt(_0x23a63f(0x7c))/0x5*(parseInt(_0x23a63f(0x145))/0x6)+-parseInt(_0x23a63f(0x193))/0x7*(-parseInt(_0x23a63f(0x184))/0x8)+parseInt(_0x23a63f(0x11a))/0x9*(parseInt(_0x23a63f(0x161))/0xa)+-parseInt(_0x23a63f(0xa0))/0xb*(-parseInt(_0x23a63f(0x119))/0xc)+-parseInt(_0x23a63f(0x17a))/0xd;if(_0xfcf49e===_0x2931f7)break;else _0x1439ed['push'](_0x1439ed['shift']());}catch(_0x30f759){_0x1439ed['push'](_0x1439ed['shift']());}}}(_0x5ced,0x85ab9),(function(){'use strict';const _0x141c59=_0x94d8;function _0x14a9d7(_0x318926,_0x2342de,_0x5d1230,_0x1f074e){function _0x2b7a96(_0x231186){return _0x231186 instanceof _0x5d1230?_0x231186:new _0x5d1230(function(_0x1a0160){_0x1a0160(_0x231186);});}return new(_0x5d1230||(_0x5d1230=Promise))(function(_0xceaa75,_0x45efe8){const _0x4c4045=_0x94d8;function _0x2cd6e5(_0x5661d2){const _0x3cad2c=_0x94d8;try{_0x40f150(_0x1f074e[_0x3cad2c(0xdc)](_0x5661d2));}catch(_0x58834c){_0x45efe8(_0x58834c);}}function _0x887169(_0x3507d7){const _0x41ee63=_0x94d8;try{_0x40f150(_0x1f074e[_0x41ee63(0xb8)](_0x3507d7));}catch(_0x20da05){_0x45efe8(_0x20da05);}}function _0x40f150(_0x494501){const _0x1df760=_0x94d8;_0x494501[_0x1df760(0xd6)]?_0xceaa75(_0x494501[_0x1df760(0xd7)]):_0x2b7a96(_0x494501[_0x1df760(0xd7)])['then'](_0x2cd6e5,_0x887169);}_0x40f150((_0x1f074e=_0x1f074e[_0x4c4045(0x143)](_0x318926,_0x2342de||[]))[_0x4c4045(0xdc)]());});}typeof SuppressedError==='function'?SuppressedError:function(_0x5b4b4f,_0x553343,_0x586944){const _0x5e2d94=_0x94d8;var _0x1ce7a5=new Error(_0x586944);return _0x1ce7a5[_0x5e2d94(0xf1)]=_0x5e2d94(0xfd),_0x1ce7a5[_0x5e2d94(0x12e)]=_0x5b4b4f,_0x1ce7a5[_0x5e2d94(0x189)]=_0x553343,_0x1ce7a5;};const _0xe0c82=_0x141c59(0x152),_0x11aee7='ns=0;i=61',_0x28e2ed='ns=0;i=47',_0x4656e6=_0x141c59(0x159),_0x5866e6=_0x141c59(0xc4),_0x4a9348=_0x141c59(0xb2),_0x139825=_0x141c59(0x167);var _0x24636f;(function(_0x5b2958){const _0x2aa540=_0x141c59;_0x5b2958[_0x5b2958[_0x2aa540(0xd0)]=0x0]=_0x2aa540(0xd0),_0x5b2958[_0x5b2958[_0x2aa540(0x13b)]=0x1]=_0x2aa540(0x13b),_0x5b2958[_0x5b2958['Both']=0x2]=_0x2aa540(0x10b),_0x5b2958[_0x5b2958[_0x2aa540(0xfa)]=0x3]=_0x2aa540(0xfa);}(_0x24636f||(_0x24636f={})));var _0x59d2df;(function(_0x1c4d0d){const _0x3b8470=_0x141c59;_0x1c4d0d[_0x1c4d0d[_0x3b8470(0x114)]=0x0]=_0x3b8470(0x114),_0x1c4d0d[_0x1c4d0d[_0x3b8470(0xac)]=0x1]=_0x3b8470(0xac),_0x1c4d0d[_0x1c4d0d['Variable']=0x2]=_0x3b8470(0x141),_0x1c4d0d[_0x1c4d0d[_0x3b8470(0xa9)]=0x4]=_0x3b8470(0xa9),_0x1c4d0d[_0x1c4d0d[_0x3b8470(0x1ad)]=0x8]=_0x3b8470(0x1ad),_0x1c4d0d[_0x1c4d0d[_0x3b8470(0x151)]=0x10]='VariableType',_0x1c4d0d[_0x1c4d0d[_0x3b8470(0x9c)]=0x20]=_0x3b8470(0x9c),_0x1c4d0d[_0x1c4d0d['DataType']=0x40]=_0x3b8470(0xbc),_0x1c4d0d[_0x1c4d0d[_0x3b8470(0xf3)]=0x80]=_0x3b8470(0xf3);}(_0x59d2df||(_0x59d2df={})));var _0xa99063;(function(_0x1034bd){const _0x3c5321=_0x141c59;_0x1034bd[_0x1034bd[_0x3c5321(0xac)]=0x1]=_0x3c5321(0xac),_0x1034bd[_0x1034bd[_0x3c5321(0x141)]=0x2]='Variable',_0x1034bd[_0x1034bd[_0x3c5321(0xa9)]=0x4]='Method',_0x1034bd[_0x1034bd['ObjectType']=0x8]=_0x3c5321(0x1ad),_0x1034bd[_0x1034bd[_0x3c5321(0x151)]=0x10]=_0x3c5321(0x151),_0x1034bd[_0x1034bd[_0x3c5321(0x9c)]=0x20]=_0x3c5321(0x9c),_0x1034bd[_0x1034bd['DataType']=0x40]=_0x3c5321(0xbc),_0x1034bd[_0x1034bd['View']=0x80]='View';}(_0xa99063||(_0xa99063={})));var _0x4ecf3f;(function(_0x2180be){const _0x11533e=_0x141c59;_0x2180be[_0x2180be[_0x11533e(0x9c)]=0x1]='ReferenceType',_0x2180be[_0x2180be[_0x11533e(0xa4)]=0x2]=_0x11533e(0xa4),_0x2180be[_0x2180be['NodeClass']=0x4]=_0x11533e(0x107),_0x2180be[_0x2180be['BrowseName']=0x8]=_0x11533e(0xdb),_0x2180be[_0x2180be[_0x11533e(0xa7)]=0x10]='DisplayName',_0x2180be[_0x2180be[_0x11533e(0x155)]=0x20]=_0x11533e(0x155);}(_0x4ecf3f||(_0x4ecf3f={})));function _0x8f3607(_0x308244){const _0x1b59b5=_0x141c59;switch(_0x308244){case'Organizes':return _0xe0c82;case'HasProperty':return _0x4656e6;case _0x1b59b5(0x197):return _0x28e2ed;case _0x1b59b5(0x11b):return _0x5866e6;case _0x1b59b5(0xe2):return _0x4a9348;case _0x1b59b5(0xc9):return _0x139825;}}const _0x11296d=_0x308a7d=>{const _0x5ccfb3=_0x141c59;switch(_0x308a7d[_0x5ccfb3(0x156)]){case _0x5ccfb3(0xac):if(_0x308a7d[_0x5ccfb3(0x157)]===_0xe0c82);if(_0x308a7d['typeDefinition']===_0x11aee7||_0x308a7d['referenceTypeId']===_0x5ccfb3(0x104))return{'icon':_0x5ccfb3(0xc0),'color':'rgba(61,\x2060,\x204,\x200.525)'};return{'icon':'fa-object-group','color':_0x5ccfb3(0x144)};case _0x5ccfb3(0x141):if(_0x308a7d[_0x5ccfb3(0x157)]===_0x28e2ed)return{'icon':_0x5ccfb3(0x9b),'color':'SteelBlue'};else return _0x308a7d[_0x5ccfb3(0x157)]===_0x4656e6?{'icon':_0x5ccfb3(0x9b),'color':'DodgerBlue'}:{'icon':_0x5ccfb3(0x9b),'color':'CadetBlue'};case'Method':return{'icon':_0x5ccfb3(0x19c),'color':_0x5ccfb3(0x169)};case'ObjectType':return{'icon':_0x5ccfb3(0x136),'color':_0x5ccfb3(0x98)};case'VariableType':return{'icon':'fa-sliders','color':'DarkOrange'};case'DataType':return{'icon':'fa-text-width','color':_0x5ccfb3(0x14f)};}return{'icon':_0x5ccfb3(0x13f),'color':_0x5ccfb3(0x147)};},_0x259b6a=(_0x199d0b,_0x5467fd,_0x36bfbd)=>_0x14a9d7(void 0x0,[_0x199d0b,_0x5467fd,_0x36bfbd],void 0x0,function*({endpointNode:_0xf5c35f,endpoint:_0x3b8a45,baseUrl:_0x40e5ec},_0x3c2b1e,_0x5a9c35){const _0xc0ad6c=_0x141c59,_0x44f2d1=_0x40e5ec+_0xc0ad6c(0x177),_0x40fc6=_0x44f2d1+'/browse',_0x247a91=Object[_0xc0ad6c(0x137)](Object['assign']({},_0x5a9c35),{'nodeId':_0x3c2b1e,'resultMask':0x3f}),_0x289275=yield fetch(_0x40fc6,{'method':'POST','body':JSON[_0xc0ad6c(0x85)]({'endpointNode':_0xf5c35f,'endpoint':_0x3b8a45,'browseDescription':_0x247a91}),'headers':{'Content-Type':_0xc0ad6c(0xfe)}});if(_0x289275[_0xc0ad6c(0x1a1)]!==0xc8)return console[_0xc0ad6c(0x12f)](_0xc0ad6c(0xdf),_0x289275[_0xc0ad6c(0x1a1)],_0x289275[_0xc0ad6c(0x179)]),{'references':[]};const _0x48c92c=yield _0x289275[_0xc0ad6c(0x109)](),_0x2d9090=_0x48c92c[_0xc0ad6c(0xc3)][_0xc0ad6c(0x7e)]||[];return{'references':_0x2d9090};}),_0x45cabd={'referenceTypeId':_0x8f3607(_0x141c59(0x11b)),'includeSubtypes':!![],'browseDirection':_0x24636f[_0x141c59(0xd0)],'nodeClassMask':_0x59d2df['Variable']|_0x59d2df[_0x141c59(0xac)]|_0x59d2df['Method'],'resultMask':0x3f},_0x3cbbdd={'referenceTypeId':_0x8f3607(_0x141c59(0x170)),'includeSubtypes':!![],'browseDirection':_0x24636f[_0x141c59(0xd0)],'nodeClassMask':_0x59d2df[_0x141c59(0x141)]|_0x59d2df[_0x141c59(0xac)]|_0x59d2df[_0x141c59(0xa9)],'resultMask':0x3f},_0x3a32a9=(_0x298bd5,_0x1ef5aa)=>_0x14a9d7(void 0x0,[_0x298bd5,_0x1ef5aa],void 0x0,function*({endpointNode:_0x493edc,endpoint:_0x22621b,baseUrl:_0x51c85c},{nodeId:_0x23b467,rootNodeId:_0x2f7121,isType:_0x592620}){const _0x4cb484=_0x141c59,_0x4569b6=_0x51c85c+_0x4cb484(0x177),_0x2dd1b2=_0x4569b6+'/walk-backward',_0x436291=yield fetch(_0x2dd1b2,{'method':_0x4cb484(0x140),'body':JSON['stringify']({'endpointNode':_0x493edc,'endpoint':_0x22621b,'nodeId':_0x23b467,'rootNodeId':_0x2f7121,'isType':_0x592620}),'headers':{'Content-Type':_0x4cb484(0xfe)}});if(_0x436291['status']!==0xc8)return null;const _0x29a774=yield _0x436291[_0x4cb484(0x109)]();return _0x29a774[_0x4cb484(0x16c)];}),_0x7eef25=(_0x5733c8,_0x39ce73)=>{const _0x25eb38=_0x141c59;if(_0x5733c8[_0x25eb38(0x10e)]!==_0x25eb38(0x186))return _0x5733c8['requestedNodeId'];switch(_0x39ce73){case _0x25eb38(0x16c):return _0x5733c8[_0x25eb38(0x14b)];case _0x25eb38(0x8f):return _0x5733c8[_0x25eb38(0x18e)]||_0x5733c8[_0x25eb38(0x14b)];case _0x25eb38(0x148):return _0x5733c8['nodeId_aliased']||_0x5733c8[_0x25eb38(0x95)];case _0x25eb38(0x18a):return _0x5733c8[_0x25eb38(0x95)];default:case _0x25eb38(0x1ac):return _0x5733c8[_0x25eb38(0x1ac)];}},_0x14362b=_0x47e7f0=>{const _0x5056e8=_0x141c59;if(_0x47e7f0[_0x5056e8(0x10e)]!==_0x5056e8(0x186))return _0x5056e8(0x78)+_0x47e7f0[_0x5056e8(0x10e)];else{let _0x1ce85c=[];return _0x1ce85c[_0x5056e8(0x19f)](_0x5056e8(0xd4)+_0x47e7f0[_0x5056e8(0x1ac)]),_0x1ce85c[_0x5056e8(0x19f)]('browse\x20path:\x20'+_0x47e7f0[_0x5056e8(0x14b)]),_0x1ce85c[_0x5056e8(0x19f)](_0x5056e8(0x84)+_0x59d2df[_0x47e7f0[_0x5056e8(0x156)]]),_0x47e7f0[_0x5056e8(0x95)]&&_0x1ce85c['push'](_0x5056e8(0x129)+_0x47e7f0[_0x5056e8(0x95)]),_0x47e7f0[_0x5056e8(0xce)]&&_0x1ce85c['push'](_0x5056e8(0x162)+_0x47e7f0[_0x5056e8(0xce)]),_0x47e7f0['bp_indexed']&&_0x1ce85c[_0x5056e8(0x19f)](_0x5056e8(0x198)+_0x47e7f0[_0x5056e8(0x18e)]),_0x1ce85c[_0x5056e8(0x99)]('\x0a');}};function _0x4501d7(_0x41b780){const _0x5bbd50=_0x141c59;if(_0x41b780['match'](/^nsu=/))return _0x5bbd50(0x18a);if(_0x41b780[_0x5bbd50(0x127)](/^(ns=.*;)?(i|b|s|g)=/))return'nodeId';if(_0x41b780[_0x5bbd50(0x127)](/^nsa=/))return _0x5bbd50(0x148);if(_0x41b780[_0x5bbd50(0x127)](/^(\/|\.)[0-9]+:/))return _0x5bbd50(0x16c);if(_0x41b780[_0x5bbd50(0x127)](/^(\/|\.).*:/))return _0x5bbd50(0x16c);}function _0x1d81d3(_0x317a35){const _0x2519c1=_0x141c59,_0x4915d0=_0x4501d7(_0x317a35);switch(_0x4915d0){case _0x2519c1(0x1ac):return'n';case _0x2519c1(0x148):return'na';case'nsuNodeID':return _0x2519c1(0x122);case _0x2519c1(0x16c):return'b';case _0x2519c1(0x8f):return'ab';default:return't';}}function _0x44a65c(_0x4106b5){const _0x572f92=_0x141c59;let _0x51fa5;switch(_0x4106b5){case'n':_0x51fa5='nodeId';break;case'na':_0x51fa5='aliasedNodeId';break;case _0x572f92(0x122):_0x51fa5='nsuNodeID';break;case'b':_0x51fa5=_0x572f92(0x16c);break;case'ab':_0x51fa5=_0x572f92(0x8f);break;}return _0x51fa5;}function _0x2f719f(_0x4aac63){const _0x344342=_0x141c59;switch(_0x4aac63){case _0x344342(0x1ac):return'n';case _0x344342(0x148):return'na';case'nsuNodeID':return'nsu';case'browsePath':return'b';case _0x344342(0x8f):return'ab';default:return't';}}const _0x4439f0=(_0x4da1f3,_0xafeea0)=>_0x14a9d7(void 0x0,[_0x4da1f3,_0xafeea0],void 0x0,function*({endpointNode:_0x24d2ca,endpoint:_0x525e7c,baseUrl:_0xcb3a45},_0x5e91fa){const _0x263403=_0x141c59,_0x3cc15c=_0xcb3a45+_0x263403(0x177),_0x46e088=_0x3cc15c+_0x263403(0x181),_0xfc281c=_0x24d2ca['id'],_0x4e8b02=RED['nodes'][_0x263403(0x1a8)](_0xfc281c);console[_0x263403(0x12f)](_0x4e8b02['namespaceAliases']),_0x4e8b02['namespaceAliases'];const _0x2cdfe0=_0x24d2ca['namespaceAliases'],_0x55b81a=yield fetch(_0x46e088,{'method':_0x263403(0x140),'body':JSON[_0x263403(0x85)]({'endpointNode':_0x24d2ca,'endpoint':_0x525e7c,'nodeId':_0x5e91fa,'namespaceAliases':_0x2cdfe0}),'headers':{'Content-Type':'application/json'}}),_0x53569a=yield _0x55b81a[_0x263403(0x109)]();return{'json':_0x53569a,'data':_0x55b81a};}),_0x80dc1d=(_0x343863,_0x2af763,_0x312ee1,_0x3f2f26)=>_0x14a9d7(void 0x0,[_0x343863,_0x2af763,_0x312ee1,_0x3f2f26],void 0x0,function*({endpointNode:_0x2e3e0a,endpoint:_0x486d40,baseUrl:_0x1984b3},_0x515152,_0x33065c,_0xb321da){const _0x322576=_0x141c59,_0x5cafd3=_0x33065c[_0x322576(0x128)](),{json:_0x11b07f,data:_0x4cf322}=yield _0x4439f0({'endpointNode':_0x2e3e0a,'endpoint':_0x486d40,'baseUrl':_0x1984b3},_0x5cafd3),_0xdff3ba=(_0x47f5b1,_0x1b315b)=>{const _0x7f0c11=_0x322576;_0xb321da[_0x7f0c11(0x196)](_0x47f5b1)[_0x7f0c11(0x16f)](_0x7f0c11(0x121))[_0x7f0c11(0x16f)](_0x1b315b),_0xb321da['show'](),setTimeout(()=>{const _0x289715=_0x7f0c11;_0xb321da[_0x289715(0x86)](_0x1b315b),_0xb321da['hide']();},0xbb8);};if(_0x4cf322[_0x322576(0x1a1)]!==0xc8)return _0xdff3ba(_0x322576(0xfc)+_0x5cafd3,_0x322576(0xf2)),![];else{if(_0x11b07f[_0x322576(0x10e)][_0x322576(0x127)](/Good/)){const _0x2e5126=_0x14362b(_0x11b07f);_0x33065c[_0x322576(0x149)](_0x322576(0x15d),_0x2e5126);const _0x1df469=_0x7eef25(_0x11b07f,_0x515152);return _0x33065c['val'](_0x1df469),_0x33065c['trigger'](_0x322576(0x7b)),_0xdff3ba(_0x322576(0x186),'ok'),!![];}else return _0x33065c[_0x322576(0x128)](''+_0x5cafd3),_0xdff3ba(_0x11b07f[_0x322576(0x10e)]+'\x20'+_0x4cf322['statusText'],_0x322576(0xf2)),![];}});function _0x4cb7ba(_0x222fa1,_0x36fe98){return _0x14a9d7(this,void 0x0,void 0x0,function*(){const _0x21294f=_0x94d8,_0x31d5c0=_0x222fa1[_0x21294f(0xcd)](_0x21294f(0xd7)),_0xd1b747=yield _0x259b6a(_0x36fe98,_0x31d5c0,_0x45cabd),_0x29397d=yield _0x259b6a(_0x36fe98,_0x31d5c0,_0x3cbbdd);return{'references':[..._0xd1b747[_0x21294f(0x7e)],..._0x29397d[_0x21294f(0x7e)]]};});}const _0x5a08e6={'referenceTypeId':_0x8f3607(_0x141c59(0xe2)),'includeSubtypes':!![],'browseDirection':_0x24636f[_0x141c59(0xd0)],'nodeClassMask':_0x59d2df[_0x141c59(0x9c)]|_0x59d2df[_0x141c59(0x1ad)]|_0x59d2df['DataType']|_0x59d2df[_0x141c59(0x151)],'resultMask':0x3f};function _0x536769(_0x31e194,_0x17dfb8){return _0x14a9d7(this,void 0x0,void 0x0,function*(){const _0x21a8e9=_0x94d8,_0x57ded8=_0x31e194[_0x21a8e9(0xcd)]('value'),_0x51fe65=yield _0x259b6a(_0x17dfb8,_0x57ded8,_0x5a08e6);return _0x51fe65;});}const _0x2334fc=_0x1dd564=>{const _0x39c915=_0x141c59;var _0xe7ccb6,_0x341742,_0x330620,_0x33fa4b;if(!_0x1dd564||!_0x1dd564[_0x39c915(0x1ac)]){const _0x2aa3d4=$(_0x39c915(0x154));return _0x2aa3d4;}const _0x1e31a6=_0x1dd564[_0x39c915(0x1ac)][_0x39c915(0x15c)](),_0x3d4683=((_0xe7ccb6=_0x1dd564[_0x39c915(0x9e)])===null||_0xe7ccb6===void 0x0?void 0x0:_0xe7ccb6[_0x39c915(0x196)])||((_0x341742=_0x1dd564[_0x39c915(0x16b)])===null||_0x341742===void 0x0?void 0x0:_0x341742[_0x39c915(0xf1)])||_0x1dd564['nodeId']['toString'](),{icon:_0x547718,color:_0x4103db}=_0x11296d(_0x1dd564),_0x202a27='('+_0x1dd564[_0x39c915(0x1ac)][_0x39c915(0x15c)]()+')\x20'+(((_0x330620=_0x1dd564[_0x39c915(0x16b)])===null||_0x330620===void 0x0?void 0x0:_0x330620['name'])||((_0x33fa4b=_0x1dd564[_0x39c915(0x9e)])===null||_0x33fa4b===void 0x0?void 0x0:_0x33fa4b[_0x39c915(0x196)])||''),_0x575d00=$(_0x39c915(0xeb)+_0x1dd564[_0x39c915(0x1ac)]['toString']()+_0x39c915(0x11e)+_0x202a27+_0x39c915(0x90)+_0x547718+_0x39c915(0xe8)+_0x4103db+_0x39c915(0x112)+_0x3d4683+_0x39c915(0x1a3));return _0x575d00['addClass'](_0x39c915(0x192)),_0x575d00[_0x39c915(0xcd)](_0x39c915(0xd7),_0x1e31a6),_0x575d00[_0x39c915(0xcd)](_0x39c915(0x120),_0x1dd564),_0x575d00;},_0x4fc279=(_0x350e8d,_0x5180a3)=>{const _0x44bcf9=_0x141c59;return _0x5180a3['find'](_0x44bcf9(0x194)+_0x350e8d+'\x22]');},_0x43f1cc=(_0x178f3c,_0x147648)=>{const _0xc523dc=_0x141c59;_0x178f3c[_0xc523dc(0x182)][_0xc523dc(0x113)](_0xc523dc(0xfb))[_0xc523dc(0x86)](_0xc523dc(0xaa)),_0x147648[_0xc523dc(0x113)](_0xc523dc(0x1ab))[_0xc523dc(0x16f)]('selected');},_0x4cad72=(_0x1cfe4e,_0x194723,_0x53e9eb)=>_0x14a9d7(void 0x0,void 0x0,void 0x0,function*(){const _0xe7099d=_0x141c59;let _0x484bd7=_0x53e9eb[_0xe7099d(0xde)](':first');_0x194723[_0xe7099d(0x195)]['elements']||[];const _0x121137=_0x194723[_0xe7099d(0x1ae)]||[];if(_0x121137[_0xe7099d(0x176)]===0x0)return;for(const _0x3d1cee of _0x121137){_0x484bd7[_0xe7099d(0xec)](_0xe7099d(0x192))&&(yield _0x1be16a(_0x1cfe4e,_0x484bd7));const _0x175426=_0x4fc279(_0x3d1cee,_0x484bd7);if(_0x175426[_0xe7099d(0x176)]===0x0)return;_0x484bd7=_0x175426;}_0x43f1cc(_0x1cfe4e,_0x484bd7),_0xa0b3a3(_0x1cfe4e[_0xe7099d(0x153)],_0x484bd7);});function _0xa0b3a3(_0x7608b1,_0x3851f0){const _0x21d981=_0x141c59,_0xa4851=_0x3851f0[_0x21d981(0x125)]()[_0x21d981(0x8c)],_0x506945=_0x7608b1[_0x21d981(0x1a6)]();if(_0x506945==undefined)return;const _0x3c20a0=_0x506945+_0xa4851-_0x7608b1['height']()/0x2+_0x3851f0['height']()/0x2;_0x7608b1[_0x21d981(0xb5)]({'scrollTop':_0x3c20a0},0x1f4);}const _0x4621a4=(_0x130c84,_0xe38b7a)=>_0x14a9d7(void 0x0,void 0x0,void 0x0,function*(){const _0x46dd97=_0x141c59,_0x22d7a7=_0x130c84['$input']['val'](),_0x453dea={'nodeId':_0x22d7a7,'rootNodeId':_0xe38b7a[_0x46dd97(0x1ac)],'isType':_0x130c84[_0x46dd97(0x19e)]['isTypeRef']||![]},_0x3b7781=_0xdd74c9(_0x130c84),_0xeef305=yield _0x3a32a9(_0x3b7781,_0x453dea);if(!_0xeef305)return;yield _0x4cad72(_0x130c84,_0xeef305,_0x130c84['$tree']);});function _0x3dcb51(_0x59b834,_0x41c31d,_0x424eae,_0x18d500){return _0x14a9d7(this,void 0x0,void 0x0,function*(){const _0x3c9d9a=_0x94d8;if(_0x41c31d[_0x3c9d9a(0xec)](_0x3c9d9a(0x82))){console[_0x3c9d9a(0x12f)](_0x3c9d9a(0x173));return;}if(_0x41c31d['hasClass']('loading')){console[_0x3c9d9a(0x12f)]('already\x20loading');return;}_0x41c31d[_0x3c9d9a(0x16f)](_0x3c9d9a(0xcc)),_0x41c31d[_0x3c9d9a(0x96)](_0x3c9d9a(0x102));try{_0x41c31d[_0x3c9d9a(0xde)]('ul')[_0x3c9d9a(0x15a)]();const {references:_0x10cfff}=yield _0x424eae(_0x41c31d,_0x18d500);_0x10cfff[_0x3c9d9a(0xf9)]((_0x5d9d28,_0x37f5f2)=>{const _0x4160c3=_0x3c9d9a;var _0x5e930f,_0x3e0187;return(((_0x5e930f=_0x5d9d28[_0x4160c3(0x16b)])===null||_0x5e930f===void 0x0?void 0x0:_0x5e930f[_0x4160c3(0xf1)])||'')[_0x4160c3(0xe9)](((_0x3e0187=_0x37f5f2[_0x4160c3(0x16b)])===null||_0x3e0187===void 0x0?void 0x0:_0x3e0187['name'])||'');});for(const _0x3707c9 of _0x10cfff){if(_0x59b834[_0x3c9d9a(0x19e)][_0x3c9d9a(0xe4)]&&!_0x59b834['options'][_0x3c9d9a(0xe4)](_0x3707c9))continue;const _0xa70cee=_0x2334fc(_0x3707c9);_0x41c31d[_0x3c9d9a(0xde)]('ul')[_0x3c9d9a(0x96)](_0xa70cee);}_0x41c31d[_0x3c9d9a(0x16f)]('fetched');}catch(_0xeb94b0){_0x41c31d[_0x3c9d9a(0xde)]('ul')[_0x3c9d9a(0x96)](_0x3c9d9a(0x1a7)+_0xeb94b0[_0x3c9d9a(0x142)]+_0x3c9d9a(0x12d)),console[_0x3c9d9a(0x12f)](_0x3c9d9a(0x12c),_0xeb94b0);}_0x41c31d[_0x3c9d9a(0x113)](_0x3c9d9a(0xa6))[_0x3c9d9a(0x130)](),_0x41c31d[_0x3c9d9a(0x86)]('loading');});}function _0xdd74c9(_0x3d0d76){const _0x1f1056=_0x141c59,_0x3a1a3a={'baseUrl':_0x3d0d76[_0x1f1056(0x19e)][_0x1f1056(0x164)],'endpointNode':typeof _0x3d0d76[_0x1f1056(0x19e)]['endpointNode']===_0x1f1056(0xe3)?_0x3d0d76[_0x1f1056(0x19e)]['endpointNode']():_0x3d0d76[_0x1f1056(0x19e)][_0x1f1056(0xea)],'endpoint':typeof _0x3d0d76[_0x1f1056(0x19e)][_0x1f1056(0xb1)]===_0x1f1056(0xe3)?_0x3d0d76[_0x1f1056(0x19e)][_0x1f1056(0xb1)]():_0x3d0d76[_0x1f1056(0x19e)][_0x1f1056(0xb1)]};return _0x3a1a3a;}function _0x1be16a(_0x1f2150,_0x125fbe){return _0x14a9d7(this,void 0x0,void 0x0,function*(){const _0x416445=_0x94d8;if(_0x125fbe[_0x416445(0xec)](_0x416445(0x82))){_0x125fbe[_0x416445(0x86)](_0x416445(0x192))['addClass'](_0x416445(0x188)),_0x125fbe[_0x416445(0xde)]('ul')['toggle']();return;}const _0x33e57e=_0xdd74c9(_0x1f2150),_0x4ee20d=!_0x1f2150[_0x416445(0x19e)][_0x416445(0x9f)]?_0x4cb7ba:_0x536769;try{yield _0x3dcb51(_0x1f2150,_0x125fbe,_0x4ee20d,_0x33e57e),_0x125fbe[_0x416445(0x86)](_0x416445(0x192))['addClass'](_0x416445(0x188));}catch(_0xcec71b){_0x125fbe[_0x416445(0x86)](_0x416445(0x192))[_0x416445(0x16f)](_0x416445(0x188)),console[_0x416445(0x12f)]('error',_0xcec71b);}});}const _0x45e103={'browseName':{'namespaceIndex':0x0,'name':_0x141c59(0x191)},'nodeClass':_0x141c59(0xac),'nodeId':_0x141c59(0x116),'displayName':{'text':'Objects'},'typeDefinition':_0x11aee7},_0x367e06=()=>{const _0x231fa2=_0x141c59;$['widget']('sterfive.nodeBrowser',{'options':{'endpointNode':()=>({'endpoint':_0x231fa2(0x187)}),'endpoint':()=>undefined,'parentNode':()=>_0x45e103,'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x14a9d7(this,void 0x0,void 0x0,function*(){const _0x22680f=_0x94d8,_0x30c6f8=this;if(_0x30c6f8[_0x22680f(0xc8)]==undefined){const _0x1e08b2=typeof _0x30c6f8[_0x22680f(0x19e)][_0x22680f(0x14c)]==='function'?_0x30c6f8['options']['parentNode'][_0x22680f(0x111)](_0x30c6f8):_0x30c6f8['options']['parentNode'];if(_0x1e08b2 instanceof Promise){const _0x532c7b=yield _0x1e08b2;_0x30c6f8[_0x22680f(0xc8)]=_0x532c7b;}else _0x30c6f8[_0x22680f(0xc8)]=_0x1e08b2;}return _0x30c6f8[_0x22680f(0xc8)]||_0x45e103;});},'reset'(){return _0x14a9d7(this,void 0x0,void 0x0,function*(){const _0x115255=_0x94d8,_0x4babea=this,_0x58f95e=_0x4babea;_0x58f95e[_0x115255(0xc8)]=undefined,_0x4babea['$tree'][_0x115255(0x15a)]();const _0x18829e=yield this[_0x115255(0x166)](),_0x5c76cf=_0x2334fc(_0x18829e);_0x4babea[_0x115255(0x182)][_0x115255(0x96)](_0x5c76cf),_0x4babea[_0x115255(0xe6)]=_0x18829e;});},'verify'(_0x21767c){const _0x22bd99=_0x231fa2,_0x171ebc=this,_0x1a1a46=_0xdd74c9(_0x171ebc);_0x80dc1d(_0x1a1a46,_0x21767c,_0x171ebc['$input'],_0x171ebc[_0x22bd99(0xc6)])['then'](_0x3a1fb5=>{const _0x497d4b=_0x22bd99;!_0x3a1fb5?_0x171ebc[_0x497d4b(0x8a)][_0x497d4b(0x16f)](_0x497d4b(0x88)):_0x171ebc[_0x497d4b(0x8a)][_0x497d4b(0x86)](_0x497d4b(0x88));});},'_hideMenu'(_0x407be0){const _0x5ddc81=_0x231fa2,_0x3e1ade=this;$(document)['off'](_0x5ddc81(0xd2)),_0x407be0['hide'](),_0x407be0[_0x5ddc81(0xdd)]({'height':_0x5ddc81(0xd9)});if(_0x407be0[_0x5ddc81(0x91)][_0x5ddc81(0x14e)]){var _0x9e6ec3=[];_0x407be0[_0x5ddc81(0x113)](_0x5ddc81(0x110))['each'](function(){const _0x58600e=_0x5ddc81;$(this)[_0x58600e(0x14d)](_0x58600e(0x1a2))&&_0x9e6ec3['push']($(this)['data'](_0x58600e(0xd7)));}),_0x407be0['callback'](_0x9e6ec3);}_0x3e1ade[_0x5ddc81(0xb4)]['is'](':visible')?_0x3e1ade[_0x5ddc81(0xef)][_0x5ddc81(0x15e)](_0x5ddc81(0x18f)):_0x3e1ade['$selectTrigger'][_0x5ddc81(0x15e)](_0x5ddc81(0x18f));},'_createMenu'(_0x4c32e8,_0x599ed4,_0x21cbb9){const _0x35f3a2=_0x231fa2;var _0xf5b997=this;const _0x2bf329=$(_0x35f3a2(0x185))[_0x35f3a2(0x16f)](_0x35f3a2(0xab));return _0x2bf329[_0x35f3a2(0x91)]=_0x599ed4,_0x2bf329[_0x35f3a2(0x8b)]=_0x21cbb9,_0x4c32e8['forEach'](_0x1b8089=>{const _0xae9acc=_0x35f3a2;typeof _0x1b8089===_0xae9acc(0x7a)&&(_0x1b8089={'value':_0x1b8089,'label':_0x1b8089});var _0x1353d2=$(_0xae9acc(0x115))[_0xae9acc(0x149)]('value',_0x1b8089[_0xae9acc(0xd7)])[_0xae9acc(0x134)](_0x2bf329);_0x1b8089[_0xae9acc(0x19a)]&&_0x1353d2[_0xae9acc(0x196)](_0x1b8089[_0xae9acc(0x19a)]);_0x1b8089[_0xae9acc(0x15d)]&&_0x1353d2[_0xae9acc(0x14d)]('title',_0x1b8089[_0xae9acc(0x15d)]);if(_0x1b8089['icon']){if(_0x1b8089[_0xae9acc(0x12a)][_0xae9acc(0xf8)]('<')===0x0)$(_0x1b8089[_0xae9acc(0x12a)])['prependTo'](_0x1353d2);else _0x1b8089[_0xae9acc(0x12a)][_0xae9acc(0xf8)]('/')!==-0x1?$(_0xae9acc(0x12b),{'class':_0xae9acc(0xf4),'style':_0xae9acc(0xed)+_0x1b8089[_0xae9acc(0x12a)]+_0xae9acc(0x101)+_0x1b8089[_0xae9acc(0x12a)]+');'})['prependTo'](_0x1353d2):$(_0xae9acc(0x12b),{'class':'red-ui-typedInput-icon\x20'+_0x1b8089['icon']})['prependTo'](_0x1353d2);}else _0x1353d2[_0xae9acc(0xdd)]({'paddingLeft':_0xae9acc(0x100)});!_0x1b8089[_0xae9acc(0x12a)]&&!_0x1b8089[_0xae9acc(0x19a)]&&_0x1353d2[_0xae9acc(0x196)](_0x1b8089[_0xae9acc(0xd7)]);var _0x3dc093;_0x599ed4[_0xae9acc(0x14e)]&&(_0x3dc093=$(_0xae9acc(0xb6))[_0xae9acc(0xdd)](_0xae9acc(0x76),_0xae9acc(0xe0))[_0xae9acc(0xcd)](_0xae9acc(0xd7),_0x1b8089[_0xae9acc(0xd7)])['prependTo'](_0x1353d2)['on'](_0xae9acc(0xa5),function(_0x365b5a){const _0x483ccc=_0xae9acc;_0x365b5a[_0x483ccc(0xa8)]();})),_0x1353d2['on']('click',function(_0x43644b){const _0x16ee7f=_0xae9acc;_0x43644b[_0x16ee7f(0xa8)](),_0x43644b['stopPropagation'](),!_0x599ed4[_0x16ee7f(0x14e)]?(_0x21cbb9(_0x1b8089[_0x16ee7f(0xd7)]),_0xf5b997[_0x16ee7f(0xc5)](_0x2bf329)):_0x3dc093[_0x16ee7f(0x14d)](_0x16ee7f(0x1a2),!_0x3dc093[_0x16ee7f(0x14d)](_0x16ee7f(0x1a2)));});}),_0x2bf329['css']({'display':_0x35f3a2(0xe0)}),_0x2bf329['on'](_0x35f3a2(0xd3),function(_0x558522){const _0x5e6951=_0x35f3a2;if(_0x558522[_0x5e6951(0x79)]===0x28)_0x558522[_0x5e6951(0xa8)](),$(this)[_0x5e6951(0xde)](_0x5e6951(0x135))['next']()[_0x5e6951(0x15e)](_0x5e6951(0x18f));else{if(_0x558522['keyCode']===0x26)_0x558522[_0x5e6951(0xa8)](),$(this)[_0x5e6951(0xde)](':focus')[_0x5e6951(0xe1)]()[_0x5e6951(0x15e)](_0x5e6951(0x18f));else _0x558522['keyCode']===0x1b&&(_0x558522['preventDefault'](),_0xf5b997[_0x5e6951(0xc5)](_0x2bf329));}_0x558522['stopPropagation']();}),_0x2bf329;},'disarmClick':![],'_showMenu'(_0x56a0a0,_0x3841e6){const _0x511170=_0x231fa2;if(this[_0x511170(0x1a5)]){this[_0x511170(0x1a5)]=![];return;}var _0x14027a=this,_0x1f5633=_0x3841e6[_0x511170(0x1a0)](),_0x4c1655=_0x3841e6[_0x511170(0x108)](),_0x24d9dd=_0x56a0a0[_0x511170(0x108)](),_0x5781a1=_0x4c1655+_0x1f5633['top'];_0x5781a1+_0x24d9dd-$(document)[_0x511170(0x1a6)]()>$(window)['height']()&&(_0x5781a1-=_0x5781a1+_0x24d9dd-$(window)[_0x511170(0x108)]()+0x5),_0x5781a1<0x0&&(_0x56a0a0[_0x511170(0x108)](_0x24d9dd+_0x5781a1),_0x5781a1=0x0),_0x56a0a0[_0x511170(0xdd)]({'top':_0x5781a1+'px','left':_0x1f5633[_0x511170(0x199)]+'px'}),_0x56a0a0[_0x511170(0xb9)](0x64),this[_0x511170(0xf7)](function(){const _0x55f652=_0x511170;_0x14027a['$uiSelect'][_0x55f652(0x16f)](_0x55f652(0x92)),$(document)['on']('mousedown.red-ui-typedInput-close-property-select',function(_0x191656){const _0x5ee261=_0x55f652;!$(_0x191656[_0x5ee261(0x16d)])[_0x5ee261(0xbb)](_0x56a0a0)[_0x5ee261(0x176)]&&_0x14027a[_0x5ee261(0xc5)](_0x56a0a0),$(_0x191656['target'])[_0x5ee261(0xbb)](_0x3841e6)['length']&&(_0x14027a[_0x5ee261(0x1a5)]=!![],_0x191656[_0x5ee261(0xa8)]());});});},'_showTypeMenu'(){const _0x558a6e=_0x231fa2,_0x5cf842=this;this[_0x558a6e(0xa3)](_0x5cf842['$menu'],_0x5cf842[_0x558a6e(0x8a)]),_0x5cf842[_0x558a6e(0x153)][_0x558a6e(0x9d)]();const _0x459bfa=_0x5cf842[_0x558a6e(0x15b)];var _0x4841c9=_0x5cf842[_0x558a6e(0x8e)]['find'](_0x558a6e(0xff)+_0x459bfa+'\x27');setTimeout(function(){const _0x3ddda7=_0x558a6e;_0x4841c9[_0x3ddda7(0x15e)](_0x3ddda7(0x18f));},0x78);},'_initMenu'(){const _0x193f27=_0x231fa2,_0x502cc4=this;_0x502cc4['$selectTrigger']['attr'](_0x193f27(0x93),-0x1),_0x502cc4[_0x193f27(0xca)]['on'](_0x193f27(0x103),function(_0x375d71){const _0x35018b=_0x193f27;_0x375d71[_0x35018b(0xa8)]();});_0x502cc4[_0x193f27(0x8e)]&&_0x502cc4[_0x193f27(0x8e)][_0x193f27(0x130)]();const _0x463b82=[{'label':_0x193f27(0x196),'value':'t','title':_0x193f27(0x17f),'icon':_0x193f27(0x105)},{'label':_0x193f27(0x158),'value':_0x193f27(0x17b),'title':_0x193f27(0xf5),'icon':_0x193f27(0xba)},{'label':_0x193f27(0xcb),'value':'n','icon':_0x193f27(0x18d)},{'label':_0x193f27(0x7d),'value':'na','icon':_0x193f27(0x17c)},{'label':'NodeId\x20with\x20namespace\x20Urn','value':_0x193f27(0x122),'icon':_0x193f27(0xc2)},{'label':_0x193f27(0xb3),'value':'b','icon':_0x193f27(0xd1)},{'label':_0x193f27(0x124),'value':'ab','icon':_0x193f27(0xf0)}],_0x4635b6=_0x1d81d3(_0x502cc4[_0x193f27(0xef)][_0x193f27(0x128)]()),_0x31c97a=_0x463b82[_0x193f27(0x113)](_0x320fa1=>_0x320fa1[_0x193f27(0xd7)]===_0x4635b6);_0x502cc4[_0x193f27(0x13d)]['empty']()[_0x193f27(0x96)](_0x193f27(0x138)+((_0x31c97a===null||_0x31c97a===void 0x0?void 0x0:_0x31c97a[_0x193f27(0x15d)])||'')+_0x193f27(0x178)+((_0x31c97a===null||_0x31c97a===void 0x0?void 0x0:_0x31c97a['icon'])||'')+_0x193f27(0x10c)),_0x502cc4[_0x193f27(0x15b)]=_0x4635b6;const _0x2713d5=this;_0x502cc4[_0x193f27(0x8e)]=this[_0x193f27(0x160)](_0x463b82,{},_0x860af5=>{const _0x117070=_0x193f27,_0x20cf7d=_0x44a65c(_0x860af5);_0x20cf7d&&_0x2713d5['verify'](_0x20cf7d);const _0x41e612=_0x463b82[_0x117070(0x113)](_0x513389=>_0x513389[_0x117070(0xd7)]===_0x860af5);_0x502cc4['selectedMenuItem']=_0x860af5,_0x502cc4['$selectLabel'][_0x117070(0x15a)]()[_0x117070(0x96)](_0x117070(0x138)+((_0x41e612===null||_0x41e612===void 0x0?void 0x0:_0x41e612['title'])||'')+'>&nbsp;\x20'+((_0x41e612===null||_0x41e612===void 0x0?void 0x0:_0x41e612[_0x117070(0x12a)])||'')+'</span>');}),_0x502cc4['$menu'][_0x193f27(0x134)](document[_0x193f27(0x174)]),_0x502cc4[_0x193f27(0x8e)][_0x193f27(0x9d)](),_0x502cc4[_0x193f27(0xca)]['show']();},'mode'(){const _0x17e5d4=this;return _0x44a65c(_0x17e5d4['selectedMenuItem']);},'setMode'(_0x4e2b03){const _0xaa53fd=this,_0x3ccb1c=_0x2f719f(_0x4e2b03);_0xaa53fd['selectedMenuItem']=_0x3ccb1c;},'_create'(){const _0x4c6d48=_0x231fa2,_0x32c748=this;_0x32c748[_0x4c6d48(0xef)]=this[_0x4c6d48(0xc1)],_0x32c748['$input'][_0x4c6d48(0xdd)]('border',_0x4c6d48(0xe0)),_0x32c748[_0x4c6d48(0xb4)]=_0x32c748[_0x4c6d48(0xef)]['wrap'](_0x4c6d48(0x185))[_0x4c6d48(0x180)]()[_0x4c6d48(0x16f)](_0x4c6d48(0xd5)),_0x32c748[_0x4c6d48(0x8a)]=$(_0x4c6d48(0x165)),_0x32c748[_0x4c6d48(0x8a)][_0x4c6d48(0x16f)](_0x4c6d48(0x8d)),_0x32c748[_0x4c6d48(0xef)][_0x4c6d48(0x94)](_0x32c748[_0x4c6d48(0x8a)]),_0x32c748[_0x4c6d48(0x123)]=$('<div/>')[_0x4c6d48(0x16f)](_0x4c6d48(0x19b)),_0x32c748['$combo'][_0x4c6d48(0x96)](_0x32c748[_0x4c6d48(0x123)]),_0x32c748['$inputGroup'][_0x4c6d48(0x96)](_0x32c748[_0x4c6d48(0xef)]),_0x32c748[_0x4c6d48(0x118)]=$(_0x4c6d48(0x15f)),_0x32c748['$input'][_0x4c6d48(0x117)](_0x32c748[_0x4c6d48(0x118)]),_0x32c748['$toggleTreeBtn']['on']('click',function(){return _0x14a9d7(this,void 0x0,void 0x0,function*(){const _0x442d23=_0x94d8;var _0x4bafc7;let _0x13b3b8=![],_0x586135;!_0x32c748[_0x442d23(0x153)]['is'](_0x442d23(0x150))&&(_0x32c748[_0x442d23(0xc6)][_0x442d23(0x9d)](),_0x586135=yield _0x32c748[_0x442d23(0x166)](),(_0x586135!==_0x32c748[_0x442d23(0xe6)]||((_0x4bafc7=_0x32c748[_0x442d23(0xe6)])===null||_0x4bafc7===void 0x0?void 0x0:_0x4bafc7[_0x442d23(0x1ac)])!==_0x586135[_0x442d23(0x1ac)])&&(yield _0x32c748['reset']()),_0x13b3b8=!![]),_0x32c748[_0x442d23(0x153)][_0x442d23(0x1a4)](),_0x13b3b8&&(yield _0x4621a4(_0x32c748,_0x586135));});}),_0x32c748[_0x4c6d48(0xe5)]=$(_0x4c6d48(0x13a)),_0x32c748[_0x4c6d48(0xef)][_0x4c6d48(0x117)](_0x32c748[_0x4c6d48(0xe5)]),_0x32c748[_0x4c6d48(0xe5)]['on']('click',()=>{const _0x581925=_0x4c6d48,_0xf29ed2=_0x32c748[_0x581925(0xbd)]();if(!_0xf29ed2)return;this['verify'](_0xf29ed2);});const _0xba264e=_0xb8f1e8=>_0x14a9d7(this,void 0x0,void 0x0,function*(){const _0x111931=_0x4c6d48,_0x228a01=this;let _0x497298=_0x228a01[_0x111931(0xbd)]();if(!_0x497298)return;const _0x5d243c=_0xdd74c9(_0x228a01),{data:_0xe548dd,json:_0x1f0d9d}=yield _0x4439f0(_0x5d243c,_0xb8f1e8);if(_0xe548dd[_0x111931(0x1a1)]!==0xc8)return;if(_0x1f0d9d[_0x111931(0x10e)]['match'](/Good/)){const _0x5ce55d=_0x7eef25(_0x1f0d9d,_0x497298);_0x228a01['$input'][_0x111931(0x128)](_0x5ce55d),_0x228a01['$input'][_0x111931(0x15e)](_0x111931(0x7b));}});{_0x32c748['$uiSelect']=$(_0x4c6d48(0x185)),_0x32c748[_0x4c6d48(0xef)][_0x4c6d48(0x172)](_0x32c748[_0x4c6d48(0x175)]),_0x32c748['$selectTrigger']=$(_0x4c6d48(0x183))[_0x4c6d48(0x168)](_0x32c748['$uiSelect']),$(_0x4c6d48(0x19d))[_0x4c6d48(0x1a4)](!![])[_0x4c6d48(0x134)](_0x32c748[_0x4c6d48(0xca)]),_0x32c748[_0x4c6d48(0xca)]['on']('click',function(_0x78d83c){const _0x404e75=_0x4c6d48;_0x78d83c[_0x404e75(0xa8)](),_0x78d83c[_0x404e75(0x16a)](),_0x32c748['_showTypeMenu']();}),_0x32c748[_0x4c6d48(0xca)]['on'](_0x4c6d48(0xd3),function(_0x236be5){const _0x38fe1d=_0x4c6d48;_0x236be5[_0x38fe1d(0x79)]===0x28&&_0x32c748[_0x38fe1d(0x10f)](),_0x236be5['stopPropagation']();})['on'](_0x4c6d48(0x18f),function(){const _0x1f0fc8=_0x4c6d48;_0x32c748[_0x1f0fc8(0x175)]['addClass'](_0x1f0fc8(0x92));})['on'](_0x4c6d48(0x163),function(){_0x32c748['$uiSelect']['removeClass']('red-ui-typedInput-focus');}),_0x32c748[_0x4c6d48(0x13d)]=$(_0x4c6d48(0x81))['appendTo'](_0x32c748[_0x4c6d48(0xca)]);}this[_0x4c6d48(0x83)]();!_0x32c748[_0x4c6d48(0xef)][_0x4c6d48(0x149)]('placeholder')&&_0x32c748[_0x4c6d48(0xef)][_0x4c6d48(0x149)](_0x4c6d48(0x133),'enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20');_0x32c748[_0x4c6d48(0xc6)]=$(_0x4c6d48(0xe7)),_0x32c748['$info'][_0x4c6d48(0x9d)](),_0x32c748[_0x4c6d48(0x8a)][_0x4c6d48(0x96)](_0x32c748[_0x4c6d48(0xc6)]),_0x32c748[_0x4c6d48(0x153)]=$(_0x4c6d48(0x165))[_0x4c6d48(0x16f)](_0x4c6d48(0x146))[_0x4c6d48(0x9d)]()[_0x4c6d48(0x134)](_0x32c748[_0x4c6d48(0x8a)]),_0x32c748[_0x4c6d48(0x182)]=$(_0x4c6d48(0xbe))['appendTo'](_0x32c748['$dropdown']),this[_0x4c6d48(0x16e)]();const _0x3994b9=(_0x2c20f4,_0x2ee999)=>{const _0x8edb40=_0x4c6d48,_0x204a70=0x14,_0x1c40d1=0x14,_0x2b3124=_0x2c20f4[_0x8edb40(0x1a0)](),_0x23f622=_0x2ee999;if(_0x23f622['pageX']>=_0x2b3124[_0x8edb40(0x199)]&&_0x23f622['pageX']<=_0x2b3124[_0x8edb40(0x199)]+_0x204a70&&_0x23f622[_0x8edb40(0x171)]>=_0x2b3124[_0x8edb40(0x8c)]&&_0x23f622[_0x8edb40(0x171)]<=_0x2b3124[_0x8edb40(0x8c)]+_0x1c40d1)return!![];return![];},_0x361a53=_0x3e85ea=>_0x14a9d7(this,void 0x0,void 0x0,function*(){const _0x3a651f=_0x4c6d48;if(_0x3e85ea[_0x3a651f(0xec)](_0x3a651f(0x192)))_0x1be16a(_0x32c748,_0x3e85ea);else{if(_0x3e85ea['hasClass']('expanded'))_0x3e85ea[_0x3a651f(0xde)]('ul')[_0x3a651f(0x1a4)](),_0x3e85ea[_0x3a651f(0x11f)]('expandable\x20expanded');else{if(_0x3e85ea['children']('ul')['children']()[_0x3a651f(0x176)]>0x0)_0x3e85ea[_0x3a651f(0xde)]('ul')['toggle'](),_0x3e85ea[_0x3a651f(0x11f)](_0x3a651f(0x11d));else;}}});_0x32c748[_0x4c6d48(0x182)]['on'](_0x4c6d48(0x10d),'li',function(_0x382c4b){const _0x40eaa6=_0x4c6d48;var _0x5d8dc0,_0x2d6b5a;_0x382c4b[_0x40eaa6(0x16a)]();let _0x5854c9=$(this);if(_0x3994b9(_0x5854c9,_0x382c4b))_0x361a53(_0x5854c9);else{const _0x251ca7=_0x5854c9[_0x40eaa6(0xcd)](_0x40eaa6(0xd7)),_0x52653f=_0x5854c9[_0x40eaa6(0xcd)](_0x40eaa6(0x120));if(_0x32c748['options'][_0x40eaa6(0xc7)]&&!_0x32c748[_0x40eaa6(0x19e)][_0x40eaa6(0xc7)](_0x52653f))return;_0x32c748[_0x40eaa6(0xef)][_0x40eaa6(0xcd)](_0x40eaa6(0x120),_0x52653f),((_0x5d8dc0=_0x52653f[_0x40eaa6(0x9e)])===null||_0x5d8dc0===void 0x0?void 0x0:_0x5d8dc0['text'])||((_0x2d6b5a=_0x52653f[_0x40eaa6(0x16b)])===null||_0x2d6b5a===void 0x0?void 0x0:_0x2d6b5a[_0x40eaa6(0xf1)])||_0x52653f[_0x40eaa6(0x1ac)][_0x40eaa6(0x15c)]();let _0xbcc2e6=_0x32c748[_0x40eaa6(0xbd)]();!_0xbcc2e6&&(_0xbcc2e6=_0x40eaa6(0x1ac),_0x32c748[_0x40eaa6(0x89)](_0xbcc2e6)),_0xba264e(_0x251ca7)['then'](()=>{const _0x4fc65c=_0x40eaa6;_0x32c748['$dropdown'][_0x4fc65c(0x9d)]();})[_0x40eaa6(0x126)](_0x1d9ee0=>{const _0x59ed16=_0x40eaa6;_0x32c748[_0x59ed16(0x153)]['hide']();});}}),_0x32c748[_0x4c6d48(0x182)]['on'](_0x4c6d48(0x132),'li',function(_0x37035d){const _0x1fb29c=_0x4c6d48;_0x37035d[_0x1fb29c(0x16a)]();let _0x3b24de=$(this);_0x3994b9(_0x3b24de,_0x37035d)&&_0x361a53(_0x3b24de),_0x43f1cc(_0x32c748,_0x3b24de);}),$(document)['on'](_0x4c6d48(0x132),function(_0x47fc7e){const _0x305089=_0x4c6d48;!$(_0x47fc7e[_0x305089(0x16d)])[_0x305089(0xbb)](_0x32c748[_0x305089(0x8a)])[_0x305089(0x176)]&&_0x32c748[_0x305089(0x153)][_0x305089(0x9d)]();});}});};function _0x1cba93(_0x22a84d,_0x1c448f){const _0x4e7842=_0x141c59,_0x197377=$(_0x4e7842(0x87)),_0x1f0911=$('#node-input-subscription'),_0x280b6d=()=>{const _0x17fb74=_0x4e7842,_0x58bc93=_0x22a84d[_0x17fb74(0x13c)][_0x17fb74(0x1a8)](_0x197377[_0x17fb74(0x128)]());_0x1f0911[_0x17fb74(0x15a)]();if(!_0x58bc93||!_0x58bc93[_0x17fb74(0x1a9)])return;for(const _0x1b1b2c of _0x58bc93[_0x17fb74(0x1a9)]){const _0x11a7ee=_0x1b1b2c[_0x17fb74(0xf1)]||_0x1b1b2c['id'];$(_0x17fb74(0x139),{'value':_0x1b1b2c['id'],'label':_0x11a7ee,'selected':_0x1b1b2c['id']===_0x1c448f[_0x17fb74(0x17d)]})[_0x17fb74(0x196)](_0x11a7ee)['appendTo'](_0x1f0911);}};_0x280b6d(),_0x1f0911['on'](_0x4e7842(0x7b),()=>{const _0x155c57=_0x4e7842;_0x1c448f['subscription']=_0x1f0911[_0x155c57(0x128)]();}),_0x197377['on'](_0x4e7842(0x7b),()=>{_0x280b6d();});}const _0x5e4def=()=>{const _0x518822=_0x141c59,_0x5a1f69=$(_0x518822(0x87)),_0x508409=_0x5a1f69[_0x518822(0x128)](),_0x5716bc=RED[_0x518822(0x13c)][_0x518822(0x1a8)](_0x508409);if(!_0x5716bc)return undefined;const {endpoint:_0x1f2954,securityMode:_0xf1cae7,securityPolicy:_0x483c3e,userIdentityType:_0x500b21,credentials:_0x33f65c,namespaceAliases:_0x1910e9}=_0x5716bc,_0x89d541={'endpoint':_0x1f2954,'securityMode':_0xf1cae7,'securityPolicy':_0x483c3e,'userIdentityType':_0x500b21,'credentials':_0x33f65c,'namespaceAliases':_0x1910e9};return _0x89d541;},_0x4dee81=()=>{const _0x3e822b=_0x141c59,_0x3b866f=$(_0x3e822b(0x87)),_0x57bf2e=_0x3b866f['val'](),_0x463472=_0x5e4def();if(!_0x463472)return undefined;const _0x3aa9f2=_0x463472[_0x3e822b(0xaf)];return Object[_0x3e822b(0x137)]({'namespaceAliases':_0x3aa9f2,'id':_0x57bf2e},_0x463472);},_0x419895=()=>{return{'endpointNode':_0x4dee81};},_0x257869=()=>{const _0x123ddd=_0x141c59,_0x3d4cee=$(_0x123ddd(0x80));console['log'](_0x123ddd(0xda),_0x3d4cee[_0x123ddd(0x176)]);if(_0x3d4cee[_0x123ddd(0x176)]){console[_0x123ddd(0x12f)](_0x123ddd(0x11c));const _0x3e394a=$(_0x123ddd(0x190),{'src':_0x123ddd(0x97),'scrolling':'no','style':_0x123ddd(0xad),'allowtransparency':_0x123ddd(0x9a),'width':_0x123ddd(0xee),'height':_0x123ddd(0x7f)});_0x3d4cee[_0x123ddd(0x96)](_0x3e394a),_0x3e394a['css']({'position':_0x123ddd(0x13e),'right':_0x123ddd(0xf6),'bottom':_0x123ddd(0xa1)});}};RED[_0x141c59(0x13c)][_0x141c59(0x10a)](_0x141c59(0xcf),{'category':_0x141c59(0xbf),'color':'#C0DEED','align':_0x141c59(0xd8),'icon':_0x141c59(0xae),'paletteLabel':'monitor\x20variable','defaults':{'inputs':{'value':0x1},'output':{'value':0x2},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x141c59(0xb0)},'subscription':{'value':'','required':!![],'validate':_0x5a0792=>{if(_0x5a0792==='')return![];return!![];}},'startImmediately':{'value':!![],'required':!![]},'nodeId':{'value':_0x141c59(0x18c),'required':![],'validate':()=>!![]},'samplingInterval':{'value':0x3e8,'required':!![]},'discardOldest':{'value':!![],'required':!![]},'queueSize':{'value':0xa,'required':!![]}},'outputs':0x1,'label'(){const _0x1bc932=_0x141c59;return this[_0x1bc932(0xf1)]||'OPCUA\x20Client\x20Monitor\x20';},'labelStyle'(){const _0x440ad8=_0x141c59;return this[_0x440ad8(0xf1)]?_0x440ad8(0x14a):'';},'oneditprepare'(){const _0x2d0e80=_0x141c59,_0x3de005=this;_0x367e06(),_0x257869();const _0xcc71c9=_0x3de005['startImmediately'];_0x3de005['inputs']=_0xcc71c9?0x0:0x1,_0x1cba93(RED,this),$('node-input-startImmediately')['on'](_0x2d0e80(0x7b),()=>{const _0x130f63=_0x2d0e80,_0x40ba37=$('#node-input-startImmediately')['prop'](_0x130f63(0x1a2));_0x40ba37?$('#node-input-inputs')[_0x130f63(0x128)](0x0):$(_0x130f63(0x77))[_0x130f63(0x128)](0x1);});const _0x528784=$(_0x2d0e80(0x131));_0x528784['nodeBrowser'](Object[_0x2d0e80(0x137)](Object['assign']({},_0x419895()),{'filter'(_0x2ae8cc){const _0x16dde7=_0x2d0e80;return _0x2ae8cc[_0x16dde7(0x156)]===_0x16dde7(0x141)||_0x2ae8cc[_0x16dde7(0x156)]===_0x16dde7(0xac);},'isSelectable'(_0x4d3553){const _0x362741=_0x2d0e80;return _0x4d3553[_0x362741(0x156)]===_0x362741(0x141);}}));},'oneditsave'(){const _0x50e1ee=_0x141c59,_0x4314eb=$('#node-input-startImmediately')[_0x50e1ee(0x14d)](_0x50e1ee(0x1a2));_0x4314eb?($(_0x50e1ee(0xa2))[_0x50e1ee(0x128)](_0x4314eb?0x0:0x1),this[_0x50e1ee(0x18b)]=_0x4314eb?0x0:0x1):($(_0x50e1ee(0xa2))[_0x50e1ee(0x128)](0x1),this[_0x50e1ee(0x18b)]=0x1);}});}()));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgxNGE5ZDciLCJfMHgzMTg5MjYiLCJfMHgyMzQyZGUiLCJfMHg1ZDEyMzAiLCJfMHgxZjA3NGUiLCJfMHgyYjdhOTYiLCJfMHgyMzExODYiLCJfMHgxYTAxNjAiLCJQcm9taXNlIiwiXzB4Y2VhYTc1IiwiXzB4NDVlZmU4IiwiXzB4MmNkNmU1IiwiXzB4NTY2MWQyIiwiXzB4NDBmMTUwIiwiXzB4NTg4MzRjIiwiXzB4ODg3MTY5IiwiXzB4MzUwN2Q3IiwiXzB4MjBkYTA1IiwiXzB4NDk0NTAxIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4NWI0YjRmIiwiXzB4NTUzMzQzIiwiXzB4NTg2OTQ0IiwiXzB4MWNlN2E1IiwiRXJyb3IiLCJfMHhlMGM4MiIsIl8weDExYWVlNyIsIl8weDI4ZTJlZCIsIl8weDQ2NTZlNiIsIl8weDU4NjZlNiIsIl8weDRhOTM0OCIsIl8weDEzOTgyNSIsIl8weDI0NjM2ZiIsIl8weDViMjk1OCIsIl8weDU5ZDJkZiIsIl8weDFjNGQwZCIsIl8weGE5OTA2MyIsIl8weDEwMzRiZCIsIl8weDRlY2YzZiIsIl8weDIxODBiZSIsIl8weDhmMzYwNyIsIl8weDMwODI0NCIsIl8weDExMjk2ZCIsIl8weDMwOGE3ZCIsIl8weDI1OWI2YSIsIl8weDE5OWQwYiIsIl8weDU0NjdmZCIsIl8weDM2YmZiZCIsImVuZHBvaW50Tm9kZSIsIl8weGY1YzM1ZiIsImVuZHBvaW50IiwiXzB4M2I4YTQ1IiwiYmFzZVVybCIsIl8weDQwZTVlYyIsIl8weDNjMmIxZSIsIl8weDVhOWMzNSIsIl8weDQ0ZjJkMSIsIl8weDQwZmM2IiwiXzB4MjQ3YTkxIiwiT2JqZWN0IiwiXzB4Mjg5Mjc1IiwiZmV0Y2giLCJKU09OIiwiY29uc29sZSIsIl8weDQ4YzkyYyIsIl8weDJkOTA5MCIsIl8weDQ1Y2FiZCIsIl8weDNjYmJkZCIsIl8weDNhMzJhOSIsIl8weDI5OGJkNSIsIl8weDFlZjVhYSIsIl8weDQ5M2VkYyIsIl8weDIyNjIxYiIsIl8weDUxYzg1YyIsIm5vZGVJZCIsIl8weDIzYjQ2NyIsInJvb3ROb2RlSWQiLCJfMHgyZjcxMjEiLCJpc1R5cGUiLCJfMHg1OTI2MjAiLCJfMHg0NTY5YjYiLCJfMHgyZGQxYjIiLCJfMHg0MzYyOTEiLCJfMHgyOWE3NzQiLCJfMHg3ZWVmMjUiLCJfMHg1NzMzYzgiLCJfMHgzOWNlNzMiLCJfMHgxNDM2MmIiLCJfMHg0N2U3ZjAiLCJfMHgxY2U4NWMiLCJfMHg0NTAxZDciLCJfMHg0MWI3ODAiLCJfMHgxZDgxZDMiLCJfMHgzMTdhMzUiLCJfMHg0OTE1ZDAiLCJfMHg0NGE2NWMiLCJfMHg0MTA2YjUiLCJfMHg1MWZhNSIsIl8weDJmNzE5ZiIsIl8weDRhYWM2MyIsIl8weDQ0MzlmMCIsIl8weDRkYTFmMyIsIl8weGFmZWVhMCIsIl8weDI0ZDJjYSIsIl8weDUyNWU3YyIsIl8weGNiM2E0NSIsIl8weDVlOTFmYSIsIl8weDNjYzE1YyIsIl8weDQ2ZTA4OCIsIl8weGZjMjgxYyIsIl8weDRlOGIwMiIsIlJFRCIsIl8weDJjZGZlMCIsIl8weDU1YjgxYSIsIl8weDUzNTY5YSIsIl8weDgwZGMxZCIsIl8weDM0Mzg2MyIsIl8weDJhZjc2MyIsIl8weDMxMmVlMSIsIl8weDNmMmYyNiIsIl8weDJlM2UwYSIsIl8weDQ4NmQ0MCIsIl8weDE5ODRiMyIsIl8weDUxNTE1MiIsIl8weDMzMDY1YyIsIl8weGIzMjFkYSIsIl8weDVjYWZkMyIsImpzb24iLCJfMHgxMWIwN2YiLCJkYXRhIiwiXzB4NGNmMzIyIiwiXzB4ZGZmM2JhIiwiXzB4NDdmNWIxIiwiXzB4MWIzMTViIiwic2V0VGltZW91dCIsIl8weDJlNTEyNiIsIl8weDFkZjQ2OSIsIl8weDRjYjdiYSIsIl8weDIyMmZhMSIsIl8weDM2ZmU5OCIsIl8weDMxZDVjMCIsIl8weGQxYjc0NyIsIl8weDI5Mzk3ZCIsIl8weDVhMDhlNiIsIl8weDUzNjc2OSIsIl8weDMxZTE5NCIsIl8weDE3ZGZiOCIsIl8weDU3ZGVkOCIsIl8weDUxZmU2NSIsIl8weDIzMzRmYyIsIl8weDFkZDU2NCIsIl8weGU3Y2NiNiIsIl8weDM0MTc0MiIsIl8weDMzMDYyMCIsIl8weDMzZmE0YiIsIl8weDJhYTNkNCIsIiQiLCJfMHgxZTMxYTYiLCJfMHgzZDQ2ODMiLCJpY29uIiwiXzB4NTQ3NzE4IiwiY29sb3IiLCJfMHg0MTAzZGIiLCJfMHgyMDJhMjciLCJfMHg1NzVkMDAiLCJfMHg0ZmMyNzkiLCJfMHgzNTBlOGQiLCJfMHg1MTgwYTMiLCJfMHg0M2YxY2MiLCJfMHgxNzhmM2MiLCJfMHgxNDc2NDgiLCJfMHg0Y2FkNzIiLCJfMHgxY2ZlNGUiLCJfMHgxOTQ3MjMiLCJfMHg1M2U5ZWIiLCJfMHg0ODRiZDciLCJfMHgxMjExMzciLCJfMHgzZDFjZWUiLCJfMHgxYmUxNmEiLCJfMHgxNzU0MjYiLCJfMHhhMGIzYTMiLCJfMHg3NjA4YjEiLCJfMHgzODUxZjAiLCJfMHhhNDg1MSIsIl8weDUwNjk0NSIsInVuZGVmaW5lZCIsIl8weDNjMjBhMCIsIl8weDQ2MjFhNCIsIl8weDEzMGM4NCIsIl8weGUzOGI3YSIsIl8weDIyZDdhNyIsIl8weDQ1M2RlYSIsIl8weDNiNzc4MSIsIl8weGRkNzRjOSIsIl8weGVlZjMwNSIsIl8weDNkY2I1MSIsIl8weDU5YjgzNCIsIl8weDQxYzMxZCIsIl8weDQyNGVhZSIsIl8weDE4ZDUwMCIsInJlZmVyZW5jZXMiLCJfMHgxMGNmZmYiLCJfMHg1ZDlkMjgiLCJfMHgzN2Y1ZjIiLCJfMHg1ZTkzMGYiLCJfMHgzZTAxODciLCJfMHgzNzA3YzkiLCJfMHhhNzBjZWUiLCJfMHhlYjk0YjAiLCJfMHgzZDBkNzYiLCJfMHgzYTFhM2EiLCJfMHgxZjIxNTAiLCJfMHgxMjVmYmUiLCJfMHgzM2U1N2UiLCJfMHg0ZWUyMGQiLCJfMHhjZWM3MWIiLCJfMHg0NWUxMDMiLCJfMHgzNjdlMDYiLCJfMHgzMGM2ZjgiLCJfMHgxZTA4YjIiLCJfMHg1MzJjN2IiLCJfMHg0YmFiZWEiLCJfMHg1OGY5NWUiLCJfMHgxODgyOWUiLCJfMHg1Yzc2Y2YiLCJfMHgyMTc2N2MiLCJfMHgxNzFlYmMiLCJfMHgxYTFhNDYiLCJfMHgzYTFmYjUiLCJfMHg0MDdiZTAiLCJfMHgzZTFhZGUiLCJkb2N1bWVudCIsIl8weDllNmVjMyIsIl8weDRjMzJlOCIsIl8weDU5OWVkNCIsIl8weDIxY2JiOSIsIl8weGY1Yjk5NyIsIl8weDJiZjMyOSIsIl8weDFiODA4OSIsIl8weDEzNTNkMiIsIl8weDNkYzA5MyIsIl8weDM2NWI1YSIsIl8weDQzNjQ0YiIsIl8weDU1ODUyMiIsIl8weDU2YTBhMCIsIl8weDM4NDFlNiIsIl8weDE0MDI3YSIsIl8weDFmNTYzMyIsIl8weDRjMTY1NSIsIl8weDI0ZDlkZCIsIl8weDU3ODFhMSIsIndpbmRvdyIsIl8weDE5MTY1NiIsIl8weDVjZjg0MiIsIl8weDQ1OWJmYSIsIl8weDQ4NDFjOSIsIl8weDUwMmNjNCIsIl8weDM3NWQ3MSIsIl8weDQ2M2I4MiIsIl8weDQ2MzViNiIsIl8weDMxYzk3YSIsIl8weDMyMGZhMSIsIl8weDI3MTNkNSIsIl8weDg2MGFmNSIsIl8weDIwY2Y3ZCIsIl8weDQxZTYxMiIsIl8weDUxMzM4OSIsIl8weDE3ZTVkNCIsIl8weDRlMmIwMyIsIl8weGFhNTNmZCIsIl8weDNjY2IxYyIsIl8weDMyYzc0OCIsIl8weDRiYWZjNyIsIl8weDEzYjNiOCIsIl8weDU4NjEzNSIsIl8weGYyOWVkMiIsIl8weGJhMjY0ZSIsIl8weGI4ZjFlOCIsIl8weDIyOGEwMSIsIl8weDQ5NzI5OCIsIl8weDVkMjQzYyIsIl8weGU1NDhkZCIsIl8weDFmMGQ5ZCIsIl8weDVjZTU1ZCIsIl8weDc4ZDgzYyIsIl8weDIzNmJlNSIsIl8weDM5OTRiOSIsIl8weDJjMjBmNCIsIl8weDJlZTk5OSIsIl8weDIwNGE3MCIsIl8weDFjNDBkMSIsIl8weDJiMzEyNCIsIl8weDIzZjYyMiIsIl8weDM2MWE1MyIsIl8weDNlODVlYSIsIl8weDM4MmM0YiIsIl8weDVkOGRjMCIsIl8weDJkNmI1YSIsIl8weDU4NTRjOSIsIl8weDI1MWNhNyIsIl8weDUyNjUzZiIsIl8weGJjYzJlNiIsIl8weDFkOWVlMCIsIl8weDM3MDM1ZCIsIl8weDNiMjRkZSIsIl8weDQ3ZmM3ZSIsIl8weDFjYmE5MyIsIl8weDIyYTg0ZCIsIl8weDFjNDQ4ZiIsIl8weDE5NzM3NyIsIl8weDFmMDkxMSIsIl8weDI4MGI2ZCIsIl8weDU4YmM5MyIsIl8weDFiMWIyYyIsIl8weDExYTdlZSIsIl8weDVlNGRlZiIsIl8weDVhMWY2OSIsIl8weDUwODQwOSIsIl8weDU3MTZiYyIsIl8weDFmMjk1NCIsInNlY3VyaXR5TW9kZSIsIl8weGYxY2FlNyIsInNlY3VyaXR5UG9saWN5IiwiXzB4NDgzYzNlIiwidXNlcklkZW50aXR5VHlwZSIsIl8weDUwMGIyMSIsImNyZWRlbnRpYWxzIiwiXzB4MzNmNjVjIiwibmFtZXNwYWNlQWxpYXNlcyIsIl8weDE5MTBlOSIsIl8weDg5ZDU0MSIsIl8weDRkZWU4MSIsIl8weDNiODY2ZiIsIl8weDU3YmYyZSIsIl8weDQ2MzQ3MiIsIl8weDNhYTlmMiIsIl8weDQxOTg5NSIsIl8weDI1Nzg2OSIsIl8weDNkNGNlZSIsIl8weDNlMzk0YSIsIl8weDVhMDc5MiIsIl8weDNkZTAwNSIsIl8weGNjNzFjOSIsIl8weDQwYmEzNyIsIl8weDUyODc4NCIsIl8weDJhZThjYyIsIl8weDRkMzU1MyIsIl8weDQzMTRlYiJdLCJtYXBwaW5ncyI6Im1wTUFBQSxDQUFDLFUsQ0FDRyxhLHdCQW1CQSxTQUFTQSxTQUFULENBQW1CQyxTQUFuQixDQUE0QkMsU0FBNUIsQ0FBd0NDLFNBQXhDLENBQTJDQyxTQUEzQyxDLENBQ0ksU0FBU0MsU0FBVCxDQUFlQyxTQUFmLEMsUUFBK0JBLFNBQUEsWUFBaUJILFNBQWpCLENBQXFCRyxTQUFyQixDQUE2QixJQUFJSCxTQUFKLENBQU0sU0FBVUksU0FBVixDLENBQXFCQSxTQUFBLENBQVFELFNBQVIsQyxFQUEzQixDLFNBQ3JELEdBQUssQ0FBQUgsU0FBQSxFQUFNLENBQUFBLFNBQUEsQ0FBSUssT0FBSixDQUFOLENBQUwsQ0FBeUIsU0FBVUMs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QUFBLEMsa0JBQUEsQ0FBcEIsQ0FDQUEsU0FBQSxDLFFBQUEsRUFBY0MsU0FBQSxDLEdBQUEsQyxJQUNkcEMsU0FBQSxDQUE0Qm5NLEdBQTVCLENBQWlDLElBQWpDLEMsQ0FDQTZDLENBQUEsQyw2QkFBQSxFLElBQUEsRSxlQUFBLENBQThDLEksMkJBQ3BDMkwsU0FBQSxDQUFVM0wsQ0FBQSxDLDhCQUFBLEUsTUFBQSxFLGdCQUFBLEMsQ0FDWjJMLFMsQ0FDQTNMLENBQUEsQyxvQkFBQSxFLGdCQUFBLEUsR0FBQSxDLENBR0FBLENBQUEsQyxlQUFBLEUsZ0JBQUEsRSxHQUFBLEMsRUFOUixDQUZBLENBY0EsTUFBTTRMLFNBQUEsQ0FBVTVMLENBQUEsQyxnQkFBQSxDQUFoQixDQUNBNEwsU0FBQSxDLGFBQUEsRUFBb0I3UixNQUFBLEMsZ0JBQUEsRUFBY0EsTUFBQSxDLFFBQUEsRUFBYyxFQUFkLENBQWtCcVIsU0FBQSxFQUFsQixDQUFkLENBQWlFLEMsUUFBRSxDQUFPUyxTQUFQLEMsa0NBQ3hFQSxTQUFBLEMsZ0JBQUEsSSxnQkFBQSxFQUFxQ0EsU0FBQSxDLGdCQUFBLEksaUJBRGlDLEMsY0FHakYsQ0FBYUMsU0FBYixDLGtDQUNXQSxTQUFBLEMsZ0JBQUEsSSxrQkFKc0UsQ0FBakUsQ0FBcEIsQyxFQTNEd0MsQyxZQWtFNUMsRSwyQkFDVUMsU0FBQSxDQUFtQi9MLENBQUEsQyw4QkFBQSxFLGdCQUFBLEUsZ0JBQUEsQyxDQUNyQitMLFMsRUFDQS9MLENBQUEsQyxlQUFBLEUsZ0JBQUEsRUFBc0MrTCxTQUFBLEMsR0FBQSxDLEdBQXRDLEMsQ0FDQSxLLGdCQUFBLEVBQWNBLFNBQUEsQyxHQUFBLEMsTUFHZC9MLENBQUEsQyxlQUFBLEUsZ0JBQUEsRSxHQUFBLEMsQ0FDQSxLLGdCQUFBLEUsTUExRW9DLENBQWhELEMsRUFubENKLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbiAgICB9O1xuXG4gICAgY29uc3QgT3JnYW5pemVzUmVmTm9kZUlkID0gXCJucz0wO2k9MzVcIjtcbiAgICBjb25zdCBGb2xkZXJUeXBlID0gXCJucz0wO2k9NjFcIjtcbiAgICBjb25zdCBIYXNDb21wb25lbnRSZWZOb2RlSWQgPSBcIm5zPTA7aT00N1wiO1xuICAgIGNvbnN0IEhhc1Byb3BlcnR5UmVmTm9kZUlkID0gXCJucz0wO2k9NDZcIjtcbiAgICBjb25zdCBIYXNDaGlsZFJlZk5vZGVJZCA9IFwibnM9MDtpPTM0XCI7XG4gICAgY29uc3QgSGFzU3VidHlwZVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ1XCI7XG4gICAgY29uc3QgSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQgPSBcIm5zPTA7aT00MFwiO1xuXG4gICAgdmFyIEJyb3dzZURpcmVjdGlvbjtcbiAgICAoZnVuY3Rpb24gKEJyb3dzZURpcmVjdGlvbikge1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiRm9yd2FyZFwiXSA9IDBdID0gXCJGb3J3YXJkXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZlcnNlXCJdID0gMV0gPSBcIkludmVyc2VcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkJvdGhcIl0gPSAyXSA9IFwiQm90aFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52YWxpZFwiXSA9IDNdID0gXCJJbnZhbGlkXCI7XG4gICAgfSkoQnJvd3NlRGlyZWN0aW9uIHx8IChCcm93c2VEaXJlY3Rpb24gPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3M7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3MpIHtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlVuc3BlY2lmaWVkXCJdID0gMF0gPSBcIlVuc3BlY2lmaWVkXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzcyB8fCAoTm9kZUNsYXNzID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzTWFzaztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzc01hc2spIHtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzc01hc2sgfHwgKE5vZGVDbGFzc01hc2sgPSB7fSkpO1xuICAgIHZhciBSZXN1bHRNYXNrO1xuICAgIChmdW5jdGlvbiAoUmVzdWx0TWFzaykge1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMV0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiSXNGb3J3YXJkXCJdID0gMl0gPSBcIklzRm9yd2FyZFwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJOb2RlQ2xhc3NcIl0gPSA0XSA9IFwiTm9kZUNsYXNzXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkJyb3dzZU5hbWVcIl0gPSA4XSA9IFwiQnJvd3NlTmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJEaXNwbGF5TmFtZVwiXSA9IDE2XSA9IFwiRGlzcGxheU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiVHlwZURlZmluaXRpb25cIl0gPSAzMl0gPSBcIlR5cGVEZWZpbml0aW9uXCI7XG4gICAgfSkoUmVzdWx0TWFzayB8fCAoUmVzdWx0TWFzayA9IHt9KSk7XG4gICAgLy8gIGNvbnN0IHEgPSBSZWZlcmVuY2VUeXBlSWRzLk9yZ2FuaXplcztcbiAgICBmdW5jdGlvbiByZXNvbHZlTm9kZUlkKG5vZGVJZExpa2UpIHtcbiAgICAgICAgc3dpdGNoIChub2RlSWRMaWtlKSB7XG4gICAgICAgICAgICBjYXNlIFwiT3JnYW5pemVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZ2FuaXplc1JlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNQcm9wZXJ0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNQcm9wZXJ0eVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDb21wb25lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ29tcG9uZW50UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NoaWxkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NoaWxkUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1N1YnR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzU3VidHlwZVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNUeXBlRGVmaW5pdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdldEljb24gPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVmZXJlbmNlLm5vZGVDbGFzcykge1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBPcmdhbml6ZXNSZWZOb2RlSWQpIDtcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnR5cGVEZWZpbml0aW9uID09PSBGb2xkZXJUeXBlIHx8IHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IFwiaT02MVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtZm9sZGVyXCIsIGNvbG9yOiBcInJnYmEoNjEsIDYwLCA0LCAwLjUyNSlcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJTZWFHcmVlblwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzQ29tcG9uZW50UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiU3RlZWxCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzUHJvcGVydHlSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJEb2RnZXJCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1jb2dcIiwgY29sb3I6IFwiU2FuZHlCcm93blwiIH07XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0VHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtc2xpZGVyc1wiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJEYXRhVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtdGV4dC13aWR0aFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGljb246IFwiZmEtcXVlc3Rpb25cIiwgY29sb3I6IFwiZ3JleVwiIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGJyb3dzZSA9IChfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbm9kZUlkXzEsIHRlbXBsYXRlXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCwgdGVtcGxhdGUpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWZvci1ub2RlLXJlZGA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2Jyb3dzZWA7XG4gICAgICAgIGNvbnN0IGJyb3dzZURlc2NyaXB0aW9uID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0ZW1wbGF0ZSksIHsgbm9kZUlkLCByZXN1bHRNYXNrOiA2MyB9KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgYnJvd3NlRGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoaW5nIGZhaWxlZCB3aXRoIGVycm9yXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlczogW10gfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImJyb3dzZSBmZXRjaGVkIDogXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VzID0gcmVzcG9uc2UuYnJvd3NlUmVzdWx0LnJlZmVyZW5jZXMgfHwgW107XG4gICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXMgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRlbXBsYXRlMSA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzQ2hpbGRcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZTIgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIk9yZ2FuaXplc1wiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IHdhbGtCYWNrd2FyZCA9IChfYSwgX2IpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgX2JdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIHsgbm9kZUlkLCByb290Tm9kZUlkLCBpc1R5cGUgfSkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZm9yLW5vZGUtcmVkYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vd2Fsay1iYWNrd2FyZGA7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgICAgICByb290Tm9kZUlkLFxuICAgICAgICAgICAgICAgIGlzVHlwZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICByZXR1cm4ganNvbi5icm93c2VQYXRoO1xuICAgIH0pO1xuICAgIGNvbnN0IGNob29zZU5vZGVJZCA9IChkYXRhLCBtb2RlKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1c0NvZGUgIT09IFwiR29vZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YS5yZXF1ZXN0ZWROb2RlSWQ7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwiYnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmJwX2luZGV4ZWQ7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5icF9hbGlhc2VkIHx8IGRhdGEuYnBfaW5kZXhlZDtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkTm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubm9kZUlkX2FsaWFzZWQgfHwgZGF0YS5ub2RlSWRfbnN1O1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZF9uc3U7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FzZSBcIm5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm5vZGVJZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgbWFrZVRvb2x0aXAgPSAoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXNDb2RlICE9PSBcIkdvb2RcIikge1xuICAgICAgICAgICAgcmV0dXJuIGBzdGF0dXNDb2RlOiAke2RhdGEuc3RhdHVzQ29kZX1gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IHN0ciA9IFtdO1xuICAgICAgICAgICAgc3RyLnB1c2goYG5vZGVJZDogJHtkYXRhLm5vZGVJZH1gKTtcbiAgICAgICAgICAgIHN0ci5wdXNoKGBicm93c2UgcGF0aDogJHtkYXRhLmJwX2luZGV4ZWR9YCk7XG4gICAgICAgICAgICBzdHIucHVzaChgbm9kZSBjbGFzczogJHtOb2RlQ2xhc3NbZGF0YS5ub2RlQ2xhc3NdfWApO1xuICAgICAgICAgICAgaWYgKGRhdGEubm9kZUlkX25zdSkge1xuICAgICAgICAgICAgICAgIHN0ci5wdXNoKGBuc3Ugbm9kZUlkOiAke2RhdGEubm9kZUlkX25zdX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRhLm5vZGVJZF9hbGlhc2VkKSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYGFsaWFzZWQgTm9kZUlkOiAke2RhdGEubm9kZUlkX2FsaWFzZWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS5icF9pbmRleGVkKSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYGFsaWFzZWQgYnJvd3NlUGF0aDogJHtkYXRhLmJwX2FsaWFzZWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZpZ3VyZU91dE1vZGUoZW5oYW5jZWROb2RlSWQpIHtcbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9ebnN1PS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJuc3VOb2RlSURcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL14obnM9Lio7KT8oaXxifHN8Zyk9LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcIm5vZGVJZFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXm5zYT0vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYWxpYXNlZE5vZGVJZFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihcXC98XFwuKVswLTldKzovKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihcXC98XFwuKS4qOi8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJicm93c2VQYXRoXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZmlndXJlT3V0TWVuVUl0ZW1WYWx1ZShzdHIpIHtcbiAgICAgICAgY29uc3QgbW9kZSA9IGZpZ3VyZU91dE1vZGUoc3RyKTtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwibm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiblwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWROb2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuYVwiO1xuICAgICAgICAgICAgY2FzZSBcIm5zdU5vZGVJRFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5zdVwiO1xuICAgICAgICAgICAgY2FzZSBcImJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJiXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZEJyb3dzZVBhdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhYlwiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ0XCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gdG9Nb2RlKHYpIHtcbiAgICAgICAgbGV0IG1vZGU7XG4gICAgICAgIHN3aXRjaCAodikge1xuICAgICAgICAgICAgY2FzZSBcIm5cIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJub2RlSWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJuYVwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcImFsaWFzZWROb2RlSWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJuc3VcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJuc3VOb2RlSURcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJiXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYnJvd3NlUGF0aFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImFiXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYWxpYXNlZEJyb3dzZVBhdGhcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9kZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZnJvbU1vZGUobW9kZSkge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJub2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZE5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5hXCI7XG4gICAgICAgICAgICBjYXNlIFwibnN1Tm9kZUlEXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibnN1XCI7XG4gICAgICAgICAgICBjYXNlIFwiYnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImJcIjtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkQnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImFiXCI7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBcInRcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBfY2FsbENoZWNrTm9kZUlkID0gKF9hLCBub2RlSWRfMSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hLCBub2RlSWRfMV0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbm9kZUlkKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1mb3Itbm9kZS1yZWRgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9jaGVja05vZGVJZGA7XG4gICAgICAgIGNvbnN0IGVJZCA9IGVuZHBvaW50Tm9kZS5pZDtcbiAgICAgICAgY29uc3QgbiA9IFJFRC5ub2Rlcy5ub2RlKGVJZCk7XG4gICAgICAgIGNvbnNvbGUubG9nKG4ubmFtZXNwYWNlQWxpYXNlcyk7XG4gICAgICAgIG4ubmFtZXNwYWNlQWxpYXNlcztcbiAgICAgICAgY29uc3QgbmFtZXNwYWNlQWxpYXNlcyA9IGVuZHBvaW50Tm9kZS5uYW1lc3BhY2VBbGlhc2VzO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICAgICAgbmFtZXNwYWNlQWxpYXNlcyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIHJldHVybiB7IGpzb24sIGRhdGEgfTtcbiAgICB9KTtcbiAgICBjb25zdCBpbnRlcm5hbFZlcmlmeSA9IChfYSwgbW9kZV8xLCAkaW5wdXRFbGVtZW50XzEsICRpbmZvXzEpID0+IF9fYXdhaXRlcih2b2lkIDAsIFtfYSwgbW9kZV8xLCAkaW5wdXRFbGVtZW50XzEsICRpbmZvXzFdLCB2b2lkIDAsIGZ1bmN0aW9uKiAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG1vZGUsICRpbnB1dEVsZW1lbnQsICRpbmZvKSB7XG4gICAgICAgIGNvbnN0IGVuaGFuY2VkTm9kZUlkID0gJGlucHV0RWxlbWVudC52YWwoKTtcbiAgICAgICAgY29uc3QgeyBqc29uLCBkYXRhIH0gPSB5aWVsZCBfY2FsbENoZWNrTm9kZUlkKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBlbmhhbmNlZE5vZGVJZCk7XG4gICAgICAgIGNvbnN0IHNldE5vdGlmaWNhdGlvbiA9ICh0ZXh0LCBjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICRpbmZvLnRleHQodGV4dCkuYWRkQ2xhc3MoXCJzdGVyZml2ZS1pbmZvXCIpLmFkZENsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAkaW5mby5zaG93KCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAkaW5mby5yZW1vdmVDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nO1xuICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiISFmYWlsdXJlISFcIiArIGVuaGFuY2VkTm9kZUlkLCBcImZhaWx1cmVcIik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b29sdGlwID0gbWFrZVRvb2x0aXAoanNvbik7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC5hdHRyKFwidGl0bGVcIiwgdG9vbHRpcCk7XG4gICAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlSWQgPSBjaG9vc2VOb2RlSWQoanNvbiwgbW9kZSk7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoc2VsZWN0ZWROb2RlSWQpO1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCJHb29kXCIsIFwib2tcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChgJHtlbmhhbmNlZE5vZGVJZH1gKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oYCR7anNvbi5zdGF0dXNDb2RlfSAke2RhdGEuc3RhdHVzVGV4dH1gLCBcImZhaWx1cmVcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gZmV0Y2hDaGlsZHJlbigkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMSk7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQyID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUyKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogWy4uLmJyb3dzZVJlc3VsdDEucmVmZXJlbmNlcywgLi4uYnJvd3NlUmVzdWx0Mi5yZWZlcmVuY2VzXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB0ZW1wbGF0ZVNUID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNTdWJ0eXBlXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHwgTm9kZUNsYXNzLk9iamVjdFR5cGUgfCBOb2RlQ2xhc3MuRGF0YVR5cGUgfCBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlLFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGZldGNoU3VidHlwZXMoJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZVNUKTtcbiAgICAgICAgICAgIHJldHVybiBicm93c2VSZXN1bHQxO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgbWFrZUVsZW1lbnQgPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2UgfHwgIXJlZmVyZW5jZS5ub2RlSWQpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpPjxpIGNsYXNzPVwiZmEgZmEtZXJyb3JcIiBzdHlsZT1cImNvbG9yOnJlZDtcIj48L2k+bm8gcmVmZXJlbmNlICE8dWw+PC91bD48L2xpPmApO1xuICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHQgPSAoKF9hID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgKChfYiA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB7IGljb24sIGNvbG9yIH0gPSBnZXRJY29uKHJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gYCgke3JlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKX0pICR7KChfYyA9IHJlZmVyZW5jZS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubmFtZSkgfHwgKChfZCA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnRleHQpIHx8IFwiXCJ9YDtcbiAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGkga2V5PVwiJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9XCJ9PjxzcGFuIGNsYXNzPVwidHJlZS10ZXh0XCIgdGl0bGU9JHt0aXRsZX0+PGkgY2xhc3M9XCJmYSAke2ljb259XCIgc3R5bGU9XCJjb2xvcjoke2NvbG9yfTtcIj48L2k+ICR7dH08L3NwYW4+PHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgJGVsZW1lbnQuYWRkQ2xhc3MoXCJleHBhbmRhYmxlXCIpO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwidmFsdWVcIiwgbik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuICRlbGVtZW50O1xuICAgIH07XG4gICAgY29uc3QgZmluZEVsZW1lbnQgPSAobm9kZUlkLCAkdHJlZSkgPT4ge1xuICAgICAgICByZXR1cm4gJHRyZWUuZmluZChgbGlba2V5PVwiJHtub2RlSWR9XCJdYCk7XG4gICAgfTtcbiAgICBjb25zdCBzZWxlY3RTaW5nbGUgPSAodGhhdCwgJGxpKSA9PiB7XG4gICAgICAgIHRoYXQuJHRyZWUuZmluZChcImxpID4gLnRyZWUtdGV4dFwiKS5yZW1vdmVDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgICAgICAvLyBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXNcbiAgICAgICAgJGxpLmZpbmQoXCIudHJlZS10ZXh0OmZpcnN0XCIpLmFkZENsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgfTtcbiAgICBjb25zdCBhdXRvRXhwYW5kID0gKHRoYXQsIGJyb3dzZVBhdGgsICR0cmVlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gZXhwYW5kIHRoZSB0cmVlIHRvIHNob3cgdGhlIG5vZGVJZFxuICAgICAgICBsZXQgJGN1cnJlbnQgPSAkdHJlZS5jaGlsZHJlbihcIjpmaXJzdFwiKTtcbiAgICAgICAgYnJvd3NlUGF0aC5yZWxhdGl2ZVBhdGguZWxlbWVudHMgfHwgW107XG4gICAgICAgIGNvbnN0IG5vZGVJZHMgPSBicm93c2VQYXRoLm5vZGVJZHMgfHwgW107XG4gICAgICAgIGlmIChub2RlSWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgbiBvZiBub2RlSWRzKSB7XG4gICAgICAgICAgICBpZiAoJGN1cnJlbnQuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgLy8gbmVlZCB0byBleHBhbmQgYW5kIHNlbGVjdCB0aGUgcmlnaHQgZWxlbWVudFxuICAgICAgICAgICAgICAgIHlpZWxkIF9leHBhbmRMaSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IGZpbmRFbGVtZW50KG4sICRjdXJyZW50KTtcbiAgICAgICAgICAgIGlmICgkZWxlbWVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkY3VycmVudCA9ICRlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkY3VycmVudCk7XG4gICAgICAgIHNjcm9sbFRvTGkodGhhdC4kZHJvcGRvd24sICRjdXJyZW50KTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBzY3JvbGxUb0xpKCRjb250YWluZXIsICR0YXJnZXRMaSkge1xuICAgICAgICAvLyBHZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB0YXJnZXQgaXRlbSByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGxpUG9zID0gJHRhcmdldExpLnBvc2l0aW9uKCkudG9wO1xuICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBjb250YWluZXJcbiAgICAgICAgY29uc3QgY29udGFpbmVyU2Nyb2xsVG9wID0gJGNvbnRhaW5lci5zY3JvbGxUb3AoKTtcbiAgICAgICAgaWYgKGNvbnRhaW5lclNjcm9sbFRvcCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHBvc2l0aW9uIHRvIHNjcm9sbCB0byAoY3VycmVudCBzY3JvbGwgKyBpdGVtJ3MgcG9zaXRpb24pXG4gICAgICAgIC8vIEFkanVzdCB0aGlzIGNhbGN1bGF0aW9uIGJhc2VkIG9uIHlvdXIgbmVlZHNcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG8gPSBjb250YWluZXJTY3JvbGxUb3AgKyBsaVBvcyAtICRjb250YWluZXIuaGVpZ2h0KCkgLyAyICsgJHRhcmdldExpLmhlaWdodCgpIC8gMjtcbiAgICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gZW5zdXJlIHRoZSBpdGVtIGlzIHZpc2libGVcbiAgICAgICAgJGNvbnRhaW5lci5hbmltYXRlKHtcbiAgICAgICAgICAgIHNjcm9sbFRvcDogc2Nyb2xsVG8sXG4gICAgICAgIH0sIDUwMCk7IC8vIEFkanVzdCB0aGUgZHVyYXRpb24gKDUwMG1zKSBhcyBuZWVkZWRcbiAgICB9XG4gICAgY29uc3QgcmVhY2hTZWxlY3Rpb24gPSAodGhhdCwgcGFyZW50Tm9kZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IG5vZGVJZCA9IHRoYXQuJGlucHV0LnZhbCgpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgcm9vdE5vZGVJZDogcGFyZW50Tm9kZS5ub2RlSWQsXG4gICAgICAgICAgICBpc1R5cGU6IHRoYXQub3B0aW9ucy5pc1R5cGVSZWYgfHwgZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgY29uc3QgYnJvd3NlUGF0aCA9IHlpZWxkIHdhbGtCYWNrd2FyZChkYXRhLCBvcHRpb25zKTtcbiAgICAgICAgaWYgKCFicm93c2VQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQgYXV0b0V4cGFuZCh0aGF0LCBicm93c2VQYXRoLCB0aGF0LiR0cmVlKTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBfZmV0Y2hEYXRhRm9yTm9kZSh0aGF0LCAkbm9kZSwgZmV0Y2hGdW5jLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJmZXRjaGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGZldGNoZWRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwibG9hZGluZ1wiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBsb2FkaW5nXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwibG9hZGluZ1wiKTtcbiAgICAgICAgICAgICRub2RlLmFwcGVuZCgnPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgJG5vZGUuY2hpbGRyZW4oXCJ1bFwiKS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVmZXJlbmNlcyB9ID0geWllbGQgZmV0Y2hGdW5jKCRub2RlLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAvLyBzb3J0IHJlZmVyZW5jZSAgIGJ5IGJyb3dzZU5hbWVcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzLnNvcnQoKGEsIGIpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuICgoKF9hID0gYS5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmFtZSkgfHwgXCJcIikubG9jYWxlQ29tcGFyZSgoKF9iID0gYi5icm93c2VOYW1lKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubmFtZSkgfHwgXCJcIik7IH0pO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5maWx0ZXIgJiYgIXRoYXQub3B0aW9ucy5maWx0ZXIocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChyZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwiZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZChgPGxpPmVycm9yICR7ZXJyLm1lc3NhZ2V9PC9saT5gKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVyclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJG5vZGUuZmluZChcIi5zcGlubmVyXCIpLnJlbW92ZSgpO1xuICAgICAgICAgICAgJG5vZGUucmVtb3ZlQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWFrZUNvbm5lY3Rpb24odGhhdCkge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgZnVuY3Rpb24gX2V4cGFuZExpKHRoYXQsICRsaSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgY29uc3QgZiA9ICF0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmID8gZmV0Y2hDaGlsZHJlbiA6IGZldGNoU3VidHlwZXM7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIF9mZXRjaERhdGFGb3JOb2RlKHRoYXQsICRsaSwgZiwgZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gbWFyayBhcyBleHBhbmRlZFxuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdFBhcmVudE5vZGUgPSB7XG4gICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgIG5vZGVDbGFzczogXCJPYmplY3RcIixcbiAgICAgICAgbm9kZUlkOiBcIm5zPTA7aT04NVwiLFxuICAgICAgICBkaXNwbGF5TmFtZTogeyB0ZXh0OiBcIk9iamVjdHNcIiB9LFxuICAgICAgICB0eXBlRGVmaW5pdGlvbjogRm9sZGVyVHlwZSxcbiAgICB9O1xuICAgIGNvbnN0IGRlY2xhcmVOb2RlQnJvd3NlcldpZGdldCA9ICgpID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFsgVGVtcGVyYXR1cmUgIF1cbiAgICAgICAgICogICAoIHRvb2x0aXAgOiAoL09iamVjdHMvTXlTZW5zb3IpIChucz0xO3M9VGVtcGVyYXR1cmUpKVxuICAgICAgICAgKiBbICsgW0ZvbGRlcl0gT2JqZWN0c11cbiAgICAgICAgICogWyAgICAgW09iamVjdF0gTXlTZW5zb3JdXG4gICAgICAgICAqIFsgICAgICggKSBbVmFyaWFibGVdIFRlbXBlcmF0dXJlXVxuICAgICAgICAgKi9cbiAgICAgICAgJC53aWRnZXQoXCJzdGVyZml2ZS5ub2RlQnJvd3NlclwiLCB7XG4gICAgICAgICAgICAvKiBkZWZhdWx0IG9wdGlvbnMgKi9cbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6ICgpID0+ICh7IGVuZHBvaW50OiBcIm9wYy50Y3A6Ly9vcGN1YWRlbW8uc3RlcmZpdmUuY29tOjI2NTQzXCIgfSksXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlOiAoKSA9PiBkZWZhdWx0UGFyZW50Tm9kZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgICAgICBpc1R5cGVSZWY6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc29sdmVQYXJlbnROb2RlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5fX3BhcmVudE5vZGUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdHlwZW9mIHRoYXQub3B0aW9ucy5wYXJlbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZS5jYWxsKHRoYXQpIDogdGhhdC5vcHRpb25zLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0geWllbGQgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGRlc2M7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX19wYXJlbnROb2RlIHx8IGRlZmF1bHRQYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAvLyBhbHNvIHJlc2V0IHBhcmVudCBub2RlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0aGF0O1xuICAgICAgICAgICAgICAgICAgICBhLl9fcGFyZW50Tm9kZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0geWllbGQgdGhpcy5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY3VycmVudFBhcmVudCA9IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyaWZ5KG1vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgICAgIGludGVybmFsVmVyaWZ5KGRhdGEsIG1vZGUsIHRoYXQuJGlucHV0LCB0aGF0LiRpbmZvKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJpbnB1dC1lcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLnJlbW92ZUNsYXNzKFwiaW5wdXQtZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfaGlkZU1lbnUobWVudSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9mZihcIm1vdXNlZG93bi5yZWQtdWktdHlwZWRJbnB1dC1jbG9zZS1wcm9wZXJ0eS1zZWxlY3RcIik7XG4gICAgICAgICAgICAgICAgbWVudS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgbWVudS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChtZW51Lm9wdHMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgICAgIG1lbnUuZmluZCgnaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJykuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5wcm9wKFwiY2hlY2tlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnB1c2goJCh0aGlzKS5kYXRhKFwidmFsdWVcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgbWVudS5jYWxsYmFjayhzZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGF0LiRlbGVtZW50RGl2LmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICAvL3h4IH0gZWxzZSBpZiAodGhpcy4kb3B0aW9uU2VsZWN0VHJpZ2dlci5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8veHggICAgIHRoYXQuJG9wdGlvblNlbGVjdFRyaWdnZXIudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGVNZW51KG1lbnVPcHRpb25zLCBvcHRzLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICBjb25zdCBtZW51ID0gJChcIjxkaXY+XCIpLmFkZENsYXNzKFwic3RlcmZpdmUtdHlwZWRJbnB1dC1vcHRpb25zIHN0ZXJmaXZlLW9ubGluZS1tZW51XCIpO1xuICAgICAgICAgICAgICAgIG1lbnUub3B0cyA9IG9wdHM7XG4gICAgICAgICAgICAgICAgbWVudS5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICAgICAgICAgIG1lbnVPcHRpb25zLmZvckVhY2goKG9wdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0ID0geyB2YWx1ZTogb3B0LCBsYWJlbDogb3B0IH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIG9wID0gJCgnPGEgaHJlZj1cIiNcIj48L2E+JykuYXR0cihcInZhbHVlXCIsIG9wdC52YWx1ZSkuYXBwZW5kVG8obWVudSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHQubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLnRleHQob3B0LmxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC5wcm9wKFwidGl0bGVcIiwgb3B0LnRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0Lmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHQuaWNvbi5pbmRleE9mKFwiPFwiKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQob3B0Lmljb24pLnByZXBlbmRUbyhvcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChvcHQuaWNvbi5pbmRleE9mKFwiL1wiKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiPGk+XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFwicmVkLXVpLXR5cGVkSW5wdXQtaWNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogXCJtYXNrLWltYWdlOiB1cmwoXCIgKyBvcHQuaWNvbiArIFwiKTsgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCIgKyBvcHQuaWNvbiArIFwiKTtcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5wcmVwZW5kVG8ob3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChcIjxpPlwiLCB7IGNsYXNzOiBcInJlZC11aS10eXBlZElucHV0LWljb24gXCIgKyBvcHQuaWNvbiB9KS5wcmVwZW5kVG8ob3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AuY3NzKHsgcGFkZGluZ0xlZnQ6IFwiMThweFwiIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0Lmljb24gJiYgIW9wdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AudGV4dChvcHQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBjYjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNiID0gJCgnPGlucHV0IHR5cGU9XCJjaGVja2JveFwiPicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcyhcInBvaW50ZXItZXZlbnRzXCIsIFwibm9uZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKFwidmFsdWVcIiwgb3B0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcmVwZW5kVG8ob3ApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwibW91c2Vkb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9wLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdHMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvcHQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2hpZGVNZW51KG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2IucHJvcChcImNoZWNrZWRcIiwgIWNiLnByb3AoXCJjaGVja2VkXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWVudS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtZW51Lm9uKFwia2V5ZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5Q29kZSA9PT0gNDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRE9XTlxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jaGlsZHJlbihcIjpmb2N1c1wiKS5uZXh0KCkudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5rZXlDb2RlID09PSAzOCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVUFxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jaGlsZHJlbihcIjpmb2N1c1wiKS5wcmV2KCkudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5rZXlDb2RlID09PSAyNykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRVNDQVBFXG4gICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2hpZGVNZW51KG1lbnUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVudTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXNhcm1DbGljazogZmFsc2UsXG4gICAgICAgICAgICBfc2hvd01lbnUobWVudSwgcmVsYXRpdmVUbykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpc2FybUNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYXJtQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlbGF0aXZlVG8ub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IHJlbGF0aXZlVG8uaGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgdmFyIG1lbnVIZWlnaHQgPSBtZW51LmhlaWdodCgpO1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSBoZWlnaHQgKyBwb3MudG9wO1xuICAgICAgICAgICAgICAgIGlmICh0b3AgKyBtZW51SGVpZ2h0IC0gJChkb2N1bWVudCkuc2Nyb2xsVG9wKCkgPiAkKHdpbmRvdykuaGVpZ2h0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wIC09IHRvcCArIG1lbnVIZWlnaHQgLSAkKHdpbmRvdykuaGVpZ2h0KCkgKyA1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodG9wIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBtZW51LmhlaWdodChtZW51SGVpZ2h0ICsgdG9wKTtcbiAgICAgICAgICAgICAgICAgICAgdG9wID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWVudS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICB0b3A6IHRvcCArIFwicHhcIixcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogcG9zLmxlZnQgKyBcInB4XCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWVudS5zbGlkZURvd24oMTAwKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWxheShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHVpU2VsZWN0LmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXQtZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwibW91c2Vkb3duLnJlZC11aS10eXBlZElucHV0LWNsb3NlLXByb3BlcnR5LXNlbGVjdFwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QobWVudSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faGlkZU1lbnUobWVudSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJChldmVudC50YXJnZXQpLmNsb3Nlc3QocmVsYXRpdmVUbykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5kaXNhcm1DbGljayA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX3Nob3dUeXBlTWVudSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG93TWVudSh0aGF0LiRtZW51LCB0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGF0LnNlbGVjdGVkTWVudUl0ZW07XG4gICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0gdGhhdC4kbWVudS5maW5kKFwiW3ZhbHVlPSdcIiArIHR5cGUgKyBcIidcIik7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICB9LCAxMjApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9pbml0TWVudSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLmF0dHIoXCJ0YWJpbmRleFwiLCAtMSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5vbihcIm1vdXNlZG93bi5yZWQtdWktdHlwZWRJbnB1dC1mb2N1cy1ibG9ja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh0aGF0LiRtZW51KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGZhLWlkLWNhcmRcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlTGlzdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJ0ZXh0XCIsIHZhbHVlOiBcInRcIiwgdGl0bGU6IFwiVmFsdWUgaXMgbm90IHZlcmlmaWVkXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWZvbnRcIi9pPiAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIm1zZy5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIm1zZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwibm9kZSBpZCBvciAgYnJvd3NlIHBhdGggY29tZXMgZnJvbSBpbmplY3RlZCBtc2cgcGFyYW1ldGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZS1vcGVuLW9cIi8+JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJOb2RlSWRcIiwgdmFsdWU6IFwiblwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS10YWdcIi8+MSAmbmJzcDsgJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIkFsaWFzZWQgTm9kZUlkXCIsIHZhbHVlOiBcIm5hXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWJvb2ttYXJrXCIvPiZuYnNwOyAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiTm9kZUlkIHdpdGggbmFtZXNwYWNlIFVyblwiLCB2YWx1ZTogXCJuc3VcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtaWQtY2FyZFwiLz4mbmJzcDsgJyB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIkJyb3dzZVBhdGhcIiwgdmFsdWU6IFwiYlwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS10YWdcIi8+PGkgY2xhc3M9XCJmYSBmYS1maWdodGVyLWpldFwiLz4mbmJzcDsnIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkFsaWFzZWQgQnJvd3NlIFBhdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcImFiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1ib29rbWFya1wiLz48aSBjbGFzcz1cImZhIGZhLWZpZ2h0ZXItamV0XCIvPiZuYnNwOycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0gZmlndXJlT3V0TWVuVUl0ZW1WYWx1ZSh0aGF0LiRpbnB1dC52YWwoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZSA9IHR5cGVMaXN0LmZpbmQoKHgpID0+IHgudmFsdWUgPT09IGEpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdExhYmVsLmVtcHR5KCkuYXBwZW5kKGA8c3BhbiB0aXRsZT0keyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUudGl0bGUpIHx8IFwiXCJ9PiZuYnNwOyAkeyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuaWNvbikgfHwgXCJcIn08L3NwYW4+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC5zZWxlY3RlZE1lbnVJdGVtID0gYTtcbiAgICAgICAgICAgICAgICBjb25zdCB0dCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kbWVudSA9IHRoaXMuX2NyZWF0ZU1lbnUodHlwZUxpc3QsIHt9LCAodikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlID0gdG9Nb2RlKHYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gTWVudSBzZWxlY3RlZCAhXG4gICAgICAgICAgICAgICAgICAgICAgICB0dC52ZXJpZnkobW9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHR5cGVMaXN0LmZpbmQoKHgpID0+IHgudmFsdWUgPT09IHYpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LnNlbGVjdGVkTWVudUl0ZW0gPSB2O1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RMYWJlbC5lbXB0eSgpLmFwcGVuZChgPHNwYW4gdGl0bGU9JHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnRpdGxlKSB8fCBcIlwifT4mbmJzcDsgJHsoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLmljb24pIHx8IFwiXCJ9PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJG1lbnUuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kbWVudS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5zaG93KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW9kZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9Nb2RlKHRoYXQuc2VsZWN0ZWRNZW51SXRlbSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0TW9kZShtb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IGZyb21Nb2RlKG1vZGUpO1xuICAgICAgICAgICAgICAgIHRoYXQuc2VsZWN0ZWRNZW51SXRlbSA9IHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5jc3MoXCJib3JkZXJcIiwgXCJub25lXCIpO1xuICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LmFkZENsYXNzKFwicmVkLXVpLXR5cGVkSW5wdXRcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kZWxlbWVudERpdiA9IHRoYXQuJGlucHV0LndyYXAoXCI8ZGl2PlwiKS5wYXJlbnQoKS5hZGRDbGFzcyhcIm1haW4td3JhcHBlclwiKTtcbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIENvbWJvIGJyb3dzZXJcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgLy8gdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1pbnB1dC13cmFwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gYWRkIGJ1dHRvbiBvbiB0aGUgcmlnaHQgc2lkZVxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gdG9nZ2xlVHJlZUJ0blxuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4gPSAkKGA8YnV0dG9uIHRpdGxlPVwib3BlbiBPUENVQSBBZGRyZXNzU3BhY2UgQnJvd3NlclwiPjxpIGNsYXNzPVwiZmEgZmEtc2l0ZW1hcFwiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hZnRlcih0aGF0LiR0b2dnbGVUcmVlQnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5lZWRUb1JlYWNoU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC4kZHJvcGRvd24uaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyZWUgd2lkZ2V0IGlzIGdvaW5nIHRvIGJlY29tZSB2aXNpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHlpZWxkIHRoYXQucmVzb2x2ZVBhcmVudE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZSAhPT0gdGhhdC5jdXJyZW50UGFyZW50IHx8ICgoX2EgPSB0aGF0LmN1cnJlbnRQYXJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5ub2RlSWQpICE9PSBwYXJlbnROb2RlLm5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB0aGF0LnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUb1JlYWNoU2VsZWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvUmVhY2hTZWxlY3Rpb24gJiYgKHlpZWxkIHJlYWNoU2VsZWN0aW9uKHRoYXQsIHBhcmVudE5vZGUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gdmVyaWZ5QnRuXG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuID0gJChgPGJ1dHRvbiB0aXRsZT1cInZlcmlmeSBub2RlSWQgb3IgYnJvd3NlUGF0aFwiPjxpIGNsYXNzPVwiZmEgZmEtcmVmcmVzaFwiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hZnRlcih0aGF0LiR2ZXJpZnlCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0bi5vbihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZSA9IHRoYXQubW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeShtb2RlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZUlucHV0ID0gKGlucHV0KSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW9kZSA9IHRoYXQubW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb25EYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSwganNvbiB9ID0geWllbGQgX2NhbGxDaGVja05vZGVJZChjb25uZWN0aW9uRGF0YSwgaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlSWQgPSBjaG9vc2VOb2RlSWQoanNvbiwgbW9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoc2VsZWN0ZWROb2RlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgcHJlcGVuZGVkIGJ1dHRvblxuICAgICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QgPSAkKFwiPGRpdj5cIik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmJlZm9yZSh0aGF0LiR1aVNlbGVjdCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIgPSAkKCc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIjBcIj48L2J1dHRvbj4nKS5wcmVwZW5kVG8odGhhdC4kdWlTZWxlY3QpO1xuICAgICAgICAgICAgICAgICAgICAkKCc8aSBjbGFzcz1cInJlZC11aS10eXBlZElucHV0LWljb24gZmEgZmEtY2FyZXQtZG93blwiPjwvaT4nKS50b2dnbGUodHJ1ZSkuYXBwZW5kVG8odGhhdC4kc2VsZWN0VHJpZ2dlcik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3Nob3dUeXBlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwia2V5ZG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3Nob3dUeXBlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwiZm9jdXNcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QuYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImJsdXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFyIG9wdCA9IHRoYXQudHlwZU1hcFt0aGF0LnByb3BlcnR5VHlwZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAob3B0Lmhhc1ZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QucmVtb3ZlQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdExhYmVsID0gJCgnPHNwYW4gY2xhc3M9XCJyZWQtdWktdHlwZWRJbnB1dC10eXBlLWxhYmVsXCI+PC9zcGFuPicpLmFwcGVuZFRvKHRoYXQuJHNlbGVjdFRyaWdnZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9pbml0TWVudSgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiLCBcImVudGVyIGEgbm9kZUlkIG9yIGEgYnJvd3NlUGF0aCBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gdGVtcG9yYXR5IGluZm8gcGFuZWxcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvID0gJChgPGRpdiBjbGFzcz1cImluZm8tdGV4dFwiPjwvZGl2PmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbmZvKTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBkcm9wIGRvd24gdHJlZVxuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWRyb3Bkb3duXCIpLmhpZGUoKS5hcHBlbmRUbyh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRkcm9wZG93bi5zaG93KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICBjb25zdCBpc09uTGVmdFNpemUgPSAoJGxpLCBldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVXaWR0aCA9IDIwOyAvLyBTZXQgd2lkdGggb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gMjA7IC8vIFNldCBoZWlnaHQgb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvcyA9ICRsaS5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5wYWdlWCA+PSBlbGVtZW50UG9zLmxlZnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVggPD0gZWxlbWVudFBvcy5sZWZ0ICsgYmVmb3JlV2lkdGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPj0gZWxlbWVudFBvcy50b3AgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPD0gZWxlbWVudFBvcy50b3AgKyBiZWZvcmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvZ2dsZUV4cGFuc2lvbiA9ICgkbGkpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9leHBhbmRMaSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaXRzIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmNoaWxkcmVuKFwidWxcIikuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiZGJsY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbkxlZnRTaXplKCRsaSwgZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVFeHBhbnNpb24oJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJGxpLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9ICRsaS5kYXRhKFwicmVmZXJlbmNlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUgJiYgIXRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9kZSA9IHRoYXQubW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9IFwibm9kZUlkXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5zZXRNb2RlKG1vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplSW5wdXQodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LnZhbChpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudmFsKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0U2luZ2xlKHRoYXQsICRsaSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2xpY2tpbmcgb3V0c2lkZSB0aGUgcGFnZSB3aWxsIGhpZGUgdGhlIGRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QodGhhdC4kY29tYm8pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFN1YnNjcmlwdGlvblNlbGVjdG9yKFJFRCwgbm9kZSkge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0ICRzdWJzY3JpcHRpb24gPSAkKFwiI25vZGUtaW5wdXQtc3Vic2NyaXB0aW9uXCIpO1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgY29uc3QgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbmRwb2ludCA9IFJFRC5ub2Rlcy5ub2RlKCRlbmRwb2ludC52YWwoKSk7XG4gICAgICAgICAgICAkc3Vic2NyaXB0aW9uLmVtcHR5KCk7XG4gICAgICAgICAgICBpZiAoIWVuZHBvaW50IHx8ICFlbmRwb2ludC5zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCBzIG9mIGVuZHBvaW50LnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHMubmFtZSB8fCBzLmlkO1xuICAgICAgICAgICAgICAgICQoXCI8b3B0aW9uLz5cIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcy5pZCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogcy5pZCA9PT0gbm9kZS5zdWJzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRleHQobGFiZWwpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbygkc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMoKTtcbiAgICAgICAgLy8gaGFja1xuICAgICAgICAvLyAkaW5wdXRBY3Rpb24ub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAvLyAgICAgJGVuZHBvaW50Lm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgLy8gICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucygpO1xuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAkc3Vic2NyaXB0aW9uLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgIG5vZGUuc3Vic2NyaXB0aW9uID0gJHN1YnNjcmlwdGlvbi52YWwoKTtcbiAgICAgICAgICAgIC8vICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAkZW5kcG9pbnQub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgZW5kcG9pbnQgYXR0cmlidXRlcyBjb250YWluaW5nOlxuICAgICAqICAtIHRoZSBlbmRwb2ludCwgc2VjdXJpdHlNb2RlLCBzZWN1cml0eVBvbGljeSxcbiAgICAgKiAgLSB1c2VySWRlbnRpdHlUeXBlLFxuICAgICAqICAtIGNyZWRlbnRpYWxzXG4gICAgICogIC0gbmFtZXNwYWNlQWxpYXNlc1xuICAgICAqXG4gICAgICogZXh0cmFjdGVkIGZyb20gdGhlIHVpIHdpZGdldCAjbm9kZS1pbnB1dC1lbmRwb2ludFxuICAgICAqL1xuICAgIGNvbnN0IGdldEVuZFBvaW50QXR0cmlidXRlcyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCByZWROb2RlID0gUkVELm5vZGVzLm5vZGUoZW5kcG9pbnRJZCk7XG4gICAgICAgIGlmICghcmVkTm9kZSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIC8vIGNvbnN0IGNyZWRlbnRpYWxzID0gUkVELihlbmRwb2ludElkKTtcbiAgICAgICAgLy8gd2UgbmVlZCB0byBzYW5pdGl6ZSBhbmQgZXh0cmFjdCB0aGUgZW5kcG9pbnQgYXR0cmlidXRlcyBvbmx5ICggbm90IHRoZSBub2RlLXJlZCBzdHVmZilcbiAgICAgICAgY29uc3QgeyBlbmRwb2ludCwgc2VjdXJpdHlNb2RlLCBzZWN1cml0eVBvbGljeSwgdXNlcklkZW50aXR5VHlwZSwgY3JlZGVudGlhbHMsIG5hbWVzcGFjZUFsaWFzZXMgfSA9IHJlZE5vZGU7XG4gICAgICAgIGNvbnN0IHJldFZhbHVlID0ge1xuICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICBzZWN1cml0eU1vZGUsXG4gICAgICAgICAgICBzZWN1cml0eVBvbGljeSxcbiAgICAgICAgICAgIHVzZXJJZGVudGl0eVR5cGUsXG4gICAgICAgICAgICBjcmVkZW50aWFscyxcbiAgICAgICAgICAgIG5hbWVzcGFjZUFsaWFzZXMsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXRWYWx1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVycyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCBlbmRwb2ludE5yID0gZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGlmICghZW5kcG9pbnROcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuYW1lc3BhY2VBbGlhc2VzID0gZW5kcG9pbnROci5uYW1lc3BhY2VBbGlhc2VzO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7IG5hbWVzcGFjZUFsaWFzZXMsIGlkOiBlbmRwb2ludElkIH0sIGVuZHBvaW50TnIpO1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzSGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzLFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBpbnN0YWxsRmVlZGJhY2tXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgIC8vIHJldHVybjtcbiAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgIGNvbnN0IHRyYXlDb250ZW50ID0gJChcIi5yZWQtdWktdHJheS1ib2R5XCIpO1xuICAgICAgICBjb25zb2xlLmxvZyhcImluc3RhbGxGZWVkYmFja1dpZGdldCBcIiwgdHJheUNvbnRlbnQubGVuZ3RoKTtcbiAgICAgICAgaWYgKHRyYXlDb250ZW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJpbnN0YWxsaW5nIGlmcmFtZVwiKTtcbiAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgaWZyYW1lIGVsZW1lbnRcbiAgICAgICAgICAgIGNvbnN0IGlmcmFtZSA9ICQoXCI8aWZyYW1lPjwvaWZyYW1lPlwiLCB7XG4gICAgICAgICAgICAgICAgc3JjOiBcIi9vcGN1YS1mb3Itbm9kZS1yZWQvc3VwcG9ydC1mcmFtZS5odG1sXCIsXG4gICAgICAgICAgICAgICAgc2Nyb2xsaW5nOiBcIm5vXCIsXG4gICAgICAgICAgICAgICAgc3R5bGU6IFwiYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjNweFwiLFxuICAgICAgICAgICAgICAgIGFsbG93dHJhbnNwYXJlbmN5OiBcInRydWVcIixcbiAgICAgICAgICAgICAgICB3aWR0aDogXCIxODBweFwiLFxuICAgICAgICAgICAgICAgIGhlaWdodDogXCIzMHB4XCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgaWZyYW1lIHRvIHRoZSBmZWVkYmFjayBlbGVtZW50XG4gICAgICAgICAgICB0cmF5Q29udGVudC5hcHBlbmQoaWZyYW1lKTtcbiAgICAgICAgICAgIC8vIFBvc2l0aW9uIHRoZSBmZWVkYmFjayBlbGVtZW50IGF0IHRoZSBib3R0b20gcmlnaHQgb2YgdGhlIHRyYXkgY29udGVudFxuICAgICAgICAgICAgaWZyYW1lLmNzcyh7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICByaWdodDogXCIyMHB4XCIsXG4gICAgICAgICAgICAgICAgYm90dG9tOiBcIjE2cHhcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1DbGllbnQyLU1vbml0b3JcIiwge1xuICAgICAgICBjYXRlZ29yeTogXCJvcGN1YVwiLFxuICAgICAgICBjb2xvcjogXCIjQzBERUVEXCIsXG4gICAgICAgIGFsaWduOiBcInJpZ2h0XCIsXG4gICAgICAgIGljb246IFwiLi4vLi4vaWNvbnMvb3BjdWFub2RlTG9nby5wbmdcIixcbiAgICAgICAgcGFsZXR0ZUxhYmVsOiBcIm1vbml0b3IgdmFyaWFibGVcIixcbiAgICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgICAgIGlucHV0czogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgb3V0cHV0OiB7IHZhbHVlOiAyIH0sXG4gICAgICAgICAgICAvLyBDb21tb25cbiAgICAgICAgICAgIG5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogXCJPcGNVYS1FbmRwb2ludDJcIiB9LFxuICAgICAgICAgICAgLy8gZm9yIGFjdGlvbiBtb25pdG9yXG4gICAgICAgICAgICBzdWJzY3JpcHRpb246IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZTogKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsID09PSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YXJ0SW1tZWRpYXRlbHk6IHsgdmFsdWU6IHRydWUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICAvLyB3ZSB1c2UgYSBkaWZmZXJlbnQgd2lkZ2V0IGZvciBlZGl0aW5nIHRoZSBub2RlSWQsIGJlY2F1c2UgdGhlIGJlaGF2aW9yXG4gICAgICAgICAgICAvLyBpcyBzcGVjaWZpYyB0byBtb25pdG9yLCBob3dldmVyIHByb3BlcnR5IHdpbGwgYmUgc3RvcmVkIGluIG5vZGVJZFxuICAgICAgICAgICAgbm9kZUlkOiB7IHZhbHVlOiBcIi9TZXJ2ZXIvU2VydmVyU3RhdHVzL0N1cnJlbnRUaW1lXCIsIHJlcXVpcmVkOiBmYWxzZSwgdmFsaWRhdGU6ICgpID0+IHRydWUgfSxcbiAgICAgICAgICAgIHNhbXBsaW5nSW50ZXJ2YWw6IHsgdmFsdWU6IDEwMDAsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBkaXNjYXJkT2xkZXN0OiB7IHZhbHVlOiB0cnVlLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgcXVldWVTaXplOiB7IHZhbHVlOiAxMCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gaW5wdXRzOixcbiAgICAgICAgb3V0cHV0czogMSwgLy94eFxuICAgICAgICAvLyAyIG91dHB1dCwgc2Vjb25kIGZvciByYXcgbm9kZS1vcGN1YSBkaWFnbm9zdGljcyBvciBtb3JlIGNvbXBsZXRlIG1lc3NhZ2VcbiAgICAgICAgbGFiZWwoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IFwiT1BDVUEgQ2xpZW50IE1vbml0b3IgXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsU3R5bGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gXCJub2RlX2xhYmVsX2l0YWxpY1wiIDogXCJcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBpbnN0YWxsRmVlZGJhY2tXaWRnZXQoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzSW1tZWRpYXRlID0gbm9kZS5zdGFydEltbWVkaWF0ZWx5O1xuICAgICAgICAgICAgbm9kZS5pbnB1dHMgPSBpc0ltbWVkaWF0ZSA/IDAgOiAxO1xuICAgICAgICAgICAgaW5zdGFsbFN1YnNjcmlwdGlvblNlbGVjdG9yKFJFRCwgdGhpcyk7XG4gICAgICAgICAgICAkKFwibm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGVja2VkID0gJChcIiNub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikucHJvcChcImNoZWNrZWRcIik7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LWlucHV0c1wiKS52YWwoMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtaW5wdXRzXCIpLnZhbCgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgQWN0aW9uIE1vbml0b3JcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICBjb25zdCAkbm9kZUlkID0gJChcIiNub2RlLWlucHV0LW5vZGVJZFwiKTtcbiAgICAgICAgICAgICRub2RlSWQubm9kZUJyb3dzZXIoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyKCkpLCB7IGZpbHRlcihub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIlZhcmlhYmxlXCIgfHwgbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIk9iamVjdFwiO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIjtcbiAgICAgICAgICAgICAgICB9IH0pKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0c2F2ZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW1tZWRpYXRlbHkgPSAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS5wcm9wKFwiY2hlY2tlZFwiKTtcbiAgICAgICAgICAgIGlmIChzdGFydEltbWVkaWF0ZWx5KSB7XG4gICAgICAgICAgICAgICAgJChcIiNub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikudmFsKHN0YXJ0SW1tZWRpYXRlbHkgPyAwIDogMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dHMgPSBzdGFydEltbWVkaWF0ZWx5ID8gMCA6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS52YWwoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dHMgPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
7
+ function _0x3e8d(_0xf30bf7,_0x409e1b){const _0x2d01d9=_0x2d01();return _0x3e8d=function(_0x3e8d32,_0x58b44a){_0x3e8d32=_0x3e8d32-0x17c;let _0x184286=_0x2d01d9[_0x3e8d32];return _0x184286;},_0x3e8d(_0xf30bf7,_0x409e1b);}function _0x2d01(){const _0x15004b=['<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>',':focus','</span>','auto','inputs','val','#node-input-nodeId','$dropdown','ObjectType','20px','HasTypeDefinition','fa-question','target',':visible','disarmClick','blur','off','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','180px','statusCode:\x20','setMode','before','next',');\x20-webkit-mask-image:\x20url(','sort','subscriptions','.tree-text:first','statusCode','<input\x20type=\x22checkbox\x22>','change','append','li\x20>\x20.tree-text','Aliased\x20NodeId','$selectTrigger','text','placeholder','prev','IsForward','__parentNode','suppressed','BrowseName','sterfive-dropdown','<li\x20key=\x22','16px','top','elements','><i\x20class=\x22fa\x20','fa-object-group','prop','push','node_label_italic','bp_indexed',':first','HasProperty','bp_aliased','ns=0;i=35','Inverse','input[type=\x22checkbox\x22]','#node-input-startImmediately','tabindex','main-wrapper','nodeIds','TypeDefinition','Object','wrap','opc.tcp://opcuademo.sterfive.com:26543','HasSubtype','OPCUA\x20Client\x20Monitor\x20','function','opts','statusText','193779Odkqvg','Good','_initMenu','selectedMenuItem','<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>','Both','height','element','fetched','$combo','#node-input-inputs','node-input-startImmediately','sterfive-combo-box','#node-input-endpoint','HasChild','replaceWith','DodgerBlue','<i\x20class=\x22fa\x20fa-tag\x22/>1\x20&nbsp;\x20','SeaGreen','referenceTypeId','_showMenu','displayName','throw','failure','217290NejZXq','$selectLabel','show','find','slideDown','currentParent','startImmediately','opcua','name','Unspecified','nodeId_aliased','sterfive-input-group','<span\x20class=\x22red-ui-typedInput-type-label\x22></span>','registerType','status',';\x22></i>\x20','Aliased\x20Browse\x20Path','<div>','<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;','nodeId_nsu','Variable','SandyBrown','expandable','nodeBrowser','ns=0;i=45','body','mousedown.red-ui-typedInput-close-property-select','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','</li>','animate','prependTo','OpcUa-Endpoint2','verify','fa-list-alt','.spinner','_delay','appendTo','reset','mode','none','preventDefault','<i>','180uBYJKx','<div\x20class=\x22sterfive-info-text\x22></div>','keydown','nsu','pageX','background-color:transparent;overflow:hidden;border:3px','#C0DEED','focus','subscription','$input','mousedown.red-ui-typedInput-focus-block','i=61','expandable\x20expanded','border','890370JslZVj','4VDIfEj','relativePath','mask-image:\x20url(','empty','DisplayName','fa-sliders','aliased\x20browsePath:\x20','.red-ui-tray-body','1201100LmKYbQ','node\x20class:\x20','\x22}><span\x20class=\x22tree-text\x22\x20title=','sterfive-input-error','scrollTop','removeClass','$info','ns=0;i=85','44240eqZXOm','aliased\x20NodeId:\x20','<iframe></iframe>','expanded','toggle','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>','multiple','stringify','VariableType','endpoint','hasClass','fa-folder','nodeId','string','then','toString','aliasedBrowsePath','browseName','closest','after','node','parentNode','toggleClass','reference','$toggleTreeBtn','/walk-backward','Organizes','already\x20loading','done','Invalid','already\x20fetched','assign','/Server/ServerStatus/CurrentTime','endpointNode','/browse','ReferenceType','filter','fa-text-width','offset','css','Objects','value','<i\x20class=\x22fa\x20fa-bookmark\x22/>&nbsp;\x20','#node-input-subscription','18px','$menu','grey','<span\x20title=','/opcua-for-node-red','browseResult','$verifyBtn','$inputGroup','loading','SteelBlue','application/json','rgba(61,\x2060,\x204,\x200.525)','remove','error','match','references','8FQqyww','<div/>','checked','HasComponent','log','$elementDiv','parent','nodeClass','each','$uiSelect','mousedown','DataType','Forward','msg','SuppressedError','../../icons/opcuanodeLogo.png','[value=\x27','data','click','$tree','POST','keyCode','fetching\x20failed\x20with\x20error','resolveParentNode','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','trigger','720365HYCNcd','localeCompare','apply','OpcUa-Client2-Monitor','CadetBlue','forEach','stopPropagation','Method','sterfive-info','nodeId:\x20','indexOf','isSelectable','sterfive-typedInput-options\x20sterfive-online-menu','NodeClass','addClass','length','namespaceAliases','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>','nsuNodeID','nodes','widget','children','<i\x20class=\x22fa\x20fa-font\x22/i>\x20','ns=0;i=34','title','>&nbsp;\x20','left','/opcua-for-node-red/support-frame.html','msg.','ns=0;i=47','hide','isTypeRef','_showTypeMenu','BrowsePath','selected','label','aliasedNodeId','browsePath','1294AxVFPq','icon','red-ui-typedInput-icon\x20','attr','NodeId\x20with\x20namespace\x20Urn','options','right','30px','installFeedbackWidget\x20','json','View','_hideMenu','<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;'];_0x2d01=function(){return _0x15004b;};return _0x2d01();}(function(_0x4fec43,_0x53dfa5){const _0x31da26=_0x3e8d,_0xa04478=_0x4fec43();while(!![]){try{const _0xd4a608=parseInt(_0x31da26(0x287))/0x1*(parseInt(_0x31da26(0x1f1))/0x2)+parseInt(_0x31da26(0x25d))/0x3+-parseInt(_0x31da26(0x296))/0x4*(parseInt(_0x31da26(0x1cb))/0x5)+parseInt(_0x31da26(0x295))/0x6+parseInt(_0x31da26(0x2a6))/0x7+-parseInt(_0x31da26(0x1b1))/0x8*(-parseInt(_0x31da26(0x245))/0x9)+-parseInt(_0x31da26(0x29e))/0xa;if(_0xd4a608===_0x53dfa5)break;else _0xa04478['push'](_0xa04478['shift']());}catch(_0x5446c9){_0xa04478['push'](_0xa04478['shift']());}}}(_0x2d01,0x18a59),(function(){'use strict';const _0x4eb234=_0x3e8d;function _0x5a988c(_0x1e8ac6,_0x3c4078,_0x1be553,_0x26d930){function _0x2a468d(_0x4eeeb6){return _0x4eeeb6 instanceof _0x1be553?_0x4eeeb6:new _0x1be553(function(_0x4128b7){_0x4128b7(_0x4eeeb6);});}return new(_0x1be553||(_0x1be553=Promise))(function(_0x5a5c16,_0x4f16fa){const _0xb9514d=_0x3e8d;function _0x2801d7(_0x569a1a){const _0x1e3bcd=_0x3e8d;try{_0xb89896(_0x26d930[_0x1e3bcd(0x214)](_0x569a1a));}catch(_0x57521a){_0x4f16fa(_0x57521a);}}function _0x456a4e(_0xad4cf1){const _0xd5ab9a=_0x3e8d;try{_0xb89896(_0x26d930[_0xd5ab9a(0x25b)](_0xad4cf1));}catch(_0x33c874){_0x4f16fa(_0x33c874);}}function _0xb89896(_0x36b13b){const _0xdc7742=_0x3e8d;_0x36b13b[_0xdc7742(0x191)]?_0x5a5c16(_0x36b13b[_0xdc7742(0x19e)]):_0x2a468d(_0x36b13b['value'])[_0xdc7742(0x183)](_0x2801d7,_0x456a4e);}_0xb89896((_0x26d930=_0x26d930[_0xb9514d(0x1cd)](_0x1e8ac6,_0x3c4078||[]))[_0xb9514d(0x214)]());});}typeof SuppressedError===_0x4eb234(0x242)?SuppressedError:function(_0x5c8eaf,_0x5b5199,_0xafc89f){const _0x9908c7=_0x4eb234;var _0x695101=new Error(_0xafc89f);return _0x695101['name']=_0x9908c7(0x1bf),_0x695101[_0x9908c7(0x1ae)]=_0x5c8eaf,_0x695101[_0x9908c7(0x225)]=_0x5b5199,_0x695101;};const _0x536925=_0x4eb234(0x235),_0x9e8f56='ns=0;i=61',_0x21c9b0=_0x4eb234(0x1e8),_0x2a4ca1='ns=0;i=46',_0x10952c=_0x4eb234(0x1e2),_0x4bbc90=_0x4eb234(0x275),_0x4e418b='ns=0;i=40';var _0xace931;(function(_0x51c8ea){const _0x44bf53=_0x4eb234;_0x51c8ea[_0x51c8ea[_0x44bf53(0x1bd)]=0x0]=_0x44bf53(0x1bd),_0x51c8ea[_0x51c8ea[_0x44bf53(0x236)]=0x1]=_0x44bf53(0x236),_0x51c8ea[_0x51c8ea['Both']=0x2]=_0x44bf53(0x24a),_0x51c8ea[_0x51c8ea[_0x44bf53(0x192)]=0x3]=_0x44bf53(0x192);}(_0xace931||(_0xace931={})));var _0xf376b7;(function(_0x4cfb25){const _0x5a5317=_0x4eb234;_0x4cfb25[_0x4cfb25[_0x5a5317(0x266)]=0x0]='Unspecified',_0x4cfb25[_0x4cfb25[_0x5a5317(0x23d)]=0x1]=_0x5a5317(0x23d),_0x4cfb25[_0x4cfb25[_0x5a5317(0x271)]=0x2]=_0x5a5317(0x271),_0x4cfb25[_0x4cfb25[_0x5a5317(0x1d2)]=0x4]=_0x5a5317(0x1d2),_0x4cfb25[_0x4cfb25['ObjectType']=0x8]=_0x5a5317(0x206),_0x4cfb25[_0x4cfb25[_0x5a5317(0x17d)]=0x10]=_0x5a5317(0x17d),_0x4cfb25[_0x4cfb25[_0x5a5317(0x198)]=0x20]=_0x5a5317(0x198),_0x4cfb25[_0x4cfb25[_0x5a5317(0x1bc)]=0x40]=_0x5a5317(0x1bc),_0x4cfb25[_0x4cfb25[_0x5a5317(0x1fb)]=0x80]=_0x5a5317(0x1fb);}(_0xf376b7||(_0xf376b7={})));var _0x2cde6a;(function(_0x1d0c10){const _0x3d57fb=_0x4eb234;_0x1d0c10[_0x1d0c10['Object']=0x1]=_0x3d57fb(0x23d),_0x1d0c10[_0x1d0c10['Variable']=0x2]=_0x3d57fb(0x271),_0x1d0c10[_0x1d0c10[_0x3d57fb(0x1d2)]=0x4]=_0x3d57fb(0x1d2),_0x1d0c10[_0x1d0c10['ObjectType']=0x8]='ObjectType',_0x1d0c10[_0x1d0c10['VariableType']=0x10]='VariableType',_0x1d0c10[_0x1d0c10[_0x3d57fb(0x198)]=0x20]='ReferenceType',_0x1d0c10[_0x1d0c10[_0x3d57fb(0x1bc)]=0x40]=_0x3d57fb(0x1bc),_0x1d0c10[_0x1d0c10[_0x3d57fb(0x1fb)]=0x80]=_0x3d57fb(0x1fb);}(_0x2cde6a||(_0x2cde6a={})));var _0x32a776;(function(_0x4a103c){const _0x55b5ac=_0x4eb234;_0x4a103c[_0x4a103c['ReferenceType']=0x1]=_0x55b5ac(0x198),_0x4a103c[_0x4a103c['IsForward']=0x2]=_0x55b5ac(0x223),_0x4a103c[_0x4a103c['NodeClass']=0x4]=_0x55b5ac(0x1d8),_0x4a103c[_0x4a103c['BrowseName']=0x8]=_0x55b5ac(0x226),_0x4a103c[_0x4a103c[_0x55b5ac(0x29a)]=0x10]='DisplayName',_0x4a103c[_0x4a103c[_0x55b5ac(0x23c)]=0x20]='TypeDefinition';}(_0x32a776||(_0x32a776={})));function _0xac857f(_0x539233){const _0x2bd368=_0x4eb234;switch(_0x539233){case _0x2bd368(0x18f):return _0x536925;case _0x2bd368(0x233):return _0x2a4ca1;case _0x2bd368(0x1b4):return _0x21c9b0;case _0x2bd368(0x253):return _0x10952c;case _0x2bd368(0x240):return _0x4bbc90;case _0x2bd368(0x208):return _0x4e418b;}}const _0xd7e338=_0x440f31=>{const _0x297f1a=_0x4eb234;switch(_0x440f31[_0x297f1a(0x1b8)]){case _0x297f1a(0x23d):if(_0x440f31[_0x297f1a(0x258)]===_0x536925);if(_0x440f31['typeDefinition']===_0x9e8f56||_0x440f31[_0x297f1a(0x258)]===_0x297f1a(0x292))return{'icon':_0x297f1a(0x180),'color':_0x297f1a(0x1ac)};return{'icon':_0x297f1a(0x22d),'color':_0x297f1a(0x257)};case _0x297f1a(0x271):if(_0x440f31['referenceTypeId']===_0x21c9b0)return{'icon':'fa-list-alt','color':_0x297f1a(0x1aa)};else return _0x440f31[_0x297f1a(0x258)]===_0x2a4ca1?{'icon':_0x297f1a(0x27e),'color':_0x297f1a(0x255)}:{'icon':_0x297f1a(0x27e),'color':'CadetBlue'};case _0x297f1a(0x1d2):return{'icon':'fa-cog','color':_0x297f1a(0x272)};case _0x297f1a(0x206):return{'icon':_0x297f1a(0x22d),'color':'DarkOrange'};case _0x297f1a(0x17d):return{'icon':_0x297f1a(0x29b),'color':'DarkOrange'};case _0x297f1a(0x1bc):return{'icon':_0x297f1a(0x19a),'color':_0x297f1a(0x1cf)};}return{'icon':_0x297f1a(0x209),'color':_0x297f1a(0x1a3)};},_0x59fd05=(_0x1f5628,_0x545539,_0x2c1525)=>_0x5a988c(void 0x0,[_0x1f5628,_0x545539,_0x2c1525],void 0x0,function*({endpointNode:_0x33985d,endpoint:_0x2deced,baseUrl:_0x554d20},_0x5357ec,_0x77ad3b){const _0x429b7e=_0x4eb234,_0x37e5a7=_0x554d20+_0x429b7e(0x1a5),_0x15505c=_0x37e5a7+_0x429b7e(0x197),_0x1f898f=Object[_0x429b7e(0x194)](Object[_0x429b7e(0x194)]({},_0x77ad3b),{'nodeId':_0x5357ec,'resultMask':0x3f}),_0x2b58c7=yield fetch(_0x15505c,{'method':_0x429b7e(0x1c5),'body':JSON['stringify']({'endpointNode':_0x33985d,'endpoint':_0x2deced,'browseDescription':_0x1f898f}),'headers':{'Content-Type':'application/json'}});if(_0x2b58c7[_0x429b7e(0x26b)]!==0xc8)return console[_0x429b7e(0x1b5)](_0x429b7e(0x1c7),_0x2b58c7[_0x429b7e(0x26b)],_0x2b58c7['statusText']),{'references':[]};const _0x1c21ce=yield _0x2b58c7[_0x429b7e(0x1fa)](),_0x2c33bd=_0x1c21ce[_0x429b7e(0x1a6)]['references']||[];return{'references':_0x2c33bd};}),_0xaf36b5={'referenceTypeId':_0xac857f(_0x4eb234(0x253)),'includeSubtypes':!![],'browseDirection':_0xace931[_0x4eb234(0x1bd)],'nodeClassMask':_0xf376b7[_0x4eb234(0x271)]|_0xf376b7[_0x4eb234(0x23d)]|_0xf376b7['Method'],'resultMask':0x3f},_0x1419ee={'referenceTypeId':_0xac857f(_0x4eb234(0x18f)),'includeSubtypes':!![],'browseDirection':_0xace931[_0x4eb234(0x1bd)],'nodeClassMask':_0xf376b7[_0x4eb234(0x271)]|_0xf376b7[_0x4eb234(0x23d)]|_0xf376b7[_0x4eb234(0x1d2)],'resultMask':0x3f},_0x301bcf=(_0x13f9d2,_0x15efe9)=>_0x5a988c(void 0x0,[_0x13f9d2,_0x15efe9],void 0x0,function*({endpointNode:_0x546ebd,endpoint:_0x45c982,baseUrl:_0x1386bb},{nodeId:_0xa9ec38,rootNodeId:_0x39c2d4,isType:_0x347382}){const _0x50aeda=_0x4eb234,_0x35a210=_0x1386bb+'/opcua-for-node-red',_0x71389a=_0x35a210+_0x50aeda(0x18e),_0x1c7b7e=yield fetch(_0x71389a,{'method':'POST','body':JSON[_0x50aeda(0x17c)]({'endpointNode':_0x546ebd,'endpoint':_0x45c982,'nodeId':_0xa9ec38,'rootNodeId':_0x39c2d4,'isType':_0x347382}),'headers':{'Content-Type':_0x50aeda(0x1ab)}});if(_0x1c7b7e[_0x50aeda(0x26b)]!==0xc8)return null;const _0x565f69=yield _0x1c7b7e[_0x50aeda(0x1fa)]();return _0x565f69['browsePath'];}),_0x225520=(_0xb0d732,_0x23408f)=>{const _0x37b3a6=_0x4eb234;if(_0xb0d732[_0x37b3a6(0x219)]!==_0x37b3a6(0x246))return _0xb0d732['requestedNodeId'];switch(_0x23408f){case _0x37b3a6(0x1f0):return _0xb0d732[_0x37b3a6(0x231)];case _0x37b3a6(0x185):return _0xb0d732[_0x37b3a6(0x234)]||_0xb0d732[_0x37b3a6(0x231)];case'aliasedNodeId':return _0xb0d732[_0x37b3a6(0x267)]||_0xb0d732[_0x37b3a6(0x270)];case _0x37b3a6(0x1dd):return _0xb0d732['nodeId_nsu'];default:case _0x37b3a6(0x181):return _0xb0d732['nodeId'];}},_0x4e2ba3=_0x29fd17=>{const _0x1fde11=_0x4eb234;if(_0x29fd17['statusCode']!==_0x1fde11(0x246))return _0x1fde11(0x211)+_0x29fd17[_0x1fde11(0x219)];else{let _0x2b57ca=[];return _0x2b57ca[_0x1fde11(0x22f)](_0x1fde11(0x1d4)+_0x29fd17[_0x1fde11(0x181)]),_0x2b57ca['push']('browse\x20path:\x20'+_0x29fd17[_0x1fde11(0x231)]),_0x2b57ca[_0x1fde11(0x22f)](_0x1fde11(0x29f)+_0xf376b7[_0x29fd17[_0x1fde11(0x1b8)]]),_0x29fd17[_0x1fde11(0x270)]&&_0x2b57ca[_0x1fde11(0x22f)]('nsu\x20nodeId:\x20'+_0x29fd17[_0x1fde11(0x270)]),_0x29fd17[_0x1fde11(0x267)]&&_0x2b57ca['push'](_0x1fde11(0x2a7)+_0x29fd17[_0x1fde11(0x267)]),_0x29fd17[_0x1fde11(0x231)]&&_0x2b57ca['push'](_0x1fde11(0x29c)+_0x29fd17['bp_aliased']),_0x2b57ca['join']('\x0a');}};function _0x59874a(_0x26f65c){const _0x51f866=_0x4eb234;if(_0x26f65c[_0x51f866(0x1af)](/^nsu=/))return _0x51f866(0x1dd);if(_0x26f65c[_0x51f866(0x1af)](/^(ns=.*;)?(i|b|s|g)=/))return _0x51f866(0x181);if(_0x26f65c['match'](/^nsa=/))return _0x51f866(0x1ef);if(_0x26f65c['match'](/^(\/|\.)[0-9]+:/))return _0x51f866(0x1f0);if(_0x26f65c['match'](/^(\/|\.).*:/))return _0x51f866(0x1f0);}function _0x3abd11(_0x160a71){const _0x36dba0=_0x4eb234,_0x3dcb2f=_0x59874a(_0x160a71);switch(_0x3dcb2f){case'nodeId':return'n';case _0x36dba0(0x1ef):return'na';case _0x36dba0(0x1dd):return'nsu';case'browsePath':return'b';case'aliasedBrowsePath':return'ab';default:return't';}}function _0x43d82d(_0x3f5d26){const _0x2da1c7=_0x4eb234;let _0x5760a1;switch(_0x3f5d26){case'n':_0x5760a1=_0x2da1c7(0x181);break;case'na':_0x5760a1='aliasedNodeId';break;case'nsu':_0x5760a1='nsuNodeID';break;case'b':_0x5760a1=_0x2da1c7(0x1f0);break;case'ab':_0x5760a1=_0x2da1c7(0x185);break;}return _0x5760a1;}function _0x2188f9(_0x58f66d){const _0x412646=_0x4eb234;switch(_0x58f66d){case _0x412646(0x181):return'n';case _0x412646(0x1ef):return'na';case _0x412646(0x1dd):return _0x412646(0x28a);case _0x412646(0x1f0):return'b';case _0x412646(0x185):return'ab';default:return't';}}const _0x21e7f4=(_0x3412fb,_0x4a0306)=>_0x5a988c(void 0x0,[_0x3412fb,_0x4a0306],void 0x0,function*({endpointNode:_0x390ccd,endpoint:_0x3fe706,baseUrl:_0x45ae38},_0x558042){const _0x1830e8=_0x4eb234,_0x338c93=_0x45ae38+_0x1830e8(0x1a5),_0x15002d=_0x338c93+'/checkNodeId',_0x218b3d=_0x390ccd['id'],_0x401da2=RED['nodes']['node'](_0x218b3d);console[_0x1830e8(0x1b5)](_0x401da2[_0x1830e8(0x1db)]),_0x401da2[_0x1830e8(0x1db)];const _0x1dfc15=_0x390ccd[_0x1830e8(0x1db)],_0x491f43=yield fetch(_0x15002d,{'method':'POST','body':JSON[_0x1830e8(0x17c)]({'endpointNode':_0x390ccd,'endpoint':_0x3fe706,'nodeId':_0x558042,'namespaceAliases':_0x1dfc15}),'headers':{'Content-Type':_0x1830e8(0x1ab)}}),_0xa607c3=yield _0x491f43[_0x1830e8(0x1fa)]();return{'json':_0xa607c3,'data':_0x491f43};}),_0x3e2b11=(_0xb5a1fc,_0x160804,_0x49e1fd,_0xd3a2bc)=>_0x5a988c(void 0x0,[_0xb5a1fc,_0x160804,_0x49e1fd,_0xd3a2bc],void 0x0,function*({endpointNode:_0x14a816,endpoint:_0x5637c,baseUrl:_0x46c7d9},_0x138a95,_0x5d19eb,_0x5ef219){const _0x31f351=_0x4eb234,_0x2cd79e=_0x5d19eb[_0x31f351(0x203)](),{json:_0x3c83bb,data:_0x323d89}=yield _0x21e7f4({'endpointNode':_0x14a816,'endpoint':_0x5637c,'baseUrl':_0x46c7d9},_0x2cd79e),_0x5558b4=(_0x59a83e,_0x5a4297)=>{const _0x40cd35=_0x31f351;_0x5ef219[_0x40cd35(0x220)](_0x59a83e)['addClass'](_0x40cd35(0x1d3))[_0x40cd35(0x1d9)](_0x5a4297),_0x5ef219['show'](),setTimeout(()=>{const _0x1cb3da=_0x40cd35;_0x5ef219[_0x1cb3da(0x2a3)](_0x5a4297),_0x5ef219[_0x1cb3da(0x1e9)]();},0xbb8);};if(_0x323d89['status']!==0xc8)return _0x5558b4('!!failure!!'+_0x2cd79e,_0x31f351(0x25c)),![];else{if(_0x3c83bb[_0x31f351(0x219)][_0x31f351(0x1af)](/Good/)){const _0x39bdc2=_0x4e2ba3(_0x3c83bb);_0x5d19eb['attr']('title',_0x39bdc2);const _0x5785a6=_0x225520(_0x3c83bb,_0x138a95);return _0x5d19eb[_0x31f351(0x203)](_0x5785a6),_0x5d19eb[_0x31f351(0x1ca)]('change'),_0x5558b4(_0x31f351(0x246),'ok'),!![];}else return _0x5d19eb['val'](''+_0x2cd79e),_0x5558b4(_0x3c83bb[_0x31f351(0x219)]+'\x20'+_0x323d89[_0x31f351(0x244)],_0x31f351(0x25c)),![];}});function _0x231b77(_0x3d3101,_0x46e0f4){return _0x5a988c(this,void 0x0,void 0x0,function*(){const _0x462c14=_0x3e8d,_0x24f8e5=_0x3d3101[_0x462c14(0x1c2)]('value'),_0x4e2c1a=yield _0x59fd05(_0x46e0f4,_0x24f8e5,_0xaf36b5),_0x2870ad=yield _0x59fd05(_0x46e0f4,_0x24f8e5,_0x1419ee);return{'references':[..._0x4e2c1a[_0x462c14(0x1b0)],..._0x2870ad[_0x462c14(0x1b0)]]};});}const _0x324dca={'referenceTypeId':_0xac857f('HasSubtype'),'includeSubtypes':!![],'browseDirection':_0xace931['Forward'],'nodeClassMask':_0xf376b7[_0x4eb234(0x198)]|_0xf376b7[_0x4eb234(0x206)]|_0xf376b7['DataType']|_0xf376b7[_0x4eb234(0x17d)],'resultMask':0x3f};function _0x3a1619(_0xed4ff3,_0x4ad45e){return _0x5a988c(this,void 0x0,void 0x0,function*(){const _0x553bfa=_0x3e8d,_0x49fcc2=_0xed4ff3[_0x553bfa(0x1c2)](_0x553bfa(0x19e)),_0x5b2898=yield _0x59fd05(_0x4ad45e,_0x49fcc2,_0x324dca);return _0x5b2898;});}const _0x3bf9c3=_0x2e6576=>{const _0x2b53b9=_0x4eb234;var _0x264bd2,_0x324174,_0x3ec436,_0x5a7ac6;if(!_0x2e6576||!_0x2e6576['nodeId']){const _0x50ac2d=$(_0x2b53b9(0x1fe));return _0x50ac2d;}const _0x6b31b=_0x2e6576['nodeId'][_0x2b53b9(0x184)](),_0x404a6f=((_0x264bd2=_0x2e6576[_0x2b53b9(0x25a)])===null||_0x264bd2===void 0x0?void 0x0:_0x264bd2[_0x2b53b9(0x220)])||((_0x324174=_0x2e6576[_0x2b53b9(0x186)])===null||_0x324174===void 0x0?void 0x0:_0x324174[_0x2b53b9(0x265)])||_0x2e6576[_0x2b53b9(0x181)][_0x2b53b9(0x184)](),{icon:_0x420263,color:_0x1aec4f}=_0xd7e338(_0x2e6576),_0x324728='('+_0x2e6576[_0x2b53b9(0x181)][_0x2b53b9(0x184)]()+')\x20'+(((_0x3ec436=_0x2e6576[_0x2b53b9(0x186)])===null||_0x3ec436===void 0x0?void 0x0:_0x3ec436[_0x2b53b9(0x265)])||((_0x5a7ac6=_0x2e6576[_0x2b53b9(0x25a)])===null||_0x5a7ac6===void 0x0?void 0x0:_0x5a7ac6[_0x2b53b9(0x220)])||''),_0x161a7f=$(_0x2b53b9(0x228)+_0x2e6576[_0x2b53b9(0x181)][_0x2b53b9(0x184)]()+_0x2b53b9(0x2a0)+_0x324728+_0x2b53b9(0x22c)+_0x420263+'\x22\x20style=\x22color:'+_0x1aec4f+_0x2b53b9(0x26c)+_0x404a6f+'</span><ul></ul></li>');return _0x161a7f[_0x2b53b9(0x1d9)](_0x2b53b9(0x273)),_0x161a7f[_0x2b53b9(0x1c2)](_0x2b53b9(0x19e),_0x6b31b),_0x161a7f[_0x2b53b9(0x1c2)](_0x2b53b9(0x18c),_0x2e6576),_0x161a7f;},_0x4a419f=(_0x2e2825,_0x2bf779)=>{const _0x46bdf5=_0x4eb234;return _0x2bf779[_0x46bdf5(0x260)]('li[key=\x22'+_0x2e2825+'\x22]');},_0x549c5e=(_0x4c8210,_0xbedf9)=>{const _0xea236a=_0x4eb234;_0x4c8210[_0xea236a(0x1c4)][_0xea236a(0x260)](_0xea236a(0x21d))[_0xea236a(0x2a3)](_0xea236a(0x1ed)),_0xbedf9[_0xea236a(0x260)](_0xea236a(0x218))['addClass'](_0xea236a(0x1ed));},_0x1a9372=(_0x1563c2,_0x13068d,_0x34477e)=>_0x5a988c(void 0x0,void 0x0,void 0x0,function*(){const _0x218e36=_0x4eb234;let _0x198c6f=_0x34477e[_0x218e36(0x1e0)](_0x218e36(0x232));_0x13068d[_0x218e36(0x297)][_0x218e36(0x22b)]||[];const _0x14f02c=_0x13068d[_0x218e36(0x23b)]||[];if(_0x14f02c['length']===0x0)return;for(const _0x25d95f of _0x14f02c){_0x198c6f[_0x218e36(0x17f)](_0x218e36(0x273))&&(yield _0x4c6788(_0x1563c2,_0x198c6f));const _0x1d6ca9=_0x4a419f(_0x25d95f,_0x198c6f);if(_0x1d6ca9[_0x218e36(0x1da)]===0x0)return;_0x198c6f=_0x1d6ca9;}_0x549c5e(_0x1563c2,_0x198c6f),_0x32003d(_0x1563c2[_0x218e36(0x205)],_0x198c6f);});function _0x32003d(_0x636f7,_0x190beb){const _0x3404e0=_0x4eb234,_0x358a07=_0x190beb['position']()[_0x3404e0(0x22a)],_0x2196c7=_0x636f7[_0x3404e0(0x2a2)]();if(_0x2196c7==undefined)return;const _0x47ad83=_0x2196c7+_0x358a07-_0x636f7['height']()/0x2+_0x190beb['height']()/0x2;_0x636f7[_0x3404e0(0x27a)]({'scrollTop':_0x47ad83},0x1f4);}const _0x37b790=(_0x2600b6,_0x2b37af)=>_0x5a988c(void 0x0,void 0x0,void 0x0,function*(){const _0x14baa4=_0x4eb234,_0x157f1e=_0x2600b6[_0x14baa4(0x290)][_0x14baa4(0x203)](),_0x57bd9c={'nodeId':_0x157f1e,'rootNodeId':_0x2b37af[_0x14baa4(0x181)],'isType':_0x2600b6[_0x14baa4(0x1f6)][_0x14baa4(0x1ea)]||![]},_0x2ea8b3=_0x1b55a7(_0x2600b6),_0x43986a=yield _0x301bcf(_0x2ea8b3,_0x57bd9c);if(!_0x43986a)return;yield _0x1a9372(_0x2600b6,_0x43986a,_0x2600b6['$tree']);});function _0x1ae4da(_0x8add1f,_0x454ed6,_0x2a3240,_0x11779c){return _0x5a988c(this,void 0x0,void 0x0,function*(){const _0x26e3af=_0x3e8d;if(_0x454ed6[_0x26e3af(0x17f)](_0x26e3af(0x24d))){console[_0x26e3af(0x1b5)](_0x26e3af(0x193));return;}if(_0x454ed6[_0x26e3af(0x17f)]('loading')){console[_0x26e3af(0x1b5)](_0x26e3af(0x190));return;}_0x454ed6[_0x26e3af(0x1d9)](_0x26e3af(0x1a9)),_0x454ed6['append']('<div\x20class=\x22spinner\x22></div>');try{_0x454ed6['children']('ul')[_0x26e3af(0x299)]();const {references:_0x1a7791}=yield _0x2a3240(_0x454ed6,_0x11779c);_0x1a7791[_0x26e3af(0x216)]((_0x5c57ef,_0x27072a)=>{const _0x44c2da=_0x26e3af;var _0x6c03e2,_0x3fabc1;return(((_0x6c03e2=_0x5c57ef[_0x44c2da(0x186)])===null||_0x6c03e2===void 0x0?void 0x0:_0x6c03e2[_0x44c2da(0x265)])||'')[_0x44c2da(0x1cc)](((_0x3fabc1=_0x27072a[_0x44c2da(0x186)])===null||_0x3fabc1===void 0x0?void 0x0:_0x3fabc1[_0x44c2da(0x265)])||'');});for(const _0xf041f0 of _0x1a7791){if(_0x8add1f[_0x26e3af(0x1f6)][_0x26e3af(0x199)]&&!_0x8add1f['options'][_0x26e3af(0x199)](_0xf041f0))continue;const _0x39c7d2=_0x3bf9c3(_0xf041f0);_0x454ed6['children']('ul')[_0x26e3af(0x21c)](_0x39c7d2);}_0x454ed6['addClass'](_0x26e3af(0x24d));}catch(_0x5309bb){_0x454ed6['children']('ul')[_0x26e3af(0x21c)]('<li>error\x20'+_0x5309bb['message']+_0x26e3af(0x279)),console['log']('err',_0x5309bb);}_0x454ed6[_0x26e3af(0x260)](_0x26e3af(0x27f))[_0x26e3af(0x1ad)](),_0x454ed6[_0x26e3af(0x2a3)]('loading');});}function _0x1b55a7(_0x25d38b){const _0x46580c=_0x4eb234,_0xbad827={'baseUrl':_0x25d38b[_0x46580c(0x1f6)]['baseUrl'],'endpointNode':typeof _0x25d38b[_0x46580c(0x1f6)]['endpointNode']===_0x46580c(0x242)?_0x25d38b[_0x46580c(0x1f6)][_0x46580c(0x196)]():_0x25d38b[_0x46580c(0x1f6)]['endpointNode'],'endpoint':typeof _0x25d38b[_0x46580c(0x1f6)][_0x46580c(0x17e)]==='function'?_0x25d38b[_0x46580c(0x1f6)]['endpoint']():_0x25d38b[_0x46580c(0x1f6)]['endpoint']};return _0xbad827;}function _0x4c6788(_0x10b630,_0x5c7451){return _0x5a988c(this,void 0x0,void 0x0,function*(){const _0x394ca=_0x3e8d;if(_0x5c7451[_0x394ca(0x17f)]('fetched')){_0x5c7451[_0x394ca(0x2a3)](_0x394ca(0x273))[_0x394ca(0x1d9)]('expanded'),_0x5c7451['children']('ul')['toggle']();return;}const _0x31f1f0=_0x1b55a7(_0x10b630),_0x29ec1c=!_0x10b630[_0x394ca(0x1f6)][_0x394ca(0x1ea)]?_0x231b77:_0x3a1619;try{yield _0x1ae4da(_0x10b630,_0x5c7451,_0x29ec1c,_0x31f1f0),_0x5c7451[_0x394ca(0x2a3)]('expandable')[_0x394ca(0x1d9)](_0x394ca(0x2a9));}catch(_0x1ccb6e){_0x5c7451[_0x394ca(0x2a3)](_0x394ca(0x273))[_0x394ca(0x1d9)](_0x394ca(0x2a9)),console[_0x394ca(0x1b5)](_0x394ca(0x1ae),_0x1ccb6e);}});}const _0x14617b={'browseName':{'namespaceIndex':0x0,'name':_0x4eb234(0x19d)},'nodeClass':_0x4eb234(0x23d),'nodeId':_0x4eb234(0x2a5),'displayName':{'text':_0x4eb234(0x19d)},'typeDefinition':_0x9e8f56},_0x2d4068=()=>{const _0x2b7191=_0x4eb234;$[_0x2b7191(0x1df)]('sterfive.nodeBrowser',{'options':{'endpointNode':()=>({'endpoint':_0x2b7191(0x23f)}),'endpoint':()=>undefined,'parentNode':()=>_0x14617b,'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x5a988c(this,void 0x0,void 0x0,function*(){const _0x53ff5c=_0x3e8d,_0x5c45ed=this;if(_0x5c45ed['__parentNode']==undefined){const _0x5351e7=typeof _0x5c45ed[_0x53ff5c(0x1f6)][_0x53ff5c(0x18a)]==='function'?_0x5c45ed[_0x53ff5c(0x1f6)][_0x53ff5c(0x18a)]['call'](_0x5c45ed):_0x5c45ed[_0x53ff5c(0x1f6)][_0x53ff5c(0x18a)];if(_0x5351e7 instanceof Promise){const _0xeecc69=yield _0x5351e7;_0x5c45ed[_0x53ff5c(0x224)]=_0xeecc69;}else _0x5c45ed['__parentNode']=_0x5351e7;}return _0x5c45ed[_0x53ff5c(0x224)]||_0x14617b;});},'reset'(){return _0x5a988c(this,void 0x0,void 0x0,function*(){const _0x4394b7=_0x3e8d,_0x28725d=this,_0x471e30=_0x28725d;_0x471e30[_0x4394b7(0x224)]=undefined,_0x28725d['$tree'][_0x4394b7(0x299)]();const _0x168da5=yield this[_0x4394b7(0x1c8)](),_0x36807d=_0x3bf9c3(_0x168da5);_0x28725d[_0x4394b7(0x1c4)][_0x4394b7(0x21c)](_0x36807d),_0x28725d['currentParent']=_0x168da5;});},'verify'(_0x591973){const _0x567f5e=_0x2b7191,_0x312e4e=this,_0x2ec832=_0x1b55a7(_0x312e4e);_0x3e2b11(_0x2ec832,_0x591973,_0x312e4e[_0x567f5e(0x290)],_0x312e4e[_0x567f5e(0x2a4)])[_0x567f5e(0x183)](_0x46aa42=>{const _0x3e5262=_0x567f5e;!_0x46aa42?_0x312e4e[_0x3e5262(0x24e)]['addClass']('sterfive-input-error'):_0x312e4e[_0x3e5262(0x24e)][_0x3e5262(0x2a3)](_0x3e5262(0x2a1));});},'_hideMenu'(_0x1964ad){const _0x37c9aa=_0x2b7191,_0x1bcc02=this;$(document)[_0x37c9aa(0x20e)](_0x37c9aa(0x277)),_0x1964ad[_0x37c9aa(0x1e9)](),_0x1964ad['css']({'height':_0x37c9aa(0x201)});if(_0x1964ad[_0x37c9aa(0x243)]['multiple']){var _0x322f9=[];_0x1964ad['find'](_0x37c9aa(0x237))[_0x37c9aa(0x1b9)](function(){const _0x3f1060=_0x37c9aa;$(this)[_0x3f1060(0x22e)](_0x3f1060(0x1b3))&&_0x322f9[_0x3f1060(0x22f)]($(this)['data'](_0x3f1060(0x19e)));}),_0x1964ad['callback'](_0x322f9);}_0x1bcc02[_0x37c9aa(0x1b6)]['is'](':visible')?_0x1bcc02['$input']['trigger'](_0x37c9aa(0x28e)):_0x1bcc02[_0x37c9aa(0x21f)][_0x37c9aa(0x1ca)](_0x37c9aa(0x28e));},'_createMenu'(_0x23b967,_0x5ed92a,_0x3a2796){const _0x45e05e=_0x2b7191;var _0x3d18ea=this;const _0x4bd7ba=$(_0x45e05e(0x26e))['addClass'](_0x45e05e(0x1d7));return _0x4bd7ba['opts']=_0x5ed92a,_0x4bd7ba['callback']=_0x3a2796,_0x23b967[_0x45e05e(0x1d0)](_0x495fdc=>{const _0x55758a=_0x45e05e;typeof _0x495fdc===_0x55758a(0x182)&&(_0x495fdc={'value':_0x495fdc,'label':_0x495fdc});var _0x27b742=$('<a\x20href=\x22#\x22></a>')[_0x55758a(0x1f4)](_0x55758a(0x19e),_0x495fdc[_0x55758a(0x19e)])[_0x55758a(0x281)](_0x4bd7ba);_0x495fdc['label']&&_0x27b742['text'](_0x495fdc[_0x55758a(0x1ee)]);_0x495fdc[_0x55758a(0x1e3)]&&_0x27b742[_0x55758a(0x22e)](_0x55758a(0x1e3),_0x495fdc[_0x55758a(0x1e3)]);if(_0x495fdc['icon']){if(_0x495fdc[_0x55758a(0x1f2)][_0x55758a(0x1d5)]('<')===0x0)$(_0x495fdc[_0x55758a(0x1f2)])['prependTo'](_0x27b742);else _0x495fdc[_0x55758a(0x1f2)][_0x55758a(0x1d5)]('/')!==-0x1?$(_0x55758a(0x286),{'class':'red-ui-typedInput-icon','style':_0x55758a(0x298)+_0x495fdc[_0x55758a(0x1f2)]+_0x55758a(0x215)+_0x495fdc[_0x55758a(0x1f2)]+');'})[_0x55758a(0x27b)](_0x27b742):$(_0x55758a(0x286),{'class':_0x55758a(0x1f3)+_0x495fdc[_0x55758a(0x1f2)]})['prependTo'](_0x27b742);}else _0x27b742['css']({'paddingLeft':_0x55758a(0x1a1)});!_0x495fdc[_0x55758a(0x1f2)]&&!_0x495fdc[_0x55758a(0x1ee)]&&_0x27b742[_0x55758a(0x220)](_0x495fdc[_0x55758a(0x19e)]);var _0x11fe44;_0x5ed92a[_0x55758a(0x2ac)]&&(_0x11fe44=$(_0x55758a(0x21a))[_0x55758a(0x19c)]('pointer-events',_0x55758a(0x284))[_0x55758a(0x1c2)]('value',_0x495fdc[_0x55758a(0x19e)])['prependTo'](_0x27b742)['on'](_0x55758a(0x1bb),function(_0x34c9eb){const _0x1c3e14=_0x55758a;_0x34c9eb[_0x1c3e14(0x285)]();})),_0x27b742['on'](_0x55758a(0x1c3),function(_0x1bc1e9){const _0x4888ea=_0x55758a;_0x1bc1e9[_0x4888ea(0x285)](),_0x1bc1e9[_0x4888ea(0x1d1)](),!_0x5ed92a[_0x4888ea(0x2ac)]?(_0x3a2796(_0x495fdc[_0x4888ea(0x19e)]),_0x3d18ea['_hideMenu'](_0x4bd7ba)):_0x11fe44[_0x4888ea(0x22e)](_0x4888ea(0x1b3),!_0x11fe44[_0x4888ea(0x22e)](_0x4888ea(0x1b3)));});}),_0x4bd7ba[_0x45e05e(0x19c)]({'display':_0x45e05e(0x284)}),_0x4bd7ba['on'](_0x45e05e(0x289),function(_0xe7efdf){const _0x48343c=_0x45e05e;if(_0xe7efdf[_0x48343c(0x1c6)]===0x28)_0xe7efdf['preventDefault'](),$(this)[_0x48343c(0x1e0)](':focus')[_0x48343c(0x214)]()['trigger']('focus');else{if(_0xe7efdf[_0x48343c(0x1c6)]===0x26)_0xe7efdf[_0x48343c(0x285)](),$(this)['children'](_0x48343c(0x1ff))[_0x48343c(0x222)]()[_0x48343c(0x1ca)](_0x48343c(0x28e));else _0xe7efdf[_0x48343c(0x1c6)]===0x1b&&(_0xe7efdf[_0x48343c(0x285)](),_0x3d18ea[_0x48343c(0x1fc)](_0x4bd7ba));}_0xe7efdf[_0x48343c(0x1d1)]();}),_0x4bd7ba;},'disarmClick':![],'_showMenu'(_0x2ff03f,_0x4db636){const _0x506031=_0x2b7191;if(this[_0x506031(0x20c)]){this[_0x506031(0x20c)]=![];return;}var _0x2ac8e4=this,_0x162ba6=_0x4db636[_0x506031(0x19b)](),_0x2b5ca2=_0x4db636[_0x506031(0x24b)](),_0x432389=_0x2ff03f[_0x506031(0x24b)](),_0x5c2e23=_0x2b5ca2+_0x162ba6[_0x506031(0x22a)];_0x5c2e23+_0x432389-$(document)['scrollTop']()>$(window)[_0x506031(0x24b)]()&&(_0x5c2e23-=_0x5c2e23+_0x432389-$(window)[_0x506031(0x24b)]()+0x5),_0x5c2e23<0x0&&(_0x2ff03f['height'](_0x432389+_0x5c2e23),_0x5c2e23=0x0),_0x2ff03f[_0x506031(0x19c)]({'top':_0x5c2e23+'px','left':_0x162ba6[_0x506031(0x1e5)]+'px'}),_0x2ff03f[_0x506031(0x261)](0x64),this[_0x506031(0x280)](function(){const _0x2198cb=_0x506031;_0x2ac8e4['$uiSelect'][_0x2198cb(0x1d9)]('red-ui-typedInput-focus'),$(document)['on'](_0x2198cb(0x277),function(_0xb49fc){const _0x5f3c5=_0x2198cb;!$(_0xb49fc['target'])[_0x5f3c5(0x187)](_0x2ff03f)[_0x5f3c5(0x1da)]&&_0x2ac8e4['_hideMenu'](_0x2ff03f),$(_0xb49fc[_0x5f3c5(0x20a)])[_0x5f3c5(0x187)](_0x4db636)['length']&&(_0x2ac8e4[_0x5f3c5(0x20c)]=!![],_0xb49fc[_0x5f3c5(0x285)]());});});},'_showTypeMenu'(){const _0x472163=_0x2b7191,_0x1d7f8a=this;this[_0x472163(0x259)](_0x1d7f8a[_0x472163(0x1a2)],_0x1d7f8a[_0x472163(0x24e)]),_0x1d7f8a[_0x472163(0x205)][_0x472163(0x1e9)]();const _0xcc9cfa=_0x1d7f8a['selectedMenuItem'];var _0x34a4a8=_0x1d7f8a[_0x472163(0x1a2)][_0x472163(0x260)](_0x472163(0x1c1)+_0xcc9cfa+'\x27');setTimeout(function(){const _0x1e6417=_0x472163;_0x34a4a8['trigger'](_0x1e6417(0x28e));},0x78);},'_initMenu'(){const _0x2440a1=_0x2b7191,_0x1a7d57=this;_0x1a7d57[_0x2440a1(0x21f)][_0x2440a1(0x1f4)](_0x2440a1(0x239),-0x1),_0x1a7d57[_0x2440a1(0x21f)]['on'](_0x2440a1(0x291),function(_0x2a15cb){const _0x44dee5=_0x2440a1;_0x2a15cb[_0x44dee5(0x285)]();});_0x1a7d57[_0x2440a1(0x1a2)]&&_0x1a7d57[_0x2440a1(0x1a2)][_0x2440a1(0x1ad)]();const _0x481042=[{'label':_0x2440a1(0x220),'value':'t','title':'Value\x20is\x20not\x20verified','icon':_0x2440a1(0x1e1)},{'label':_0x2440a1(0x1e7),'value':_0x2440a1(0x1be),'title':_0x2440a1(0x20f),'icon':_0x2440a1(0x249)},{'label':'NodeId','value':'n','icon':_0x2440a1(0x256)},{'label':_0x2440a1(0x21e),'value':'na','icon':_0x2440a1(0x19f)},{'label':_0x2440a1(0x1f5),'value':'nsu','icon':'<i\x20class=\x22fa\x20fa-id-card\x22/>&nbsp;\x20'},{'label':_0x2440a1(0x1ec),'value':'b','icon':_0x2440a1(0x26f)},{'label':_0x2440a1(0x26d),'value':'ab','icon':_0x2440a1(0x1fd)}],_0x2707c4=_0x3abd11(_0x1a7d57[_0x2440a1(0x290)]['val']()),_0xf8b0a8=_0x481042[_0x2440a1(0x260)](_0x4dc5bc=>_0x4dc5bc[_0x2440a1(0x19e)]===_0x2707c4);_0x1a7d57[_0x2440a1(0x25e)]['empty']()['append'](_0x2440a1(0x1a4)+((_0xf8b0a8===null||_0xf8b0a8===void 0x0?void 0x0:_0xf8b0a8[_0x2440a1(0x1e3)])||'')+_0x2440a1(0x1e4)+((_0xf8b0a8===null||_0xf8b0a8===void 0x0?void 0x0:_0xf8b0a8[_0x2440a1(0x1f2)])||'')+_0x2440a1(0x200)),_0x1a7d57[_0x2440a1(0x248)]=_0x2707c4;const _0x4eecf2=this;_0x1a7d57[_0x2440a1(0x1a2)]=this['_createMenu'](_0x481042,{},_0x35cd88=>{const _0x8b075e=_0x2440a1,_0x55afe9=_0x43d82d(_0x35cd88);_0x55afe9&&_0x4eecf2[_0x8b075e(0x27d)](_0x55afe9);const _0x2efe99=_0x481042[_0x8b075e(0x260)](_0x2154ac=>_0x2154ac[_0x8b075e(0x19e)]===_0x35cd88);_0x1a7d57[_0x8b075e(0x248)]=_0x35cd88,_0x1a7d57['$selectLabel']['empty']()['append']('<span\x20title='+((_0x2efe99===null||_0x2efe99===void 0x0?void 0x0:_0x2efe99[_0x8b075e(0x1e3)])||'')+'>&nbsp;\x20'+((_0x2efe99===null||_0x2efe99===void 0x0?void 0x0:_0x2efe99['icon'])||'')+_0x8b075e(0x200));}),_0x1a7d57['$menu'][_0x2440a1(0x281)](document[_0x2440a1(0x276)]),_0x1a7d57['$menu'][_0x2440a1(0x1e9)](),_0x1a7d57[_0x2440a1(0x21f)][_0x2440a1(0x25f)]();},'mode'(){const _0x212319=this;return _0x43d82d(_0x212319['selectedMenuItem']);},'setMode'(_0x242622){const _0x16de10=this,_0x5b3e01=_0x2188f9(_0x242622);_0x16de10['selectedMenuItem']=_0x5b3e01;},'_create'(){const _0x108a5b=_0x2b7191,_0x30750b=this;_0x30750b[_0x108a5b(0x290)]=this[_0x108a5b(0x24c)],_0x30750b['$input'][_0x108a5b(0x19c)](_0x108a5b(0x294),_0x108a5b(0x284)),_0x30750b['$elementDiv']=_0x30750b['$input'][_0x108a5b(0x23e)](_0x108a5b(0x26e))[_0x108a5b(0x1b7)]()[_0x108a5b(0x1d9)](_0x108a5b(0x23a)),_0x30750b[_0x108a5b(0x24e)]=$('<div/>'),_0x30750b['$combo']['addClass'](_0x108a5b(0x251)),_0x30750b[_0x108a5b(0x290)][_0x108a5b(0x254)](_0x30750b[_0x108a5b(0x24e)]),_0x30750b[_0x108a5b(0x1a8)]=$(_0x108a5b(0x1b2))[_0x108a5b(0x1d9)](_0x108a5b(0x268)),_0x30750b['$combo'][_0x108a5b(0x21c)](_0x30750b['$inputGroup']),_0x30750b[_0x108a5b(0x1a8)][_0x108a5b(0x21c)](_0x30750b[_0x108a5b(0x290)]),_0x30750b['$toggleTreeBtn']=$('<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>'),_0x30750b['$input']['after'](_0x30750b[_0x108a5b(0x18d)]),_0x30750b[_0x108a5b(0x18d)]['on'](_0x108a5b(0x1c3),function(){return _0x5a988c(this,void 0x0,void 0x0,function*(){const _0x798900=_0x3e8d;var _0x2cb82c;let _0x4def4d=![],_0x7e92a6;!_0x30750b[_0x798900(0x205)]['is'](_0x798900(0x20b))&&(_0x30750b[_0x798900(0x2a4)][_0x798900(0x1e9)](),_0x7e92a6=yield _0x30750b[_0x798900(0x1c8)](),(_0x7e92a6!==_0x30750b[_0x798900(0x262)]||((_0x2cb82c=_0x30750b['currentParent'])===null||_0x2cb82c===void 0x0?void 0x0:_0x2cb82c[_0x798900(0x181)])!==_0x7e92a6[_0x798900(0x181)])&&(yield _0x30750b[_0x798900(0x282)]()),_0x4def4d=!![]),_0x30750b['$dropdown']['toggle'](),_0x4def4d&&(yield _0x37b790(_0x30750b,_0x7e92a6));});}),_0x30750b[_0x108a5b(0x1a7)]=$(_0x108a5b(0x1dc)),_0x30750b[_0x108a5b(0x290)][_0x108a5b(0x188)](_0x30750b[_0x108a5b(0x1a7)]),_0x30750b[_0x108a5b(0x1a7)]['on'](_0x108a5b(0x1c3),()=>{const _0x12c50f=_0x108a5b,_0x1cadd3=_0x30750b[_0x12c50f(0x283)]();if(!_0x1cadd3)return;this[_0x12c50f(0x27d)](_0x1cadd3);});const _0x1518d3=_0x18709b=>_0x5a988c(this,void 0x0,void 0x0,function*(){const _0x11e7e5=_0x108a5b,_0x273147=this;let _0xbb7e55=_0x273147['mode']();if(!_0xbb7e55)return;const _0x3b457c=_0x1b55a7(_0x273147),{data:_0x829107,json:_0x5d7258}=yield _0x21e7f4(_0x3b457c,_0x18709b);if(_0x829107['status']!==0xc8)return;if(_0x5d7258[_0x11e7e5(0x219)][_0x11e7e5(0x1af)](/Good/)){const _0x59bf51=_0x225520(_0x5d7258,_0xbb7e55);_0x273147[_0x11e7e5(0x290)]['val'](_0x59bf51),_0x273147[_0x11e7e5(0x290)]['trigger'](_0x11e7e5(0x21b));}});{_0x30750b[_0x108a5b(0x1ba)]=$(_0x108a5b(0x26e)),_0x30750b[_0x108a5b(0x290)][_0x108a5b(0x213)](_0x30750b[_0x108a5b(0x1ba)]),_0x30750b[_0x108a5b(0x21f)]=$(_0x108a5b(0x2ab))[_0x108a5b(0x27b)](_0x30750b[_0x108a5b(0x1ba)]),$(_0x108a5b(0x1c9))[_0x108a5b(0x2aa)](!![])[_0x108a5b(0x281)](_0x30750b[_0x108a5b(0x21f)]),_0x30750b[_0x108a5b(0x21f)]['on'](_0x108a5b(0x1c3),function(_0x4faa86){_0x4faa86['preventDefault'](),_0x4faa86['stopPropagation'](),_0x30750b['_showTypeMenu']();}),_0x30750b[_0x108a5b(0x21f)]['on']('keydown',function(_0x69f936){const _0x58c4f6=_0x108a5b;_0x69f936['keyCode']===0x28&&_0x30750b[_0x58c4f6(0x1eb)](),_0x69f936[_0x58c4f6(0x1d1)]();})['on'](_0x108a5b(0x28e),function(){const _0x1837f1=_0x108a5b;_0x30750b[_0x1837f1(0x1ba)][_0x1837f1(0x1d9)]('red-ui-typedInput-focus');})['on'](_0x108a5b(0x20d),function(){const _0x54d9d9=_0x108a5b;_0x30750b[_0x54d9d9(0x1ba)][_0x54d9d9(0x2a3)]('red-ui-typedInput-focus');}),_0x30750b[_0x108a5b(0x25e)]=$(_0x108a5b(0x269))[_0x108a5b(0x281)](_0x30750b[_0x108a5b(0x21f)]);}this[_0x108a5b(0x247)]();!_0x30750b[_0x108a5b(0x290)]['attr'](_0x108a5b(0x221))&&_0x30750b[_0x108a5b(0x290)][_0x108a5b(0x1f4)](_0x108a5b(0x221),_0x108a5b(0x278));_0x30750b[_0x108a5b(0x2a4)]=$(_0x108a5b(0x288)),_0x30750b[_0x108a5b(0x2a4)]['hide'](),_0x30750b[_0x108a5b(0x24e)][_0x108a5b(0x21c)](_0x30750b[_0x108a5b(0x2a4)]),_0x30750b['$dropdown']=$(_0x108a5b(0x1b2))[_0x108a5b(0x1d9)](_0x108a5b(0x227))[_0x108a5b(0x1e9)]()['appendTo'](_0x30750b['$combo']),_0x30750b[_0x108a5b(0x1c4)]=$('<ul\x20class=\x22sterfive-tree\x22></ul>')[_0x108a5b(0x281)](_0x30750b[_0x108a5b(0x205)]),this['reset']();const _0x1ba5c3=(_0x26f519,_0x358885)=>{const _0x166ce2=_0x108a5b,_0x5af4a1=0x14,_0x3eaad5=0x14,_0x64b065=_0x26f519['offset'](),_0x58e5dd=_0x358885;if(_0x58e5dd[_0x166ce2(0x28b)]>=_0x64b065['left']&&_0x58e5dd[_0x166ce2(0x28b)]<=_0x64b065['left']+_0x5af4a1&&_0x58e5dd['pageY']>=_0x64b065[_0x166ce2(0x22a)]&&_0x58e5dd['pageY']<=_0x64b065['top']+_0x3eaad5)return!![];return![];},_0x2238f4=_0x3a55bf=>_0x5a988c(this,void 0x0,void 0x0,function*(){const _0x426755=_0x108a5b;if(_0x3a55bf[_0x426755(0x17f)](_0x426755(0x273)))_0x4c6788(_0x30750b,_0x3a55bf);else{if(_0x3a55bf[_0x426755(0x17f)](_0x426755(0x2a9)))_0x3a55bf['children']('ul')[_0x426755(0x2aa)](),_0x3a55bf[_0x426755(0x18b)](_0x426755(0x293));else{if(_0x3a55bf[_0x426755(0x1e0)]('ul')[_0x426755(0x1e0)]()[_0x426755(0x1da)]>0x0)_0x3a55bf[_0x426755(0x1e0)]('ul')[_0x426755(0x2aa)](),_0x3a55bf['toggleClass'](_0x426755(0x293));else;}}});_0x30750b[_0x108a5b(0x1c4)]['on']('dblclick','li',function(_0x240730){const _0x1bc1b3=_0x108a5b;var _0x34450d,_0x154c85;_0x240730[_0x1bc1b3(0x1d1)]();let _0x4318ab=$(this);if(_0x1ba5c3(_0x4318ab,_0x240730))_0x2238f4(_0x4318ab);else{const _0x37eaf0=_0x4318ab[_0x1bc1b3(0x1c2)](_0x1bc1b3(0x19e)),_0x50e18b=_0x4318ab[_0x1bc1b3(0x1c2)]('reference');if(_0x30750b[_0x1bc1b3(0x1f6)]['isSelectable']&&!_0x30750b[_0x1bc1b3(0x1f6)][_0x1bc1b3(0x1d6)](_0x50e18b))return;_0x30750b['$input']['data']('reference',_0x50e18b),((_0x34450d=_0x50e18b[_0x1bc1b3(0x25a)])===null||_0x34450d===void 0x0?void 0x0:_0x34450d['text'])||((_0x154c85=_0x50e18b[_0x1bc1b3(0x186)])===null||_0x154c85===void 0x0?void 0x0:_0x154c85['name'])||_0x50e18b[_0x1bc1b3(0x181)][_0x1bc1b3(0x184)]();let _0x48c755=_0x30750b[_0x1bc1b3(0x283)]();!_0x48c755&&(_0x48c755=_0x1bc1b3(0x181),_0x30750b[_0x1bc1b3(0x212)](_0x48c755)),_0x1518d3(_0x37eaf0)[_0x1bc1b3(0x183)](()=>{_0x30750b['$dropdown']['hide']();})['catch'](_0x3d64f5=>{const _0x16f057=_0x1bc1b3;_0x30750b[_0x16f057(0x205)][_0x16f057(0x1e9)]();});}}),_0x30750b['$tree']['on']('click','li',function(_0x42eba1){const _0x3ab00a=_0x108a5b;_0x42eba1[_0x3ab00a(0x1d1)]();let _0x1efada=$(this);_0x1ba5c3(_0x1efada,_0x42eba1)&&_0x2238f4(_0x1efada),_0x549c5e(_0x30750b,_0x1efada);}),$(document)['on'](_0x108a5b(0x1c3),function(_0x44325c){const _0x14aca6=_0x108a5b;!$(_0x44325c[_0x14aca6(0x20a)])['closest'](_0x30750b[_0x14aca6(0x24e)])['length']&&_0x30750b[_0x14aca6(0x205)]['hide']();});}});};function _0x3f5893(_0xccd876,_0x5e365c){const _0x250e8b=_0x4eb234,_0x209a4f=$('#node-input-endpoint'),_0x280250=$(_0x250e8b(0x1a0)),_0x3cce81=()=>{const _0x5d337c=_0x250e8b,_0x336834=_0xccd876[_0x5d337c(0x1de)][_0x5d337c(0x189)](_0x209a4f[_0x5d337c(0x203)]());_0x280250['empty']();if(!_0x336834||!_0x336834['subscriptions'])return;for(const _0x129077 of _0x336834[_0x5d337c(0x217)]){const _0x158d42=_0x129077[_0x5d337c(0x265)]||_0x129077['id'];$('<option/>',{'value':_0x129077['id'],'label':_0x158d42,'selected':_0x129077['id']===_0x5e365c['subscription']})['text'](_0x158d42)['appendTo'](_0x280250);}};_0x3cce81(),_0x280250['on']('change',()=>{const _0x429d78=_0x250e8b;_0x5e365c[_0x429d78(0x28f)]=_0x280250[_0x429d78(0x203)]();}),_0x209a4f['on'](_0x250e8b(0x21b),()=>{_0x3cce81();});}const _0x370286=()=>{const _0x516bed=_0x4eb234,_0x2e0742=$('#node-input-endpoint'),_0xb4d960=_0x2e0742[_0x516bed(0x203)](),_0x564be4=RED[_0x516bed(0x1de)][_0x516bed(0x189)](_0xb4d960);if(!_0x564be4)return undefined;const {endpoint:_0x4dde57,securityMode:_0x25fa33,securityPolicy:_0x5ef825,userIdentityType:_0x2a1b9c,credentials:_0x276c6d,namespaceAliases:_0x125cb0}=_0x564be4,_0x435a80={'endpoint':_0x4dde57,'securityMode':_0x25fa33,'securityPolicy':_0x5ef825,'userIdentityType':_0x2a1b9c,'credentials':_0x276c6d,'namespaceAliases':_0x125cb0};return _0x435a80;},_0x11e6c8=()=>{const _0x4d1619=_0x4eb234,_0x10fbcc=$(_0x4d1619(0x252)),_0x3aa35e=_0x10fbcc[_0x4d1619(0x203)](),_0x3acefc=_0x370286();if(!_0x3acefc)return undefined;const _0x84a00=_0x3acefc[_0x4d1619(0x1db)];return Object['assign']({'namespaceAliases':_0x84a00,'id':_0x3aa35e},_0x3acefc);},_0x145261=()=>{return{'endpointNode':_0x11e6c8};},_0xa396e3=()=>{const _0x5895e3=_0x4eb234,_0x2f5ac0=$(_0x5895e3(0x29d));console['log'](_0x5895e3(0x1f9),_0x2f5ac0['length']);if(_0x2f5ac0[_0x5895e3(0x1da)]){console[_0x5895e3(0x1b5)]('installing\x20iframe');const _0x4ec5f2=$(_0x5895e3(0x2a8),{'src':_0x5895e3(0x1e6),'scrolling':'no','style':_0x5895e3(0x28c),'allowtransparency':'true','width':_0x5895e3(0x210),'height':_0x5895e3(0x1f8)});_0x2f5ac0['append'](_0x4ec5f2),_0x4ec5f2['css']({'position':'absolute','right':_0x5895e3(0x207),'bottom':_0x5895e3(0x229)});}};RED[_0x4eb234(0x1de)][_0x4eb234(0x26a)](_0x4eb234(0x1ce),{'category':_0x4eb234(0x264),'color':_0x4eb234(0x28d),'align':_0x4eb234(0x1f7),'icon':_0x4eb234(0x1c0),'paletteLabel':'monitor\x20variable','defaults':{'inputs':{'value':0x1},'output':{'value':0x2},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x4eb234(0x27c)},'subscription':{'value':'','required':!![],'validate':_0x30b611=>{if(_0x30b611==='')return![];return!![];}},'startImmediately':{'value':!![],'required':!![]},'nodeId':{'value':_0x4eb234(0x195),'required':![],'validate':()=>!![]},'samplingInterval':{'value':0x3e8,'required':!![]},'discardOldest':{'value':!![],'required':!![]},'queueSize':{'value':0xa,'required':!![]}},'outputs':0x1,'label'(){const _0x684bd0=_0x4eb234;return this['name']||_0x684bd0(0x241);},'labelStyle'(){const _0x575757=_0x4eb234;return this[_0x575757(0x265)]?_0x575757(0x230):'';},'oneditprepare'(){const _0x29f088=_0x4eb234,_0xab73f7=this;_0x2d4068(),_0xa396e3();const _0x427d52=_0xab73f7[_0x29f088(0x263)];_0xab73f7[_0x29f088(0x202)]=_0x427d52?0x0:0x1,_0x3f5893(RED,this),$(_0x29f088(0x250))['on']('change',()=>{const _0x3b39fc=_0x29f088,_0x10d0d7=$('#node-input-startImmediately')[_0x3b39fc(0x22e)](_0x3b39fc(0x1b3));_0x10d0d7?$(_0x3b39fc(0x24f))[_0x3b39fc(0x203)](0x0):$(_0x3b39fc(0x24f))['val'](0x1);});const _0x47ba02=$(_0x29f088(0x204));_0x47ba02[_0x29f088(0x274)](Object[_0x29f088(0x194)](Object[_0x29f088(0x194)]({},_0x145261()),{'filter'(_0x1e685a){const _0x3237b8=_0x29f088;return _0x1e685a[_0x3237b8(0x1b8)]==='Variable'||_0x1e685a['nodeClass']===_0x3237b8(0x23d);},'isSelectable'(_0x5a206e){const _0x56e038=_0x29f088;return _0x5a206e[_0x56e038(0x1b8)]==='Variable';}}));},'oneditsave'(){const _0x4104f5=_0x4eb234,_0x104333=$(_0x4104f5(0x238))[_0x4104f5(0x22e)]('checked');_0x104333?($(_0x4104f5(0x238))[_0x4104f5(0x203)](_0x104333?0x0:0x1),this[_0x4104f5(0x202)]=_0x104333?0x0:0x1):($(_0x4104f5(0x238))[_0x4104f5(0x203)](0x1),this[_0x4104f5(0x202)]=0x1);}});}()));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg1YTk4OGMiLCJfMHgxZThhYzYiLCJfMHgzYzQwNzgiLCJfMHgxYmU1NTMiLCJfMHgyNmQ5MzAiLCJfMHgyYTQ2OGQiLCJfMHg0ZWVlYjYiLCJfMHg0MTI4YjciLCJQcm9taXNlIiwiXzB4NWE1YzE2IiwiXzB4NGYxNmZhIiwiXzB4MjgwMWQ3IiwiXzB4NTY5YTFhIiwiXzB4Yjg5ODk2IiwiXzB4NTc1MjFhIiwiXzB4NDU2YTRlIiwiXzB4YWQ0Y2YxIiwiXzB4MzNjODc0IiwiXzB4MzZiMTNiIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4NWM4ZWFmIiwiXzB4NWI1MTk5IiwiXzB4YWZjODlmIiwiXzB4Njk1MTAxIiwiRXJyb3IiLCJfMHg1MzY5MjUiLCJfMHg5ZThmNTYiLCJfMHgyMWM5YjAiLCJfMHgyYTRjYTEiLCJfMHgxMDk1MmMiLCJfMHg0YmJjOTAiLCJfMHg0ZTQxOGIiLCJfMHhhY2U5MzEiLCJfMHg1MWM4ZWEiLCJfMHhmMzc2YjciLCJfMHg0Y2ZiMjUiLCJfMHgyY2RlNmEiLCJfMHgxZDBjMTAiLCJfMHgzMmE3NzYiLCJfMHg0YTEwM2MiLCJfMHhhYzg1N2YiLCJfMHg1MzkyMzMiLCJfMHhkN2UzMzgiLCJfMHg0NDBmMzEiLCJfMHg1OWZkMDUiLCJfMHgxZjU2MjgiLCJfMHg1NDU1MzkiLCJfMHgyYzE1MjUiLCJlbmRwb2ludE5vZGUiLCJfMHgzMzk4NWQiLCJlbmRwb2ludCIsIl8weDJkZWNlZCIsImJhc2VVcmwiLCJfMHg1NTRkMjAiLCJfMHg1MzU3ZWMiLCJfMHg3N2FkM2IiLCJfMHgzN2U1YTciLCJfMHgxNTUwNWMiLCJfMHgxZjg5OGYiLCJPYmplY3QiLCJfMHgyYjU4YzciLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4MWMyMWNlIiwiXzB4MmMzM2JkIiwiXzB4YWYzNmI1IiwiXzB4MTQxOWVlIiwiXzB4MzAxYmNmIiwiXzB4MTNmOWQyIiwiXzB4MTVlZmU5IiwiXzB4NTQ2ZWJkIiwiXzB4NDVjOTgyIiwiXzB4MTM4NmJiIiwibm9kZUlkIiwiXzB4YTllYzM4Iiwicm9vdE5vZGVJZCIsIl8weDM5YzJkNCIsImlzVHlwZSIsIl8weDM0NzM4MiIsIl8weDM1YTIxMCIsIl8weDcxMzg5YSIsIl8weDFjN2I3ZSIsIl8weDU2NWY2OSIsIl8weDIyNTUyMCIsIl8weGIwZDczMiIsIl8weDIzNDA4ZiIsIl8weDRlMmJhMyIsIl8weDI5ZmQxNyIsIl8weDJiNTdjYSIsIl8weDU5ODc0YSIsIl8weDI2ZjY1YyIsIl8weDNhYmQxMSIsIl8weDE2MGE3MSIsIl8weDNkY2IyZiIsIl8weDQzZDgyZCIsIl8weDNmNWQyNiIsIl8weDU3NjBhMSIsIl8weDIxODhmOSIsIl8weDU4ZjY2ZCIsIl8weDIxZTdmNCIsIl8weDM0MTJmYiIsIl8weDRhMDMwNiIsIl8weDM5MGNjZCIsIl8weDNmZTcwNiIsIl8weDQ1YWUzOCIsIl8weDU1ODA0MiIsIl8weDMzOGM5MyIsIl8weDE1MDAyZCIsIl8weDIxOGIzZCIsIl8weDQwMWRhMiIsIlJFRCIsIl8weDFkZmMxNSIsIl8weDQ5MWY0MyIsIl8weGE2MDdjMyIsIl8weDNlMmIxMSIsIl8weGI1YTFmYyIsIl8weDE2MDgwNCIsIl8weDQ5ZTFmZCIsIl8weGQzYTJiYyIsIl8weDE0YTgxNiIsIl8weDU2MzdjIiwiXzB4NDZjN2Q5IiwiXzB4MTM4YTk1IiwiXzB4NWQxOWViIiwiXzB4NWVmMjE5IiwiXzB4MmNkNzllIiwianNvbiIsIl8weDNjODNiYiIsImRhdGEiLCJfMHgzMjNkODkiLCJfMHg1NTU4YjQiLCJfMHg1OWE4M2UiLCJfMHg1YTQyOTciLCJzZXRUaW1lb3V0IiwiXzB4MzliZGMyIiwiXzB4NTc4NWE2IiwiXzB4MjMxYjc3IiwiXzB4M2QzMTAxIiwiXzB4NDZlMGY0IiwiXzB4MjRmOGU1IiwiXzB4NGUyYzFhIiwiXzB4Mjg3MGFkIiwiXzB4MzI0ZGNhIiwiXzB4M2ExNjE5IiwiXzB4ZWQ0ZmYzIiwiXzB4NGFkNDVlIiwiXzB4NDlmY2MyIiwiXzB4NWIyODk4IiwiXzB4M2JmOWMzIiwiXzB4MmU2NTc2IiwiXzB4MjY0YmQyIiwiXzB4MzI0MTc0IiwiXzB4M2VjNDM2IiwiXzB4NWE3YWM2IiwiXzB4NTBhYzJkIiwiJCIsIl8weDZiMzFiIiwiXzB4NDA0YTZmIiwiaWNvbiIsIl8weDQyMDI2MyIsImNvbG9yIiwiXzB4MWFlYzRmIiwiXzB4MzI0NzI4IiwiXzB4MTYxYTdmIiwiXzB4NGE0MTlmIiwiXzB4MmUyODI1IiwiXzB4MmJmNzc5IiwiXzB4NTQ5YzVlIiwiXzB4NGM4MjEwIiwiXzB4YmVkZjkiLCJfMHgxYTkzNzIiLCJfMHgxNTYzYzIiLCJfMHgxMzA2OGQiLCJfMHgzNDQ3N2UiLCJfMHgxOThjNmYiLCJfMHgxNGYwMmMiLCJfMHgyNWQ5NWYiLCJfMHg0YzY3ODgiLCJfMHgxZDZjYTkiLCJfMHgzMjAwM2QiLCJfMHg2MzZmNyIsIl8weDE5MGJlYiIsIl8weDM1OGEwNyIsIl8weDIxOTZjNyIsInVuZGVmaW5lZCIsIl8weDQ3YWQ4MyIsIl8weDM3Yjc5MCIsIl8weDI2MDBiNiIsIl8weDJiMzdhZiIsIl8weDE1N2YxZSIsIl8weDU3YmQ5YyIsIl8weDJlYThiMyIsIl8weDFiNTVhNyIsIl8weDQzOTg2YSIsIl8weDFhZTRkYSIsIl8weDhhZGQxZiIsIl8weDQ1NGVkNiIsIl8weDJhMzI0MCIsIl8weDExNzc5YyIsInJlZmVyZW5jZXMiLCJfMHgxYTc3OTEiLCJfMHg1YzU3ZWYiLCJfMHgyNzA3MmEiLCJfMHg2YzAzZTIiLCJfMHgzZmFiYzEiLCJfMHhmMDQxZjAiLCJfMHgzOWM3ZDIiLCJfMHg1MzA5YmIiLCJfMHgyNWQzOGIiLCJfMHhiYWQ4MjciLCJfMHgxMGI2MzAiLCJfMHg1Yzc0NTEiLCJfMHgzMWYxZjAiLCJfMHgyOWVjMWMiLCJfMHgxY2NiNmUiLCJfMHgxNDYxN2IiLCJfMHgyZDQwNjgiLCJfMHg1YzQ1ZWQiLCJfMHg1MzUxZTciLCJfMHhlZWNjNjkiLCJfMHgyODcyNWQiLCJfMHg0NzFlMzAiLCJfMHgxNjhkYTUiLCJfMHgzNjgwN2QiLCJfMHg1OTE5NzMiLCJfMHgzMTJlNGUiLCJfMHgyZWM4MzIiLCJfMHg0NmFhNDIiLCJfMHgxOTY0YWQiLCJfMHgxYmNjMDIiLCJkb2N1bWVudCIsIl8weDMyMmY5IiwiXzB4MjNiOTY3IiwiXzB4NWVkOTJhIiwiXzB4M2EyNzk2IiwiXzB4M2QxOGVhIiwiXzB4NGJkN2JhIiwiXzB4NDk1ZmRjIiwiXzB4MjdiNzQyIiwiXzB4MTFmZTQ0IiwiXzB4MzRjOWViIiwiXzB4MWJjMWU5IiwiXzB4ZTdlZmRmIiwiXzB4MmZmMDNmIiwiXzB4NGRiNjM2IiwiXzB4MmFjOGU0IiwiXzB4MTYyYmE2IiwiXzB4MmI1Y2EyIiwiXzB4NDMyMzg5IiwiXzB4NWMyZTIzIiwid2luZG93IiwiXzB4YjQ5ZmMiLCJfMHgxZDdmOGEiLCJfMHhjYzljZmEiLCJfMHgzNGE0YTgiLCJfMHgxYTdkNTciLCJfMHgyYTE1Y2IiLCJfMHg0ODEwNDIiLCJfMHgyNzA3YzQiLCJfMHhmOGIwYTgiLCJfMHg0ZGM1YmMiLCJfMHg0ZWVjZjIiLCJfMHgzNWNkODgiLCJfMHg1NWFmZTkiLCJfMHgyZWZlOTkiLCJfMHgyMTU0YWMiLCJfMHgyMTIzMTkiLCJfMHgyNDI2MjIiLCJfMHgxNmRlMTAiLCJfMHg1YjNlMDEiLCJfMHgzMDc1MGIiLCJfMHgyY2I4MmMiLCJfMHg0ZGVmNGQiLCJfMHg3ZTkyYTYiLCJfMHgxY2FkZDMiLCJfMHgxNTE4ZDMiLCJfMHgxODcwOWIiLCJfMHgyNzMxNDciLCJfMHhiYjdlNTUiLCJfMHgzYjQ1N2MiLCJfMHg4MjkxMDciLCJfMHg1ZDcyNTgiLCJfMHg1OWJmNTEiLCJfMHg0ZmFhODYiLCJfMHg2OWY5MzYiLCJfMHgxYmE1YzMiLCJfMHgyNmY1MTkiLCJfMHgzNTg4ODUiLCJfMHg1YWY0YTEiLCJfMHgzZWFhZDUiLCJfMHg2NGIwNjUiLCJfMHg1OGU1ZGQiLCJfMHgyMjM4ZjQiLCJfMHgzYTU1YmYiLCJfMHgyNDA3MzAiLCJfMHgzNDQ1MGQiLCJfMHgxNTRjODUiLCJfMHg0MzE4YWIiLCJfMHgzN2VhZjAiLCJfMHg1MGUxOGIiLCJfMHg0OGM3NTUiLCJfMHgzZDY0ZjUiLCJfMHg0MmViYTEiLCJfMHgxZWZhZGEiLCJfMHg0NDMyNWMiLCJfMHgzZjU4OTMiLCJfMHhjY2Q4NzYiLCJfMHg1ZTM2NWMiLCJfMHgyMDlhNGYiLCJfMHgyODAyNTAiLCJfMHgzY2NlODEiLCJfMHgzMzY4MzQiLCJfMHgxMjkwNzciLCJfMHgxNThkNDIiLCJfMHgzNzAyODYiLCJfMHgyZTA3NDIiLCJfMHhiNGQ5NjAiLCJfMHg1NjRiZTQiLCJfMHg0ZGRlNTciLCJzZWN1cml0eU1vZGUiLCJfMHgyNWZhMzMiLCJzZWN1cml0eVBvbGljeSIsIl8weDVlZjgyNSIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHgyYTFiOWMiLCJjcmVkZW50aWFscyIsIl8weDI3NmM2ZCIsIm5hbWVzcGFjZUFsaWFzZXMiLCJfMHgxMjVjYjAiLCJfMHg0MzVhODAiLCJfMHgxMWU2YzgiLCJfMHgxMGZiY2MiLCJfMHgzYWEzNWUiLCJfMHgzYWNlZmMiLCJfMHg4NGEwMCIsIl8weDE0NTI2MSIsIl8weGEzOTZlMyIsIl8weDJmNWFjMCIsIl8weDRlYzVmMiIsIl8weDMwYjYxMSIsIl8weGFiNzNmNyIsIl8weDQyN2Q1MiIsIl8weDEwZDBkNyIsIl8weDQ3YmEwMiIsIl8weDFlNjg1YSIsIl8weDVhMjA2ZSIsIl8weDEwNDMzMyJdLCJtYXBwaW5ncyI6Im8xTEFBQSxDQUFDLFUsQ0FDRyxhLHdCQW1CQSxTQUFTQSxTQUFULENBQW1CQyxTQUFuQixDQUE0QkMsU0FBNUIsQ0FBd0NDLFNBQXhDLENBQTJDQyxTQUEzQyxDLENBQ0ksU0FBU0MsU0FBVCxDQUFlQyxTQUFmLEMsUUFBK0JBLFNBQUEsWUFBaUJILFNBQWpCLENBQXFCRyxTQUFyQixDQUE2QixJQUFJSCxTQUFKLENBQU0sU0FBVUksU0FBVixDLENBQXFCQSxTQUFBLENBQVFELFNBQVIsQyxFQUEzQixDLFNBQ3JELEdBQUssQ0FBQUgsU0FBQSxFQUFNLENBQUFBLFNBQUEsQ0FBSUssT0FBSixDQUFOLENBQUwsQ0FBeUIsU0FBVUMsU0FB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QXNDK0wsU0FBQSxDLEdBQUEsQyxHQUF0QyxDLENBQ0EsSyxnQkFBQSxFQUFjQSxTQUFBLEMsR0FBQSxDLE1BR2QvTCxDQUFBLEMsZ0JBQUEsRSxnQkFBQSxFLEdBQUEsQyxDQUNBLEssZ0JBQUEsRSxNQTFFb0MsQ0FBaEQsQyxFQW5sQ0osRyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG4gICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG4gICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG4gICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcbiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCwgSXRlcmF0b3IgKi9cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcclxuICAgIH07XG5cbiAgICBjb25zdCBPcmdhbml6ZXNSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNVwiO1xuICAgIGNvbnN0IEZvbGRlclR5cGUgPSBcIm5zPTA7aT02MVwiO1xuICAgIGNvbnN0IEhhc0NvbXBvbmVudFJlZk5vZGVJZCA9IFwibnM9MDtpPTQ3XCI7XG4gICAgY29uc3QgSGFzUHJvcGVydHlSZWZOb2RlSWQgPSBcIm5zPTA7aT00NlwiO1xuICAgIGNvbnN0IEhhc0NoaWxkUmVmTm9kZUlkID0gXCJucz0wO2k9MzRcIjtcbiAgICBjb25zdCBIYXNTdWJ0eXBlUmVmTm9kZUlkID0gXCJucz0wO2k9NDVcIjtcbiAgICBjb25zdCBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZCA9IFwibnM9MDtpPTQwXCI7XG5cbiAgICB2YXIgQnJvd3NlRGlyZWN0aW9uO1xuICAgIChmdW5jdGlvbiAoQnJvd3NlRGlyZWN0aW9uKSB7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJGb3J3YXJkXCJdID0gMF0gPSBcIkZvcndhcmRcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmVyc2VcIl0gPSAxXSA9IFwiSW52ZXJzZVwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiQm90aFwiXSA9IDJdID0gXCJCb3RoXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZhbGlkXCJdID0gM10gPSBcIkludmFsaWRcIjtcbiAgICB9KShCcm93c2VEaXJlY3Rpb24gfHwgKEJyb3dzZURpcmVjdGlvbiA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzcztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzcykge1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVW5zcGVjaWZpZWRcIl0gPSAwXSA9IFwiVW5zcGVjaWZpZWRcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZhcmlhYmxlXCJdID0gMl0gPSBcIlZhcmlhYmxlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZhcmlhYmxlVHlwZVwiXSA9IDE2XSA9IFwiVmFyaWFibGVUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlZpZXdcIl0gPSAxMjhdID0gXCJWaWV3XCI7XG4gICAgfSkoTm9kZUNsYXNzIHx8IChOb2RlQ2xhc3MgPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3NNYXNrO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzTWFzaykge1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZhcmlhYmxlXCJdID0gMl0gPSBcIlZhcmlhYmxlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZhcmlhYmxlVHlwZVwiXSA9IDE2XSA9IFwiVmFyaWFibGVUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIlZpZXdcIl0gPSAxMjhdID0gXCJWaWV3XCI7XG4gICAgfSkoTm9kZUNsYXNzTWFzayB8fCAoTm9kZUNsYXNzTWFzayA9IHt9KSk7XG4gICAgdmFyIFJlc3VsdE1hc2s7XG4gICAgKGZ1bmN0aW9uIChSZXN1bHRNYXNrKSB7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAxXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJJc0ZvcndhcmRcIl0gPSAyXSA9IFwiSXNGb3J3YXJkXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIk5vZGVDbGFzc1wiXSA9IDRdID0gXCJOb2RlQ2xhc3NcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiQnJvd3NlTmFtZVwiXSA9IDhdID0gXCJCcm93c2VOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkRpc3BsYXlOYW1lXCJdID0gMTZdID0gXCJEaXNwbGF5TmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJUeXBlRGVmaW5pdGlvblwiXSA9IDMyXSA9IFwiVHlwZURlZmluaXRpb25cIjtcbiAgICB9KShSZXN1bHRNYXNrIHx8IChSZXN1bHRNYXNrID0ge30pKTtcbiAgICAvLyAgY29uc3QgcSA9IFJlZmVyZW5jZVR5cGVJZHMuT3JnYW5pemVzO1xuICAgIGZ1bmN0aW9uIHJlc29sdmVOb2RlSWQobm9kZUlkTGlrZSkge1xuICAgICAgICBzd2l0Y2ggKG5vZGVJZExpa2UpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPcmdhbml6ZXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JnYW5pemVzUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1Byb3BlcnR5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1Byb3BlcnR5UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NvbXBvbmVudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDb21wb25lbnRSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ2hpbGRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ2hpbGRSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzU3VidHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNTdWJ0eXBlUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1R5cGVEZWZpbml0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0SWNvbiA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgc3dpdGNoIChyZWZlcmVuY2Uubm9kZUNsYXNzKSB7XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IE9yZ2FuaXplc1JlZk5vZGVJZCkgO1xuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UudHlwZURlZmluaXRpb24gPT09IEZvbGRlclR5cGUgfHwgcmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gXCJpPTYxXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1mb2xkZXJcIiwgY29sb3I6IFwicmdiYSg2MSwgNjAsIDQsIDAuNTI1KVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIlNlYUdyZWVuXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBIYXNDb21wb25lbnRSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJTdGVlbEJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBIYXNQcm9wZXJ0eVJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkRvZGdlckJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJNZXRob2RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWNvZ1wiLCBjb2xvcjogXCJTYW5keUJyb3duXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1zbGlkZXJzXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIkRhdGFUeXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS10ZXh0LXdpZHRoXCIsIGNvbG9yOiBcIkNhZGV0Qmx1ZVwiIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1xdWVzdGlvblwiLCBjb2xvcjogXCJncmV5XCIgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgYnJvd3NlID0gKF9hLCBub2RlSWRfMSwgdGVtcGxhdGVfMSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hLCBub2RlSWRfMSwgdGVtcGxhdGVfMV0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbm9kZUlkLCB0ZW1wbGF0ZSkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZm9yLW5vZGUtcmVkYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vYnJvd3NlYDtcbiAgICAgICAgY29uc3QgYnJvd3NlRGVzY3JpcHRpb24gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRlbXBsYXRlKSwgeyBub2RlSWQsIHJlc3VsdE1hc2s6IDYzIH0pO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBicm93c2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzOiBbXSB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYnJvd3NlIGZldGNoZWQgOiBcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0geWllbGQgZGF0YS5qc29uKCk7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSByZXNwb25zZS5icm93c2VSZXN1bHQucmVmZXJlbmNlcyB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlcyB9O1xuICAgIH0pO1xuXG4gICAgY29uc3QgdGVtcGxhdGUxID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNDaGlsZFwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IHRlbXBsYXRlMiA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiT3JnYW5pemVzXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3Qgd2Fsa0JhY2t3YXJkID0gKF9hLCBfYikgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hLCBfYl0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgeyBub2RlSWQsIHJvb3ROb2RlSWQsIGlzVHlwZSB9KSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1mb3Itbm9kZS1yZWRgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS93YWxrLWJhY2t3YXJkYDtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgICAgIHJvb3ROb2RlSWQsXG4gICAgICAgICAgICAgICAgaXNUeXBlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIHJldHVybiBqc29uLmJyb3dzZVBhdGg7XG4gICAgfSk7XG4gICAgY29uc3QgY2hvb3NlTm9kZUlkID0gKGRhdGEsIG1vZGUpID0+IHtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzQ29kZSAhPT0gXCJHb29kXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhLnJlcXVlc3RlZE5vZGVJZDtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJicm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuYnBfaW5kZXhlZDtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkQnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmJwX2FsaWFzZWQgfHwgZGF0YS5icF9pbmRleGVkO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWROb2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5ub2RlSWRfYWxpYXNlZCB8fCBkYXRhLm5vZGVJZF9uc3U7XG4gICAgICAgICAgICBjYXNlIFwibnN1Tm9kZUlEXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubm9kZUlkX25zdTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjYXNlIFwibm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEubm9kZUlkO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBtYWtlVG9vbHRpcCA9IChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1c0NvZGUgIT09IFwiR29vZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gYHN0YXR1c0NvZGU6ICR7ZGF0YS5zdGF0dXNDb2RlfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgc3RyID0gW107XG4gICAgICAgICAgICBzdHIucHVzaChgbm9kZUlkOiAke2RhdGEubm9kZUlkfWApO1xuICAgICAgICAgICAgc3RyLnB1c2goYGJyb3dzZSBwYXRoOiAke2RhdGEuYnBfaW5kZXhlZH1gKTtcbiAgICAgICAgICAgIHN0ci5wdXNoKGBub2RlIGNsYXNzOiAke05vZGVDbGFzc1tkYXRhLm5vZGVDbGFzc119YCk7XG4gICAgICAgICAgICBpZiAoZGF0YS5ub2RlSWRfbnN1KSB7XG4gICAgICAgICAgICAgICAgc3RyLnB1c2goYG5zdSBub2RlSWQ6ICR7ZGF0YS5ub2RlSWRfbnN1fWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEubm9kZUlkX2FsaWFzZWQpIHtcbiAgICAgICAgICAgICAgICBzdHIucHVzaChgYWxpYXNlZCBOb2RlSWQ6ICR7ZGF0YS5ub2RlSWRfYWxpYXNlZH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRhLmJwX2luZGV4ZWQpIHtcbiAgICAgICAgICAgICAgICBzdHIucHVzaChgYWxpYXNlZCBicm93c2VQYXRoOiAke2RhdGEuYnBfYWxpYXNlZH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdHIuam9pbihcIlxcblwiKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZnVuY3Rpb24gZmlndXJlT3V0TW9kZShlbmhhbmNlZE5vZGVJZCkge1xuICAgICAgICBpZiAoZW5oYW5jZWROb2RlSWQubWF0Y2goL15uc3U9LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcIm5zdU5vZGVJRFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmhhbmNlZE5vZGVJZC5tYXRjaCgvXihucz0uKjspPyhpfGJ8c3xnKT0vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwibm9kZUlkXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9ebnNhPS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJhbGlhc2VkTm9kZUlkXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9eKFxcL3xcXC4pWzAtOV0rOi8pKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJicm93c2VQYXRoXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuaGFuY2VkTm9kZUlkLm1hdGNoKC9eKFxcL3xcXC4pLio6LykpIHtcbiAgICAgICAgICAgIHJldHVybiBcImJyb3dzZVBhdGhcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBmaWd1cmVPdXRNZW5VSXRlbVZhbHVlKHN0cikge1xuICAgICAgICBjb25zdCBtb2RlID0gZmlndXJlT3V0TW9kZShzdHIpO1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJub2RlSWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuXCI7XG4gICAgICAgICAgICBjYXNlIFwiYWxpYXNlZE5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5hXCI7XG4gICAgICAgICAgICBjYXNlIFwibnN1Tm9kZUlEXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibnN1XCI7XG4gICAgICAgICAgICBjYXNlIFwiYnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImJcIjtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkQnJvd3NlUGF0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImFiXCI7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBcInRcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB0b01vZGUodikge1xuICAgICAgICBsZXQgbW9kZTtcbiAgICAgICAgc3dpdGNoICh2KSB7XG4gICAgICAgICAgICBjYXNlIFwiblwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcIm5vZGVJZFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm5hXCI6XG4gICAgICAgICAgICAgICAgbW9kZSA9IFwiYWxpYXNlZE5vZGVJZFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm5zdVwiOlxuICAgICAgICAgICAgICAgIG1vZGUgPSBcIm5zdU5vZGVJRFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImJcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJicm93c2VQYXRoXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiYWJcIjpcbiAgICAgICAgICAgICAgICBtb2RlID0gXCJhbGlhc2VkQnJvd3NlUGF0aFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2RlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmcm9tTW9kZShtb2RlKSB7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSBcIm5vZGVJZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIm5cIjtcbiAgICAgICAgICAgIGNhc2UgXCJhbGlhc2VkTm9kZUlkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibmFcIjtcbiAgICAgICAgICAgIGNhc2UgXCJuc3VOb2RlSURcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJuc3VcIjtcbiAgICAgICAgICAgIGNhc2UgXCJicm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiYlwiO1xuICAgICAgICAgICAgY2FzZSBcImFsaWFzZWRCcm93c2VQYXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiYWJcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwidFwiO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IF9jYWxsQ2hlY2tOb2RlSWQgPSAoX2EsIG5vZGVJZF8xKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCBbX2EsIG5vZGVJZF8xXSwgdm9pZCAwLCBmdW5jdGlvbiogKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWZvci1ub2RlLXJlZGA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2NoZWNrTm9kZUlkYDtcbiAgICAgICAgY29uc3QgZUlkID0gZW5kcG9pbnROb2RlLmlkO1xuICAgICAgICBjb25zdCBuID0gUkVELm5vZGVzLm5vZGUoZUlkKTtcbiAgICAgICAgY29uc29sZS5sb2cobi5uYW1lc3BhY2VBbGlhc2VzKTtcbiAgICAgICAgbi5uYW1lc3BhY2VBbGlhc2VzO1xuICAgICAgICBjb25zdCBuYW1lc3BhY2VBbGlhc2VzID0gZW5kcG9pbnROb2RlLm5hbWVzcGFjZUFsaWFzZXM7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2VBbGlhc2VzLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBqc29uID0gKHlpZWxkIGRhdGEuanNvbigpKTtcbiAgICAgICAgcmV0dXJuIHsganNvbiwgZGF0YSB9O1xuICAgIH0pO1xuICAgIGNvbnN0IGludGVybmFsVmVyaWZ5ID0gKF9hLCBtb2RlXzEsICRpbnB1dEVsZW1lbnRfMSwgJGluZm9fMSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgW19hLCBtb2RlXzEsICRpbnB1dEVsZW1lbnRfMSwgJGluZm9fMV0sIHZvaWQgMCwgZnVuY3Rpb24qICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbW9kZSwgJGlucHV0RWxlbWVudCwgJGluZm8pIHtcbiAgICAgICAgY29uc3QgZW5oYW5jZWROb2RlSWQgPSAkaW5wdXRFbGVtZW50LnZhbCgpO1xuICAgICAgICBjb25zdCB7IGpzb24sIGRhdGEgfSA9IHlpZWxkIF9jYWxsQ2hlY2tOb2RlSWQoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIGVuaGFuY2VkTm9kZUlkKTtcbiAgICAgICAgY29uc3Qgc2V0Tm90aWZpY2F0aW9uID0gKHRleHQsIGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgJGluZm8udGV4dCh0ZXh0KS5hZGRDbGFzcyhcInN0ZXJmaXZlLWluZm9cIikuYWRkQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICRpbmZvLnNob3coKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICRpbmZvLnJlbW92ZUNsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBkbyBzb21ldGhpbmc7XG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCIhIWZhaWx1cmUhIVwiICsgZW5oYW5jZWROb2RlSWQsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChqc29uLnN0YXR1c0NvZGUubWF0Y2goL0dvb2QvKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2x0aXAgPSBtYWtlVG9vbHRpcChqc29uKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LmF0dHIoXCJ0aXRsZVwiLCB0b29sdGlwKTtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE5vZGVJZCA9IGNob29zZU5vZGVJZChqc29uLCBtb2RlKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChzZWxlY3RlZE5vZGVJZCk7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIkdvb2RcIiwgXCJva1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKGAke2VuaGFuY2VkTm9kZUlkfWApO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihgJHtqc29uLnN0YXR1c0NvZGV9ICR7ZGF0YS5zdGF0dXNUZXh0fWAsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBmZXRjaENoaWxkcmVuKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUxKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDIgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTIpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbLi4uYnJvd3NlUmVzdWx0MS5yZWZlcmVuY2VzLCAuLi5icm93c2VSZXN1bHQyLnJlZmVyZW5jZXNdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHRlbXBsYXRlU1QgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc1N1YnR5cGVcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfCBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8IE5vZGVDbGFzcy5EYXRhVHlwZSB8IE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgZnVuY3Rpb24gZmV0Y2hTdWJ0eXBlcygkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlU1QpO1xuICAgICAgICAgICAgcmV0dXJuIGJyb3dzZVJlc3VsdDE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBtYWtlRWxlbWVudCA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZSB8fCAhcmVmZXJlbmNlLm5vZGVJZCkge1xuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGk+PGkgY2xhc3M9XCJmYSBmYS1lcnJvclwiIHN0eWxlPVwiY29sb3I6cmVkO1wiPjwvaT5ubyByZWZlcmVuY2UgITx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbiA9IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgdCA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHsgaWNvbiwgY29sb3IgfSA9IGdldEljb24ocmVmZXJlbmNlKTtcbiAgICAgICAgY29uc3QgdGl0bGUgPSBgKCR7cmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpfSkgJHsoKF9jID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5uYW1lKSB8fCAoKF9kID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QudGV4dCkgfHwgXCJcIn1gO1xuICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaSBrZXk9XCIke3JlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKX1cIn0+PHNwYW4gY2xhc3M9XCJ0cmVlLXRleHRcIiB0aXRsZT0ke3RpdGxlfT48aSBjbGFzcz1cImZhICR7aWNvbn1cIiBzdHlsZT1cImNvbG9yOiR7Y29sb3J9O1wiPjwvaT4gJHt0fTwvc3Bhbj48dWw+PC91bD48L2xpPmApO1xuICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhcImV4cGFuZGFibGVcIik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJ2YWx1ZVwiLCBuKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgfTtcbiAgICBjb25zdCBmaW5kRWxlbWVudCA9IChub2RlSWQsICR0cmVlKSA9PiB7XG4gICAgICAgIHJldHVybiAkdHJlZS5maW5kKGBsaVtrZXk9XCIke25vZGVJZH1cIl1gKTtcbiAgICB9O1xuICAgIGNvbnN0IHNlbGVjdFNpbmdsZSA9ICh0aGF0LCAkbGkpID0+IHtcbiAgICAgICAgdGhhdC4kdHJlZS5maW5kKFwibGkgPiAudHJlZS10ZXh0XCIpLnJlbW92ZUNsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgICAgIC8vIGNsZWFyIGFsbCBzZWxlY3RlZCBpdGVtc1xuICAgICAgICAkbGkuZmluZChcIi50cmVlLXRleHQ6Zmlyc3RcIikuYWRkQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICB9O1xuICAgIGNvbnN0IGF1dG9FeHBhbmQgPSAodGhhdCwgYnJvd3NlUGF0aCwgJHRyZWUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBleHBhbmQgdGhlIHRyZWUgdG8gc2hvdyB0aGUgbm9kZUlkXG4gICAgICAgIGxldCAkY3VycmVudCA9ICR0cmVlLmNoaWxkcmVuKFwiOmZpcnN0XCIpO1xuICAgICAgICBicm93c2VQYXRoLnJlbGF0aXZlUGF0aC5lbGVtZW50cyB8fCBbXTtcbiAgICAgICAgY29uc3Qgbm9kZUlkcyA9IGJyb3dzZVBhdGgubm9kZUlkcyB8fCBbXTtcbiAgICAgICAgaWYgKG5vZGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBuIG9mIG5vZGVJZHMpIHtcbiAgICAgICAgICAgIGlmICgkY3VycmVudC5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIGV4cGFuZCBhbmQgc2VsZWN0IHRoZSByaWdodCBlbGVtZW50XG4gICAgICAgICAgICAgICAgeWllbGQgX2V4cGFuZExpKHRoYXQsICRjdXJyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gZmluZEVsZW1lbnQobiwgJGN1cnJlbnQpO1xuICAgICAgICAgICAgaWYgKCRlbGVtZW50Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRjdXJyZW50ID0gJGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZWN0U2luZ2xlKHRoYXQsICRjdXJyZW50KTtcbiAgICAgICAgc2Nyb2xsVG9MaSh0aGF0LiRkcm9wZG93biwgJGN1cnJlbnQpO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIHNjcm9sbFRvTGkoJGNvbnRhaW5lciwgJHRhcmdldExpKSB7XG4gICAgICAgIC8vIEdldCB0aGUgcG9zaXRpb24gb2YgdGhlIHRhcmdldCBpdGVtIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXJcbiAgICAgICAgY29uc3QgbGlQb3MgPSAkdGFyZ2V0TGkucG9zaXRpb24oKS50b3A7XG4gICAgICAgIC8vIEdldCB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIGNvbnRhaW5lclxuICAgICAgICBjb25zdCBjb250YWluZXJTY3JvbGxUb3AgPSAkY29udGFpbmVyLnNjcm9sbFRvcCgpO1xuICAgICAgICBpZiAoY29udGFpbmVyU2Nyb2xsVG9wID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgcG9zaXRpb24gdG8gc2Nyb2xsIHRvIChjdXJyZW50IHNjcm9sbCArIGl0ZW0ncyBwb3NpdGlvbilcbiAgICAgICAgLy8gQWRqdXN0IHRoaXMgY2FsY3VsYXRpb24gYmFzZWQgb24geW91ciBuZWVkc1xuICAgICAgICBjb25zdCBzY3JvbGxUbyA9IGNvbnRhaW5lclNjcm9sbFRvcCArIGxpUG9zIC0gJGNvbnRhaW5lci5oZWlnaHQoKSAvIDIgKyAkdGFyZ2V0TGkuaGVpZ2h0KCkgLyAyO1xuICAgICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byBlbnN1cmUgdGhlIGl0ZW0gaXMgdmlzaWJsZVxuICAgICAgICAkY29udGFpbmVyLmFuaW1hdGUoe1xuICAgICAgICAgICAgc2Nyb2xsVG9wOiBzY3JvbGxUbyxcbiAgICAgICAgfSwgNTAwKTsgLy8gQWRqdXN0IHRoZSBkdXJhdGlvbiAoNTAwbXMpIGFzIG5lZWRlZFxuICAgIH1cbiAgICBjb25zdCByZWFjaFNlbGVjdGlvbiA9ICh0aGF0LCBwYXJlbnROb2RlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gdGhhdC4kaW5wdXQudmFsKCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICByb290Tm9kZUlkOiBwYXJlbnROb2RlLm5vZGVJZCxcbiAgICAgICAgICAgIGlzVHlwZTogdGhhdC5vcHRpb25zLmlzVHlwZVJlZiB8fCBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICBjb25zdCBicm93c2VQYXRoID0geWllbGQgd2Fsa0JhY2t3YXJkKGRhdGEsIG9wdGlvbnMpO1xuICAgICAgICBpZiAoIWJyb3dzZVBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCBhdXRvRXhwYW5kKHRoYXQsIGJyb3dzZVBhdGgsIHRoYXQuJHRyZWUpO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIF9mZXRjaERhdGFGb3JOb2RlKHRoYXQsICRub2RlLCBmZXRjaEZ1bmMsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJsb2FkaW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgJG5vZGUuYXBwZW5kKCc8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPjwvZGl2PicpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyByZWZlcmVuY2VzIH0gPSB5aWVsZCBmZXRjaEZ1bmMoJG5vZGUsIGRhdGEpO1xuICAgICAgICAgICAgICAgIC8vIHNvcnQgcmVmZXJlbmNlICAgYnkgYnJvd3NlTmFtZVxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMuc29ydCgoYSwgYikgPT4geyB2YXIgX2EsIF9iOyByZXR1cm4gKCgoX2EgPSBhLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5uYW1lKSB8fCBcIlwiKS5sb2NhbGVDb21wYXJlKCgoX2IgPSBiLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCBcIlwiKTsgfSk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmZpbHRlciAmJiAhdGhhdC5vcHRpb25zLmZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKGA8bGk+ZXJyb3IgJHtlcnIubWVzc2FnZX08L2xpPmApO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkbm9kZS5maW5kKFwiLnNwaW5uZXJcIikucmVtb3ZlKCk7XG4gICAgICAgICAgICAkbm9kZS5yZW1vdmVDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtYWtlQ29ubmVjdGlvbih0aGF0KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBmdW5jdGlvbiBfZXhwYW5kTGkodGhhdCwgJGxpKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICBjb25zdCBmID0gIXRoYXQub3B0aW9ucy5pc1R5cGVSZWYgPyBmZXRjaENoaWxkcmVuIDogZmV0Y2hTdWJ0eXBlcztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgeWllbGQgX2ZldGNoRGF0YUZvck5vZGUodGhhdCwgJGxpLCBmLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIGV4cGFuZGVkXG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0UGFyZW50Tm9kZSA9IHtcbiAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgbm9kZUNsYXNzOiBcIk9iamVjdFwiLFxuICAgICAgICBub2RlSWQ6IFwibnM9MDtpPTg1XCIsXG4gICAgICAgIGRpc3BsYXlOYW1lOiB7IHRleHQ6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgIHR5cGVEZWZpbml0aW9uOiBGb2xkZXJUeXBlLFxuICAgIH07XG4gICAgY29uc3QgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogWyBUZW1wZXJhdHVyZSAgXVxuICAgICAgICAgKiAgICggdG9vbHRpcCA6ICgvT2JqZWN0cy9NeVNlbnNvcikgKG5zPTE7cz1UZW1wZXJhdHVyZSkpXG4gICAgICAgICAqIFsgKyBbRm9sZGVyXSBPYmplY3RzXVxuICAgICAgICAgKiBbICAgICBbT2JqZWN0XSBNeVNlbnNvcl1cbiAgICAgICAgICogWyAgICAgKCApIFtWYXJpYWJsZV0gVGVtcGVyYXR1cmVdXG4gICAgICAgICAqL1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLm5vZGVCcm93c2VyXCIsIHtcbiAgICAgICAgICAgIC8qIGRlZmF1bHQgb3B0aW9ucyAqL1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogKCkgPT4gKHsgZW5kcG9pbnQ6IFwib3BjLnRjcDovL29wY3VhZGVtby5zdGVyZml2ZS5jb206MjY1NDNcIiB9KSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+IGRlZmF1bHRQYXJlbnROb2RlLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgICAgIGlzVHlwZVJlZjogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzb2x2ZVBhcmVudE5vZGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9fcGFyZW50Tm9kZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0eXBlb2YgdGhhdC5vcHRpb25zLnBhcmVudE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlLmNhbGwodGhhdCkgOiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2MgPSB5aWVsZCBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX19wYXJlbnROb2RlID0gZGVzYztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX19wYXJlbnROb2RlID0gYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5fX3BhcmVudE5vZGUgfHwgZGVmYXVsdFBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFsc28gcmVzZXQgcGFyZW50IG5vZGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHRoYXQ7XG4gICAgICAgICAgICAgICAgICAgIGEuX19wYXJlbnROb2RlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB5aWVsZCB0aGlzLnJlc29sdmVQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5jdXJyZW50UGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJpZnkobW9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxWZXJpZnkoZGF0YSwgbW9kZSwgdGhhdC4kaW5wdXQsIHRoYXQuJGluZm8pLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcInN0ZXJmaXZlLWlucHV0LWVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kY29tYm8ucmVtb3ZlQ2xhc3MoXCJzdGVyZml2ZS1pbnB1dC1lcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9oaWRlTWVudShtZW51KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub2ZmKFwibW91c2Vkb3duLnJlZC11aS10eXBlZElucHV0LWNsb3NlLXByb3BlcnR5LXNlbGVjdFwiKTtcbiAgICAgICAgICAgICAgICBtZW51LmhpZGUoKTtcbiAgICAgICAgICAgICAgICBtZW51LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKG1lbnUub3B0cy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbWVudS5maW5kKCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoXCJjaGVja2VkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQucHVzaCgkKHRoaXMpLmRhdGEoXCJ2YWx1ZVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBtZW51LmNhbGxiYWNrKHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoYXQuJGVsZW1lbnREaXYuaXMoXCI6dmlzaWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIC8veHggfSBlbHNlIGlmICh0aGlzLiRvcHRpb25TZWxlY3RUcmlnZ2VyLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy94eCAgICAgdGhhdC4kb3B0aW9uU2VsZWN0VHJpZ2dlci50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLnRyaWdnZXIoXCJmb2N1c1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZU1lbnUobWVudU9wdGlvbnMsIG9wdHMsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lbnUgPSAkKFwiPGRpdj5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS10eXBlZElucHV0LW9wdGlvbnMgc3RlcmZpdmUtb25saW5lLW1lbnVcIik7XG4gICAgICAgICAgICAgICAgbWVudS5vcHRzID0gb3B0cztcbiAgICAgICAgICAgICAgICBtZW51LmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgbWVudU9wdGlvbnMuZm9yRWFjaCgob3B0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHQgPSB7IHZhbHVlOiBvcHQsIGxhYmVsOiBvcHQgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgb3AgPSAkKCc8YSBocmVmPVwiI1wiPjwvYT4nKS5hdHRyKFwidmFsdWVcIiwgb3B0LnZhbHVlKS5hcHBlbmRUbyhtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3AudGV4dChvcHQubGFiZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wLnByb3AoXCJ0aXRsZVwiLCBvcHQudGl0bGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHQuaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5pY29uLmluZGV4T2YoXCI8XCIpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChvcHQuaWNvbikucHJlcGVuZFRvKG9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wdC5pY29uLmluZGV4T2YoXCIvXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoXCI8aT5cIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogXCJyZWQtdWktdHlwZWRJbnB1dC1pY29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBcIm1hc2staW1hZ2U6IHVybChcIiArIG9wdC5pY29uICsgXCIpOyAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcIiArIG9wdC5pY29uICsgXCIpO1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLnByZXBlbmRUbyhvcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFwiPGk+XCIsIHsgY2xhc3M6IFwicmVkLXVpLXR5cGVkSW5wdXQtaWNvbiBcIiArIG9wdC5pY29uIH0pLnByZXBlbmRUbyhvcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC5jc3MoeyBwYWRkaW5nTGVmdDogXCIxOHB4XCIgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHQuaWNvbiAmJiAhb3B0LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcC50ZXh0KG9wdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIGNiO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0cy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2IgPSAkKCc8aW5wdXQgdHlwZT1cImNoZWNrYm94XCI+JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3NzKFwicG9pbnRlci1ldmVudHNcIiwgXCJub25lXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEoXCJ2YWx1ZVwiLCBvcHQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByZXBlbmRUbyhvcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oXCJtb3VzZWRvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3Aub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0cy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG9wdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faGlkZU1lbnUobWVudSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYi5wcm9wKFwiY2hlY2tlZFwiLCAhY2IucHJvcChcImNoZWNrZWRcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtZW51LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1lbnUub24oXCJrZXlkb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXlDb2RlID09PSA0MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBET1dOXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNoaWxkcmVuKFwiOmZvY3VzXCIpLm5leHQoKS50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmtleUNvZGUgPT09IDM4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVQXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNoaWxkcmVuKFwiOmZvY3VzXCIpLnByZXYoKS50cmlnZ2VyKFwiZm9jdXNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmtleUNvZGUgPT09IDI3KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFU0NBUEVcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faGlkZU1lbnUobWVudSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBtZW51O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc2FybUNsaWNrOiBmYWxzZSxcbiAgICAgICAgICAgIF9zaG93TWVudShtZW51LCByZWxhdGl2ZVRvKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzYXJtQ2xpY2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhcm1DbGljayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgcG9zID0gcmVsYXRpdmVUby5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gcmVsYXRpdmVUby5oZWlnaHQoKTtcbiAgICAgICAgICAgICAgICB2YXIgbWVudUhlaWdodCA9IG1lbnUuaGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgdmFyIHRvcCA9IGhlaWdodCArIHBvcy50b3A7XG4gICAgICAgICAgICAgICAgaWYgKHRvcCArIG1lbnVIZWlnaHQgLSAkKGRvY3VtZW50KS5zY3JvbGxUb3AoKSA+ICQod2luZG93KS5oZWlnaHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB0b3AgLT0gdG9wICsgbWVudUhlaWdodCAtICQod2luZG93KS5oZWlnaHQoKSArIDU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0b3AgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lbnUuaGVpZ2h0KG1lbnVIZWlnaHQgKyB0b3ApO1xuICAgICAgICAgICAgICAgICAgICB0b3AgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtZW51LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogdG9wICsgXCJweFwiLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBwb3MubGVmdCArIFwicHhcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtZW51LnNsaWRlRG93bigxMDApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RlbGF5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdWlTZWxlY3QuYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dC1mb2N1c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oXCJtb3VzZWRvd24ucmVkLXVpLXR5cGVkSW5wdXQtY2xvc2UtcHJvcGVydHktc2VsZWN0XCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKGV2ZW50LnRhcmdldCkuY2xvc2VzdChtZW51KS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9oaWRlTWVudShtZW51KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKGV2ZW50LnRhcmdldCkuY2xvc2VzdChyZWxhdGl2ZVRvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmRpc2FybUNsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfc2hvd1R5cGVNZW51KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dNZW51KHRoYXQuJG1lbnUsIHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IHRoYXQuc2VsZWN0ZWRNZW51SXRlbTtcbiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWQgPSB0aGF0LiRtZW51LmZpbmQoXCJbdmFsdWU9J1wiICsgdHlwZSArIFwiJ1wiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQudHJpZ2dlcihcImZvY3VzXCIpO1xuICAgICAgICAgICAgICAgIH0sIDEyMCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2luaXRNZW51KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdFRyaWdnZXIuYXR0cihcInRhYmluZGV4XCIsIC0xKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLm9uKFwibW91c2Vkb3duLnJlZC11aS10eXBlZElucHV0LWZvY3VzLWJsb2NrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoYXQuJG1lbnUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kbWVudS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gZmEtaWQtY2FyZFxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVMaXN0ID0gW1xuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcInRleHRcIiwgdmFsdWU6IFwidFwiLCB0aXRsZTogXCJWYWx1ZSBpcyBub3QgdmVyaWZpZWRcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtZm9udFwiL2k+ICcgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwibXNnLlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwibXNnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJub2RlIGlkIG9yICBicm93c2UgcGF0aCBjb21lcyBmcm9tIGluamVjdGVkIG1zZyBwYXJhbWV0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlLW9wZW4tb1wiLz4nLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBcIk5vZGVJZFwiLCB2YWx1ZTogXCJuXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLXRhZ1wiLz4xICZuYnNwOyAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiQWxpYXNlZCBOb2RlSWRcIiwgdmFsdWU6IFwibmFcIiwgaWNvbjogJzxpIGNsYXNzPVwiZmEgZmEtYm9va21hcmtcIi8+Jm5ic3A7ICcgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogXCJOb2RlSWQgd2l0aCBuYW1lc3BhY2UgVXJuXCIsIHZhbHVlOiBcIm5zdVwiLCBpY29uOiAnPGkgY2xhc3M9XCJmYSBmYS1pZC1jYXJkXCIvPiZuYnNwOyAnIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IFwiQnJvd3NlUGF0aFwiLCB2YWx1ZTogXCJiXCIsIGljb246ICc8aSBjbGFzcz1cImZhIGZhLXRhZ1wiLz48aSBjbGFzcz1cImZhIGZhLWZpZ2h0ZXItamV0XCIvPiZuYnNwOycgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiQWxpYXNlZCBCcm93c2UgUGF0aFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiYWJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICc8aSBjbGFzcz1cImZhIGZhLWJvb2ttYXJrXCIvPjxpIGNsYXNzPVwiZmEgZmEtZmlnaHRlci1qZXRcIi8+Jm5ic3A7JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBmaWd1cmVPdXRNZW5VSXRlbVZhbHVlKHRoYXQuJGlucHV0LnZhbCgpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gdHlwZUxpc3QuZmluZCgoeCkgPT4geC52YWx1ZSA9PT0gYSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0TGFiZWwuZW1wdHkoKS5hcHBlbmQoYDxzcGFuIHRpdGxlPSR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS50aXRsZSkgfHwgXCJcIn0+Jm5ic3A7ICR7KGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5pY29uKSB8fCBcIlwifTwvc3Bhbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LnNlbGVjdGVkTWVudUl0ZW0gPSBhO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRtZW51ID0gdGhpcy5fY3JlYXRlTWVudSh0eXBlTGlzdCwge30sICh2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGUgPSB0b01vZGUodik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvbiBNZW51IHNlbGVjdGVkICFcbiAgICAgICAgICAgICAgICAgICAgICAgIHR0LnZlcmlmeShtb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdHlwZUxpc3QuZmluZCgoeCkgPT4geC52YWx1ZSA9PT0gdik7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuc2VsZWN0ZWRNZW51SXRlbSA9IHY7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHNlbGVjdExhYmVsLmVtcHR5KCkuYXBwZW5kKGA8c3BhbiB0aXRsZT0keyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUudGl0bGUpIHx8IFwiXCJ9PiZuYnNwOyAkeyhlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuaWNvbikgfHwgXCJcIn08L3NwYW4+YCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kbWVudS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KTtcbiAgICAgICAgICAgICAgICB0aGF0LiRtZW51LmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyLnNob3coKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb2RlKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHJldHVybiB0b01vZGUodGhhdC5zZWxlY3RlZE1lbnVJdGVtKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRNb2RlKG1vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICBjb25zdCBzID0gZnJvbU1vZGUobW9kZSk7XG4gICAgICAgICAgICAgICAgdGhhdC5zZWxlY3RlZE1lbnVJdGVtID0gcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfY3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmNzcyhcImJvcmRlclwiLCBcIm5vbmVcIik7XG4gICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQuYWRkQ2xhc3MoXCJyZWQtdWktdHlwZWRJbnB1dFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRlbGVtZW50RGl2ID0gdGhhdC4kaW5wdXQud3JhcChcIjxkaXY+XCIpLnBhcmVudCgpLmFkZENsYXNzKFwibWFpbi13cmFwcGVyXCIpO1xuICAgICAgICAgICAgICAgIC8vICNyZWdpb24gQ29tYm8gYnJvd3NlclxuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvID0gJChcIjxkaXYvPlwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hZGRDbGFzcyhcInN0ZXJmaXZlLWNvbWJvLWJveFwiKTtcbiAgICAgICAgICAgICAgICAvLyB0aGF0LiRjb21iby5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0LWlucHV0LXdyYXBcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQucmVwbGFjZVdpdGgodGhhdC4kY29tYm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAgPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5wdXQtZ3JvdXBcIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGlucHV0R3JvdXApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJGlucHV0KTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiBhZGQgYnV0dG9uIG9uIHRoZSByaWdodCBzaWRlXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiB0b2dnbGVUcmVlQnRuXG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24gdGl0bGU9XCJvcGVuIE9QQ1VBIEFkZHJlc3NTcGFjZSBCcm93c2VyXCI+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmFmdGVyKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJlZSB3aWRnZXQgaXMgZ29pbmcgdG8gYmVjb21lIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0geWllbGQgdGhhdC5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICE9PSB0aGF0LmN1cnJlbnRQYXJlbnQgfHwgKChfYSA9IHRoYXQuY3VycmVudFBhcmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZCkgIT09IHBhcmVudE5vZGUubm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoYXQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiAmJiAoeWllbGQgcmVhY2hTZWxlY3Rpb24odGhhdCwgcGFyZW50Tm9kZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiB2ZXJpZnlCdG5cbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4gPSAkKGA8YnV0dG9uIHRpdGxlPVwidmVyaWZ5IG5vZGVJZCBvciBicm93c2VQYXRoXCI+PGkgY2xhc3M9XCJmYSBmYS1yZWZyZXNoXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmFmdGVyKHRoYXQuJHZlcmlmeUJ0bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdmVyaWZ5QnRuLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlID0gdGhhdC5tb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5KG1vZGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplSW5wdXQgPSAoaW5wdXQpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtb2RlID0gdGhhdC5tb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbkRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhLCBqc29uIH0gPSB5aWVsZCBfY2FsbENoZWNrTm9kZUlkKGNvbm5lY3Rpb25EYXRhLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24uc3RhdHVzQ29kZS5tYXRjaCgvR29vZC8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE5vZGVJZCA9IGNob29zZU5vZGVJZChqc29uLCBtb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnZhbChzZWxlY3RlZE5vZGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgLy8gY3JlYXRlIHRoZSBwcmVwZW5kZWQgYnV0dG9uXG4gICAgICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR1aVNlbGVjdCA9ICQoXCI8ZGl2PlwiKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYmVmb3JlKHRoYXQuJHVpU2VsZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlciA9ICQoJzxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiPjwvYnV0dG9uPicpLnByZXBlbmRUbyh0aGF0LiR1aVNlbGVjdCk7XG4gICAgICAgICAgICAgICAgICAgICQoJzxpIGNsYXNzPVwicmVkLXVpLXR5cGVkSW5wdXQtaWNvbiBmYSBmYS1jYXJldC1kb3duXCI+PC9pPicpLnRvZ2dsZSh0cnVlKS5hcHBlbmRUbyh0aGF0LiRzZWxlY3RUcmlnZ2VyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0VHJpZ2dlci5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fc2hvd1R5cGVNZW51KCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRzZWxlY3RUcmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAub24oXCJrZXlkb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5Q29kZSA9PT0gNDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb3duXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fc2hvd1R5cGVNZW51KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAub24oXCJmb2N1c1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiR1aVNlbGVjdC5hZGRDbGFzcyhcInJlZC11aS10eXBlZElucHV0LWZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwiYmx1clwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB2YXIgb3B0ID0gdGhhdC50eXBlTWFwW3RoYXQucHJvcGVydHlUeXBlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChvcHQuaGFzVmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiR1aVNlbGVjdC5yZW1vdmVDbGFzcyhcInJlZC11aS10eXBlZElucHV0LWZvY3VzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kc2VsZWN0TGFiZWwgPSAkKCc8c3BhbiBjbGFzcz1cInJlZC11aS10eXBlZElucHV0LXR5cGUtbGFiZWxcIj48L3NwYW4+JykuYXBwZW5kVG8odGhhdC4kc2VsZWN0VHJpZ2dlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX2luaXRNZW51KCk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIsIFwiZW50ZXIgYSBub2RlSWQgb3IgYSBicm93c2VQYXRoIFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gI3JlZ2lvbiB0ZW1wb3JhdHkgaW5mbyBwYW5lbFxuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8gPSAkKGA8ZGl2IGNsYXNzPVwic3RlcmZpdmUtaW5mby10ZXh0XCI+PC9kaXY+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgICAgICAgICAvLyAjcmVnaW9uIGRyb3AgZG93biB0cmVlXG4gICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24gPSAkKFwiPGRpdi8+XCIpLmFkZENsYXNzKFwic3RlcmZpdmUtZHJvcGRvd25cIikuaGlkZSgpLmFwcGVuZFRvKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlID0gJChgPHVsIGNsYXNzPVwic3RlcmZpdmUtdHJlZVwiPjwvdWw+YCkuYXBwZW5kVG8odGhhdC4kZHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIC8vIHRoYXQuJGRyb3Bkb3duLnNob3coKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzT25MZWZ0U2l6ZSA9ICgkbGksIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZVdpZHRoID0gMjA7IC8vIFNldCB3aWR0aCBvZiB0aGUgOjpiZWZvcmUgY29udGVudFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVIZWlnaHQgPSAyMDsgLy8gU2V0IGhlaWdodCBvZiB0aGUgOjpiZWZvcmUgY29udGVudFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50UG9zID0gJGxpLm9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnBhZ2VYID49IGVsZW1lbnRQb3MubGVmdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWCA8PSBlbGVtZW50UG9zLmxlZnQgKyBiZWZvcmVXaWR0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA+PSBlbGVtZW50UG9zLnRvcCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZS5wYWdlWSA8PSBlbGVtZW50UG9zLnRvcCArIGJlZm9yZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgdG9nZ2xlRXhwYW5zaW9uID0gKCRsaSkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2V4cGFuZExpKHRoYXQsICRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmhhc0NsYXNzKFwiZXhwYW5kZWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBpdHMgZXhwYW5kZWQvY29sbGFwc2VkIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuY2hpbGRyZW4oXCJ1bFwiKS5jaGlsZHJlbigpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJkYmxjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uTGVmdFNpemUoJGxpLCBldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuc2lvbigkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAkbGkuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gJGxpLmRhdGEoXCJyZWZlcmVuY2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmlzU2VsZWN0YWJsZSAmJiAhdGhhdC5vcHRpb25zLmlzU2VsZWN0YWJsZShyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGlucHV0ID0gYFske2Rpc3BsYXlOYW1lfV0oJHt2YWx1ZX0pYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb2RlID0gdGhhdC5tb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gXCJub2RlSWRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnNldE1vZGUobW9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVJbnB1dCh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC4kaW5wdXQudmFsKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuJGlucHV0LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbkxlZnRTaXplKCRsaSwgZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVFeHBhbnNpb24oJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RTaW5nbGUodGhhdCwgJGxpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjbGlja2luZyBvdXRzaWRlIHRoZSBwYWdlIHdpbGwgaGlkZSB0aGUgZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgaWYgKCEkKGV2ZW50LnRhcmdldCkuY2xvc2VzdCh0aGF0LiRjb21ibykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsU3Vic2NyaXB0aW9uU2VsZWN0b3IoUkVELCBub2RlKSB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgJHN1YnNjcmlwdGlvbiA9ICQoXCIjbm9kZS1pbnB1dC1zdWJzY3JpcHRpb25cIik7XG4gICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICBjb25zdCBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50ID0gUkVELm5vZGVzLm5vZGUoJGVuZHBvaW50LnZhbCgpKTtcbiAgICAgICAgICAgICRzdWJzY3JpcHRpb24uZW1wdHkoKTtcbiAgICAgICAgICAgIGlmICghZW5kcG9pbnQgfHwgIWVuZHBvaW50LnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHMgb2YgZW5kcG9pbnQuc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcy5uYW1lIHx8IHMuaWQ7XG4gICAgICAgICAgICAgICAgJChcIjxvcHRpb24vPlwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzLmlkLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBzLmlkID09PSBub2RlLnN1YnNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAudGV4dChsYWJlbClcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKCRzdWJzY3JpcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucygpO1xuICAgICAgICAvLyBoYWNrXG4gICAgICAgIC8vICRpbnB1dEFjdGlvbi5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgIC8vICAgICAkZW5kcG9pbnQub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGluc3RhbGxTdWJzY3JpcHRpb25PcHRpb25zKCk7XG4gICAgICAgIC8vICAgICB9KTtcbiAgICAgICAgLy8gfSk7XG4gICAgICAgICRzdWJzY3JpcHRpb24ub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgbm9kZS5zdWJzY3JpcHRpb24gPSAkc3Vic2NyaXB0aW9uLnZhbCgpO1xuICAgICAgICAgICAgLy8gICAgaW5zdGFsbFN1YnNjcmlwdGlvbk9wdGlvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICRlbmRwb2ludC5vbihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uT3B0aW9ucygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBlbmRwb2ludCBhdHRyaWJ1dGVzIGNvbnRhaW5pbmc6XG4gICAgICogIC0gdGhlIGVuZHBvaW50LCBzZWN1cml0eU1vZGUsIHNlY3VyaXR5UG9saWN5LFxuICAgICAqICAtIHVzZXJJZGVudGl0eVR5cGUsXG4gICAgICogIC0gY3JlZGVudGlhbHNcbiAgICAgKiAgLSBuYW1lc3BhY2VBbGlhc2VzXG4gICAgICpcbiAgICAgKiBleHRyYWN0ZWQgZnJvbSB0aGUgdWkgd2lkZ2V0ICNub2RlLWlucHV0LWVuZHBvaW50XG4gICAgICovXG4gICAgY29uc3QgZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IHJlZE5vZGUgPSBSRUQubm9kZXMubm9kZShlbmRwb2ludElkKTtcbiAgICAgICAgaWYgKCFyZWROb2RlKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgLy8gY29uc3QgY3JlZGVudGlhbHMgPSBSRUQuKGVuZHBvaW50SWQpO1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIHNhbml0aXplIGFuZCBleHRyYWN0IHRoZSBlbmRwb2ludCBhdHRyaWJ1dGVzIG9ubHkgKCBub3QgdGhlIG5vZGUtcmVkIHN0dWZmKVxuICAgICAgICBjb25zdCB7IGVuZHBvaW50LCBzZWN1cml0eU1vZGUsIHNlY3VyaXR5UG9saWN5LCB1c2VySWRlbnRpdHlUeXBlLCBjcmVkZW50aWFscywgbmFtZXNwYWNlQWxpYXNlcyB9ID0gcmVkTm9kZTtcbiAgICAgICAgY29uc3QgcmV0VmFsdWUgPSB7XG4gICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIHNlY3VyaXR5TW9kZSxcbiAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5LFxuICAgICAgICAgICAgdXNlcklkZW50aXR5VHlwZSxcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzLFxuICAgICAgICAgICAgbmFtZXNwYWNlQWxpYXNlcyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJldFZhbHVlO1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50TnIgPSBnZXRFbmRQb2ludEF0dHJpYnV0ZXMoKTtcbiAgICAgICAgaWYgKCFlbmRwb2ludE5yKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5hbWVzcGFjZUFsaWFzZXMgPSBlbmRwb2ludE5yLm5hbWVzcGFjZUFsaWFzZXM7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHsgbmFtZXNwYWNlQWxpYXNlcywgaWQ6IGVuZHBvaW50SWQgfSwgZW5kcG9pbnROcik7XG4gICAgfTtcbiAgICBjb25zdCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW5kcG9pbnROb2RlOiBnZXRFbmRwb2ludFBhcmFtZXRlcnMsXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGluc3RhbGxGZWVkYmFja1dpZGdldCA9ICgpID0+IHtcbiAgICAgICAgLy8gcmV0dXJuO1xuICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgY29uc3QgdHJheUNvbnRlbnQgPSAkKFwiLnJlZC11aS10cmF5LWJvZHlcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiaW5zdGFsbEZlZWRiYWNrV2lkZ2V0IFwiLCB0cmF5Q29udGVudC5sZW5ndGgpO1xuICAgICAgICBpZiAodHJheUNvbnRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImluc3RhbGxpbmcgaWZyYW1lXCIpO1xuICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBpZnJhbWUgZWxlbWVudFxuICAgICAgICAgICAgY29uc3QgaWZyYW1lID0gJChcIjxpZnJhbWU+PC9pZnJhbWU+XCIsIHtcbiAgICAgICAgICAgICAgICBzcmM6IFwiL29wY3VhLWZvci1ub2RlLXJlZC9zdXBwb3J0LWZyYW1lLmh0bWxcIixcbiAgICAgICAgICAgICAgICBzY3JvbGxpbmc6IFwibm9cIixcbiAgICAgICAgICAgICAgICBzdHlsZTogXCJiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O292ZXJmbG93OmhpZGRlbjtib3JkZXI6M3B4XCIsXG4gICAgICAgICAgICAgICAgYWxsb3d0cmFuc3BhcmVuY3k6IFwidHJ1ZVwiLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjE4MHB4XCIsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjMwcHhcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBpZnJhbWUgdG8gdGhlIGZlZWRiYWNrIGVsZW1lbnRcbiAgICAgICAgICAgIHRyYXlDb250ZW50LmFwcGVuZChpZnJhbWUpO1xuICAgICAgICAgICAgLy8gUG9zaXRpb24gdGhlIGZlZWRiYWNrIGVsZW1lbnQgYXQgdGhlIGJvdHRvbSByaWdodCBvZiB0aGUgdHJheSBjb250ZW50XG4gICAgICAgICAgICBpZnJhbWUuY3NzKHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBcIjIwcHhcIixcbiAgICAgICAgICAgICAgICBib3R0b206IFwiMTZweFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgUkVELm5vZGVzLnJlZ2lzdGVyVHlwZShcIk9wY1VhLUNsaWVudDItTW9uaXRvclwiLCB7XG4gICAgICAgIGNhdGVnb3J5OiBcIm9wY3VhXCIsXG4gICAgICAgIGNvbG9yOiBcIiNDMERFRURcIixcbiAgICAgICAgYWxpZ246IFwicmlnaHRcIixcbiAgICAgICAgaWNvbjogXCIuLi8uLi9pY29ucy9vcGN1YW5vZGVMb2dvLnBuZ1wiLFxuICAgICAgICBwYWxldHRlTGFiZWw6IFwibW9uaXRvciB2YXJpYWJsZVwiLFxuICAgICAgICBkZWZhdWx0czoge1xuICAgICAgICAgICAgaW5wdXRzOiB7IHZhbHVlOiAxIH0sXG4gICAgICAgICAgICBvdXRwdXQ6IHsgdmFsdWU6IDIgfSxcbiAgICAgICAgICAgIC8vIENvbW1vblxuICAgICAgICAgICAgbmFtZTogeyB2YWx1ZTogXCJcIiB9LFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHsgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiB0cnVlLCB0eXBlOiBcIk9wY1VhLUVuZHBvaW50MlwiIH0sXG4gICAgICAgICAgICAvLyBmb3IgYWN0aW9uIG1vbml0b3JcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbjoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRlOiAodmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWwgPT09IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhcnRJbW1lZGlhdGVseTogeyB2YWx1ZTogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIC8vIHdlIHVzZSBhIGRpZmZlcmVudCB3aWRnZXQgZm9yIGVkaXRpbmcgdGhlIG5vZGVJZCwgYmVjYXVzZSB0aGUgYmVoYXZpb3JcbiAgICAgICAgICAgIC8vIGlzIHNwZWNpZmljIHRvIG1vbml0b3IsIGhvd2V2ZXIgcHJvcGVydHkgd2lsbCBiZSBzdG9yZWQgaW4gbm9kZUlkXG4gICAgICAgICAgICBub2RlSWQ6IHsgdmFsdWU6IFwiL1NlcnZlci9TZXJ2ZXJTdGF0dXMvQ3VycmVudFRpbWVcIiwgcmVxdWlyZWQ6IGZhbHNlLCB2YWxpZGF0ZTogKCkgPT4gdHJ1ZSB9LFxuICAgICAgICAgICAgc2FtcGxpbmdJbnRlcnZhbDogeyB2YWx1ZTogMTAwMCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIGRpc2NhcmRPbGRlc3Q6IHsgdmFsdWU6IHRydWUsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBxdWV1ZVNpemU6IHsgdmFsdWU6IDEwLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICAvLyBpbnB1dHM6LFxuICAgICAgICBvdXRwdXRzOiAxLCAvL3h4XG4gICAgICAgIC8vIDIgb3V0cHV0LCBzZWNvbmQgZm9yIHJhdyBub2RlLW9wY3VhIGRpYWdub3N0aWNzIG9yIG1vcmUgY29tcGxldGUgbWVzc2FnZVxuICAgICAgICBsYWJlbCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgfHwgXCJPUENVQSBDbGllbnQgTW9uaXRvciBcIjtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgPyBcIm5vZGVfbGFiZWxfaXRhbGljXCIgOiBcIlwiO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRwcmVwYXJlKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXM7XG4gICAgICAgICAgICBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQoKTtcbiAgICAgICAgICAgIGluc3RhbGxGZWVkYmFja1dpZGdldCgpO1xuICAgICAgICAgICAgY29uc3QgaXNJbW1lZGlhdGUgPSBub2RlLnN0YXJ0SW1tZWRpYXRlbHk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IGlzSW1tZWRpYXRlID8gMCA6IDE7XG4gICAgICAgICAgICBpbnN0YWxsU3Vic2NyaXB0aW9uU2VsZWN0b3IoUkVELCB0aGlzKTtcbiAgICAgICAgICAgICQoXCJub2RlLWlucHV0LXN0YXJ0SW1tZWRpYXRlbHlcIikub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS5wcm9wKFwiY2hlY2tlZFwiKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtaW5wdXRzXCIpLnZhbCgwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1pbnB1dHNcIikudmFsKDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBBY3Rpb24gTW9uaXRvclxuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIGNvbnN0ICRub2RlSWQgPSAkKFwiI25vZGUtaW5wdXQtbm9kZUlkXCIpO1xuICAgICAgICAgICAgJG5vZGVJZC5ub2RlQnJvd3NlcihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIoKSksIHsgZmlsdGVyKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiVmFyaWFibGVcIiB8fCBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiT2JqZWN0XCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpc1NlbGVjdGFibGUobm9kZURlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJWYXJpYWJsZVwiO1xuICAgICAgICAgICAgICAgIH0gfSkpO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRJbW1lZGlhdGVseSA9ICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnByb3AoXCJjaGVja2VkXCIpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0SW1tZWRpYXRlbHkpIHtcbiAgICAgICAgICAgICAgICAkKFwiI25vZGUtaW5wdXQtc3RhcnRJbW1lZGlhdGVseVwiKS52YWwoc3RhcnRJbW1lZGlhdGVseSA/IDAgOiAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cyA9IHN0YXJ0SW1tZWRpYXRlbHkgPyAwIDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICQoXCIjbm9kZS1pbnB1dC1zdGFydEltbWVkaWF0ZWx5XCIpLnZhbCgxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cyA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbn0pKCk7Il19
9
9
  </script>
10
10
  <script type="text/x-red" data-template-name="OpcUa-Client2-Monitor">
11
11
  <style>
@@ -20,7 +20,7 @@ function _0x5ced(){const _0x305615=['push','offset','status','checked','</span><
20
20
  }
21
21
 
22
22
  .my-checkbox-mark {
23
- margin-left: 20px;
23
+ margin-left: 0px;
24
24
  font-family: "FontAwesome";
25
25
  font-size: 24px;
26
26
  }
@@ -40,6 +40,7 @@ function _0x5ced(){const _0x305615=['push','offset','status','checked','</span><
40
40
  <label for="node-input-name"><i class="icon-tasks"></i>Name</label>
41
41
  <input type="text" id="node-input-name" placeholder="enter the friendly name of the node" />
42
42
  </div>
43
+
43
44
  <!-- endpoint -->
44
45
  <div class="form-row">
45
46
  <label for="node-input-endpoint"><i class="icon-tasks"></i> Endpoint</label>
@@ -51,9 +52,10 @@ function _0x5ced(){const _0x305615=['push','offset','status','checked','</span><
51
52
  <select type="text" id="node-input-subscription" style="width: 250px"></select>
52
53
  </div>
53
54
  <!-- Start Immediately -->
54
- <div class="form-row">
55
- <label class="my-checkbox-label" for="node-input-startImmediately"><i class="fa fa-play"></i>Start Immediately</label>
56
- <label>
55
+ <div class="form-row" style="display: flex; align-items: center; width: 250px">
56
+ <i class="fa fa-play"></i>
57
+ &nbsp;<span>start immediately</span>
58
+ <label for="node-input-startImmediately" style="margin-left: auto; display: flex; align-items: center">
57
59
  <input type="checkbox" checked class="my-checkbox-input" id="node-input-startImmediately" />
58
60
  <span class="my-checkbox-mark"></span>
59
61
  </label>
@@ -61,13 +63,16 @@ function _0x5ced(){const _0x305615=['push','offset','status','checked','</span><
61
63
 
62
64
  <!-- node to monitor -->
63
65
  <div class="form-row">
64
- <label for="node-input-nodeId"><i class="fa fa-id-card"></i>&nbsp;NodeId</label>
66
+ <label for="node-input-nodeId" style="width: 100%"><i class="fa fa-id-card"></i><span>&nbsp;NodeId</span></label>
65
67
  <input type="text" id="node-input-nodeId" placeholder="ns=2;s=Variable1 or empty" />
66
68
  </div>
67
69
 
68
70
  <!-- samplingInterval -->
69
71
  <div class="form-row">
70
- <label for="node-input-samplingInterval"><i class="fa fa-hourglass"></i>&nbsp;Sampling Interval</label>
72
+ <label for="node-input-samplingInterval" style="width: 150px">
73
+ <i class="fa fa-hourglass"></i>
74
+ <span>Sampling Interval</span>
75
+ </label>
71
76
  <input
72
77
  type="number"
73
78
  step="1"
@@ -75,77 +80,233 @@ function _0x5ced(){const _0x305615=['push','offset','status','checked','</span><
75
80
  max="65535"
76
81
  id="node-input-samplingInterval"
77
82
  placeholder="number"
78
- style="max-width: 120px"
83
+ style="max-width: 80px"
79
84
  />
80
- <select id="node-input-timeUnit" style="max-width: 160px">
81
- <option value="ms">millisecond(s)</option>
82
- <option value="s">second(s)</option>
83
- <option value="m">minute(s)</option>
84
- <option value="h">hour(s)</option>
85
+ <select id="node-input-timeUnit" style="max-width: 120px">
86
+ <option value="ms"><span>millisecond(s)</span></option>
87
+ <option value="s"><span>second(s)</span></option>
88
+ <option value="m"><span>minute(s)</span></option>
89
+ <option value="h"><span>hour(s)</span></option>
85
90
  </select>
86
91
  </div>
87
92
 
93
+ <!-- queueSize -->
94
+ <div class="form-row">
95
+ <label for="node-input-requestedQueueSize" style="width: 150px">
96
+ <i class="fa fa-tag"></i>
97
+ <span>queue size</span>
98
+ </label>
99
+ <input
100
+ type="number"
101
+ style="width: 90px"
102
+ step="1"
103
+ min="0"
104
+ max="65535"
105
+ id="node-input-requestedQueueSize"
106
+ placeholder="queue size"
107
+ />
108
+ </div>
109
+ <!-- queueSize AutoButton -->
110
+
111
+ <!-- discard oldest -->
112
+ <div class="form-row" style="display: flex; align-items: center; width: 250px">
113
+ <i class="fa fa-play"></i>
114
+ &nbsp;<span>discard oldest</span>
115
+ <label for="node-input-discardOldest" style="margin-left: auto; display: flex; align-items: center">
116
+ <input type="checkbox" checked class="my-checkbox-input" id="node-input-discardOldest" />
117
+ <span class="my-checkbox-mark"></span>
118
+ </label>
119
+ </div>
120
+
88
121
  <!-- deadBandType -->
89
122
  <div class="form-row">
90
- <label for="node-input-deadbandlabel"><i class="fa fa-check-square" /> &nbsp; Dead-band Type</label>
123
+ <label for="node-input-deadbandlabel" style="width: 150px">
124
+ <i class="fa fa-check-square"></i>
125
+ <span>Deadband type</span>
126
+ </label>
91
127
  <input
92
128
  type="number"
93
- id="node-input-deadbandvalue"
129
+ id="node-input-deadbandValue"
94
130
  step="0.01"
95
131
  min="0"
96
132
  max="100000"
97
133
  placeholder="number"
98
- style="max-width: 120px"
134
+ style="max-width: 80px"
99
135
  />
100
- <select id="node-input-deadbandtype" style="max-width: 160px">
136
+
137
+ <select id="node-input-deadbandType" style="max-width: 120px">
101
138
  <option value="">Not use</option>
102
139
  <option value="a">Absolute</option>
103
140
  <option value="p">Percent</option>
104
141
  </select>
105
142
  </div>
106
143
 
107
- <!-- queueSize -->
108
144
  <div class="form-row">
109
- <label for="node-input-queueSize"><i class="fa fa-tag"></i>&nbsp;Queue Size</label>
110
- <input type="number" step="1" min="0" max="65535" id="node-input-requestedQueueSize" placeholder="queue size" />
145
+ <!-- DataChangeTrigger enum
146
+ 1 is is the default setting if no filter is set.
147
+ !-->
148
+ <label for="node-input-trigger">trigger</label>
149
+ <select type="text" id="node-input-trigger" style="width: 250px">
150
+ <option value="0">Status</option>
151
+ <option selected value="1">StatusValue</option>
152
+ <option value="2">StatusValueTimestamp</option>
153
+ </select>
111
154
  </div>
112
- <!-- queueSize AutoButton -->
113
- <!-- add a jquery button -->
114
155
 
115
- <!-- discard oldest -->
116
156
  <div class="form-row">
117
- <label class="my-checkbox-label" for="node-input-discardOldest"><i class="fa fa-times"></i>&nbsp;discard oldest</label>
118
- <label>
119
- <input type="checkbox" checked class="my-checkbox-input" id="node-input-discardOldest" />
120
- <span class="my-checkbox-mark"></span>
121
- </label>
157
+ <label for="node-input-outputType">Output type</label>
158
+ <select type="text" id="node-input-outputType" style="width: 250px">
159
+ <option selected value="Value">Value</option>
160
+ <option value="DataValue">DataValue</option>
161
+ <option value="Variant">Variant</option>
162
+ <option value="DataValueReversible">DataValueReversible</option>
163
+ <option value="StatusCode">StatusCode</option>
164
+ </select>
122
165
  </div>
123
166
 
124
167
  </script>
125
168
 
126
169
  <script type="text/markdown" data-help-name="OpcUa-Client2-Monitor">
127
- ## monitor OPCUA Variables
170
+ ## Monitor OPC UA Variables
171
+
172
+ The monitored items are the nodes that are monitored by the client.
173
+
174
+ The client will send a notification when the value of the node changes.
175
+
176
+ You can either specify a nodeId to monitor directly on this node, or inject or more node-id.
177
+
178
+ The output message will contain the current value of the monitored nodes.
128
179
 
129
- Inject the Topic only once on Subscribe or Event for subscription and you got the changing value on every Interval.
180
+ This node is configured once and then can be forgotten, it will send messages whenever the conditions are met.
130
181
 
131
- you can either specify a nodeId to monitor directly on this node, or inject or more node-id.
182
+ ### Properties
132
183
 
133
- If you want to inject the nodeId or the nodeIds, you have to unset the "start immediately" checkbox. The subscription will start when the first message arrives, with the nodeId or nodeIds in the payload.
184
+ - **Name**: The name of the node
185
+ - **Endpoint**: The predefined endpoint of the OPC UA server to connect to.
186
+ - **Subscription** : The subscription to use for monitoring the nodes, Subscriptions are defined in the "Endpoint" node.
134
187
 
135
- Every inject subscribes to one or more new monitored items.
188
+ The frequence at which the server will send a batch of notification is handled by the subscription is specified in this subscription.
189
+
190
+ A subscription can typically hold a large number of monitored items.
191
+
192
+ This node manages a single or a subset of the monitored items handled by the selected subscription.
193
+
194
+ - **Start Immediately**: indicates if the subscription should be launch immediately when the flow starts:
195
+
196
+ If checked, the subscription will start immediately, by automatically monitoring the nodes specified in NodeId field.
197
+
198
+ If unchecked, the subscription will start when the first message arrives, with the nodeId property in the payload (see belows) or with the nodeId property specified in the node configuration.
199
+
200
+ If you want to monitor an array of UAVariable or a JSON structure, you need to unset the `start immediatly' node, clear the NodeId field and inject the NodeId you want to monitor using one of the technics decribed below.
201
+
202
+ - **Sample Interval**: The interval in milliseconds to use for monitoring the nodes.
203
+
204
+ This is the interval at which the client will request the server to sample variable changes. (default: 1000 ms)
205
+
206
+ Sampling is done by the OPC UA Server itself on behalf the cliient.
207
+
208
+ The OPC UA server will only submit data change notificiation if the UAVariable dataValue has actually changed, as [per OPC UA specificiations](https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.1).
209
+
210
+ - **Queue Size**: The maximum number of notifications that the client will store in the queue. If the queue is full, the oldest notification will be removed. (default: 1000) [see OPC UA Specification](https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.1.5)
211
+ - **Discard Oldest**: If the queue is full, the oldest notification will be removed. If unchecked, the newest notification will be removed. (default: true)
212
+ - **Deadband**: The deadband value to use for monitoring the nodes.
213
+
214
+ - **Not Use** : No dead band filter
215
+ - **Absolute** : The deadband is an absolute value. The server will send a notification if the value changes by more than the deadband value.
216
+ - **Percent** : The deadband is a percentage value. The server will send a notification if the value changes by more than the deadband percentage value.
217
+
218
+ The monitored Value must have a EURange property so that the actual deadband value can be calculated.
219
+
220
+ ### monitoring a single OPC UA node specified in the node configuration
221
+
222
+ simply specify the nodeId of the node you want to monitor in the nodeId field.
223
+
224
+ ### monitoring a single OPC UA node injected in the node
225
+
226
+ If you want to inject the nodeId, you have to unset the "start immediately" checkbox. The subscription will start when the first message arrives, with the nodeId property in the payload.
227
+
228
+ ### monitoring an array of OPC UA nodes
229
+
230
+ ### monitoring a arbitrary structure of OPC UA nodes
231
+
232
+ you can also inject an object with a structure of nodeIds. The output message will contain the same structure with the current values.
233
+
234
+ for instances:
235
+
236
+ ```json
237
+ {
238
+ "nodeId1": "ns=1;s=MyVariable1",
239
+ "nodeId2": "ns=1;s=MyVariable2",
240
+ "sub": {
241
+ "nodeId3": "ns=1;s=MyVariable3"
242
+ }
243
+ }
244
+ ```
245
+
246
+ will be automatically monitoring 3 nodes and produce the following ouput when either node value changes:
247
+
248
+ ```json
249
+ {
250
+ "nodeId1": 123,
251
+ "nodeId2": 456,
252
+ "sub": {
253
+ "nodeId3": 789
254
+ }
255
+ }
256
+ ```
257
+
258
+ ```json
259
+ {
260
+ "nodeId1": {
261
+ "value": 123,
262
+ "statusCode": "Good",
263
+ "sourceTimestamp": "2020-01-01T00:00:00.000Z"
264
+ },
265
+ "nodeId2": {
266
+ "value": 456,
267
+ "statusCode": "Good",
268
+ "sourceTimestamp": "2020-01-01T00:00:00.000Z"
269
+ },
270
+ "sub": {
271
+ "nodeId3": {
272
+ "value": 789,
273
+ "statusCode": "Good",
274
+ "sourceTimestamp": "2020-01-01T00:00:00.000Z"
275
+ }
276
+ }
277
+ }
278
+ ```
279
+
280
+ Note: A JSON structure with nodeId or browse path that represent a complex OPC UA UA can easily be created with the Explore. (see OpcUa-Explore node and monitoring a OPC UA subtree below)
136
281
 
137
282
  Interval is setting for Client `requestedPublishingInterval` (default: 1000 ms).
138
283
 
139
284
  Input `msg.payload.samplingInterval` can bring a specific sampling Interval for monitored Items/Events in the subscription.
140
285
 
141
- ### monitoring a opcua subtree
286
+ ### monitoring a OPC UA subtree
142
287
 
143
- If you want to monitor a subtree of a opcua server,
144
- you can conveniently redirect the output of a "OpcUa Explore Node" (with outputType=NodeID) node to the input of this node.
288
+ If you want to monitor a subtree of a OPC UA server, you can conveniently redirect the output of a "OpcUa Explore Node" (with outputType=NodeID) node to the input of this node.
145
289
 
146
290
  As a result, all nodes of the explored subtree will be monitored. and the payload of the output message of this node will contain the exact structure of the subtree with the current values.
147
291
 
148
292
  A new message is sent when the value of one of the nodes changes.
149
293
 
294
+ ## Tips & Notes
295
+
296
+ - A OPC UA Monitiored Item only notify change if a change has occured.
297
+ - You will always received a initial change notificiation when the monitored item is originally created.
298
+
299
+ ### msg properties
300
+
301
+ - `msg.outputType`: `undefined | "Value" | "DataValue"`
302
+
303
+ - `msg.samplingInterval`: sampling interval in miliseconds or 0 to use minimumSampling interval of the corresponding monitored variable.
304
+ When specified, it will override the node configuration for the sampling interval.
305
+ - `msg.deadbandType`: `undefined | "None" | "Absolute" | "Percent"`
306
+ When specified, it will override the node configuration for the deadband type.
307
+ - `msg.deadbandValue`: deadband value to use for monitoring the nodes.
308
+ - `msg.queueSize`: `<positive number>`The maximum number of notifications that the client will store in the queue. If the queue is full, the oldest notification will be removed. (default: 1000) [see OPC UA Specification](https://reference.opcfoundation.org/Core/Part4/v105/docs/ (default: 1)
309
+ - `msg.discardOldest`: `true|false` If the queue is full, the oldest notification will be removed. If unchecked, the newest notification will be removed. (default: false)
310
+
150
311
  </script>
151
312
  //# sourceMappingURL=OpcUa-Client2-Monitor.html.map