169 lines
26 KiB
JSON
169 lines
26 KiB
JSON
{
|
|
"influx": {
|
|
"url": "http://127.0.0.1:8086",
|
|
"org": "agr_org",
|
|
"token": "mrWAM_9SIXcu1OZkt3XLU5ybrUu5pA3GwMgr4feGc5tD_aOU6PfTkDuGW-d2xNHMZMZJiDUQQttHu78fCTGoxA==",
|
|
"username": "PCM",
|
|
"password": "12345678",
|
|
"landingUrl": "http://127.0.0.1:8086/orgs/b2542eeb72a3e614/dashboards/0f8ab8a328fe9000?lower=now%28%29+-+1h"
|
|
},
|
|
"placeholders": {
|
|
"db1": {
|
|
"type": "dbText",
|
|
"label": "db1",
|
|
"title": "",
|
|
"value": "",
|
|
"dbQuery": "",
|
|
"chart": {}
|
|
},
|
|
"db2": {
|
|
"type": "dbText",
|
|
"label": "db2",
|
|
"title": "",
|
|
"value": "",
|
|
"dbQuery": "",
|
|
"chart": {}
|
|
},
|
|
"db3": {
|
|
"type": "dbText",
|
|
"label": "db3",
|
|
"title": "",
|
|
"value": "",
|
|
"dbQuery": "",
|
|
"chart": {}
|
|
},
|
|
"scriptTable1": {
|
|
"type": "scriptTable",
|
|
"label": "scriptTable1",
|
|
"title": "",
|
|
"value": "",
|
|
"dbQuery": "",
|
|
"chart": {}
|
|
}
|
|
},
|
|
"tcpModbus": {
|
|
"ip": "127.0.0.1",
|
|
"port": 502
|
|
},
|
|
"devices": [
|
|
{
|
|
"deviceName": "温度传感器",
|
|
"alarmRegister": 0,
|
|
"alarmType": "holding",
|
|
"thresholds": [
|
|
{
|
|
"name": "温度上限",
|
|
"register": 0,
|
|
"regType": "input",
|
|
"value": 29.0
|
|
},
|
|
{
|
|
"name": "温度下线",
|
|
"register": 1,
|
|
"regType": "input",
|
|
"value": 0.0
|
|
},
|
|
{
|
|
"name": "是否报警",
|
|
"register": 0,
|
|
"regType": "coil",
|
|
"value": 0.0
|
|
},
|
|
{
|
|
"name": "报警信息",
|
|
"register": 0,
|
|
"regType": "holding",
|
|
"value": 0.0
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"deviceName": "测试开关",
|
|
"alarmRegister": 0,
|
|
"alarmType": "holding",
|
|
"thresholds": [
|
|
{
|
|
"name": "开始测试",
|
|
"register": 0,
|
|
"regType": "coil",
|
|
"value": 0.0
|
|
},
|
|
{
|
|
"name": "结束测试",
|
|
"register": 1,
|
|
"regType": "coil",
|
|
"value": 0.0
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"db": {
|
|
"engine": "mysql",
|
|
"host": "localhost",
|
|
"port": 3306,
|
|
"database": "ruoyi-fastapi",
|
|
"username": "root",
|
|
"password": "123456"
|
|
},
|
|
"experimentProcess": {
|
|
"headers": [
|
|
"实验内容",
|
|
"实验步骤",
|
|
"工况(档位)",
|
|
"输入转速",
|
|
"转速阈值"
|
|
],
|
|
"rows": [
|
|
[
|
|
"性能试验",
|
|
"10",
|
|
"3",
|
|
"981",
|
|
"20"
|
|
],
|
|
[
|
|
"性能试验",
|
|
"20",
|
|
"4",
|
|
"1906",
|
|
"10"
|
|
],
|
|
[
|
|
"性能试验",
|
|
"30",
|
|
"5",
|
|
"2096",
|
|
"10"
|
|
],
|
|
[
|
|
"耐久试验",
|
|
"40.1",
|
|
"1",
|
|
"476",
|
|
"10"
|
|
],
|
|
[
|
|
"耐久试验",
|
|
"40.1",
|
|
"2",
|
|
"731",
|
|
"10"
|
|
],
|
|
[
|
|
"耐久试验",
|
|
"40.1",
|
|
"2",
|
|
"731",
|
|
"10"
|
|
]
|
|
],
|
|
"scriptFile": "IyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQojIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQ0KIiIiDQrmtYvor5Xpg6jkvY3muKnluqborrDlvZXooajnlJ/miJDohJrmnKwNCg0KLSDlv73nlaXkvKDlhaXnmoQgZXhwZXJpbWVudFByb2Nlc3PvvIzoh6rooYzmnoTpgKDlm7rlrprnu5PmnoTnmoTmlbDmja4NCi0g5LuOIEluZmx1eERCIOafpeivouavj+S4qua1i+ivlemDqOS9jeWcqOWQhOaXtumXtOauteeahOW5s+Wdh+a4qeW6puWAvA0KLSDovpPlh7rmoLzlvI/kuI7lupTnlKjkuK3nmoQgc2NyaXB0VGFibGUg5Y2g5L2N56ym5YW85a65DQotIOm7mOiupOaKiiB7c2NyaXB0VGFibGUxfSDmlL7lnKjigJzmtYvor5Xpg6jkvY3igJ3miYDlnKjnmoTljZXlhYPmoLwNCg0K546v5aKD5Y+Y6YeP77yaDQogICAgVEFCTEVfVE9LRU4gICAgICAgICDnm67moIfljaDkvY3nrKbvvIzpu5jorqQgc2NyaXB0VGFibGUxDQogICAgVEFCTEVfU1RBUlRfUk9XICAgICDlhpnlhaXotbflp4vooYzlgY/np7vvvIzpu5jorqQgMA0KICAgIFRBQkxFX1NUQVJUX0NPTCAgICAg5YaZ5YWl6LW35aeL5YiX5YGP56e777yM6buY6K6kIDANCiAgICBUQUJMRV9USU1FX1NMT1RTICAgIOmAl+WPt+WIhumalOeahOaXtumXtOWIu+W6pu+8jOm7mOiupCAiMC41aCwxaCwxLjVoLDJoLDIuNWgsM2gsMy41aCINCiAgICBUQUJMRV9NT1RPUl9TUEVFRCAgIOeUteacuui9rOmAn+agh+etvu+8jOm7mOiupCAiOTgwUlBNIg0KICAgIEVYUEVSSU1FTlRfU1RBUlQgICAgIOWunumqjOW8gOWni+aXtumXtO+8iElTTyA4NjAxIOagvOW8j++8jOWmgiAyMDI0LTAxLTAxVDEwOjAwOjAwWu+8iQ0KICAgIEVYUEVSSU1FTlRfRU5EICAgICAgIOWunumqjOe7k+adn+aXtumXtO+8iElTTyA4NjAxIOagvOW8j++8iQ0KICAgIElORkxVWF9VUkwgICAgICAgICAgIEluZmx1eERCIFVSTA0KICAgIElORkxVWF9PUkcgICAgICAgICAgIEluZmx1eERCIOe7hOe7hw0KICAgIElORkxVWF9UT0tFTiAgICAgICAgIEluZmx1eERCIOiuv+mXruS7pOeJjA0KICAgIElORkxVWF9CVUNLRVQgICAgICAgIEluZmx1eERCIGJ1Y2tldCDlkI3np7ANCiAgICBJTkZMVVhfTUVBU1VSRU1FTlQgICBJbmZsdXhEQiBtZWFzdXJlbWVudCDlkI3np7ANCiIiIg0KDQpmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFubm90YXRpb25zDQoNCmltcG9ydCBqc29uDQppbXBvcnQgb3MNCmltcG9ydCBzeXMNCmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGENCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIERpY3QsIExpc3QsIE9wdGlvbmFsDQoNCg0KZGVmIF9yZWFkX2FsbF9zdGRpbigpIC0+IHN0cjoNCiAgICB0cnk6DQogICAgICAgIGlmIHN5cy5zdGRpbiBhbmQgbm90IHN5cy5zdGRpbi5jbG9zZWQgYW5kIG5vdCBzeXMuc3RkaW4uaXNhdHR5KCk6DQogICAgICAgICAgICByZXR1cm4gc3lzLnN0ZGluLnJlYWQoKQ0KICAgIGV4Y2VwdCBFeGNlcHRpb246DQogICAgICAgIHBhc3MNCiAgICByZXR1cm4gIiINCg0KDQpkZWYgX2xvYWRfcGF5bG9hZCgpIC0+IERpY3Rbc3RyLCBBbnldOg0KICAgIHJhdyA9IF9yZWFkX2FsbF9zdGRpbigpLnN0cmlwKCkNCg0KICAgIGlmIG5vdCByYXcgYW5kIGxlbihzeXMuYXJndikgPiAxOg0KICAgICAgICBhcmcgPSBzeXMuYXJndlsxXQ0KICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhhcmcpIGFuZCBvcy5wYXRoLmlzZmlsZShhcmcpOg0KICAgICAgICAgICAgd2l0aCBvcGVuKGFyZywgInIiLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmaDoNCiAgICAgICAgICAgICAgICByYXcgPSBmaC5yZWFkKCkNCiAgICAgICAgZWxzZToNCiAgICAgICAgICAgIHJhdyA9IGFyZw0KDQogICAgaWYgbm90IHJhdzoNCiAgICAgICAgcmF3ID0gb3MuZW52aXJvbi5nZXQoIkVYUEVSSU1FTlRfSlNPTiIsICIiKS5zdHJpcCgpDQoNCiAgICBpZiBub3QgcmF3Og0KICAgICAgICByYXcgPSAie30iDQoNCiAgICBkYXRhID0ganNvbi5sb2FkcyhyYXcpDQogICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgZGljdCk6DQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImV4cGVyaW1lbnQgSlNPTiBtdXN0IGJlIGEgZGljdCIpDQogICAgcmV0dXJuIGRhdGENCg0KDQpkZWYgX3RpbWVfc2xvdHMoKSAtPiBMaXN0W3N0cl06DQogICAgcmF3ID0gb3MuZW52aXJvbi5nZXQoIlRBQkxFX1RJTUVfU0xPVFMiLCAiIikuc3RyaXAoKQ0KICAgIGlmIG5vdCByYXc6DQogICAgICAgICMg5qC55o2u5Zu+54mH77yM5pe26Ze05Yi75bqm5piv77yaMC41aCwgMWgsIDEuNWgsIDJoLCAyLjVoLCAzaCwgMy41aO+8iDfliJfvvIkNCiAgICAgICAgcmV0dXJuIFsiMC41aCIsICIxaCIsICIxLjVoIiwgIjJoIiwgIjIuNWgiLCAiM2giLCAiMy41aCJdDQogICAgc2xvdHMgPSBbc2xvdC5zdHJpcCgpIGZvciBzbG90IGluIHJhdy5zcGxpdCgiLCIpXQ0KICAgIHJldHVybiBbc2xvdCBmb3Igc2xvdCBpbiBzbG90cyBpZiBzbG90XQ0KDQoNCmRlZiBfZGVmYXVsdF9zZWN0aW9ucygpIC0+IExpc3RbRGljdFtzdHIsIEFueV1dOg0KICAgICMgbmFtZSAtPiByb3dzIHVuZGVybmVhdGjvvIhlbnRyaWVz77yJDQogICAgIyDmr4/kuKogZW50cnkg5a+55bqU5LiA5Liq5rWL6K+V6YOo5L2N77yM6ZyA6KaB5pig5bCE5YiwIEluZmx1eERCIOeahCBmaWVsZCDmiJYgdGFnDQogICAgcmV0dXJuIFsNCiAgICAgICAgeyJuYW1lIjogIuS4u+i9tOaJvyIsICJlbnRyaWVzIjogWw0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjMSIsICJmaWVsZCI6ICJtYWluX2JlYXJpbmdfMSIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjMiIsICJmaWVsZCI6ICJtYWluX2JlYXJpbmdfMiIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjMyIsICJmaWVsZCI6ICJtYWluX2JlYXJpbmdfMyIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjNCIsICJmaWVsZCI6ICJtYWluX2JlYXJpbmdfNCIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjNSIsICJmaWVsZCI6ICJtYWluX2JlYXJpbmdfNSIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjNiIsICJmaWVsZCI6ICJtYWluX2JlYXJpbmdfNiIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICBdfSwNCiAgICAgICAgeyJuYW1lIjogIuWNgeWtl+WktCIsICJlbnRyaWVzIjogWw0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjMSIsICJmaWVsZCI6ICJjcm9zc2hlYWRfMSIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjMiIsICJmaWVsZCI6ICJjcm9zc2hlYWRfMiIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjMyIsICJmaWVsZCI6ICJjcm9zc2hlYWRfMyIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjNCIsICJmaWVsZCI6ICJjcm9zc2hlYWRfNCIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjNSIsICJmaWVsZCI6ICJjcm9zc2hlYWRfNSIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICBdfSwNCiAgICAgICAgeyJuYW1lIjogIuWHj+mAn+euseWwj+i9tOaJvyIsICJlbnRyaWVzIjogWw0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjMe+8iOi+k+WFpeazleWFsOerr++8iSIsICJmaWVsZCI6ICJnZWFyYm94X3NtYWxsXzEiLCAiZmlsdGVycyI6IHt9fSwNCiAgICAgICAgICAgIHsibGFiZWwiOiAiIzIiLCAiZmllbGQiOiAiZ2VhcmJveF9zbWFsbF8yIiwgImZpbHRlcnMiOiB7fX0sDQogICAgICAgIF19LA0KICAgICAgICB7Im5hbWUiOiAi5YeP6YCf566x5aSn6L205om/IiwgImVudHJpZXMiOiBbDQogICAgICAgICAgICB7ImxhYmVsIjogIiMz77yI5aSn56uv55uW56uv77yJIiwgImZpZWxkIjogImdlYXJib3hfbGFyZ2VfMyIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICAgICAgeyJsYWJlbCI6ICIjNCIsICJmaWVsZCI6ICJnZWFyYm94X2xhcmdlXzQiLCAiZmlsdGVycyI6IHt9fSwNCiAgICAgICAgXX0sDQogICAgICAgIHsibmFtZSI6ICLmtqbmu5HmsrnmuKkiLCAiZW50cmllcyI6IFsNCiAgICAgICAgICAgIHsibGFiZWwiOiAiIiwgImZpZWxkIjogImx1YnJpY2FudF90ZW1wIiwgImZpbHRlcnMiOiB7fX0sDQogICAgICAgIF19LA0KICAgICAgICB7Im5hbWUiOiAi5ram5ruR5rK55Y6LIiwgImVudHJpZXMiOiBbDQogICAgICAgICAgICB7ImxhYmVsIjogIihQc2kpIiwgImZpZWxkIjogImx1YnJpY2FudF9wcmVzc3VyZSIsICJmaWx0ZXJzIjoge319LA0KICAgICAgICBdfSwNCiAgICBdDQoNCg0KZGVmIF9wYXJzZV90aW1lX3Nsb3Qoc2xvdF9zdHI6IHN0cikgLT4gZmxvYXQ6DQogICAgIiIi6Kej5p6Q5pe26Ze05Yi75bqm5a2X56ym5Liy77yI5aaCICcwLjVoJywgJzFoJ++8ieS4uuWwj+aXtuaVsCIiIg0KICAgIHNsb3Rfc3RyID0gc2xvdF9zdHIuc3RyaXAoKS5sb3dlcigpDQogICAgaWYgc2xvdF9zdHIuZW5kc3dpdGgoJ2gnKToNCiAgICAgICAgdHJ5Og0KICAgICAgICAgICAgcmV0dXJuIGZsb2F0KHNsb3Rfc3RyWzotMV0pDQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOg0KICAgICAgICAgICAgcGFzcw0KICAgIHJldHVybiAwLjANCg0KDQpkZWYgX3F1ZXJ5X2luZmx1eGRiKA0KICAgIGZpZWxkX25hbWU6IHN0ciwNCiAgICBzdGFydF90aW1lOiBkYXRldGltZSwNCiAgICBlbmRfdGltZTogZGF0ZXRpbWUsDQogICAgaW5mbHV4X3VybDogc3RyLA0KICAgIGluZmx1eF9vcmc6IHN0ciwNCiAgICBpbmZsdXhfdG9rZW46IHN0ciwNCiAgICBpbmZsdXhfYnVja2V0OiBzdHIsDQogICAgaW5mbHV4X21lYXN1cmVtZW50OiBzdHIsDQogICAgZmlsdGVyczogT3B0aW9uYWxbRGljdFtzdHIsIHN0cl1dID0gTm9uZSwNCikgLT4gT3B0aW9uYWxbZmxvYXRdOg0KICAgICIiIuafpeivoiBJbmZsdXhEQiDojrflj5bmjIflrprlrZfmrrXlnKjml7bpl7TojIPlm7TlhoXnmoTlubPlnYflgLwiIiINCiAgICB0cnk6DQogICAgICAgIGZyb20gaW5mbHV4ZGJfY2xpZW50IGltcG9ydCBJbmZsdXhEQkNsaWVudA0KICAgICAgICBpbXBvcnQgcGFuZGFzIGFzIHBkDQogICAgICAgIGltcG9ydCB3YXJuaW5ncw0KICAgICAgICBmcm9tIGluZmx1eGRiX2NsaWVudC5jbGllbnQud2FybmluZ3MgaW1wb3J0IE1pc3NpbmdQaXZvdEZ1bmN0aW9uDQogICAgZXhjZXB0IEltcG9ydEVycm9yOg0KICAgICAgICBwcmludChmIldhcm5pbmc6IEluZmx1eERCIGNsaWVudCBub3QgYXZhaWxhYmxlLCBza2lwcGluZyBxdWVyeSBmb3Ige2ZpZWxkX25hbWV9IiwgZmlsZT1zeXMuc3RkZXJyKQ0KICAgICAgICByZXR1cm4gTm9uZQ0KDQogICAgdHJ5Og0KICAgICAgICBjbGllbnQgPSBJbmZsdXhEQkNsaWVudCh1cmw9aW5mbHV4X3VybCwgb3JnPWluZmx1eF9vcmcsIHRva2VuPWluZmx1eF90b2tlbikNCiAgICAgICAgcXVlcnlfYXBpID0gY2xpZW50LnF1ZXJ5X2FwaSgpDQoNCiAgICAgICAgIyDmnoTlu7ogRmx1eCDmn6Xor6INCiAgICAgICAgc3RhcnRfcmZjMzMzOSA9IHN0YXJ0X3RpbWUuc3RyZnRpbWUoJyVZLSVtLSVkVCVIOiVNOiVTWicpDQogICAgICAgIHN0b3BfcmZjMzMzOSA9IGVuZF90aW1lLnN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTolU1onKQ0KICAgICAgICANCiAgICAgICAgdGFnX2ZpbHRlcnMgPSAiIg0KICAgICAgICBpZiBmaWx0ZXJzOg0KICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZmlsdGVycy5pdGVtcygpOg0KICAgICAgICAgICAgICAgIHRhZ19maWx0ZXJzICs9IGYnXG4gIHw+IGZpbHRlcihmbjogKHIpID0+IHJbIntrZXl9Il0gPT0gInt2YWx1ZX0iKScNCg0KICAgICAgICBmbHV4ID0gZicnJw0KZnJvbShidWNrZXQ6ICJ7aW5mbHV4X2J1Y2tldH0iKQ0KICB8PiByYW5nZShzdGFydDoge3N0YXJ0X3JmYzMzMzl9LCBzdG9wOiB7c3RvcF9yZmMzMzM5fSkNCiAgfD4gZmlsdGVyKGZuOiAocikgPT4gclsiX21lYXN1cmVtZW50Il0gPT0gIntpbmZsdXhfbWVhc3VyZW1lbnR9IikNCiAgfD4gZmlsdGVyKGZuOiAocikgPT4gclsiX2ZpZWxkIl0gPT0gIntmaWVsZF9uYW1lfSIpCiAgfD4gZmlsdGVyKGZuOiAocikgPT4gdHJ1ZSl7dGFnX2ZpbHRlcnN9CiAgfD4gYWdncmVnYXRlV2luZG93KGV2ZXJ5OiBpbmYsIGZuOiBtZWFuLCBjcmVhdGVFbXB0eTogZmFsc2UpCiAgfD4geWllbGQobmFtZTogIm1lYW4iKQonJycuc3RyaXAoKQoKICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgTWlzc2luZ1Bpdm90RnVuY3Rpb24pCiAgICAgICAgICAgIGZyYW1lcyA9IHF1ZXJ5X2FwaS5xdWVyeV9kYXRhX2ZyYW1lKGZsdXgpCiAgICAgICAgCiAgICAgICAgaWYgaXNpbnN0YW5jZShmcmFtZXMsIGxpc3QpOgogICAgICAgICAgICBkZiA9IHBkLmNvbmNhdChmcmFtZXMsIGlnbm9yZV9pbmRleD1UcnVlKSBpZiBmcmFtZXMgZWxzZSBwZC5EYXRhRnJhbWUoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRmID0gZnJhbWVzCgogICAgICAgIGlmIGRmLmVtcHR5IG9yICdfdmFsdWUnIG5vdCBpbiBkZi5jb2x1bW5zOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIAogICAgICAgICMg6I635Y+W5bmz5Z2H5YC8CiAgICAgICAgbWVhbl92YWx1ZSA9IGRmWydfdmFsdWUnXS5tZWFuKCkKICAgICAgICBpZiBwZC5pc25hKG1lYW5fdmFsdWUpOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIAogICAgICAgIHJldHVybiBmbG9hdChtZWFuX3ZhbHVlKQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIHByaW50KGYiRXJyb3IgcXVlcnlpbmcgSW5mbHV4REIgZm9yIHtmaWVsZF9uYW1lfToge2V9IiwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgIHJldHVybiBOb25lCiAgICBmaW5hbGx5OgogICAgICAgIHRyeToKICAgICAgICAgICAgY2xpZW50LmNsb3NlKCkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICBwYXNzCgoKZGVmIF9nZXRfZGVmYXVsdF90ZW1wZXJhdHVyZShmaWVsZF9uYW1lOiBzdHIpIC0+IGZsb2F0OgogICAgIiIi5Li65q+P5Liq5rWL6K+V6YOo5L2N6L+U5Zue6buY6K6k5rip5bqm5YC877yI55So5LqO5rWL6K+V5oiW5ryU56S677yJIiIiCiAgICAjIOWPr+S7peagueaNruS4jeWQjOeahOa1i+ivlemDqOS9jeiuvue9ruS4jeWQjOeahOm7mOiupOWAvAogICAgZGVmYXVsdHM6IERpY3Rbc3RyLCBmbG9hdF0gPSB7CiAgICAgICAgIm1haW5fYmVhcmluZ18xIjogMjUuNSwKICAgICAgICAibWFpbl9iZWFyaW5nXzIiOiAyNi4wLAogICAgICAgICJtYWluX2JlYXJpbmdfMyI6IDI1LjgsCiAgICAgICAgIm1haW5fYmVhcmluZ180IjogMjYuMiwKICAgICAgICAibWFpbl9iZWFyaW5nXzUiOiAyNS45LAogICAgICAgICJtYWluX2JlYXJpbmdfNiI6IDI2LjEsCiAgICAgICAgImNyb3NzaGVhZF8xIjogMjguMCwKICAgICAgICAiY3Jvc3NoZWFkXzIiOiAyOC4yLAogICAgICAgICJjcm9zc2hlYWRfMyI6IDI3LjgsCiAgICAgICAgImNyb3NzaGVhZF80IjogMjguMSwKICAgICAgICAiY3Jvc3NoZWFkXzUiOiAyNy45LAogICAgICAgICJnZWFyYm94X3NtYWxsXzEiOiAzMC4wLAogICAgICAgICJnZWFyYm94X3NtYWxsXzIiOiAzMC4yLAogICAgICAgICJnZWFyYm94X2xhcmdlXzMiOiAyOS41LAogICAgICAgICJnZWFyYm94X2xhcmdlXzQiOiAyOS44LAogICAgICAgICJsdWJyaWNhbnRfdGVtcCI6IDM1LjAsCiAgICAgICAgImx1YnJpY2FudF9wcmVzc3VyZSI6IDUwLjAsCiAgICB9CiAgICByZXR1cm4gZGVmYXVsdHMuZ2V0KGZpZWxkX25hbWUsIDI1LjApICAjIOm7mOiupDI1LjDluqYKCgpkZWYgX2J1aWxkX2NlbGxzKAogICAgdGltZV9zbG90czogTGlzdFtzdHJdLAogICAgc2VjdGlvbnM6IExpc3RbRGljdFtzdHIsIEFueV1dLAogICAgbW90b3Jfc3BlZWQ6IHN0ciwKICAgIHN0YXJ0X3RpbWU6IE9wdGlvbmFsW2RhdGV0aW1lXSA9IE5vbmUsCiAgICBlbmRfdGltZTogT3B0aW9uYWxbZGF0ZXRpbWVdID0gTm9uZSwKICAgIHRlbXBlcmF0dXJlX2RhdGE6IE9wdGlvbmFsW0RpY3Rbc3RyLCBEaWN0W3N0ciwgZmxvYXRdXV0gPSBOb25lLAogICAgdXNlX2RlZmF1bHRzOiBib29sID0gRmFsc2UsCikgLT4gTGlzdFtEaWN0W3N0ciwgQW55XV06CiAgICBjZWxsczogTGlzdFtEaWN0W3N0ciwgQW55XV0gPSBbXQoKICAgIGRlZiBhZGRfY2VsbChyb3c6IGludCwgY29sOiBpbnQsIHZhbHVlOiBzdHIgPSAiIiwgcm93c3BhbjogaW50ID0gMSwgY29sc3BhbjogaW50ID0gMSkgLT4gTm9uZToKICAgICAgICBwYXlsb2FkOiBEaWN0W3N0ciwgQW55XSA9IHsicm93Ijogcm93LCAiY29sIjogY29sLCAidmFsdWUiOiB2YWx1ZX0KICAgICAgICBpZiByb3dzcGFuID4gMToKICAgICAgICAgICAgcGF5bG9hZFsicm93c3BhbiJdID0gcm93c3BhbgogICAgICAgIGlmIGNvbHNwYW4gPiAxOgogICAgICAgICAgICBwYXlsb2FkWyJjb2xzcGFuIl0gPSBjb2xzcGFuCiAgICAgICAgY2VsbHMuYXBwZW5kKHBheWxvYWQpCgogICAgIyDmqKHmnb/lt6bkvqfmoIfpopjliJflt7Lnu4/ljrvpmaTvvIzov5nph4zku4XnlJ/miJDnuq/mlbDmja7ljLrvvIzku44gKDAsMCkg5byA5aeL5aGr5YWl5pWw5YC844CCCiAgICAjIGN1cnJlbnRfcm93IOWvueW6lOaooeadv+S4reeahOWunumZheaVsOaNruihjOe0ouW8leOAggogICAgY3VycmVudF9yb3cgPSAwCiAgICBmb3Igc2VjdGlvbiBpbiBzZWN0aW9uczoKICAgICAgICBlbnRyaWVzID0gc2VjdGlvbi5nZXQoImVudHJpZXMiKSBvciBbXQogICAgICAgIGlmIG5vdCBlbnRyaWVzOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgICMg5q+P5Liq5rWL6K+V6YOo5L2N5a2Q6aG55a+55bqU5qih5p2/5Lit55qE5LiA6KGMCiAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CiAgICAgICAgICAgICMg5pSv5oyB5paw5qC85byP77yI5bimIGZpZWxkIOaYoOWwhO+8ieWSjOaXp+agvOW8j++8iOe6r+Wtl+espuS4su+8iQogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGVudHJ5LCBkaWN0KToKICAgICAgICAgICAgICAgIGZpZWxkX25hbWUgPSBlbnRyeS5nZXQoImZpZWxkIiwgIiIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmaWVsZF9uYW1lID0gIiIKCiAgICAgICAgICAgICMg5LuF6L6T5Ye65pWw5YC85YiX77ya5YiX57Si5byV55u05o6l5a+55bqU5pe26Ze05q61CiAgICAgICAgICAgICMg5by65Yi25aGr5YWF5omA5pyJ5YiX77yM5LyY5YWI5L2/55So5p+l6K+i5pWw5o2u77yM5ZCm5YiZ5L2/55So6buY6K6k5YC8CiAgICAgICAgICAgIGlmIGZpZWxkX25hbWU6CiAgICAgICAgICAgICAgICAjIOiOt+WPluivpeWtl+auteeahOm7mOiupOWAvO+8iOeUqOS6juWhq+WFheaJgOacieWIl++8iQogICAgICAgICAgICAgICAgZGVmYXVsdF9iYXNlX3ZhbHVlID0gX2dldF9kZWZhdWx0X3RlbXBlcmF0dXJlKGZpZWxkX25hbWUpCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICMg6YGN5Y6G5omA5pyJ5pe26Ze05q615YiX77yM56Gu5L+d5q+P5LiA5YiX6YO95pyJ5pWw5o2uCiAgICAgICAgICAgICAgICBmb3IgY29sX2lkeCwgc2xvdCBpbiBlbnVtZXJhdGUodGltZV9zbG90cyk6CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIyDkvJjlhYjkvb/nlKjmn6Xor6LliLDnmoTmlbDmja4KICAgICAgICAgICAgICAgICAgICBpZiB0ZW1wZXJhdHVyZV9kYXRhOgogICAgICAgICAgICAgICAgICAgICAgICBzbG90X2RhdGEgPSB0ZW1wZXJhdHVyZV9kYXRhLmdldChmaWVsZF9uYW1lLCB7fSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2xvdF9kYXRhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdF9rZXkgPSBmIntjb2xfaWR4fV97c2xvdH0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNsb3RfZGF0YS5nZXQoc2xvdF9rZXkpCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIyDlpoLmnpzmsqHmnInmn6Xor6LliLDmlbDmja7vvIzkvb/nlKjpu5jorqTlgLzloavlhYUKICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAjIOS9v+eUqOWfuuehgOm7mOiupOWAvCArIOaXtumXtOauteWBj+enu++8iOavj+S4quaXtumXtOauteWinuWKoDAuMeW6pu+8iQogICAgICAgICAgICAgICAgICAgICAgICB0aW1lX29mZnNldCA9IGNvbF9pZHggKiAwLjEKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBkZWZhdWx0X2Jhc2VfdmFsdWUgKyB0aW1lX29mZnNldAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICMg5qC85byP5YyW5Li65a2X56ym5Liy77yI5L+d55WZMeS9jeWwj+aVsO+8iQogICAgICAgICAgICAgICAgICAgIHZhbHVlX3N0ciA9IGYie3ZhbHVlOi4xZn0iCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgYWRkX2NlbGwoY3VycmVudF9yb3csIGNvbF9pZHgsIHZhbHVlX3N0cikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMg5aaC5p6c5rKh5pyJ5a2X5q615ZCN77yM5aGr5YWF56m65a2X56ym5LiyCiAgICAgICAgICAgICAgICBmb3IgY29sX2lkeCBpbiByYW5nZShsZW4odGltZV9zbG90cykpOgogICAgICAgICAgICAgICAgICAgIGFkZF9jZWxsKGN1cnJlbnRfcm93LCBjb2xfaWR4LCAiIikKICAgICAgICAgICAgY3VycmVudF9yb3cgKz0gMQoKICAgIHJldHVybiBjZWxscwoKCmRlZiBfbG9hZF90ZW1wZXJhdHVyZV9kYXRhKAogICAgdGltZV9zbG90czogTGlzdFtzdHJdLAogICAgc2VjdGlvbnM6IExpc3RbRGljdFtzdHIsIEFueV1dLAogICAgc3RhcnRfdGltZTogT3B0aW9uYWxbZGF0ZXRpbWVdLAogICAgZW5kX3RpbWU6IE9wdGlvbmFsW2RhdGV0aW1lXSwKKSAtPiBEaWN0W3N0ciwgRGljdFtzdHIsIGZsb2F0XV06CiAgICAiIiLku44gSW5mbHV4REIg5p+l6K+i5omA5pyJ5rWL6K+V6YOo5L2N5Zyo5ZCE5pe26Ze05q6155qE5bmz5Z2H5rip5bqmIiIiCiAgICBpZiBub3Qgc3RhcnRfdGltZSBvciBub3QgZW5kX3RpbWU6CiAgICAgICAgcmV0dXJuIHt9CiAgICAKICAgIGluZmx1eF91cmwgPSBvcy5lbnZpcm9uLmdldCgiSU5GTFVYX1VSTCIsICIiKS5zdHJpcCgpCiAgICBpbmZsdXhfb3JnID0gb3MuZW52aXJvbi5nZXQoIklORkxVWF9PUkciLCAiIikuc3RyaXAoKQogICAgaW5mbHV4X3Rva2VuID0gb3MuZW52aXJvbi5nZXQoIklORkxVWF9UT0tFTiIsICIiKS5zdHJpcCgpCiAgICBpbmZsdXhfYnVja2V0ID0gb3MuZW52aXJvbi5nZXQoIklORkxVWF9CVUNLRVQiLCAiIikuc3RyaXAoKQogICAgaW5mbHV4X21lYXN1cmVtZW50ID0gb3MuZW52aXJvbi5nZXQoIklORkxVWF9NRUFTVVJFTUVOVCIsICIiKS5zdHJpcCgpCiAgICAKICAgIGlmIG5vdCBhbGwoW2luZmx1eF91cmwsIGluZmx1eF9vcmcsIGluZmx1eF90b2tlbiwgaW5mbHV4X2J1Y2tldCwgaW5mbHV4X21lYXN1cmVtZW50XSk6CiAgICAgICAgcHJpbnQoIldhcm5pbmc6IEluZmx1eERCIGNvbmZpZ3VyYXRpb24gaW5jb21wbGV0ZSwgc2tpcHBpbmcgZGF0YSBxdWVyaWVzIiwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgIHJldHVybiB7fQogICAgCiAgICAjIOiuoeeul+aAu+aXtumVv++8iOWwj+aXtu+8iQogICAgdG90YWxfZHVyYXRpb24gPSAoZW5kX3RpbWUgLSBzdGFydF90aW1lKS50b3RhbF9zZWNvbmRzKCkgLyAzNjAwLjAKICAgIAogICAgIyDmlLbpm4bmiYDmnInpnIDopoHmn6Xor6LnmoTlrZfmrrUKICAgIGFsbF9maWVsZHM6IExpc3Rbc3RyXSA9IFtdCiAgICBmaWVsZF90b19lbnRyeTogRGljdFtzdHIsIERpY3Rbc3RyLCBBbnldXSA9IHt9CiAgICBmb3Igc2VjdGlvbiBpbiBzZWN0aW9uczoKICAgICAgICBlbnRyaWVzID0gc2VjdGlvbi5nZXQoImVudHJpZXMiKSBvciBbXQogICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGVudHJ5LCBkaWN0KToKICAgICAgICAgICAgICAgIGZpZWxkX25hbWUgPSBlbnRyeS5nZXQoImZpZWxkIiwgIiIpCiAgICAgICAgICAgICAgICBpZiBmaWVsZF9uYW1lOgogICAgICAgICAgICAgICAgICAgIGFsbF9maWVsZHMuYXBwZW5kKGZpZWxkX25hbWUpCiAgICAgICAgICAgICAgICAgICAgZmllbGRfdG9fZW50cnlbZmllbGRfbmFtZV0gPSBlbnRyeQogICAgCiAgICBpZiBub3QgYWxsX2ZpZWxkczoKICAgICAgICByZXR1cm4ge30KICAgIAogICAgIyDkuLrmr4/kuKrml7bpl7TmrrXmn6Xor6LmlbDmja4KICAgICMg5q+P5Liq5pe26Ze05q615L2/55So5LiO5YmN5LiA5Liq5pe26Ze05q615LiN6YeN5Y+g55qE5Yy66Ze077yI5aaCIDAuNWgg5p+l6K+iIFswaCwwLjVoXe+8jDFoIOafpeivoiBbMC41aCwxaF3vvIkKICAgIHRlbXBlcmF0dXJlX2RhdGE6IERpY3Rbc3RyLCBEaWN0W3N0ciwgZmxvYXRdXSA9IHt9CiAgICAKICAgICMg6K6h566X5q+P5Liq5pe26Ze05q6155qE6LW35aeL5ZKM57uT5p2f5YGP56e777yI5bCP5pe277yJCiAgICAjIOaXtumXtOWIu+W6pumHh+eUqOe0r+iuoeWGmeazle+8iDAuNWjjgIExaOOAgTEuNWjigKbvvInvvIzov5nph4zovazmjaLkuLrliY3ppojljLrpl7QgW3ByZXYsIGN1cnJlbnRdCiAgICBwcmV2X3Nsb3RfZW5kID0gMC4wCiAgICBmb3IgaWR4LCBzbG90X3N0ciBpbiBlbnVtZXJhdGUodGltZV9zbG90cyk6CiAgICAgICAgc2xvdF9ob3VycyA9IF9wYXJzZV90aW1lX3Nsb3Qoc2xvdF9zdHIpCiAgICAgICAgaWYgc2xvdF9ob3VycyA8PSAwOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgICMg6ZmQ5Yi25Zyo5a6e6aqM55qE5pyJ5pWI6IyD5Zu05YaFCiAgICAgICAgc2xvdF9lbmRfb2Zmc2V0ID0gbWluKHNsb3RfaG91cnMsIHRvdGFsX2R1cmF0aW9uKQogICAgICAgIHNsb3Rfc3RhcnRfb2Zmc2V0ID0gbWluKHByZXZfc2xvdF9lbmQsIHRvdGFsX2R1cmF0aW9uKQogICAgICAgIGlmIHNsb3RfZW5kX29mZnNldCA8PSBzbG90X3N0YXJ0X29mZnNldDoKICAgICAgICAgICAgcHJldl9zbG90X2VuZCA9IG1heChwcmV2X3Nsb3RfZW5kLCBzbG90X2VuZF9vZmZzZXQpCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgCiAgICAgICAgc2xvdF9zdGFydCA9IHN0YXJ0X3RpbWUgKyB0aW1lZGVsdGEoaG91cnM9c2xvdF9zdGFydF9vZmZzZXQpCiAgICAgICAgc2xvdF9lbmQgPSBzdGFydF90aW1lICsgdGltZWRlbHRhKGhvdXJzPXNsb3RfZW5kX29mZnNldCkKICAgICAgICAKICAgICAgICAjIOehruS/neS4jei2hei/h+aAu+e7k+adn+aXtumXtAogICAgICAgIGlmIHNsb3Rfc3RhcnQgPj0gZW5kX3RpbWU6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgc2xvdF9lbmQgPiBlbmRfdGltZToKICAgICAgICAgICAgc2xvdF9lbmQgPSBlbmRfdGltZQogICAgICAgIGlmIHNsb3Rfc3RhcnQgPj0gc2xvdF9lbmQ6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgCiAgICAgICAgIyDmn6Xor6Lmr4/kuKrlrZfmrrXlnKjlvZPliY3ml7bpl7TmrrXnmoTlubPlnYflgLwKICAgICAgICBmb3IgZmllbGRfbmFtZSBpbiBhbGxfZmllbGRzOgogICAgICAgICAgICBpZiBmaWVsZF9uYW1lIG5vdCBpbiB0ZW1wZXJhdHVyZV9kYXRhOgogICAgICAgICAgICAgICAgdGVtcGVyYXR1cmVfZGF0YVtmaWVsZF9uYW1lXSA9IHt9CiAgICAgICAgICAgIAogICAgICAgICAgICAjIOS9v+eUqOe0ouW8leS9nOS4umtlee+8jOWboOS4uuWPr+iDveaciemHjeWkjeeahOaXtumXtOWIu+W6pgogICAgICAgICAgICBzbG90X2tleSA9IGYie2lkeH1fe3Nsb3Rfc3RyfSIgICMg5L2/55So57Si5byVK+aXtumXtOWIu+W6puS9nOS4uuWUr+S4gGtleQogICAgICAgICAgICAKICAgICAgICAgICAgZW50cnkgPSBmaWVsZF90b19lbnRyeS5nZXQoZmllbGRfbmFtZSkKICAgICAgICAgICAgZW50cnlfZmlsdGVycyA9IGVudHJ5LmdldCgiZmlsdGVycyIpIGlmIGlzaW5zdGFuY2UoZW50cnksIGRpY3QpIGVsc2UgTm9uZQoKICAgICAgICAgICAgdmFsdWUgPSBfcXVlcnlfaW5mbHV4ZGIoCiAgICAgICAgICAgICAgICBmaWVsZF9uYW1lLAogICAgICAgICAgICAgICAgc2xvdF9zdGFydCwKICAgICAgICAgICAgICAgIHNsb3RfZW5kLAogICAgICAgICAgICAgICAgaW5mbHV4X3VybCwKICAgICAgICAgICAgICAgIGluZmx1eF9vcmcsCiAgICAgICAgICAgICAgICBpbmZsdXhfdG9rZW4sCiAgICAgICAgICAgICAgICBpbmZsdXhfYnVja2V0LAogICAgICAgICAgICAgICAgaW5mbHV4X21lYXN1cmVtZW50LAogICAgICAgICAgICAgICAgZmlsdGVycz1lbnRyeV9maWx0ZXJzIGlmIGVudHJ5X2ZpbHRlcnMgZWxzZSBOb25lLAogICAgICAgICAgICApCiAgICAgICAgICAgIAogICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHRlbXBlcmF0dXJlX2RhdGFbZmllbGRfbmFtZV1bc2xvdF9rZXldID0gdmFsdWUKICAgICAgICAKICAgICAgICBwcmV2X3Nsb3RfZW5kID0gc2xvdF9lbmRfb2Zmc2V0CiAgICAKICAgIHJldHVybiB0ZW1wZXJhdHVyZV9kYXRhCgoKZGVmIGJ1aWxkX3RlbXBlcmF0dXJlX3RhYmxlKF86IERpY3Rbc3RyLCBBbnldKSAtPiBEaWN0W3N0ciwgQW55XToKICAgIHRva2VuID0gb3MuZW52aXJvbi5nZXQoIlRBQkxFX1RPS0VOIiwgInNjcmlwdFRhYmxlMSIpCiAgICByb3dfb2Zmc2V0ID0gaW50KG9zLmVudmlyb24uZ2V0KCJUQUJMRV9TVEFSVF9ST1ciLCAiMCIpIG9yIDApCiAgICBjb2xfb2Zmc2V0ID0gaW50KG9zLmVudmlyb24uZ2V0KCJUQUJMRV9TVEFSVF9DT0wiLCAiMCIpIG9yIDApCiAgICBtb3Rvcl9zcGVlZCA9IG9zLmVudmlyb24uZ2V0KCJUQUJMRV9NT1RPUl9TUEVFRCIsICI5ODBSUE0iKQogICAgCiAgICAjIOino+aekOWunumqjOaXtumXtOiMg+WbtAogICAgc3RhcnRfc3RyID0gb3MuZW52aXJvbi5nZXQoIkVYUEVSSU1FTlRfU1RBUlQiLCAiIikuc3RyaXAoKQogICAgZW5kX3N0ciA9IG9zLmVudmlyb24uZ2V0KCJFWFBFUklNRU5UX0VORCIsICIiKS5zdHJpcCgpCiAgICBzdGFydF90aW1lOiBPcHRpb25hbFtkYXRldGltZV0gPSBOb25lCiAgICBlbmRfdGltZTogT3B0aW9uYWxbZGF0ZXRpbWVdID0gTm9uZQogICAgCiAgICBpZiBzdGFydF9zdHI6CiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIOaUr+aMgeWkmuenjeaXtumXtOagvOW8jwogICAgICAgICAgICBmb3IgZm10IGluIFsiJVktJW0tJWRUJUg6JU06JVNaIiwgIiVZLSVtLSVkVCVIOiVNOiVTIiwgIiVZLSVtLSVkICVIOiVNOiVTIl06CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc3RhcnRfdGltZSA9IGRhdGV0aW1lLnN0cnB0aW1lKHN0YXJ0X3N0ciwgZm10KQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgcHJpbnQoZiJXYXJuaW5nOiBGYWlsZWQgdG8gcGFyc2UgRVhQRVJJTUVOVF9TVEFSVCAne3N0YXJ0X3N0cn0nOiB7ZX0iLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAKICAgIGlmIGVuZF9zdHI6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmb3IgZm10IGluIFsiJVktJW0tJWRUJUg6JU06JVNaIiwgIiVZLSVtLSVkVCVIOiVNOiVTIiwgIiVZLSVtLSVkICVIOiVNOiVTIl06CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZW5kX3RpbWUgPSBkYXRldGltZS5zdHJwdGltZShlbmRfc3RyLCBmbXQpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBwcmludChmIldhcm5pbmc6IEZhaWxlZCB0byBwYXJzZSBFWFBFUklNRU5UX0VORCAne2VuZF9zdHJ9Jzoge2V9IiwgZmlsZT1zeXMuc3RkZXJyKQoKICAgIHRpbWVfc2xvdHMgPSBfdGltZV9zbG90cygpCiAgICBzZWN0aW9ucyA9IF9kZWZhdWx0X3NlY3Rpb25zKCkKICAgIAogICAgIyDmn6Xor6LmuKnluqbmlbDmja4KICAgIHRlbXBlcmF0dXJlX2RhdGEgPSBfbG9hZF90ZW1wZXJhdHVyZV9kYXRhKHRpbWVfc2xvdHMsIHNlY3Rpb25zLCBzdGFydF90aW1lLCBlbmRfdGltZSkKICAgIAogICAgIyDliKTmlq3mmK/lkKbpnIDopoHkvb/nlKjpu5jorqTlgLwKICAgICMg6buY6K6k5oOF5Ya15LiL77yM5aaC5p6c5p+l6K+i5LiN5Yiw5pWw5o2u5bCx5L2/55So6buY6K6k5YC85aGr5YWFCiAgICB1c2VfZGVmYXVsdHMgPSBUcnVlCiAgICBpZiB0ZW1wZXJhdHVyZV9kYXRhOgogICAgICAgICMg5qOA5p+l5piv5ZCm5pyJ5Lu75L2V5a2X5q615pyJ5pWw5o2uCiAgICAgICAgaGFzX2RhdGEgPSBhbnkoCiAgICAgICAgICAgIHNsb3RfZGF0YSBhbmQgbGVuKHNsb3RfZGF0YSkgPiAwIAogICAgICAgICAgICBmb3Igc2xvdF9kYXRhIGluIHRlbXBlcmF0dXJlX2RhdGEudmFsdWVzKCkKICAgICAgICApCiAgICAgICAgIyDljbPkvb/mnInpg6jliIbmlbDmja7vvIzkuZ/lhYHorrjkvb/nlKjpu5jorqTlgLzloavlhYXnvLrlpLHnmoTmlbDmja4KICAgICAgICAjIHVzZV9kZWZhdWx0cyDkuLvopoHnlKjkuo7mjqfliLbmmK/lkKblnKjmsqHmnInlrZfmrrXlkI3ml7bkuZ/loavlhYXpu5jorqTlgLwKICAgICAgICB1c2VfZGVmYXVsdHMgPSBub3QgaGFzX2RhdGEKICAgIAogICAgIyDlpoLmnpzmsqHmnInml7bpl7TojIPlm7TvvIzlvLrliLbkvb/nlKjpu5jorqTlgLwKICAgIGlmIG5vdCBzdGFydF90aW1lIG9yIG5vdCBlbmRfdGltZToKICAgICAgICB1c2VfZGVmYXVsdHMgPSBUcnVlCiAgICAKICAgIGNlbGxzID0gX2J1aWxkX2NlbGxzKAogICAgICAgIHRpbWVfc2xvdHMsIAogICAgICAgIHNlY3Rpb25zLCAKICAgICAgICBtb3Rvcl9zcGVlZCwgCiAgICAgICAgc3RhcnRfdGltZSwgCiAgICAgICAgZW5kX3RpbWUsIAogICAgICAgIHRlbXBlcmF0dXJlX2RhdGEsCiAgICAgICAgdXNlX2RlZmF1bHRzPXVzZV9kZWZhdWx0cwogICAgKQoKICAgIHJldHVybiB7CiAgICAgICAgInRva2VuIjogdG9rZW4sCiAgICAgICAgInN0YXJ0Um93Ijogcm93X29mZnNldCwKICAgICAgICAic3RhcnRDb2wiOiBjb2xfb2Zmc2V0LAogICAgICAgICJjZWxscyI6IGNlbGxzLAogICAgfQoKCmRlZiBtYWluKCkgLT4gaW50OgogICAgdHJ5OgogICAgICAgIHRyeToKICAgICAgICAgICAgc3lzLnN0ZG91dC5yZWNvbmZpZ3VyZShlbmNvZGluZz0idXRmLTgiKSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHBhc3MKCiAgICAgICAgcGF5bG9hZCA9IF9sb2FkX3BheWxvYWQoKQogICAgICAgIHRhYmxlX3NwZWMgPSBidWlsZF90ZW1wZXJhdHVyZV90YWJsZShwYXlsb2FkKQogICAgICAgIHJlc3VsdCA9IHsidGFibGVzIjogW3RhYmxlX3NwZWNdfQogICAgICAgIHByaW50KGpzb24uZHVtcHMocmVzdWx0LCBlbnN1cmVfYXNjaWk9RmFsc2UpKQogICAgICAgIHJldHVybiAwCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICBwcmludChmImVycm9yOiB7ZXhjfSIsIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICByZXR1cm4gMQoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBzeXMuZXhpdChtYWluKCkpCgo=",
|
|
"scriptName": "temperature_table.py",
|
|
"remark": "备注信息1"
|
|
},
|
|
"configService": {
|
|
"host": "127.0.0.1",
|
|
"port": 5000,
|
|
"configPath": "config.json"
|
|
}
|
|
} |