@opcua/for-node-red 3.7.1 → 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 -1
  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(_0x3488ef,_0x27b2b6){const _0x50ca17=_0x31ec,_0x3c0cd1=_0x3488ef();while(!![]){try{const _0x574429=parseInt(_0x50ca17(0xf0))/0x1+parseInt(_0x50ca17(0x96))/0x2+parseInt(_0x50ca17(0xe2))/0x3+-parseInt(_0x50ca17(0x131))/0x4*(parseInt(_0x50ca17(0xec))/0x5)+parseInt(_0x50ca17(0x15e))/0x6+parseInt(_0x50ca17(0x10f))/0x7+parseInt(_0x50ca17(0x172))/0x8*(-parseInt(_0x50ca17(0xc9))/0x9);if(_0x574429===_0x27b2b6)break;else _0x3c0cd1['push'](_0x3c0cd1['shift']());}catch(_0x48954b){_0x3c0cd1['push'](_0x3c0cd1['shift']());}}}(_0x14d6,0xafbae),(function(){'use strict';const _0x3ee72a=_0x31ec;function _0x18b58d(_0x483d16,_0x3e3b15,_0x2e2c04,_0x5f10af){function _0x47d7e1(_0x4d619b){return _0x4d619b instanceof _0x2e2c04?_0x4d619b:new _0x2e2c04(function(_0x511d72){_0x511d72(_0x4d619b);});}return new(_0x2e2c04||(_0x2e2c04=Promise))(function(_0x1d993c,_0x81a7d4){const _0x5df1a0=_0x31ec;function _0x41075f(_0x366530){const _0x5d58c6=_0x31ec;try{_0x290910(_0x5f10af[_0x5d58c6(0x136)](_0x366530));}catch(_0x32390f){_0x81a7d4(_0x32390f);}}function _0x580f5f(_0x5d8efa){try{_0x290910(_0x5f10af['throw'](_0x5d8efa));}catch(_0x50425a){_0x81a7d4(_0x50425a);}}function _0x290910(_0x3a6fcd){const _0x5a4ddb=_0x31ec;_0x3a6fcd[_0x5a4ddb(0x192)]?_0x1d993c(_0x3a6fcd[_0x5a4ddb(0x106)]):_0x47d7e1(_0x3a6fcd['value'])[_0x5a4ddb(0xac)](_0x41075f,_0x580f5f);}_0x290910((_0x5f10af=_0x5f10af[_0x5df1a0(0x1aa)](_0x483d16,_0x3e3b15||[]))['next']());});}typeof SuppressedError===_0x3ee72a(0xa9)?SuppressedError:function(_0x4dbaec,_0x79e594,_0x2d6d34){const _0x51fab1=_0x3ee72a;var _0xfeb6c1=new Error(_0x2d6d34);return _0xfeb6c1['name']='SuppressedError',_0xfeb6c1[_0x51fab1(0xe8)]=_0x4dbaec,_0xfeb6c1[_0x51fab1(0xc1)]=_0x79e594,_0xfeb6c1;};const _0x24879c='ns=0;i=35',_0x25a510=_0x3ee72a(0x10e),_0xf05c64='ns=0;i=47',_0xaf65e9='ns=0;i=46',_0x34c5bb=_0x3ee72a(0xf5),_0x1e0add='ns=0;i=45',_0x3d0bf4=_0x3ee72a(0x18b);var _0x5bd57d;(function(_0x2abba7){const _0x4e3eaf=_0x3ee72a;_0x2abba7[_0x2abba7[_0x4e3eaf(0x191)]=0x0]=_0x4e3eaf(0x191),_0x2abba7[_0x2abba7[_0x4e3eaf(0x8a)]=0x1]='Inverse',_0x2abba7[_0x2abba7[_0x4e3eaf(0x167)]=0x2]=_0x4e3eaf(0x167),_0x2abba7[_0x2abba7[_0x4e3eaf(0x173)]=0x3]='Invalid';}(_0x5bd57d||(_0x5bd57d={})));var _0x5a1637;(function(_0x3f1997){const _0x19aa7e=_0x3ee72a;_0x3f1997[_0x3f1997[_0x19aa7e(0x185)]=0x0]=_0x19aa7e(0x185),_0x3f1997[_0x3f1997[_0x19aa7e(0x16d)]=0x1]=_0x19aa7e(0x16d),_0x3f1997[_0x3f1997[_0x19aa7e(0x14b)]=0x2]=_0x19aa7e(0x14b),_0x3f1997[_0x3f1997[_0x19aa7e(0xb8)]=0x4]=_0x19aa7e(0xb8),_0x3f1997[_0x3f1997[_0x19aa7e(0x104)]=0x8]=_0x19aa7e(0x104),_0x3f1997[_0x3f1997[_0x19aa7e(0xca)]=0x10]=_0x19aa7e(0xca),_0x3f1997[_0x3f1997[_0x19aa7e(0x8c)]=0x20]='ReferenceType',_0x3f1997[_0x3f1997['DataType']=0x40]='DataType',_0x3f1997[_0x3f1997[_0x19aa7e(0xa6)]=0x80]='View';}(_0x5a1637||(_0x5a1637={})));var _0x45bcaa;(function(_0x4f72b0){const _0x50082c=_0x3ee72a;_0x4f72b0[_0x4f72b0[_0x50082c(0x16d)]=0x1]=_0x50082c(0x16d),_0x4f72b0[_0x4f72b0[_0x50082c(0x14b)]=0x2]=_0x50082c(0x14b),_0x4f72b0[_0x4f72b0['Method']=0x4]=_0x50082c(0xb8),_0x4f72b0[_0x4f72b0['ObjectType']=0x8]='ObjectType',_0x4f72b0[_0x4f72b0['VariableType']=0x10]='VariableType',_0x4f72b0[_0x4f72b0['ReferenceType']=0x20]='ReferenceType',_0x4f72b0[_0x4f72b0[_0x50082c(0xe9)]=0x40]=_0x50082c(0xe9),_0x4f72b0[_0x4f72b0[_0x50082c(0xa6)]=0x80]=_0x50082c(0xa6);}(_0x45bcaa||(_0x45bcaa={})));var _0x1a7e52;(function(_0x550773){const _0x4e7858=_0x3ee72a;_0x550773[_0x550773[_0x4e7858(0x8c)]=0x1]=_0x4e7858(0x8c),_0x550773[_0x550773[_0x4e7858(0x15d)]=0x2]=_0x4e7858(0x15d),_0x550773[_0x550773[_0x4e7858(0x153)]=0x4]='NodeClass',_0x550773[_0x550773[_0x4e7858(0x154)]=0x8]=_0x4e7858(0x154),_0x550773[_0x550773[_0x4e7858(0x127)]=0x10]=_0x4e7858(0x127),_0x550773[_0x550773['TypeDefinition']=0x20]=_0x4e7858(0xa8);}(_0x1a7e52||(_0x1a7e52={})));function _0x23f4af(_0x1cc171){const _0x509d5e=_0x3ee72a;switch(_0x1cc171){case _0x509d5e(0xb4):return _0x24879c;case _0x509d5e(0x1ab):return _0xaf65e9;case _0x509d5e(0x19b):return _0xf05c64;case _0x509d5e(0x110):return _0x34c5bb;case'HasSubtype':return _0x1e0add;case _0x509d5e(0x149):return _0x3d0bf4;}}const _0x2a7357=_0x4224e3=>{const _0x3d7559=_0x3ee72a;switch(_0x4224e3[_0x3d7559(0xd9)]){case'Object':if(_0x4224e3[_0x3d7559(0xe1)]===_0x24879c);if(_0x4224e3[_0x3d7559(0x9a)]===_0x25a510||_0x4224e3[_0x3d7559(0xe1)]===_0x3d7559(0x188))return{'icon':_0x3d7559(0xd8),'color':'rgba(61,\x2060,\x204,\x200.525)'};return{'icon':_0x3d7559(0x161),'color':_0x3d7559(0x12e)};case _0x3d7559(0x14b):if(_0x4224e3['referenceTypeId']===_0xf05c64)return{'icon':_0x3d7559(0x13e),'color':_0x3d7559(0x138)};else return _0x4224e3[_0x3d7559(0xe1)]===_0xaf65e9?{'icon':_0x3d7559(0x13e),'color':_0x3d7559(0x126)}:{'icon':'fa-list-alt','color':_0x3d7559(0x112)};case _0x3d7559(0xb8):return{'icon':'fa-cog','color':_0x3d7559(0xc6)};case _0x3d7559(0x104):return{'icon':_0x3d7559(0x161),'color':'DarkOrange'};case'VariableType':return{'icon':_0x3d7559(0x162),'color':_0x3d7559(0x132)};case _0x3d7559(0xe9):return{'icon':'fa-text-width','color':'CadetBlue'};}return{'icon':_0x3d7559(0x13f),'color':_0x3d7559(0xcb)};},_0x101e44=(_0x1af631,_0x338856,_0x18af84)=>_0x18b58d(void 0x0,[_0x1af631,_0x338856,_0x18af84],void 0x0,function*({endpointNode:_0x2a4870,endpoint:_0x24113f,baseUrl:_0x3841bf},_0x4c1e2a,_0x4e750b){const _0x3c6477=_0x3ee72a,_0x215926=_0x3841bf+_0x3c6477(0xed),_0x422956=_0x215926+_0x3c6477(0x128),_0x81a469=Object[_0x3c6477(0x114)](Object[_0x3c6477(0x114)]({},_0x4e750b),{'nodeId':_0x4c1e2a,'resultMask':0x3f}),_0x9af9d2=yield fetch(_0x422956,{'method':_0x3c6477(0xe0),'body':JSON[_0x3c6477(0x11e)]({'endpointNode':_0x2a4870,'endpoint':_0x24113f,'browseDescription':_0x81a469}),'headers':{'Content-Type':_0x3c6477(0x9c)}});if(_0x9af9d2[_0x3c6477(0x10c)]!==0xc8)return console[_0x3c6477(0x12c)](_0x3c6477(0x100),_0x9af9d2[_0x3c6477(0x10c)],_0x9af9d2[_0x3c6477(0x98)]),{'references':[]};const _0x4bb1c6=yield _0x9af9d2[_0x3c6477(0x8e)](),_0x304781=_0x4bb1c6['browseResult'][_0x3c6477(0x158)]||[];return{'references':_0x304781};}),_0x12ca9c={'referenceTypeId':_0x23f4af(_0x3ee72a(0x110)),'includeSubtypes':!![],'browseDirection':_0x5bd57d[_0x3ee72a(0x191)],'nodeClassMask':_0x5a1637[_0x3ee72a(0x14b)]|_0x5a1637[_0x3ee72a(0x16d)]|_0x5a1637[_0x3ee72a(0xb8)],'resultMask':0x3f},_0x27a760={'referenceTypeId':_0x23f4af(_0x3ee72a(0xb4)),'includeSubtypes':!![],'browseDirection':_0x5bd57d[_0x3ee72a(0x191)],'nodeClassMask':_0x5a1637[_0x3ee72a(0x14b)]|_0x5a1637[_0x3ee72a(0x16d)]|_0x5a1637[_0x3ee72a(0xb8)],'resultMask':0x3f},_0x1d8ef1=(_0xd5879b,_0x5f2623)=>_0x18b58d(void 0x0,[_0xd5879b,_0x5f2623],void 0x0,function*({endpointNode:_0x5d4664,endpoint:_0x757a65,baseUrl:_0x48adde},{nodeId:_0x119d7e,rootNodeId:_0x2b9e85,isType:_0x5e1b5b}){const _0x55cd05=_0x3ee72a,_0x41a1c1=_0x48adde+_0x55cd05(0xed),_0x434dc7=_0x41a1c1+_0x55cd05(0xc0),_0x332df4=yield fetch(_0x434dc7,{'method':_0x55cd05(0xe0),'body':JSON['stringify']({'endpointNode':_0x5d4664,'endpoint':_0x757a65,'nodeId':_0x119d7e,'rootNodeId':_0x2b9e85,'isType':_0x5e1b5b}),'headers':{'Content-Type':_0x55cd05(0x9c)}});if(_0x332df4[_0x55cd05(0x10c)]!==0xc8)return null;const _0x187602=yield _0x332df4['json']();return _0x187602[_0x55cd05(0x1a4)];}),_0x2178d0=(_0x2952bb,_0x5e2c78)=>{const _0x137988=_0x3ee72a;if(_0x2952bb[_0x137988(0x91)]!==_0x137988(0xda))return _0x2952bb[_0x137988(0x160)];switch(_0x5e2c78){case _0x137988(0x1a4):return _0x2952bb[_0x137988(0x93)];case'aliasedBrowsePath':return _0x2952bb['bp_aliased']||_0x2952bb[_0x137988(0x93)];case'aliasedNodeId':return _0x2952bb['nodeId_aliased']||_0x2952bb[_0x137988(0x118)];case _0x137988(0xa5):return _0x2952bb['nodeId_nsu'];default:case _0x137988(0x1a6):return _0x2952bb['nodeId'];}},_0x39792d=_0x1c33bd=>{const _0x15d179=_0x3ee72a;if(_0x1c33bd[_0x15d179(0x91)]!==_0x15d179(0xda))return _0x15d179(0xae)+_0x1c33bd[_0x15d179(0x91)];else{let _0x1720c8=[];return _0x1720c8[_0x15d179(0x11c)]('nodeId:\x20'+_0x1c33bd[_0x15d179(0x1a6)]),_0x1720c8[_0x15d179(0x11c)](_0x15d179(0x19c)+_0x1c33bd[_0x15d179(0x93)]),_0x1720c8[_0x15d179(0x11c)](_0x15d179(0x1a0)+_0x5a1637[_0x1c33bd[_0x15d179(0xd9)]]),_0x1c33bd[_0x15d179(0x118)]&&_0x1720c8[_0x15d179(0x11c)](_0x15d179(0x12b)+_0x1c33bd['nodeId_nsu']),_0x1c33bd[_0x15d179(0x101)]&&_0x1720c8[_0x15d179(0x11c)](_0x15d179(0xce)+_0x1c33bd[_0x15d179(0x101)]),_0x1c33bd['bp_indexed']&&_0x1720c8[_0x15d179(0x11c)]('aliased\x20browsePath:\x20'+_0x1c33bd['bp_aliased']),_0x1720c8[_0x15d179(0xc5)]('\x0a');}};function _0x15d98a(_0x5b33c6){const _0x7593a5=_0x3ee72a;if(_0x5b33c6[_0x7593a5(0xd1)](/^nsu=/))return _0x7593a5(0xa5);if(_0x5b33c6[_0x7593a5(0xd1)](/^(ns=.*;)?(i|b|s|g)=/))return _0x7593a5(0x1a6);if(_0x5b33c6[_0x7593a5(0xd1)](/^nsa=/))return _0x7593a5(0x92);if(_0x5b33c6[_0x7593a5(0xd1)](/^(\/|\.)[0-9]+:/))return _0x7593a5(0x1a4);if(_0x5b33c6[_0x7593a5(0xd1)](/^(\/|\.).*:/))return _0x7593a5(0x1a4);}function _0x37d46e(_0x3ad4e1){const _0x37017f=_0x3ee72a,_0x167df8=_0x15d98a(_0x3ad4e1);switch(_0x167df8){case'nodeId':return'n';case _0x37017f(0x92):return'na';case _0x37017f(0xa5):return _0x37017f(0x11d);case _0x37017f(0x1a4):return'b';case _0x37017f(0x140):return'ab';default:return't';}}function _0x9d7aea(_0x442576){const _0x43ba9a=_0x3ee72a;let _0x51696c;switch(_0x442576){case'n':_0x51696c=_0x43ba9a(0x1a6);break;case'na':_0x51696c=_0x43ba9a(0x92);break;case _0x43ba9a(0x11d):_0x51696c=_0x43ba9a(0xa5);break;case'b':_0x51696c='browsePath';break;case'ab':_0x51696c='aliasedBrowsePath';break;}return _0x51696c;}function _0x223de0(_0x40ea69){const _0x248016=_0x3ee72a;switch(_0x40ea69){case _0x248016(0x1a6):return'n';case'aliasedNodeId':return'na';case _0x248016(0xa5):return _0x248016(0x11d);case _0x248016(0x1a4):return'b';case _0x248016(0x140):return'ab';default:return't';}}const _0x41fa9a=(_0xa2454e,_0x1a0e33)=>_0x18b58d(void 0x0,[_0xa2454e,_0x1a0e33],void 0x0,function*({endpointNode:_0x1bd09d,endpoint:_0x2a4043,baseUrl:_0x365ac1},_0x480db6){const _0x3a20c3=_0x3ee72a,_0x517f63=_0x365ac1+_0x3a20c3(0xed),_0x4a8a75=_0x517f63+_0x3a20c3(0x157),_0x144997=_0x1bd09d['id'],_0x284547=RED['nodes']['node'](_0x144997);console['log'](_0x284547[_0x3a20c3(0x156)]),_0x284547[_0x3a20c3(0x156)];const _0x5ddf19=_0x1bd09d[_0x3a20c3(0x156)],_0x2e11a6=yield fetch(_0x4a8a75,{'method':_0x3a20c3(0xe0),'body':JSON['stringify']({'endpointNode':_0x1bd09d,'endpoint':_0x2a4043,'nodeId':_0x480db6,'namespaceAliases':_0x5ddf19}),'headers':{'Content-Type':_0x3a20c3(0x9c)}}),_0x54ea94=yield _0x2e11a6[_0x3a20c3(0x8e)]();return{'json':_0x54ea94,'data':_0x2e11a6};}),_0x38d052=(_0x1249a6,_0x4555e4,_0x35da3c,_0x5d76d7)=>_0x18b58d(void 0x0,[_0x1249a6,_0x4555e4,_0x35da3c,_0x5d76d7],void 0x0,function*({endpointNode:_0x15ef8d,endpoint:_0x169d04,baseUrl:_0x321351},_0x525381,_0x580c21,_0x46c78b){const _0x383ce1=_0x3ee72a,_0x5a4dcd=_0x580c21[_0x383ce1(0xe5)](),{json:_0x1bf486,data:_0x29cee2}=yield _0x41fa9a({'endpointNode':_0x15ef8d,'endpoint':_0x169d04,'baseUrl':_0x321351},_0x5a4dcd),_0x1fbf30=(_0x160de6,_0x281a1f)=>{const _0x3b5012=_0x383ce1;_0x46c78b[_0x3b5012(0x8f)](_0x160de6)[_0x3b5012(0x183)]('sterfive-info')['addClass'](_0x281a1f),_0x46c78b['show'](),setTimeout(()=>{const _0x12d596=_0x3b5012;_0x46c78b[_0x12d596(0xc4)](_0x281a1f),_0x46c78b[_0x12d596(0x10a)]();},0xbb8);};if(_0x29cee2[_0x383ce1(0x10c)]!==0xc8)return _0x1fbf30('!!failure!!'+_0x5a4dcd,_0x383ce1(0x177)),![];else{if(_0x1bf486[_0x383ce1(0x91)]['match'](/Good/)){const _0x4baf9d=_0x39792d(_0x1bf486);_0x580c21[_0x383ce1(0x174)](_0x383ce1(0xfa),_0x4baf9d);const _0x2b7436=_0x2178d0(_0x1bf486,_0x525381);return _0x580c21['val'](_0x2b7436),_0x580c21['trigger'](_0x383ce1(0x137)),_0x1fbf30(_0x383ce1(0xda),'ok'),!![];}else return _0x580c21[_0x383ce1(0xe5)](''+_0x5a4dcd),_0x1fbf30(_0x1bf486[_0x383ce1(0x91)]+'\x20'+_0x29cee2[_0x383ce1(0x98)],_0x383ce1(0x177)),![];}});function _0x3e8410(_0x56e656,_0x38c506){return _0x18b58d(this,void 0x0,void 0x0,function*(){const _0x4aa2d9=_0x31ec,_0x466686=_0x56e656['data'](_0x4aa2d9(0x106)),_0x19defa=yield _0x101e44(_0x38c506,_0x466686,_0x12ca9c),_0x27b0c0=yield _0x101e44(_0x38c506,_0x466686,_0x27a760);return{'references':[..._0x19defa[_0x4aa2d9(0x158)],..._0x27b0c0[_0x4aa2d9(0x158)]]};});}const _0x4fc296={'referenceTypeId':_0x23f4af(_0x3ee72a(0x145)),'includeSubtypes':!![],'browseDirection':_0x5bd57d[_0x3ee72a(0x191)],'nodeClassMask':_0x5a1637[_0x3ee72a(0x8c)]|_0x5a1637['ObjectType']|_0x5a1637[_0x3ee72a(0xe9)]|_0x5a1637[_0x3ee72a(0xca)],'resultMask':0x3f};function _0x9dae85(_0x421566,_0x1ebff2){return _0x18b58d(this,void 0x0,void 0x0,function*(){const _0x53054c=_0x31ec,_0x48900f=_0x421566[_0x53054c(0x19e)](_0x53054c(0x106)),_0x294d6e=yield _0x101e44(_0x1ebff2,_0x48900f,_0x4fc296);return _0x294d6e;});}const _0x294459=_0x47ef0c=>{const _0x56f4bd=_0x3ee72a;var _0x313e99,_0x592016,_0x4be60b,_0x2701af;if(!_0x47ef0c||!_0x47ef0c[_0x56f4bd(0x1a6)]){const _0x2ec96d=$(_0x56f4bd(0x113));return _0x2ec96d;}const _0x526a60=_0x47ef0c[_0x56f4bd(0x1a6)][_0x56f4bd(0x107)](),_0x3da776=((_0x313e99=_0x47ef0c[_0x56f4bd(0xbb)])===null||_0x313e99===void 0x0?void 0x0:_0x313e99['text'])||((_0x592016=_0x47ef0c['browseName'])===null||_0x592016===void 0x0?void 0x0:_0x592016[_0x56f4bd(0x184)])||_0x47ef0c[_0x56f4bd(0x1a6)]['toString'](),{icon:_0x76f510,color:_0x2aae98}=_0x2a7357(_0x47ef0c),_0x5a0d36='('+_0x47ef0c[_0x56f4bd(0x1a6)][_0x56f4bd(0x107)]()+')\x20'+(((_0x4be60b=_0x47ef0c[_0x56f4bd(0x14c)])===null||_0x4be60b===void 0x0?void 0x0:_0x4be60b['name'])||((_0x2701af=_0x47ef0c[_0x56f4bd(0xbb)])===null||_0x2701af===void 0x0?void 0x0:_0x2701af[_0x56f4bd(0x8f)])||''),_0x5bcb08=$(_0x56f4bd(0xb5)+_0x47ef0c['nodeId'][_0x56f4bd(0x107)]()+_0x56f4bd(0xb1)+_0x5a0d36+_0x56f4bd(0x120)+_0x76f510+_0x56f4bd(0x1ac)+_0x2aae98+_0x56f4bd(0x12a)+_0x3da776+_0x56f4bd(0xa7));return _0x5bcb08['addClass'](_0x56f4bd(0x14d)),_0x5bcb08[_0x56f4bd(0x19e)](_0x56f4bd(0x106),_0x526a60),_0x5bcb08[_0x56f4bd(0x19e)](_0x56f4bd(0xc7),_0x47ef0c),_0x5bcb08;},_0x2c6652=(_0x3c9231,_0x3aa33d)=>{const _0x4a85a2=_0x3ee72a;return _0x3aa33d[_0x4a85a2(0x175)]('li[key=\x22'+_0x3c9231+'\x22]');},_0xf6b05e=(_0x175d3e,_0x18111e)=>{const _0x32c011=_0x3ee72a;_0x175d3e['$tree']['find'](_0x32c011(0xf7))['removeClass'](_0x32c011(0x9f)),_0x18111e['find']('.tree-text:first')[_0x32c011(0x183)](_0x32c011(0x9f));},_0x3960ff=(_0xad76e3,_0x35026b,_0xce1249)=>_0x18b58d(void 0x0,void 0x0,void 0x0,function*(){const _0x523692=_0x3ee72a;let _0x33ba4b=_0xce1249[_0x523692(0x169)](_0x523692(0x143));_0x35026b[_0x523692(0xf1)][_0x523692(0xd4)]||[];const _0x5966d1=_0x35026b[_0x523692(0x182)]||[];if(_0x5966d1[_0x523692(0x18a)]===0x0)return;for(const _0x44e028 of _0x5966d1){_0x33ba4b['hasClass']('expandable')&&(yield _0x24668e(_0xad76e3,_0x33ba4b));const _0x33d2dc=_0x2c6652(_0x44e028,_0x33ba4b);if(_0x33d2dc[_0x523692(0x18a)]===0x0)return;_0x33ba4b=_0x33d2dc;}_0xf6b05e(_0xad76e3,_0x33ba4b),_0x3d47ca(_0xad76e3[_0x523692(0x18c)],_0x33ba4b);});function _0x3d47ca(_0x1311c,_0xd27957){const _0x3033d6=_0x3ee72a,_0x5754f7=_0xd27957[_0x3033d6(0x190)]()[_0x3033d6(0x17f)],_0x16246f=_0x1311c['scrollTop']();if(_0x16246f==undefined)return;const _0x5a209a=_0x16246f+_0x5754f7-_0x1311c[_0x3033d6(0x17b)]()/0x2+_0xd27957['height']()/0x2;_0x1311c[_0x3033d6(0xf4)]({'scrollTop':_0x5a209a},0x1f4);}const _0x2de43a=(_0x2c669f,_0x295354)=>_0x18b58d(void 0x0,void 0x0,void 0x0,function*(){const _0x4b240d=_0x3ee72a,_0x29db7b=_0x2c669f[_0x4b240d(0xbf)][_0x4b240d(0xe5)](),_0x2e3b0e={'nodeId':_0x29db7b,'rootNodeId':_0x295354['nodeId'],'isType':_0x2c669f[_0x4b240d(0xa1)][_0x4b240d(0xbe)]||![]},_0x4687a9=_0x501a7a(_0x2c669f),_0x5f0cc0=yield _0x1d8ef1(_0x4687a9,_0x2e3b0e);if(!_0x5f0cc0)return;yield _0x3960ff(_0x2c669f,_0x5f0cc0,_0x2c669f['$tree']);});function _0x7238d2(_0x2f37db,_0x50176a,_0x528f91,_0xd93b81){return _0x18b58d(this,void 0x0,void 0x0,function*(){const _0x4442ad=_0x31ec;if(_0x50176a['hasClass']('fetched')){console[_0x4442ad(0x12c)](_0x4442ad(0x12d));return;}if(_0x50176a['hasClass'](_0x4442ad(0x1a5))){console['log'](_0x4442ad(0xcc));return;}_0x50176a[_0x4442ad(0x183)](_0x4442ad(0x1a5)),_0x50176a['append'](_0x4442ad(0x1a2));try{_0x50176a['children']('ul')[_0x4442ad(0xff)]();const {references:_0x4051ea}=yield _0x528f91(_0x50176a,_0xd93b81);_0x4051ea[_0x4442ad(0x141)]((_0x3e185f,_0x3e3b18)=>{const _0x5b699e=_0x4442ad;var _0x50430f,_0x41dceb;return(((_0x50430f=_0x3e185f['browseName'])===null||_0x50430f===void 0x0?void 0x0:_0x50430f[_0x5b699e(0x184)])||'')[_0x5b699e(0xaf)](((_0x41dceb=_0x3e3b18[_0x5b699e(0x14c)])===null||_0x41dceb===void 0x0?void 0x0:_0x41dceb[_0x5b699e(0x184)])||'');});for(const _0x3b463e of _0x4051ea){if(_0x2f37db[_0x4442ad(0xa1)][_0x4442ad(0x18f)]&&!_0x2f37db['options'][_0x4442ad(0x18f)](_0x3b463e))continue;const _0x3bb7d1=_0x294459(_0x3b463e);_0x50176a[_0x4442ad(0x169)]('ul')[_0x4442ad(0x170)](_0x3bb7d1);}_0x50176a[_0x4442ad(0x183)](_0x4442ad(0x151));}catch(_0x11e576){_0x50176a[_0x4442ad(0x169)]('ul')[_0x4442ad(0x170)](_0x4442ad(0xd2)+_0x11e576[_0x4442ad(0xa3)]+_0x4442ad(0xb2)),console['log'](_0x4442ad(0xe6),_0x11e576);}_0x50176a[_0x4442ad(0x175)](_0x4442ad(0x17c))[_0x4442ad(0x135)](),_0x50176a[_0x4442ad(0xc4)](_0x4442ad(0x1a5));});}function _0x501a7a(_0xcefb91){const _0x411763=_0x3ee72a,_0xd5f283={'baseUrl':_0xcefb91[_0x411763(0xa1)][_0x411763(0x15c)],'endpointNode':typeof _0xcefb91[_0x411763(0xa1)]['endpointNode']==='function'?_0xcefb91[_0x411763(0xa1)][_0x411763(0x1ad)]():_0xcefb91[_0x411763(0xa1)][_0x411763(0x1ad)],'endpoint':typeof _0xcefb91[_0x411763(0xa1)][_0x411763(0xa4)]==='function'?_0xcefb91[_0x411763(0xa1)][_0x411763(0xa4)]():_0xcefb91[_0x411763(0xa1)]['endpoint']};return _0xd5f283;}function _0x24668e(_0x3fe1aa,_0x5ea9ce){return _0x18b58d(this,void 0x0,void 0x0,function*(){const _0x5bd86f=_0x31ec;if(_0x5ea9ce[_0x5bd86f(0x15b)](_0x5bd86f(0x151))){_0x5ea9ce[_0x5bd86f(0xc4)](_0x5bd86f(0x14d))[_0x5bd86f(0x183)](_0x5bd86f(0x133)),_0x5ea9ce[_0x5bd86f(0x169)]('ul')[_0x5bd86f(0xdb)]();return;}const _0x440227=_0x501a7a(_0x3fe1aa),_0x5004a0=!_0x3fe1aa[_0x5bd86f(0xa1)]['isTypeRef']?_0x3e8410:_0x9dae85;try{yield _0x7238d2(_0x3fe1aa,_0x5ea9ce,_0x5004a0,_0x440227),_0x5ea9ce[_0x5bd86f(0xc4)](_0x5bd86f(0x14d))[_0x5bd86f(0x183)](_0x5bd86f(0x133));}catch(_0x38d243){_0x5ea9ce[_0x5bd86f(0xc4)]('expandable')[_0x5bd86f(0x183)]('expanded'),console[_0x5bd86f(0x12c)]('error',_0x38d243);}});}const _0x43b2e5={'browseName':{'namespaceIndex':0x0,'name':_0x3ee72a(0x1ae)},'nodeClass':_0x3ee72a(0x16d),'nodeId':_0x3ee72a(0x179),'displayName':{'text':_0x3ee72a(0x1ae)},'typeDefinition':_0x25a510},_0x4454d7=()=>{const _0x175b80=_0x3ee72a;$[_0x175b80(0xe4)](_0x175b80(0xd0),{'options':{'endpointNode':()=>({'endpoint':'opc.tcp://opcuademo.sterfive.com:26543'}),'endpoint':()=>undefined,'parentNode':()=>_0x43b2e5,'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x18b58d(this,void 0x0,void 0x0,function*(){const _0x2f7db0=_0x31ec,_0x4cb94c=this;if(_0x4cb94c[_0x2f7db0(0x108)]==undefined){const _0x53a563=typeof _0x4cb94c['options'][_0x2f7db0(0x13a)]===_0x2f7db0(0xa9)?_0x4cb94c[_0x2f7db0(0xa1)][_0x2f7db0(0x13a)][_0x2f7db0(0x13b)](_0x4cb94c):_0x4cb94c[_0x2f7db0(0xa1)][_0x2f7db0(0x13a)];if(_0x53a563 instanceof Promise){const _0x59779c=yield _0x53a563;_0x4cb94c[_0x2f7db0(0x108)]=_0x59779c;}else _0x4cb94c[_0x2f7db0(0x108)]=_0x53a563;}return _0x4cb94c['__parentNode']||_0x43b2e5;});},'reset'(){return _0x18b58d(this,void 0x0,void 0x0,function*(){const _0x2f8c47=_0x31ec,_0x1cb2fc=this,_0x64b904=_0x1cb2fc;_0x64b904[_0x2f8c47(0x108)]=undefined,_0x1cb2fc['$tree'][_0x2f8c47(0xff)]();const _0x16165a=yield this[_0x2f8c47(0x105)](),_0x30c017=_0x294459(_0x16165a);_0x1cb2fc['$tree'][_0x2f8c47(0x170)](_0x30c017),_0x1cb2fc['currentParent']=_0x16165a;});},'verify'(_0x2d1ede){const _0x761b95=_0x175b80,_0x58f533=this,_0x148438=_0x501a7a(_0x58f533);_0x38d052(_0x148438,_0x2d1ede,_0x58f533['$input'],_0x58f533[_0x761b95(0x123)])['then'](_0x49b467=>{const _0x40eb2b=_0x761b95;!_0x49b467?_0x58f533[_0x40eb2b(0xa0)][_0x40eb2b(0x183)](_0x40eb2b(0x16e)):_0x58f533[_0x40eb2b(0xa0)][_0x40eb2b(0xc4)](_0x40eb2b(0x16e));});},'_hideMenu'(_0x401eee){const _0x1b77a2=_0x175b80,_0x44d7a2=this;$(document)['off'](_0x1b77a2(0x13d)),_0x401eee[_0x1b77a2(0x10a)](),_0x401eee[_0x1b77a2(0xcf)]({'height':'auto'});if(_0x401eee[_0x1b77a2(0x146)][_0x1b77a2(0x99)]){var _0x64ebdd=[];_0x401eee[_0x1b77a2(0x175)]('input[type=\x22checkbox\x22]')[_0x1b77a2(0x196)](function(){const _0xae94e=_0x1b77a2;$(this)['prop']('checked')&&_0x64ebdd['push']($(this)['data'](_0xae94e(0x106)));}),_0x401eee[_0x1b77a2(0xf6)](_0x64ebdd);}_0x44d7a2[_0x1b77a2(0x111)]['is'](_0x1b77a2(0x14e))?_0x44d7a2[_0x1b77a2(0xbf)][_0x1b77a2(0xcd)]('focus'):_0x44d7a2[_0x1b77a2(0x13c)][_0x1b77a2(0xcd)](_0x1b77a2(0xb6));},'_createMenu'(_0x5bbe18,_0x4402bc,_0x29db00){const _0x22b3cd=_0x175b80;var _0x489c1c=this;const _0x30584d=$(_0x22b3cd(0x195))[_0x22b3cd(0x183)]('sterfive-typedInput-options\x20sterfive-online-menu');return _0x30584d[_0x22b3cd(0x146)]=_0x4402bc,_0x30584d[_0x22b3cd(0xf6)]=_0x29db00,_0x5bbe18[_0x22b3cd(0x18d)](_0x1e6774=>{const _0x1ccbc8=_0x22b3cd;typeof _0x1e6774==='string'&&(_0x1e6774={'value':_0x1e6774,'label':_0x1e6774});var _0x1d9230=$(_0x1ccbc8(0xd7))[_0x1ccbc8(0x174)](_0x1ccbc8(0x106),_0x1e6774[_0x1ccbc8(0x106)])[_0x1ccbc8(0x9b)](_0x30584d);_0x1e6774[_0x1ccbc8(0xfe)]&&_0x1d9230[_0x1ccbc8(0x8f)](_0x1e6774[_0x1ccbc8(0xfe)]);_0x1e6774[_0x1ccbc8(0xfa)]&&_0x1d9230['prop'](_0x1ccbc8(0xfa),_0x1e6774[_0x1ccbc8(0xfa)]);if(_0x1e6774['icon']){if(_0x1e6774[_0x1ccbc8(0x10d)][_0x1ccbc8(0x17a)]('<')===0x0)$(_0x1e6774[_0x1ccbc8(0x10d)])[_0x1ccbc8(0x10b)](_0x1d9230);else _0x1e6774[_0x1ccbc8(0x10d)][_0x1ccbc8(0x17a)]('/')!==-0x1?$(_0x1ccbc8(0x1a3),{'class':_0x1ccbc8(0x11a),'style':'mask-image:\x20url('+_0x1e6774['icon']+');\x20-webkit-mask-image:\x20url('+_0x1e6774['icon']+');'})[_0x1ccbc8(0x10b)](_0x1d9230):$(_0x1ccbc8(0x1a3),{'class':_0x1ccbc8(0x189)+_0x1e6774['icon']})[_0x1ccbc8(0x10b)](_0x1d9230);}else _0x1d9230['css']({'paddingLeft':_0x1ccbc8(0x14f)});!_0x1e6774['icon']&&!_0x1e6774[_0x1ccbc8(0xfe)]&&_0x1d9230[_0x1ccbc8(0x8f)](_0x1e6774[_0x1ccbc8(0x106)]);var _0x359b17;_0x4402bc['multiple']&&(_0x359b17=$(_0x1ccbc8(0xde))[_0x1ccbc8(0xcf)](_0x1ccbc8(0xdc),'none')['data']('value',_0x1e6774[_0x1ccbc8(0x106)])['prependTo'](_0x1d9230)['on']('mousedown',function(_0xb04e1){const _0x143908=_0x1ccbc8;_0xb04e1[_0x143908(0xfc)]();})),_0x1d9230['on'](_0x1ccbc8(0xf2),function(_0x9786b1){const _0x544d43=_0x1ccbc8;_0x9786b1[_0x544d43(0xfc)](),_0x9786b1[_0x544d43(0x166)](),!_0x4402bc[_0x544d43(0x99)]?(_0x29db00(_0x1e6774[_0x544d43(0x106)]),_0x489c1c[_0x544d43(0xd6)](_0x30584d)):_0x359b17[_0x544d43(0xb3)]('checked',!_0x359b17['prop'](_0x544d43(0xbd)));});}),_0x30584d[_0x22b3cd(0xcf)]({'display':_0x22b3cd(0x116)}),_0x30584d['on'](_0x22b3cd(0x103),function(_0x164ae6){const _0x35f5de=_0x22b3cd;if(_0x164ae6[_0x35f5de(0xbc)]===0x28)_0x164ae6[_0x35f5de(0xfc)](),$(this)[_0x35f5de(0x169)](_0x35f5de(0xab))[_0x35f5de(0x136)]()['trigger'](_0x35f5de(0xb6));else{if(_0x164ae6[_0x35f5de(0xbc)]===0x26)_0x164ae6['preventDefault'](),$(this)['children'](':focus')[_0x35f5de(0x150)]()[_0x35f5de(0xcd)](_0x35f5de(0xb6));else _0x164ae6[_0x35f5de(0xbc)]===0x1b&&(_0x164ae6[_0x35f5de(0xfc)](),_0x489c1c['_hideMenu'](_0x30584d));}_0x164ae6[_0x35f5de(0x166)]();}),_0x30584d;},'disarmClick':![],'_showMenu'(_0x45a721,_0x4cf288){const _0x3c123c=_0x175b80;if(this[_0x3c123c(0x109)]){this['disarmClick']=![];return;}var _0x17f1d8=this,_0x2abdd9=_0x4cf288[_0x3c123c(0x142)](),_0x34a2e9=_0x4cf288['height'](),_0x544bee=_0x45a721[_0x3c123c(0x17b)](),_0x50ebe0=_0x34a2e9+_0x2abdd9['top'];_0x50ebe0+_0x544bee-$(document)[_0x3c123c(0x11f)]()>$(window)[_0x3c123c(0x17b)]()&&(_0x50ebe0-=_0x50ebe0+_0x544bee-$(window)[_0x3c123c(0x17b)]()+0x5),_0x50ebe0<0x0&&(_0x45a721[_0x3c123c(0x17b)](_0x544bee+_0x50ebe0),_0x50ebe0=0x0),_0x45a721[_0x3c123c(0xcf)]({'top':_0x50ebe0+'px','left':_0x2abdd9[_0x3c123c(0x164)]+'px'}),_0x45a721[_0x3c123c(0xc8)](0x64),this[_0x3c123c(0x121)](function(){_0x17f1d8['$uiSelect']['addClass']('red-ui-typedInput-focus'),$(document)['on']('mousedown.red-ui-typedInput-close-property-select',function(_0x39672e){const _0x37eaa9=_0x31ec;!$(_0x39672e[_0x37eaa9(0x176)])[_0x37eaa9(0x1a7)](_0x45a721)['length']&&_0x17f1d8['_hideMenu'](_0x45a721),$(_0x39672e[_0x37eaa9(0x176)])[_0x37eaa9(0x1a7)](_0x4cf288)[_0x37eaa9(0x18a)]&&(_0x17f1d8[_0x37eaa9(0x109)]=!![],_0x39672e[_0x37eaa9(0xfc)]());});});},'_showTypeMenu'(){const _0x52628c=_0x175b80,_0x3aa5b2=this;this[_0x52628c(0x15f)](_0x3aa5b2['$menu'],_0x3aa5b2[_0x52628c(0xa0)]),_0x3aa5b2['$dropdown'][_0x52628c(0x10a)]();const _0x2f9d83=_0x3aa5b2['selectedMenuItem'];var _0x19bfc2=_0x3aa5b2['$menu'][_0x52628c(0x175)](_0x52628c(0x19f)+_0x2f9d83+'\x27');setTimeout(function(){const _0x23af9b=_0x52628c;_0x19bfc2[_0x23af9b(0xcd)]('focus');},0x78);},'_initMenu'(){const _0x1fbb67=_0x175b80,_0x77a212=this;_0x77a212[_0x1fbb67(0x13c)]['attr'](_0x1fbb67(0xd3),-0x1),_0x77a212[_0x1fbb67(0x13c)]['on']('mousedown.red-ui-typedInput-focus-block',function(_0x2a32b0){const _0x154506=_0x1fbb67;_0x2a32b0[_0x154506(0xfc)]();});_0x77a212['$menu']&&_0x77a212[_0x1fbb67(0x18e)][_0x1fbb67(0x135)]();const _0x484ec4=[{'label':_0x1fbb67(0x8f),'value':'t','title':_0x1fbb67(0x1af),'icon':'<i\x20class=\x22fa\x20fa-font\x22/i>\x20'},{'label':'msg.','value':_0x1fbb67(0xaa),'title':_0x1fbb67(0xb0),'icon':'<i\x20class=\x22fa\x20fa-envelope-open-o\x22/>'},{'label':_0x1fbb67(0x8b),'value':'n','icon':_0x1fbb67(0x95)},{'label':_0x1fbb67(0x194),'value':'na','icon':_0x1fbb67(0x181)},{'label':_0x1fbb67(0x1a9),'value':_0x1fbb67(0x11d),'icon':_0x1fbb67(0x147)},{'label':'BrowsePath','value':'b','icon':'<i\x20class=\x22fa\x20fa-tag\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;'},{'label':'Aliased\x20Browse\x20Path','value':'ab','icon':_0x1fbb67(0x97)}],_0xa5f5fb=_0x37d46e(_0x77a212[_0x1fbb67(0xbf)][_0x1fbb67(0xe5)]()),_0x226c8e=_0x484ec4[_0x1fbb67(0x175)](_0x6445af=>_0x6445af[_0x1fbb67(0x106)]===_0xa5f5fb);_0x77a212[_0x1fbb67(0xea)][_0x1fbb67(0xff)]()[_0x1fbb67(0x170)](_0x1fbb67(0xef)+((_0x226c8e===null||_0x226c8e===void 0x0?void 0x0:_0x226c8e['title'])||'')+_0x1fbb67(0x14a)+((_0x226c8e===null||_0x226c8e===void 0x0?void 0x0:_0x226c8e[_0x1fbb67(0x10d)])||'')+'</span>'),_0x77a212[_0x1fbb67(0x125)]=_0xa5f5fb;const _0x251211=this;_0x77a212['$menu']=this[_0x1fbb67(0x17d)](_0x484ec4,{},_0xab0023=>{const _0x371e93=_0x1fbb67,_0x52906b=_0x9d7aea(_0xab0023);_0x52906b&&_0x251211[_0x371e93(0x163)](_0x52906b);const _0x28adbd=_0x484ec4[_0x371e93(0x175)](_0x2d399c=>_0x2d399c[_0x371e93(0x106)]===_0xab0023);_0x77a212[_0x371e93(0x125)]=_0xab0023,_0x77a212[_0x371e93(0xea)][_0x371e93(0xff)]()[_0x371e93(0x170)](_0x371e93(0xef)+((_0x28adbd===null||_0x28adbd===void 0x0?void 0x0:_0x28adbd[_0x371e93(0xfa)])||'')+'>&nbsp;\x20'+((_0x28adbd===null||_0x28adbd===void 0x0?void 0x0:_0x28adbd['icon'])||'')+_0x371e93(0x11b));}),_0x77a212[_0x1fbb67(0x18e)][_0x1fbb67(0x9b)](document[_0x1fbb67(0x171)]),_0x77a212[_0x1fbb67(0x18e)][_0x1fbb67(0x10a)](),_0x77a212[_0x1fbb67(0x13c)][_0x1fbb67(0xf3)]();},'mode'(){const _0x32a8ea=_0x175b80,_0x21ceac=this;return _0x9d7aea(_0x21ceac[_0x32a8ea(0x125)]);},'setMode'(_0x34b9d8){const _0x785aa3=_0x175b80,_0x271407=this,_0x37c29c=_0x223de0(_0x34b9d8);_0x271407[_0x785aa3(0x125)]=_0x37c29c;},'_create'(){const _0x3c1a89=_0x175b80,_0x26bc23=this;_0x26bc23[_0x3c1a89(0xbf)]=this[_0x3c1a89(0xa2)],_0x26bc23['$input'][_0x3c1a89(0xcf)](_0x3c1a89(0xfb),_0x3c1a89(0x116)),_0x26bc23[_0x3c1a89(0x111)]=_0x26bc23[_0x3c1a89(0xbf)]['wrap'](_0x3c1a89(0x195))[_0x3c1a89(0x15a)]()[_0x3c1a89(0x183)](_0x3c1a89(0x90)),_0x26bc23[_0x3c1a89(0xa0)]=$(_0x3c1a89(0x144)),_0x26bc23[_0x3c1a89(0xa0)]['addClass'](_0x3c1a89(0xb9)),_0x26bc23['$input'][_0x3c1a89(0xb7)](_0x26bc23[_0x3c1a89(0xa0)]),_0x26bc23[_0x3c1a89(0xf9)]=$('<div/>')[_0x3c1a89(0x183)](_0x3c1a89(0x130)),_0x26bc23[_0x3c1a89(0xa0)][_0x3c1a89(0x170)](_0x26bc23[_0x3c1a89(0xf9)]),_0x26bc23[_0x3c1a89(0xf9)][_0x3c1a89(0x170)](_0x26bc23[_0x3c1a89(0xbf)]),_0x26bc23[_0x3c1a89(0x19a)]=$(_0x3c1a89(0xdd)),_0x26bc23['$input'][_0x3c1a89(0x129)](_0x26bc23[_0x3c1a89(0x19a)]),_0x26bc23[_0x3c1a89(0x19a)]['on'](_0x3c1a89(0xf2),function(){return _0x18b58d(this,void 0x0,void 0x0,function*(){const _0x7c992b=_0x31ec;var _0x624c85;let _0x5d252d=![],_0x9f2c8f;!_0x26bc23[_0x7c992b(0x18c)]['is'](_0x7c992b(0x14e))&&(_0x26bc23[_0x7c992b(0x123)][_0x7c992b(0x10a)](),_0x9f2c8f=yield _0x26bc23[_0x7c992b(0x105)](),(_0x9f2c8f!==_0x26bc23[_0x7c992b(0x1a1)]||((_0x624c85=_0x26bc23[_0x7c992b(0x1a1)])===null||_0x624c85===void 0x0?void 0x0:_0x624c85['nodeId'])!==_0x9f2c8f[_0x7c992b(0x1a6)])&&(yield _0x26bc23[_0x7c992b(0x199)]()),_0x5d252d=!![]),_0x26bc23[_0x7c992b(0x18c)]['toggle'](),_0x5d252d&&(yield _0x2de43a(_0x26bc23,_0x9f2c8f));});}),_0x26bc23[_0x3c1a89(0xfd)]=$(_0x3c1a89(0x152)),_0x26bc23[_0x3c1a89(0xbf)][_0x3c1a89(0x129)](_0x26bc23[_0x3c1a89(0xfd)]),_0x26bc23[_0x3c1a89(0xfd)]['on'](_0x3c1a89(0xf2),()=>{const _0x13d26f=_0x3c1a89,_0x299358=_0x26bc23[_0x13d26f(0x159)]();if(!_0x299358)return;this[_0x13d26f(0x163)](_0x299358);});const _0x4f533c=_0x1066de=>_0x18b58d(this,void 0x0,void 0x0,function*(){const _0x85a3b=_0x3c1a89,_0x343980=this;let _0x47523b=_0x343980[_0x85a3b(0x159)]();if(!_0x47523b)return;const _0x13c15e=_0x501a7a(_0x343980),{data:_0x3cdbc6,json:_0xbeacd4}=yield _0x41fa9a(_0x13c15e,_0x1066de);if(_0x3cdbc6[_0x85a3b(0x10c)]!==0xc8)return;if(_0xbeacd4['statusCode'][_0x85a3b(0xd1)](/Good/)){const _0x1c208e=_0x2178d0(_0xbeacd4,_0x47523b);_0x343980[_0x85a3b(0xbf)][_0x85a3b(0xe5)](_0x1c208e),_0x343980[_0x85a3b(0xbf)][_0x85a3b(0xcd)](_0x85a3b(0x137));}});{_0x26bc23[_0x3c1a89(0xc3)]=$('<div>'),_0x26bc23[_0x3c1a89(0xbf)]['before'](_0x26bc23['$uiSelect']),_0x26bc23[_0x3c1a89(0x13c)]=$(_0x3c1a89(0x16f))[_0x3c1a89(0x10b)](_0x26bc23[_0x3c1a89(0xc3)]),$(_0x3c1a89(0x186))[_0x3c1a89(0xdb)](!![])[_0x3c1a89(0x9b)](_0x26bc23[_0x3c1a89(0x13c)]),_0x26bc23[_0x3c1a89(0x13c)]['on']('click',function(_0x4bb8bc){const _0x46fefa=_0x3c1a89;_0x4bb8bc[_0x46fefa(0xfc)](),_0x4bb8bc['stopPropagation'](),_0x26bc23[_0x46fefa(0x198)]();}),_0x26bc23['$selectTrigger']['on'](_0x3c1a89(0x103),function(_0x1e438c){const _0x1e2ece=_0x3c1a89;_0x1e438c['keyCode']===0x28&&_0x26bc23['_showTypeMenu'](),_0x1e438c[_0x1e2ece(0x166)]();})['on'](_0x3c1a89(0xb6),function(){const _0x604a2=_0x3c1a89;_0x26bc23[_0x604a2(0xc3)][_0x604a2(0x183)](_0x604a2(0x16b));})['on']('blur',function(){const _0x5e88f8=_0x3c1a89;_0x26bc23[_0x5e88f8(0xc3)][_0x5e88f8(0xc4)]('red-ui-typedInput-focus');}),_0x26bc23[_0x3c1a89(0xea)]=$('<span\x20class=\x22red-ui-typedInput-type-label\x22></span>')[_0x3c1a89(0x9b)](_0x26bc23[_0x3c1a89(0x13c)]);}this['_initMenu']();!_0x26bc23[_0x3c1a89(0xbf)][_0x3c1a89(0x174)](_0x3c1a89(0x134))&&_0x26bc23[_0x3c1a89(0xbf)][_0x3c1a89(0x174)]('placeholder',_0x3c1a89(0x8d));_0x26bc23[_0x3c1a89(0x123)]=$(_0x3c1a89(0xe7)),_0x26bc23[_0x3c1a89(0x123)]['hide'](),_0x26bc23[_0x3c1a89(0xa0)][_0x3c1a89(0x170)](_0x26bc23[_0x3c1a89(0x123)]),_0x26bc23['$dropdown']=$(_0x3c1a89(0x144))[_0x3c1a89(0x183)](_0x3c1a89(0x119))[_0x3c1a89(0x10a)]()[_0x3c1a89(0x9b)](_0x26bc23['$combo']),_0x26bc23['$tree']=$(_0x3c1a89(0xeb))[_0x3c1a89(0x9b)](_0x26bc23['$dropdown']),this[_0x3c1a89(0x199)]();const _0x3b2743=(_0x31fe35,_0xded9dd)=>{const _0x3a96bb=_0x3c1a89,_0x3b24b9=0x14,_0x5bace2=0x14,_0x51a207=_0x31fe35['offset'](),_0x189247=_0xded9dd;if(_0x189247['pageX']>=_0x51a207[_0x3a96bb(0x164)]&&_0x189247[_0x3a96bb(0x115)]<=_0x51a207[_0x3a96bb(0x164)]+_0x3b24b9&&_0x189247[_0x3a96bb(0x16a)]>=_0x51a207['top']&&_0x189247['pageY']<=_0x51a207[_0x3a96bb(0x17f)]+_0x5bace2)return!![];return![];},_0x4e899c=_0x519607=>_0x18b58d(this,void 0x0,void 0x0,function*(){const _0x20899a=_0x3c1a89;if(_0x519607['hasClass']('expandable'))_0x24668e(_0x26bc23,_0x519607);else{if(_0x519607[_0x20899a(0x15b)](_0x20899a(0x133)))_0x519607[_0x20899a(0x169)]('ul')[_0x20899a(0xdb)](),_0x519607[_0x20899a(0xf8)](_0x20899a(0x168));else{if(_0x519607[_0x20899a(0x169)]('ul')[_0x20899a(0x169)]()[_0x20899a(0x18a)]>0x0)_0x519607['children']('ul')['toggle'](),_0x519607[_0x20899a(0xf8)](_0x20899a(0x168));else;}}});_0x26bc23[_0x3c1a89(0xee)]['on']('dblclick','li',function(_0x479b37){const _0x4ddd55=_0x3c1a89;var _0x18068e,_0x1a77be;_0x479b37[_0x4ddd55(0x166)]();let _0x1a01ee=$(this);if(_0x3b2743(_0x1a01ee,_0x479b37))_0x4e899c(_0x1a01ee);else{const _0x3398bc=_0x1a01ee[_0x4ddd55(0x19e)](_0x4ddd55(0x106)),_0x229b50=_0x1a01ee[_0x4ddd55(0x19e)](_0x4ddd55(0xc7));if(_0x26bc23[_0x4ddd55(0xa1)][_0x4ddd55(0x148)]&&!_0x26bc23['options'][_0x4ddd55(0x148)](_0x229b50))return;_0x26bc23['$input'][_0x4ddd55(0x19e)](_0x4ddd55(0xc7),_0x229b50),((_0x18068e=_0x229b50['displayName'])===null||_0x18068e===void 0x0?void 0x0:_0x18068e['text'])||((_0x1a77be=_0x229b50[_0x4ddd55(0x14c)])===null||_0x1a77be===void 0x0?void 0x0:_0x1a77be[_0x4ddd55(0x184)])||_0x229b50[_0x4ddd55(0x1a6)][_0x4ddd55(0x107)]();let _0x571d32=_0x26bc23['mode']();!_0x571d32&&(_0x571d32=_0x4ddd55(0x1a6),_0x26bc23[_0x4ddd55(0xba)](_0x571d32)),_0x4f533c(_0x3398bc)[_0x4ddd55(0xac)](()=>{const _0x3fb660=_0x4ddd55;_0x26bc23['$dropdown'][_0x3fb660(0x10a)]();})[_0x4ddd55(0x16c)](_0x49bf50=>{_0x26bc23['$dropdown']['hide']();});}}),_0x26bc23[_0x3c1a89(0xee)]['on'](_0x3c1a89(0xf2),'li',function(_0x1eb77b){const _0x1133b0=_0x3c1a89;_0x1eb77b[_0x1133b0(0x166)]();let _0x4f7c84=$(this);_0x3b2743(_0x4f7c84,_0x1eb77b)&&_0x4e899c(_0x4f7c84),_0xf6b05e(_0x26bc23,_0x4f7c84);}),$(document)['on']('click',function(_0x3ad0d6){const _0x1e96e3=_0x3c1a89;!$(_0x3ad0d6[_0x1e96e3(0x176)])[_0x1e96e3(0x1a7)](_0x26bc23[_0x1e96e3(0xa0)])[_0x1e96e3(0x18a)]&&_0x26bc23[_0x1e96e3(0x18c)]['hide']();});}});};function _0x5a04df(_0x556b97,_0x1ae7ea){const _0x2092a6=_0x3ee72a,_0x3a32c8=$(_0x2092a6(0x102)),_0x2bbc75=$(_0x2092a6(0x9d)),_0x4b08c7=()=>{const _0x2522cd=_0x2092a6,_0x33f6a3=_0x556b97['nodes']['node'](_0x3a32c8[_0x2522cd(0xe5)]());_0x2bbc75[_0x2522cd(0xff)]();if(!_0x33f6a3||!_0x33f6a3[_0x2522cd(0x155)])return;for(const _0x259568 of _0x33f6a3[_0x2522cd(0x155)]){const _0x18ea13=_0x259568[_0x2522cd(0x184)]||_0x259568['id'];$(_0x2522cd(0x19d),{'value':_0x259568['id'],'label':_0x18ea13,'selected':_0x259568['id']===_0x1ae7ea['subscription']})[_0x2522cd(0x8f)](_0x18ea13)[_0x2522cd(0x9b)](_0x2bbc75);}};_0x4b08c7(),_0x2bbc75['on'](_0x2092a6(0x137),()=>{const _0x1eb30f=_0x2092a6;_0x1ae7ea[_0x1eb30f(0x117)]=_0x2bbc75[_0x1eb30f(0xe5)]();}),_0x3a32c8['on'](_0x2092a6(0x137),()=>{_0x4b08c7();});}const _0x168689=()=>{const _0x26e483=_0x3ee72a,_0x2d05b0=$(_0x26e483(0x102)),_0x52b4ab=_0x2d05b0['val'](),_0x59e91d=RED['nodes'][_0x26e483(0x165)](_0x52b4ab);if(!_0x59e91d)return undefined;const {endpoint:_0x19ee14,securityMode:_0x2bcc5f,securityPolicy:_0x4c25c6,userIdentityType:_0x2e1ff3,credentials:_0x3796b5,namespaceAliases:_0x28bdca}=_0x59e91d,_0x33c551={'endpoint':_0x19ee14,'securityMode':_0x2bcc5f,'securityPolicy':_0x4c25c6,'userIdentityType':_0x2e1ff3,'credentials':_0x3796b5,'namespaceAliases':_0x28bdca};return _0x33c551;},_0x412800=()=>{const _0x29220c=_0x3ee72a,_0x4f9a6e=$(_0x29220c(0x102)),_0x208b35=_0x4f9a6e[_0x29220c(0xe5)](),_0x59e2bc=_0x168689();if(!_0x59e2bc)return undefined;const _0x4e34d7=_0x59e2bc[_0x29220c(0x156)];return Object[_0x29220c(0x114)]({'namespaceAliases':_0x4e34d7,'id':_0x208b35},_0x59e2bc);},_0x673896=()=>{return{'endpointNode':_0x412800};},_0x5ef524=()=>{const _0x3f3d52=_0x3ee72a,_0x568b50=$('.red-ui-tray-body');console['log'](_0x3f3d52(0x17e),_0x568b50[_0x3f3d52(0x18a)]);if(_0x568b50[_0x3f3d52(0x18a)]){console[_0x3f3d52(0x12c)]('installing\x20iframe');const _0x1176aa=$('<iframe></iframe>',{'src':_0x3f3d52(0x180),'scrolling':'no','style':_0x3f3d52(0x197),'allowtransparency':_0x3f3d52(0x1a8),'width':'180px','height':_0x3f3d52(0x178)});_0x568b50[_0x3f3d52(0x170)](_0x1176aa),_0x1176aa[_0x3f3d52(0xcf)]({'position':'absolute','right':'20px','bottom':_0x3f3d52(0xad)});}};RED[_0x3ee72a(0x12f)]['registerType'](_0x3ee72a(0x124),{'category':'opcua','color':_0x3ee72a(0x187),'align':'right','icon':'../../icons/opcuanodeLogo.png','paletteLabel':'monitor\x20variable','defaults':{'inputs':{'value':0x1},'output':{'value':0x2},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x3ee72a(0x9e)},'subscription':{'value':'','required':!![],'validate':_0x2bd692=>{if(_0x2bd692==='')return![];return!![];}},'startImmediately':{'value':!![],'required':!![]},'nodeId':{'value':'/Server/ServerStatus/CurrentTime','required':![],'validate':()=>!![]},'samplingInterval':{'value':0x3e8,'required':!![]},'discardOldest':{'value':!![],'required':!![]},'queueSize':{'value':0xa,'required':!![]}},'outputs':0x1,'label'(){const _0x260db8=_0x3ee72a;return this[_0x260db8(0x184)]||_0x260db8(0xd5);},'labelStyle'(){const _0x5d242f=_0x3ee72a;return this[_0x5d242f(0x184)]?_0x5d242f(0xc2):'';},'oneditprepare'(){const _0x1d3cca=_0x3ee72a,_0x4d6aaf=this;_0x4454d7(),_0x5ef524();const _0xfcdbcc=_0x4d6aaf['startImmediately'];_0x4d6aaf[_0x1d3cca(0xe3)]=_0xfcdbcc?0x0:0x1,_0x5a04df(RED,this),$(_0x1d3cca(0x193))['on']('change',()=>{const _0x435d06=_0x1d3cca,_0xb95ef8=$('#node-input-startImmediately')['prop']('checked');_0xb95ef8?$(_0x435d06(0xdf))['val'](0x0):$(_0x435d06(0xdf))[_0x435d06(0xe5)](0x1);});const _0x2c7054=$(_0x1d3cca(0x94));_0x2c7054[_0x1d3cca(0x139)](Object[_0x1d3cca(0x114)](Object['assign']({},_0x673896()),{'filter'(_0x492cb2){const _0x208335=_0x1d3cca;return _0x492cb2[_0x208335(0xd9)]===_0x208335(0x14b)||_0x492cb2[_0x208335(0xd9)]===_0x208335(0x16d);},'isSelectable'(_0x187030){const _0x94cb77=_0x1d3cca;return _0x187030[_0x94cb77(0xd9)]===_0x94cb77(0x14b);}}));},'oneditsave'(){const _0x139a15=_0x3ee72a,_0x473bfb=$(_0x139a15(0x122))[_0x139a15(0xb3)](_0x139a15(0xbd));_0x473bfb?($('#node-input-startImmediately')[_0x139a15(0xe5)](_0x473bfb?0x0:0x1),this[_0x139a15(0xe3)]=_0x473bfb?0x0:0x1):($(_0x139a15(0x122))[_0x139a15(0xe5)](0x1),this[_0x139a15(0xe3)]=0x1);}});}()));function _0x31ec(_0x4b3c1f,_0x4272ff){const _0x14d6c2=_0x14d6();return _0x31ec=function(_0x31ec6f,_0x19a709){_0x31ec6f=_0x31ec6f-0x8a;let _0x235f4a=_0x14d6c2[_0x31ec6f];return _0x235f4a;},_0x31ec(_0x4b3c1f,_0x4272ff);}function _0x14d6(){const _0x3a1dd9=['none','subscription','nodeId_nsu','sterfive-dropdown','red-ui-typedInput-icon','</span>','push','nsu','stringify','scrollTop','><i\x20class=\x22fa\x20','_delay','#node-input-startImmediately','$info','OpcUa-Client2-Monitor','selectedMenuItem','DodgerBlue','DisplayName','/browse','after',';\x22></i>\x20','nsu\x20nodeId:\x20','log','already\x20fetched','SeaGreen','nodes','input-group','4eIwltz','DarkOrange','expanded','placeholder','remove','next','change','SteelBlue','nodeBrowser','parentNode','call','$selectTrigger','mousedown.red-ui-typedInput-close-property-select','fa-list-alt','fa-question','aliasedBrowsePath','sort','offset',':first','<div/>','HasSubtype','opts','<i\x20class=\x22fa\x20fa-id-card\x22/>&nbsp;\x20','isSelectable','HasTypeDefinition','>&nbsp;\x20','Variable','browseName','expandable',':visible','18px','prev','fetched','<button\x20title=\x22verify\x20nodeId\x20or\x20browsePath\x22><i\x20class=\x22fa\x20fa-refresh\x22></i></button>','NodeClass','BrowseName','subscriptions','namespaceAliases','/checkNodeId','references','mode','parent','hasClass','baseUrl','IsForward','6687150AUfULQ','_showMenu','requestedNodeId','fa-object-group','fa-sliders','verify','left','node','stopPropagation','Both','expandable\x20expanded','children','pageY','red-ui-typedInput-focus','catch','Object','input-error','<button\x20type=\x22button\x22\x20tabindex=\x220\x22></button>','append','body','39546376XsZKvc','Invalid','attr','find','target','failure','30px','ns=0;i=85','indexOf','height','.spinner','_createMenu','installFeedbackWidget\x20','top','/opcua-for-node-red/support-frame.html','<i\x20class=\x22fa\x20fa-bookmark\x22/>&nbsp;\x20','nodeIds','addClass','name','Unspecified','<i\x20class=\x22red-ui-typedInput-icon\x20fa\x20fa-caret-down\x22></i>','#C0DEED','i=61','red-ui-typedInput-icon\x20','length','ns=0;i=40','$dropdown','forEach','$menu','filter','position','Forward','done','node-input-startImmediately','Aliased\x20NodeId','<div>','each','background-color:transparent;overflow:hidden;border:3px','_showTypeMenu','reset','$toggleTreeBtn','HasComponent','browse\x20path:\x20','<option/>','data','[value=\x27','node\x20class:\x20','currentParent','<div\x20class=\x22spinner\x22></div>','<i>','browsePath','loading','nodeId','closest','true','NodeId\x20with\x20namespace\x20Urn','apply','HasProperty','\x22\x20style=\x22color:','endpointNode','Objects','Value\x20is\x20not\x20verified','Inverse','NodeId','ReferenceType','enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20','json','text','main-wrapper','statusCode','aliasedNodeId','bp_indexed','#node-input-nodeId','<i\x20class=\x22fa\x20fa-tag\x22/>1\x20&nbsp;\x20','2774052XkjZGJ','<i\x20class=\x22fa\x20fa-bookmark\x22/><i\x20class=\x22fa\x20fa-fighter-jet\x22/>&nbsp;','statusText','multiple','typeDefinition','appendTo','application/json','#node-input-subscription','OpcUa-Endpoint2','selected','$combo','options','element','message','endpoint','nsuNodeID','View','</span><ul></ul></li>','TypeDefinition','function','msg',':focus','then','16px','statusCode:\x20','localeCompare','node\x20id\x20or\x20\x20browse\x20path\x20comes\x20from\x20injected\x20msg\x20parameter','\x22}><span\x20class=\x22tree-text\x22\x20title=','</li>','prop','Organizes','<li\x20key=\x22','focus','replaceWith','Method','sterfive-combo-box','setMode','displayName','keyCode','checked','isTypeRef','$input','/walk-backward','suppressed','node_label_italic','$uiSelect','removeClass','join','SandyBrown','reference','slideDown','9BTNlay','VariableType','grey','already\x20loading','trigger','aliased\x20NodeId:\x20','css','sterfive.nodeBrowser','match','<li>error\x20','tabindex','elements','OPCUA\x20Client\x20Monitor\x20','_hideMenu','<a\x20href=\x22#\x22></a>','fa-folder','nodeClass','Good','toggle','pointer-events','<button\x20title=\x22open\x20OPCUA\x20AddressSpace\x20Browser\x22><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','<input\x20type=\x22checkbox\x22>','#node-input-inputs','POST','referenceTypeId','4270470zyILFE','inputs','widget','val','err','<div\x20class=\x22info-text\x22></div>','error','DataType','$selectLabel','<ul\x20class=\x22sterfive-tree\x22></ul>','1189505JSOvak','/opcua-for-node-red','$tree','<span\x20title=','1189375fPVguF','relativePath','click','show','animate','ns=0;i=34','callback','li\x20>\x20.tree-text','toggleClass','$inputGroup','title','border','preventDefault','$verifyBtn','label','empty','fetching\x20failed\x20with\x20error','nodeId_aliased','#node-input-endpoint','keydown','ObjectType','resolveParentNode','value','toString','__parentNode','disarmClick','hide','prependTo','status','icon','ns=0;i=61','5506004DuJFcT','HasChild','$elementDiv','CadetBlue','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','assign','pageX'];_0x14d6=function(){return _0x3a1dd9;};return _0x14d6();}
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgxOGI1OGQiLCJfMHg0ODNkMTYiLCJfMHgzZTNiMTUiLCJfMHgyZTJjMDQiLCJfMHg1ZjEwYWYiLCJfMHg0N2Q3ZTEiLCJfMHg0ZDYxOWIiLCJfMHg1MTFkNzIiLCJQcm9taXNlIiwiXzB4MWQ5OTNjIiwiXzB4ODFhN2Q0IiwiXzB4NDEwNzVmIiwiXzB4MzY2NTMwIiwiXzB4MjkwOTEwIiwiXzB4MzIzOTBmIiwiXzB4NTgwZjVmIiwiXzB4NWQ4ZWZhIiwiXzB4NTA0MjVhIiwiXzB4M2E2ZmNkIiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4NGRiYWVjIiwiXzB4NzllNTk0IiwiXzB4MmQ2ZDM0IiwiXzB4ZmViNmMxIiwiRXJyb3IiLCJfMHgyNDg3OWMiLCJfMHgyNWE1MTAiLCJfMHhmMDVjNjQiLCJfMHhhZjY1ZTkiLCJfMHgzNGM1YmIiLCJfMHgxZTBhZGQiLCJfMHgzZDBiZjQiLCJfMHg1YmQ1N2QiLCJfMHgyYWJiYTciLCJfMHg1YTE2MzciLCJfMHgzZjE5OTciLCJfMHg0NWJjYWEiLCJfMHg0ZjcyYjAiLCJfMHgxYTdlNTIiLCJfMHg1NTA3NzMiLCJfMHgyM2Y0YWYiLCJfMHgxY2MxNzEiLCJfMHgyYTczNTciLCJfMHg0MjI0ZTMiLCJfMHgxMDFlNDQiLCJfMHgxYWY2MzEiLCJfMHgzMzg4NTYiLCJfMHgxOGFmODQiLCJlbmRwb2ludE5vZGUiLCJfMHgyYTQ4NzAiLCJlbmRwb2ludCIsIl8weDI0MTEzZiIsImJhc2VVcmwiLCJfMHgzODQxYmYiLCJfMHg0YzFlMmEiLCJfMHg0ZTc1MGIiLCJfMHgyMTU5MjYiLCJfMHg0MjI5NTYiLCJfMHg4MWE0NjkiLCJPYmplY3QiLCJfMHg5YWY5ZDIiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4NGJiMWM2IiwiXzB4MzA0NzgxIiwiXzB4MTJjYTljIiwiXzB4MjdhNzYwIiwiXzB4MWQ4ZWYxIiwiXzB4ZDU4NzliIiwiXzB4NWYyNjIzIiwiXzB4NWQ0NjY0IiwiXzB4NzU3YTY1IiwiXzB4NDhhZGRlIiwibm9kZUlkIiwiXzB4MTE5ZDdlIiwicm9vdE5vZGVJZCIsIl8weDJiOWU4NSIsImlzVHlwZSIsIl8weDVlMWI1YiIsIl8weDQxYTFjMSIsIl8weDQzNGRjNyIsIl8weDMzMmRmNCIsIl8weDE4NzYwMiIsIl8weDIxNzhkMCIsIl8weDI5NTJiYiIsIl8weDVlMmM3OCIsIl8weDM5NzkyZCIsIl8weDFjMzNiZCIsIl8weDE3MjBjOCIsIl8weDE1ZDk4YSIsIl8weDViMzNjNiIsIl8weDM3ZDQ2ZSIsIl8weDNhZDRlMSIsIl8weDE2N2RmOCIsIl8weDlkN2FlYSIsIl8weDQ0MjU3NiIsIl8weDUxNjk2YyIsIl8weDIyM2RlMCIsIl8weDQwZWE2OSIsIl8weDQxZmE5YSIsIl8weGEyNDU0ZSIsIl8weDFhMGUzMyIsIl8weDFiZDA5ZCIsIl8weDJhNDA0MyIsIl8weDM2NWFjMSIsIl8weDQ4MGRiNiIsIl8weDUxN2Y2MyIsIl8weDRhOGE3NSIsIl8weDE0NDk5NyIsIl8weDI4NDU0NyIsIlJFRCIsIl8weDVkZGYxOSIsIl8weDJlMTFhNiIsIl8weDU0ZWE5NCIsIl8weDM4ZDA1MiIsIl8weDEyNDlhNiIsIl8weDQ1NTVlNCIsIl8weDM1ZGEzYyIsIl8weDVkNzZkNyIsIl8weDE1ZWY4ZCIsIl8weDE2OWQwNCIsIl8weDMyMTM1MSIsIl8weDUyNTM4MSIsIl8weDU4MGMyMSIsIl8weDQ2Yzc4YiIsIl8weDVhNGRjZCIsImpzb24iLCJfMHgxYmY0ODYiLCJkYXRhIiwiXzB4MjljZWUyIiwiXzB4MWZiZjMwIiwiXzB4MTYwZGU2IiwiXzB4MjgxYTFmIiwic2V0VGltZW91dCIsIl8weDRiYWY5ZCIsIl8weDJiNzQzNiIsIl8weDNlODQxMCIsIl8weDU2ZTY1NiIsIl8weDM4YzUwNiIsIl8weDQ2NjY4NiIsIl8weDE5ZGVmYSIsIl8weDI3YjBjMCIsIl8weDRmYzI5NiIsIl8weDlkYWU4NSIsIl8weDQyMTU2NiIsIl8weDFlYmZmMiIsIl8weDQ4OTAwZiIsIl8weDI5NGQ2ZSIsIl8weDI5NDQ1OSIsIl8weDQ3ZWYwYyIsIl8weDMxM2U5OSIsIl8weDU5MjAxNiIsIl8weDRiZTYwYiIsIl8weDI3MDFhZiIsIl8weDJlYzk2ZCIsIiQiLCJfMHg1MjZhNjAiLCJfMHgzZGE3NzYiLCJpY29uIiwiXzB4NzZmNTEwIiwiY29sb3IiLCJfMHgyYWFlOTgiLCJfMHg1YTBkMzYiLCJfMHg1YmNiMDgiLCJfMHgyYzY2NTIiLCJfMHgzYzkyMzEiLCJfMHgzYWEzM2QiLCJfMHhmNmIwNWUiLCJfMHgxNzVkM2UiLCJfMHgxODExMWUiLCJfMHgzOTYwZmYiLCJfMHhhZDc2ZTMiLCJfMHgzNTAyNmIiLCJfMHhjZTEyNDkiLCJfMHgzM2JhNGIiLCJfMHg1OTY2ZDEiLCJfMHg0NGUwMjgiLCJfMHgyNDY2OGUiLCJfMHgzM2QyZGMiLCJfMHgzZDQ3Y2EiLCJfMHgxMzExYyIsIl8weGQyNzk1NyIsIl8weDU3NTRmNyIsIl8weDE2MjQ2ZiIsInVuZGVmaW5lZCIsIl8weDVhMjA5YSIsIl8weDJkZTQzYSIsIl8weDJjNjY5ZiIsIl8weDI5NTM1NCIsIl8weDI5ZGI3YiIsIl8weDJlM2IwZSIsIl8weDQ2ODdhOSIsIl8weDUwMWE3YSIsIl8weDVmMGNjMCIsIl8weDcyMzhkMiIsIl8weDJmMzdkYiIsIl8weDUwMTc2YSIsIl8weDUyOGY5MSIsIl8weGQ5M2I4MSIsInJlZmVyZW5jZXMiLCJfMHg0MDUxZWEiLCJfMHgzZTE4NWYiLCJfMHgzZTNiMTgiLCJfMHg1MDQzMGYiLCJfMHg0MWRjZWIiLCJfMHgzYjQ2M2UiLCJfMHgzYmI3ZDEiLCJfMHgxMWU1NzYiLCJfMHhjZWZiOTEiLCJfMHhkNWYyODMiLCJfMHgzZmUxYWEiLCJfMHg1ZWE5Y2UiLCJfMHg0NDAyMjciLCJfMHg1MDA0YTAiLCJfMHgzOGQyNDMiLCJfMHg0M2IyZTUiLCJfMHg0NDU0ZDciLCJfMHg0Y2I5NGMiLCJfMHg1M2E1NjMiLCJfMHg1OTc3OWMiLCJfMHgxY2IyZmMiLCJfMHg2NGI5MDQiLCJfMHgxNjE2NWEiLCJfMHgzMGMwMTciLCJfMHgyZDFlZGUiLCJfMHg1OGY1MzMiLCJfMHgxNDg0MzgiLCJfMHg0OWI0NjciLCJfMHg0MDFlZWUiLCJfMHg0NGQ3YTIiLCJkb2N1bWVudCIsIl8weDY0ZWJkZCIsIl8weDViYmUxOCIsIl8weDQ0MDJiYyIsIl8weDI5ZGIwMCIsIl8weDQ4OWMxYyIsIl8weDMwNTg0ZCIsIl8weDFlNjc3NCIsIl8weDFkOTIzMCIsIl8weDM1OWIxNyIsIl8weGIwNGUxIiwiXzB4OTc4NmIxIiwiXzB4MTY0YWU2IiwiXzB4NDVhNzIxIiwiXzB4NGNmMjg4IiwiXzB4MTdmMWQ4IiwiXzB4MmFiZGQ5IiwiXzB4MzRhMmU5IiwiXzB4NTQ0YmVlIiwiXzB4NTBlYmUwIiwid2luZG93IiwiXzB4Mzk2NzJlIiwiXzB4M2FhNWIyIiwiXzB4MmY5ZDgzIiwiXzB4MTliZmMyIiwiXzB4NzdhMjEyIiwiXzB4MmEzMmIwIiwiXzB4NDg0ZWM0IiwiXzB4YTVmNWZiIiwiXzB4MjI2YzhlIiwiXzB4NjQ0NWFmIiwiXzB4MjUxMjExIiwiXzB4YWIwMDIzIiwiXzB4NTI5MDZiIiwiXzB4MjhhZGJkIiwiXzB4MmQzOTljIiwiXzB4MjFjZWFjIiwiXzB4MzRiOWQ4IiwiXzB4MjcxNDA3IiwiXzB4MzdjMjljIiwiXzB4MjZiYzIzIiwiXzB4NjI0Yzg1IiwiXzB4NWQyNTJkIiwiXzB4OWYyYzhmIiwiXzB4Mjk5MzU4IiwiXzB4NGY1MzNjIiwiXzB4MTA2NmRlIiwiXzB4MzQzOTgwIiwiXzB4NDc1MjNiIiwiXzB4MTNjMTVlIiwiXzB4M2NkYmM2IiwiXzB4YmVhY2Q0IiwiXzB4MWMyMDhlIiwiXzB4NGJiOGJjIiwiXzB4MWU0MzhjIiwiXzB4M2IyNzQzIiwiXzB4MzFmZTM1IiwiXzB4ZGVkOWRkIiwiXzB4M2IyNGI5IiwiXzB4NWJhY2UyIiwiXzB4NTFhMjA3IiwiXzB4MTg5MjQ3IiwiXzB4NGU4OTljIiwiXzB4NTE5NjA3IiwiXzB4NDc5YjM3IiwiXzB4MTgwNjhlIiwiXzB4MWE3N2JlIiwiXzB4MWEwMWVlIiwiXzB4MzM5OGJjIiwiXzB4MjI5YjUwIiwiXzB4NTcxZDMyIiwiXzB4NDliZjUwIiwiXzB4MWViNzdiIiwiXzB4NGY3Yzg0IiwiXzB4M2FkMGQ2IiwiXzB4NWEwNGRmIiwiXzB4NTU2Yjk3IiwiXzB4MWFlN2VhIiwiXzB4M2EzMmM4IiwiXzB4MmJiYzc1IiwiXzB4NGIwOGM3IiwiXzB4MzNmNmEzIiwiXzB4MjU5NTY4IiwiXzB4MThlYTEzIiwiXzB4MTY4Njg5IiwiXzB4MmQwNWIwIiwiXzB4NTJiNGFiIiwiXzB4NTllOTFkIiwiXzB4MTllZTE0Iiwic2VjdXJpdHlNb2RlIiwiXzB4MmJjYzVmIiwic2VjdXJpdHlQb2xpY3kiLCJfMHg0YzI1YzYiLCJ1c2VySWRlbnRpdHlUeXBlIiwiXzB4MmUxZmYzIiwiY3JlZGVudGlhbHMiLCJfMHgzNzk2YjUiLCJuYW1lc3BhY2VBbGlhc2VzIiwiXzB4MjhiZGNhIiwiXzB4MzNjNTUxIiwiXzB4NDEyODAwIiwiXzB4NGY5YTZlIiwiXzB4MjA4YjM1IiwiXzB4NTllMmJjIiwiXzB4NGUzNGQ3IiwiXzB4NjczODk2IiwiXzB4NWVmNTI0IiwiXzB4NTY4YjUwIiwiXzB4MTE3NmFhIiwiXzB4MmJkNjkyIiwiXzB4NGQ2YWFmIiwiXzB4ZmNkYmNjIiwiXzB4Yjk1ZWY4IiwiXzB4MmM3MDU0IiwiXzB4NDkyY2IyIiwiXzB4MTg3MDMwIiwiXzB4NDczYmZiIl0sIm1hcHBpbmdzIjoiZ2lCQUFBLENBQUMsVSxDQUNHLGEsd0JBbUJBLFNBQVNBLFNBQVQsQ0FBbUJDLFNBQW5CLENBQTRCQyxTQUE1QixDQUF3Q0MsU0FBeEMsQ0FBMkNDLFNBQTNDLEMsQ0FDSSxTQUFTQyxTQUFULENBQWVDLFNBQWYsQyxRQUErQkEsU0FBQSxZQUFpQkgsU0FBakIsQ0FBcUJHLFNBQXJCLENBQTZCLElBQUlILFNBQUosQ0FBTSxTQUFVSSxTQUFWLEMsQ0FBcUJBLFNBQUEsQ0FBUUQsU0FBUixDLEVBQTNCLEMsU0FDckQsR0FBSyxDQUFBSCxTQUFBLEVBQU0sQ0FBQUEsU0FBQSxDQUFJSyxPQUFKLENBQU4sQ0FBTCxDQUF5QixTQUFV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QUEsQyxrQkFBQSxDQUFwQixDQUNBQSxTQUFBLEMsZUFBQSxFQUFjQyxTQUFBLEMsR0FBQSxDLElBQ2RwQyxTQUFBLENBQTRCbk0sR0FBNUIsQ0FBaUMsSUFBakMsQyxDQUNBNkMsQ0FBQSxDLGdCQUFBLEUsSUFBQSxFLFFBQUEsQ0FBOEMsSSwyQkFDcEMyTCxTQUFBLENBQVUzTCxDQUFBLEMsOEJBQUEsRSxNQUFBLEUsU0FBQSxDLENBQ1oyTCxTLENBQ0EzTCxDQUFBLEMsZUFBQSxFLEtBQUEsRSxHQUFBLEMsQ0FHQUEsQ0FBQSxDLGVBQUEsRSxlQUFBLEUsR0FBQSxDLEVBTlIsQ0FGQSxDQWNBLE1BQU00TCxTQUFBLENBQVU1TCxDQUFBLEMsZUFBQSxDQUFoQixDQUNBNEwsU0FBQSxDLGdCQUFBLEVBQW9CN1IsTUFBQSxDLGdCQUFBLEVBQWNBLE1BQUEsQyxRQUFBLEVBQWMsRUFBZCxDQUFrQnFSLFNBQUEsRUFBbEIsQ0FBZCxDQUFpRSxDLFFBQUUsQ0FBT1MsU0FBUCxDLGtDQUN4RUEsU0FBQSxDLGVBQUEsSSxnQkFBQSxFQUFxQ0EsU0FBQSxDLGVBQUEsSSxrQkFEaUMsQyxjQUdqRixDQUFhQyxTQUFiLEMsa0NBQ1dBLFNBQUEsQyxlQUFBLEksa0JBSnNFLENBQWpFLENBQXBCLEMsRUEzRHdDLEMsWUFrRTVDLEUsMkJBQ1VDLFNBQUEsQ0FBbUIvTCxDQUFBLEMsZ0JBQUEsRSxlQUFBLEUsZUFBQSxDLENBQ3JCK0wsUyxFQUNBL0wsQ0FBQSxDLDhCQUFBLEUsZUFBQSxFQUFzQytMLFNBQUEsQyxHQUFBLEMsR0FBdEMsQyxDQUNBLEssZUFBQSxFQUFjQSxTQUFBLEMsR0FBQSxDLE1BR2QvTCxDQUFBLEMsZ0JBQUEsRSxlQUFBLEUsR0FBQSxDLENBQ0EsSyxlQUFBLEUsTUExRW9DLENBQWhELEMsRUFubENKLEciLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG4gICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG4gICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG4gICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG4gICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG4gICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbiAgICAvKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/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 @@
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 @@
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 @@
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 @@
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 @@
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