diff --git a/dist/MANIFEST.txt b/dist/MANIFEST.txt index e0d1b02..1736560 100644 --- a/dist/MANIFEST.txt +++ b/dist/MANIFEST.txt @@ -9,37 +9,37 @@ Hash: SHA512 "signedByOrgName": "Tencent", "rootUrls": [], "plugin": "tencentcloud-monitor-app", - "version": "2.8.5", - "time": 1690859500414, + "version": "2.8.6", + "time": 1692173526048, "keyId": "7e4d0c6a708866e7", "files": { "datasource/config-editor/config.html": "110380b35165fcfcffa797ab6841e9621bf5135881fa5e94f5f316a0600b5796", - "datasource/tencentcloud-monitor-app-backend_darwin_amd64": "050b6e8264edd7f6955ac0d8ca985b59e0f1bc322dec83ef0c7b6acdbcf54852", + "datasource/tencentcloud-monitor-app-backend_darwin_amd64": "014b102aadb81e4883d70160a97cf47d0bc8144278a572c5400e6562f44b764c", "datasource/module.js.LICENSE.txt": "0d8f66cd4afb566cb5b7e1540c68f43b939d3eba12ace290f18abc4f4cb53ed0", - "datasource/tencentcloud-monitor-app-backend_linux_arm64": "e82f8111452c3e97a2bcddc50b373a296510fa3cfd3a9de8c5a340213dd8b492", - "datasource/module.js.map": "512174f65239b40c1ddf23239ba60ef3baa219e7612c66650c506022744df60a", + "datasource/tencentcloud-monitor-app-backend_linux_arm64": "b294c146e720b3b32c31a29f7f050289bbca4f5040a1ce82f3d4cb20171c312a", + "datasource/module.js.map": "00a4bb7b195676932d809bc380cc9f63d4b1655814c27390c0ca6967297a21fa", "datasource/plugin.json": "674e6482bf2c91afe44591bcbee6341bdf7a90d795186f7d58140b4a40a44c48", "datasource/img/tencent-cloud.svg": "572e1abf6d2a4be854845b55219e8d0661f79b325f0659b5439dddb37a304a8a", - "datasource/tencentcloud-monitor-app-backend_linux_arm": "79d9e0fa633c254634a10b8b33e7972a83d58ff4552411ce61509d44b1239e13", + "datasource/tencentcloud-monitor-app-backend_linux_arm": "d67866228c1dcdadbf537c5020579f95881f310ee48215e718925454fa773cdf", "datasource/query-ctrl/partials/query.editor.html": "443d863f1d1c9295467da9a4290d16e9211699d034502b76605ebf41b61a4011", - "datasource/module.js": "1134392f98a7ac5079b8479dbb73f7b91d3a32c741ab8e5f8b059898dce75077", - "datasource/tencentcloud-monitor-app-backend_windows_amd64.exe": "8668218308b9eabb7290e87b1f46bb06d2f468cf5789bb83a4f63cf46d4a5b24", - "datasource/tencentcloud-monitor-app-backend_linux_amd64": "86c8fe18f95a70707dba508455369b104da16cf8698c4f66eb255c481245c5f9", - "datasource/tencentcloud-monitor-app-backend_darwin_arm64": "1fbafc2c3aaa7e97937acc469e1d7d7637e05503084e83e788ed897aaafb4a19", + "datasource/module.js": "aeeac3d0e129dae5cd13b881df63c23b02c9a86dcc78061112250ff40ba8a282", + "datasource/tencentcloud-monitor-app-backend_windows_amd64.exe": "73109bc2e2a20a5e4f00c1bd600310d86f866b25d306edb27c19290ec55ab82f", + "datasource/tencentcloud-monitor-app-backend_linux_amd64": "fca39eeca93cc713bf258acd8913d6294a14c520a7aa0d29b55575cf31f24d75", + "datasource/tencentcloud-monitor-app-backend_darwin_arm64": "436f0c75d79736b104007be1dce5b51707542518d079e4974b65c435c3b2071f", "LICENSE": "7d90d87fbfbc9369eb627fd38811e01dfd955d72269d5039e7c6119372baa1e3", "CHANGELOG.md": "0596a172e06ba90b28ef8887553a6e97320a3bd01f77d81e8b3face21c848163", - "module.js.map": "0783dfd005941a5256efa4917abfa8a65b6ef15fb246f3cc3e1ea2f0bb649aea", + "module.js.map": "d52f6db4e8d4f2fbb82ebf1cdeed76adef4ea6b20c26dbf978488f3bbbf6644b", "image/datasource-config.png": "e31ceec33c6454f6335850791f9b35fc2be56a4e43dfc11a75435e16f025dc0f", "image/variable-region-config.png": "d46215b565d2b851855fb48bf7ee73ef696e3b8cfc671a376743faa39b193f3c", "image/variable-panel-query.png": "e17f91280df34695d7be10b3e355b6c91d4b43404243529dc7e75d1f9a8605fa", "image/variable-cvm-dashboard.png": "f97220e1230b83b0110f7e11468538b44c48d8b70906509f5153f8895ed02653", - "plugin.json": "a50783b7b4fa6f86cbd9eb7a5f90ba4b6abf3f377e1040506337d46f6780a3fa", + "plugin.json": "530642075f5ddbc6f59c81e70ea5f9a0b3ffc1f6895710b6c16de54537f9f725", "README.md": "6510f9156c1d9198895cb8dcce1f137ac88292d0ce922c5f31bbb19af76e78c6", "img/tencent-cloud.svg": "572e1abf6d2a4be854845b55219e8d0661f79b325f0659b5439dddb37a304a8a", - "components/config.js": "901e71010aa61627fd40203c2f74e58b0ac2c41b64b29874c5925376f8329d5f", - "components/config.js.map": "67209cd61e285e6c800157e5720802057142da223ee7fc11ff374d5d80058a81", + "components/config.js": "9b7fa378e0e995486f5d1ee55ed108c412438f750a98ec82592df1e8d0177507", + "components/config.js.map": "b82ac49248b25a97ad9fb0d9e67856da5f5e6e430d7d7ef301fdd09a057955e9", "components/config.html": "851e7cf915df590befbe6a56bf9bf4a17083de46ef93246a0bc6214d7be13464", - "module.js": "bd9c423ad647aef96407ca6c49f4566b3a24e4afabd7d1def1b9518c0c456919", + "module.js": "7f5fa045df7d48411a191e9a0a24a088595ca652897572635486df4c44e5c867", "dashboards/example_redis_mem_en_dashboard.json": "66bde7943e04a3a42048535206d273c303e345a6bf5d57e6a1bc818e8799d360", "dashboards/example_logService_clb_en_dashboard.json": "c6545c6b884ed84851d0e933badcd79a55fc85c2baf8487135f63b1105083fa2", "dashboards/example_lb_dashboard.json": "9884b63f52a1564a57edf79626dfee97f0e0e80bcaa321cffcf747054204ca43", @@ -80,10 +80,10 @@ Hash: SHA512 Version: OpenPGP.js v4.10.10 Comment: https://openpgpjs.org -wrkEARMKAAYFAmTId+wAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq -cIhm54N5AgkBLnTo9xJJoS5mD1eN4DpUaD9Yrc1KjGmyMTBbp2dNonEisVEo -61NxFu/1h/GMldTkZrbpmjkSYLO4KTiaaDxRjkgCCQFz6BijxfBkbvqtr85i -W4z46O+10DELFTTIc09TNP6WcIAhi6H6XRY3H6SIDJliuaVf17/MjD3p82tZ -wbyiIIOfsw== -=Bxjh +wrkEARMKAAYFAmTchNYAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq +cIhm5/4/AgkBEuoIpWKevOiLARbyrzLDa4eztImvglb9WNLJbnUhFmPrL40n +qijUSzoCoPwEyfb5xhVf5w9gq9k4YFP2tjmvq7ACCQHHY9ju7c1Y2JNLNc/+ +nnqfX8lHyrll/1kX4ZUozf4pyz01fJe0mBC2J8wlYtHXsowThqYsNzuCeUIm +IS2zEV91xA== +=pH9Q -----END PGP SIGNATURE----- diff --git a/dist/components/config.js b/dist/components/config.js index 2d439da..07b4eb0 100644 --- a/dist/components/config.js +++ b/dist/components/config.js @@ -1,2 +1,2 @@ -define("TencentCloudMonitorGrafanaApp",["lodash","app/core/core_module","@grafana/data","@grafana/runtime","moment"],(function(e,t,n,r,i){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=195)}([function(t,n){t.exports=e},function(e,t,n){"use strict";var r={language:"语言",enable_intranet_API_mode:"开启内网API模式",cloud_database:"云数据库",cloud_load_balancer:"负载均衡",virtual_private_cloud:"私有网络",content_delivery_network:"内容分发网络",message_queue:"消息队列",direct_connect:"专线接入",cloud_physical_machine:"黑石物理服务器",elastic_mapReduce:"弹性 MapReduce",edge_computing_machine:"边缘计算机器",RUM:"前端性能监控(RUM)",CLS:"日志服务(CLS)",CVM:"云服务器(CVM)",CDB:"云数据库 MySQL(CDB)",CMONGO:"云数据库 MongoDB(CMONGO)",POSTGRES:"云数据库 PostgreSQL(POSTGRES)",REDIS:"云数据库 Redis(REDIS)",REDIS_MEM:"云数据库 Redis内存版(5s)(REDIS_MEM)",SQLSERVER:"云数据库 SQL Server(SQLSERVER)",CYNOSDB_MYSQL:"云数据库 CYNOSDB_MYSQL(CYNOSDB_MYSQL)",TCAPLUS:"云数据库 TcaplusDB(TCAPLUS)",TDMYSQL:"分布式数据库 TDSQL MySQL(TDMYSQL)",PCX:"私有网络-对等连接(PCX)",BWP:"私有网络-带宽包(BWP)",NAT_GATEWAY:"私有网络-NAT 网关(NAT_GATEWAY)",VPNGW:"私有网络-VPN 网关(VPNGW)",VPNX:"私有网络-VPN 通道(VPNX)",DCG:"私有网络-专线网关(DCG)",CEIP_SUMMARY:"私有网络-Anycast 弹性公网IP(CEIP_SUMMARY)",VPC_NET_DETECT:"私有网络-网络探测(VPC_NET_DETECT)",VBC:"私有网络-云联网(VBC)",LB:"私有网络-弹性公网IP(LB)",LB_PUBLIC:"公网负载均衡监控指标(LB_PUBLIC)",LB_PRIVATE:"内网负载均衡四层协议监控指标(LB_PRIVATE)",LOADBALANCE:"内网负载均衡七层协议监控指标(LOADBALANCE)",CDN:"国内域名(CDN)",CDN_LOG_DATA:"省份域名(CDN_LOG_DATA)",OV_CDN:"国外域名(OV_CDN)",SCF_V2:"云函数(SCF)",CFS:"文件存储(CFS)",COS:"对象存储(COS)",CKAFKA:"消息队列 CKafka(CKAFKA)",CMQ:"消息队列-队列服务监控(CMQ)",CMQTOPIC:"消息队列-主题订阅监控(CMQTOPIC)",TDMQ:"消息队列 Pulsar 版(TDMQ)",TDMQ_ROCKETMQ:"消息队列 RocketMQ 版(ROCKETMQ)",TDMQ_RABBITMQ:"消息队列 RabbitMQ 版(RABBITMQ)",DCX:"专线接入-专用通道(DCX)",DC:"专线接入-物理专线(DC)",CPM:"黑石物理服务器(CPM)",BM_PCX:"黑石对等连接(BM_PCX)",BM_LB:"黑石外网负载均衡(BM_LB)",BM_INTRA_LB:"黑石内网负载均衡(BM_INTRA_LB)",CES:"Elasticsearch指标(CES)",BLOCK_STORAGE:"云硬盘(BLOCK_STORAGE)",APIGATEWAY:"API 网关(APIGATEWAY)",QAAP:"全球应用加速(GAAP)",ECM:"边缘计算和网络监控(ECM)",ECM_BLOCK_STORAGE:"边缘计算存储监控(ECM_BLOCK_STORAGE)",ECM_LB:"边缘计算负载均衡(ECM_LB)",GSE:"游戏服务器伸缩(GSE)",TKE:"容器服务(TKE)",ECDN:"全站加速网络(ECDN)",WAF:"Web 应用防火墙(WAF)",multi_scene:"多场景版",lite:"精简版",cloud_monitor:"云监控",cloud_log_service:"日志服务",real_user_monitoring:"前端性能监控",region:"地域",log_topic:"日志主题",search_statement:"检索语句",time_unit:"Time unit",seconds:"seconds",search_description:"按照具体的查询条件搜索实例,默认拉取前 20 条实例","ap-guangzhou":"华南地区(广州)","ap-shenzhen-fsi":"华南地区(深圳金融)","ap-guangzhou-open":"华南地区(广州OPEN)","ap-shenzhen":"华南地区(深圳)","ap-qingyuan":"华南地区(清远)","ap-shanghai":"华东地区(上海)","ap-shanghai-fsi":"华东地区(上海金融)","ap-jinan-ec":"华东地区(济南)","ap-hangzhou-ec":"华东地区(杭州)","ap-nanjing":"华东地区(南京)","ap-fuzhou-ec":"华东地区(福州)","ap-hefei-ec":"华东地区(合肥)","ap-beijing":"华北地区(北京)","ap-tianjin":"华北地区(天津)","ap-beijing-fsi":"华北地区(北京金融)","ap-shijiazhuang-ec":"华北地区(石家庄)","ap-wuhan-ec":"华中地区(武汉)","ap-changsha-ec":"华中地区(长沙)","ap-zhengzhou-ec":"华中地区(郑州)","ap-chengdu":"西南地区(成都)","ap-chongqing":"西南地区(重庆)","ap-xian-ec":"西北地区(西安)","ap-shenyang-ec":"东北地区(沈阳)","ap-taipei":"港澳台地区(中国台北)","ap-hongkong":"港澳台地区(中国香港)","ap-seoul":"亚太东北(首尔)","ap-tokyo":"亚太东北(东京)","ap-singapore":"亚太东南(新加坡)","ap-bangkok":"亚太东南(曼谷)","ap-jakarta":"亚太东南(雅加达)","na-siliconvalley":"美国西部(硅谷)","eu-frankfurt":"欧洲地区(法兰克福)","eu-moscow":"欧洲地区(莫斯科)","ap-mumbai":"亚太南部(孟买)","na-ashburn":"美国东部(弗吉尼亚)","sa-saopaulo":"南美地区(圣保罗)","na-toronto":"北美地区(多伦多)"},i={language:"Language",enable_intranet_API_mode:"Enable Intranet API Mode",cloud_database:"Cloud Database",cloud_load_balancer:"Cloud Load Balancer",virtual_private_cloud:"Virtual Private Cloud",content_delivery_network:"Content Delivery Network",message_queue:"Message Queue",direct_connect:"Direct Connect",cloud_physical_machine:"Cloud Physical Machine",elastic_mapReduce:"Elastic MapReduce",edge_computing_machine:"Edge Computing Machine",RUM:"Real User Monitoring(RUM)",CLS:"Cloud Log Service(CLS)",CVM:"Cloud Virtual Machine(CVM)",CDB:"TencentDB for MySQL(CDB)",CMONGO:"TencentDB for MongoDB(CMONGO)",POSTGRES:"TencentDB for PostgreSQL(POSTGRES)",REDIS:"TencentDB for Redis(REDIS)",REDIS_MEM:"TencentDB for Redis(Memory Edition, 5-Second)(REDIS_MEM)",SQLSERVER:"TencentDB for SQL Server(SQLSERVER)",CYNOSDB_MYSQL:"TencentDB for CYNOSDB_MYSQL(CYNOSDB_MYSQL)",TCAPLUS:"TencentDB for TcaplusDB(TCAPLUS)",TDMYSQL:"TDSQL for MySQL(TDMYSQL)",PCX:"Peering Connection(PCX)",BWP:"Bandwidth Packet(BWP)",NAT_GATEWAY:"NAT Gateway(NAT_GATEWAY)",VPNGW:"VPN Gateway(VPNGW)",VPNX:"VPN Tunnel(VPNX)",DCG:"Direct Connect Gateway(DCG)",CEIP_SUMMARY:"Anycast EIP(CEIP_SUMMARY)",VPC_NET_DETECT:"Network Detection(VPC_NET_DETECT)",VBC:"Cloud Connect Network(VBC)",LB:"Elastic IP(LB)",LB_PUBLIC:"Public Network CLB(LB_PUBLIC)",LB_PRIVATE:"Private Network CLB Layer-4 Protocol(LB_PRIVATE)",LOADBALANCE:"Private Network CLB Layer-7 Protocol(LOADBALANCE)",CDN:"Chinese Mainland Domain(CDN)",CDN_LOG_DATA:"Province(CDN_LOG_DATA)",OV_CDN:"Overseas Domain(OV_CDN)",SCF_V2:"Serverless Cloud Function(SCF)",CFS:"Cloud File Storage(CFS)",COS:"Cloud Object Storage(COS)",CKAFKA:"Message Queue CKafka(CKAFKA)",CMQ:"Message Queue for Queue Service(CMQ)",CMQTOPIC:"Message Queue for Topic Subscription(CMQTOPIC)",TDMQ:"Tencent Distributed Message Queue for Pulsar(TDMQ)",TDMQ_ROCKETMQ:"Tencent Distributed Message Queue for RocketMQ(ROCKETMQ)",TDMQ_RABBITMQ:"Tencent Distributed Message Queue for RabbitMQ(RABBITMQ)",DCX:"Direct Connect for Dedicated Tunnel(DCX)",DC:"Direct Connect for Connection(DC)",CPM:"Cloud Physical Machine(CPM)",BM_PCX:"Cloud Physical Machine for Peering Connection(BM_PCX)",BM_LB:"Cloud Physical Machine for Public Network CLB(BM_LB)",BM_INTRA_LB:"Cloud Physical Machine for Private Network CLB(BM_INTRA_LB)",CES:"Elasticsearch Service(CES)",BLOCK_STORAGE:"Cloud Block Storage(BLOCK_STORAGE)",APIGATEWAY:"API Gateway(APIGATEWAY)",QAAP:"Global Application Acceleration Platform(GAAP)",ECM:"Edge Computing Machine for Computation and Networking(ECM)",ECM_BLOCK_STORAGE:"Edge Computing Machine for Block Storage(ECM_BLOCK_STORAGE)",ECM_LB:"Edge Computing Machine for Layer-4 CLB(ECM_LB)",GSE:"Game Server Elastic-scaling(GSE)",TKE:"Tencent Kubernetes Engine(TKE)",ECDN:"Enterprise Content Delivery Network(ECDN)",WAF:"Web Application Firewall(WAF)",multi_scene:"Multi-Scene",lite:"Lite",cloud_monitor:"Cloud Monitor",cloud_log_service:"Cloud Log Service",real_user_monitoring:"Real User Monitoring",region:"Region",log_topic:"Log Topic",search_statement:"Search Statement",time_unit:"Time unit",seconds:"seconds",search_description:"Search for instances according to specific query conditions, and pull the first 20 instances by default","ap-guangzhou":"South China(Guangzhou)","ap-shenzhen-fsi":"South China(Shenzhen Finance)","ap-guangzhou-open":"South China(Guangzhou OPEN)","ap-shenzhen":"South China(Shenzhen)","ap-qingyuan":"South China(Qingyuan)","ap-shanghai":"East China(Shanghai)","ap-shanghai-fsi":"East China(Shanghai Finance)","ap-jinan-ec":"East China(Jinan)","ap-hangzhou-ec":"East China(Hangzhou)","ap-nanjing":"East China(Nanjing)","ap-fuzhou-ec":"East China(Fuzhou)","ap-hefei-ec":"East China(Hefei)","ap-beijing":"North China region(Beijing)","ap-tianjin":"North China region(Tianjin)","ap-beijing-fsi":"North China region(Beijing Finance)","ap-shijiazhuang-ec":"North China region(Shijiazhuang)","ap-wuhan-ec":"Central China(Wuhan)","ap-changsha-ec":"Central China(Changsha)","ap-zhengzhou-ec":"Central China(Zhengzhou)","ap-chengdu":"Southwest China(Chengdu)","ap-chongqing":"Southwest China(Chongqing)","ap-xian-ec":"Northwest region(Xi'an)","ap-shenyang-ec":"Northeast China(Shenyang)","ap-taipei":"Hong Kong, Macau and Taiwan (China)(Taipei, China)","ap-hongkong":"Hong Kong, Macau and Taiwan (China)(Hong Kong, China)","ap-seoul":"Northeast Asia(Seoul)","ap-tokyo":"Northeast Asia(Tokyo)","ap-singapore":"Southeast Asia(Singapore)","ap-bangkok":"Southeast Asia(Bangkok)","ap-jakarta":"Southeast Asia(Jakarta)","na-siliconvalley":"US West(Silicon Valley)","eu-frankfurt":"Europe(Frankfurt)","eu-moscow":"Europe(Northeastern Europe)","ap-mumbai":"South Asia(Mumbai)","na-ashburn":"US East(Virginia)","sa-saopaulo":"South America(São Paulo)","na-toronto":"North America(Toronto)"};n.d(t,"a",(function(){return o})),n.d(t,"d",(function(){return c})),n.d(t,"c",(function(){return s})),n.d(t,"b",(function(){return u}));var o,a="zh-CN";!function(e){e.Chinese="zh-CN",e.English="en-US"}(o||(o={}));var c=function(e){return a===o.Chinese?r[e]:i[e]},s=function(e){a=e},u=function(){return a}},function(e,t,n){"use strict";var r=n(0),i=n.n(r),o=n(187),a=n.n(o),c=n(19),s=n(67),u=n.n(s),l=function(){return(l=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&-1===t._InstanceAliasValue.indexOf(r[o].timeshift)&&(t._InstanceAliasValue+="_".concat(r[o].timeshift)),t[e]=d.getDimensionsVal(t,p,y),d.checkKeys.length>0&&d.checkKeys.forEach((function(n){t[n]=t[e]})),n[e]={Name:e,Value:t[e]},[2]}}))},d=this,m=0,y=e,g.label=1;case 1:return m0){var r=i.a.cloneDeep(t);return r[n].timeshift="",m(m([],e,!0),[r,t],!1)}return m(m([],e,!0),[t],!1)}),[]).map((function(r){return d(t,void 0,void 0,(function(){var t,o,l,p,d,m,y,h,g,v,b,I,D=this;return f(this,(function(f){switch(f.label){case 0:return t=Object(c.j)(this.templateSrv,e.scopedVars,r[n].instance,!0),[4,s.a.getInstance(this.service)];case 1:o=f.sent(),l=Object(u.c)(r[n].timeshift),t=[].concat(t).map((function(e){var t,n;try{return JSON.parse(e)}catch(r){return o?null!==(n=i.a.cloneDeep(o.find((function(t){return t[D.templateQueryIdMap.instance]===e}))))&&void 0!==n?n:{}:null===(t=D.getDefaultInsObj)||void 0===t?void 0:t.call(D,e)}})),p=Object(c.j)(this.templateSrv,e.scopedVars,r[n].region,!1),d=[],m=0,y=t,f.label=2;case 2:return m=g)return(null==f?void 0:f.response)?f.response(r):r;var v=Object(c.k)(g,(null==o?void 0:o.Limit)||100),b=[];return i.a.forEach(v,(function(r){b.push(n.getInstances(e,p(p({},r),t)))})),Promise.all(b).then((function(e){return i.a.forEach(e,(function(e){r=i.a.concat(r,e)})),(null==f?void 0:f.response)?f.response(r):r})).catch((function(e){return(null==f?void 0:f.response)?f.response(r):r}))}))},e.prototype.isValidConfigField=function(e){return e&&e.length>0},e.prototype.testDatasource=function(){var e=this;return this.isValidConfigField(this.secretId)?Promise.all([this.getRegions(),this.getMetrics(),this.getInstances("ap-guangzhou",{Offset:0,Limit:1})]).then((function(t){var n=i.a.get(t,"[0].Error",{}),r=i.a.get(t,"[1].Error",{}),o=i.a.get(t,"[2].Error",{}),a=i.a.get(n,"Code",""),c=i.a.get(r,"Code",""),s=i.a.get(o,"Code","");if(a||c||s){var u=[];a&&u.push(i.a.get(n,"Code")),c&&u.push(i.a.get(r,"Code")),s&&u.push(i.a.get(o,"Code"));var l=i.a.join(i.a.compact(i.a.uniq(u)),"; ");return{service:e.service,status:"error",message:l}}return{namespace:e.namespace,service:e.service,status:"success",message:"Successfully queried the ".concat(e.service," service."),title:"Success"}})).catch((function(t){var n="".concat(e.service," service:");return n+=t.statusText?t.statusText+"; ":"",i.a.get(t,"data.error.code","")?n+=t.data.error.code+". "+t.data.error.message:i.a.get(t,"data.error","")?n+=t.data.error:i.a.get(t,"data","")?n+=t.data:n+="Cannot connect to ".concat(e.service," service."),{service:e.service,status:"error",message:n}})):{service:this.service,status:"error",message:"The SecretId/SecretKey field is required."}},e.prototype.doRequest=function(e,t,n){return void 0===n&&(n={}),d(this,void 0,void 0,(function(){return f(this,(function(r){switch(r.label){case 0:return[4,Object(c.c)(e,t,n,this.secretId,this.instanceSettings.id,this.backendSrv)];case 1:return e=r.sent(),[2,this.backendSrv.datasourceRequest(e).then((function(e){return i.a.get(e,"data.Response",{})})).catch((function(e){throw e}))]}}))}))},e}()},function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"d",(function(){return p})),n.d(t,"b",(function(){return d})),n.d(t,"f",(function(){return f})),n.d(t,"e",(function(){return m})),n.d(t,"c",(function(){return y}));var r=n(0),i=n.n(r),o=n(19),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(t?r.push({Name:o,Values:i.a.uniq(e).slice(0,5)}):n[o]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t?r.push({Name:o,Values:i.a.get(e,"value",[]).slice(0,5)}):n[o]=i.a.get(e,"value")):null!=e&&""!==e&&(t?r.push({Name:o,Values:e}):n[o]=e)})),t&&r.length>0)return n.Filters=r,n}return n}function d(e){return i.a.get(i.a.find(o.SERVICES,(function(t){return t.service===e})),"namespace")}function f(e){return e.reduce((function(e,t){var n=t.namespace,r=t.label,i=t.groupName,o=void 0===i?r:i,a=e.find((function(e){return e.label===o}));return a?(a.items.push({label:r,value:n}),e):(e.push({label:o,value:o,items:[{label:r,value:n}]}),e)}),[]).map((function(e){return 1===e.items.length?{label:e.items[0].label,value:e.items[0].value}:e}))}var m=function(e,t,n){try{var r=JSON.parse(e),i=JSON.parse(t);return r[n]===i[n]}catch(n){return e===t}},y=function(e){var t=/^(\d+)([d|h|m|s])$/.exec(e);if(!t)return 0;var n=parseInt(t[1],10);switch(t[2]){case"d":return 86400*n*1e3;case"h":return 3600*n*1e3;case"m":return 60*n*1e3;case"s":return 1e3*n}return 0}},,function(e,n){e.exports=t},function(e,t,n){"use strict";n.r(t);var r=n(6),i=n.n(r),o=n(2);t.default=function(e,t){var n,r,a=(n=t,function(){function e(e,t){Object.assign(e,n),e.getDropdown=function(t){var n=Object(o.f)(e.namespace);return e.datasource.getFilterDropdown(n,{field:t,region:e.region})}}return e.$inject=["$scope","$rootScope"],e}());i.a.directive(e,(r=a,function(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n',controller:r,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}))}},function(e,t,n){"use strict";var r=function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["InstanceId","InstanceName"],u=["TopicId","TopicName"],l={instance:"InstanceId",topicId:"TopicId",groupName:"GroupName",partition:"PartitionId"},p=new Proxy({topicId:"TopicId",topicName:"TopicName",consumerGroup:"GroupName",partition:"PartitionId"},{get:function(e,t){return"instanceid"===String(t).toLocaleLowerCase()?"InstanceId":e[t]}}),d={TopicList:"TopicList",GroupList:"GroupList",PartitionList:"PartitionList"},f={TopicId:{dim_KeyInStorage:d.TopicList,dim_KeyInTarget:"topicId",dim_KeyInMap:l.topicId},TopicName:{dim_KeyInStorage:d.TopicList,dim_KeyInTarget:"topicId",dim_KeyInMap:l.topicId},GroupName:{dim_KeyInStorage:d.GroupList,dim_KeyInTarget:"consumerGroup",dim_KeyInMap:l.groupName},PartitionId:{dim_KeyInStorage:d.PartitionList,dim_KeyInTarget:"partition",dim_KeyInMap:l.partition}};t.default=a},,function(e,t,n){"use strict";n.r(t),n.d(t,"LOADBALANCEFieldsDescriptor",(function(){return a})),n.d(t,"InstanceAliasList",(function(){return l})),n.d(t,"LOADBALANCEListenerAliasList",(function(){return p})),n.d(t,"LOADBALANCEServerAliasList",(function(){return d})),n.d(t,"LOADBALANCEVALIDDIMENSIONS",(function(){return f})),n.d(t,"templateQueryIdMap",(function(){return y})),n.d(t,"CANDIATEDIMENSIONS",(function(){return m})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"keyInStorage",(function(){return h})),n.d(t,"queryEditorConfig",(function(){return c})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"GetInstanceQueryParams",(function(){return u}));var r=n(4),i="QCE/LOADBALANCE",o="loadBalanceQuery",a=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1",link:"",type:"inputNumber",min:1},{key:"LoadBalancerIds",enDescriptor:"LoadBalancer ID",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancer Name",cnDescriptor:"实例名称",link:"",type:"input"},{key:"Forward",enDescriptor:"Forward",cnDescriptor:"负载均衡实例类型",link:"",type:"select",list:[{text:"通用的负载均衡",value:1},{text:"传统的负载均衡",value:0}]},{key:"Domain",enDescriptor:"Domain",cnDescriptor:"域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义",link:"",type:"input"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancer Vips",cnDescriptor:"负载均衡实例的 VIP 地址",link:"",type:"inputMulti"},{key:"BackendPrivateIps",enDescriptor:"BackendPrivate Ips",cnDescriptor:"负载均衡绑定的后端服务的内网 IP",link:"",type:"inputMulti"},{key:"BackendPublicIps",enDescriptor:"BackendPublic Ips",cnDescriptor:"负载均衡绑定的后端服务的外网 IP",link:"",type:"inputMulti"},{key:"ProjectId",enDescriptor:"Project ID",cnDescriptor:"负载均衡实例所属的项目 ID",link:"",type:"inputNumber"},{key:"VpcId",enDescriptor:"Vpc ID",cnDescriptor:"负载均衡实例所属私有网络",link:"",type:"input"},{key:"SecurityGroup",enDescriptor:"Security Group",cnDescriptor:"安全组ID",link:"",type:"input"},{key:"MasterZone",enDescriptor:"Master Zone",cnDescriptor:"主可用区ID",link:"",type:"input"},{key:"WithRs",enDescriptor:"WithRs",cnDescriptor:"负载均衡是否绑定后端服务",link:"",type:"select",list:[{text:"没有绑定后端服务",value:0},{text:"绑定后端服务",value:1},{text:"查询全部",value:-1}]},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"LoadBalancerName",value:"LoadBalancerName"},{text:"CreateTime",value:"CreateTime"},{text:"Domain",value:"Domain"},{text:"LoadBalancerType",value:"LoadBalancerType"}]},{key:"OrderType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]}],c={instanceDocUrl:"https://cloud.tencent.com/document/api/214/30685",namespace:i,fieldDescriptor:a},s={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",Port:"",Protocol:"",listener:"",servers:"",serverPort:"",queries:{LoadBalancerIds:[],Forward:void 0,LoadBalancerName:"",Domain:"",LoadBalancerVips:[],BackendPublicIps:[],BackendPrivateIps:[],Limit:20,Offset:0,ProjectId:void 0,WithRs:{},VpcId:"",SecurityGroup:"",MasterZone:"",OrderBy:{},OrderType:{}}};function u(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var l=["LoadBalancerId","LoadBalancerName","LoadBalancerVips"],p=["ListenerId","ListenerName","Port"],d=["PrivateIpAddresses","InstanceId"],f={vip:"LoadBalancerVips",loadBalancerPort:"Port",protocol:"Protocol",lanIp:"PrivateIpAddresses",port:"ServerPort"},m={LoadBalancerVips:"AddressIPv6"},y={instance:"LoadBalancerId",listener:"ListenerId",servers:"PrivateIpAddresses",port:"Port"},h={listener:"ListenerList",servers:"ServersList"},g={Port:{dim_KeyInStorage:h.listener,dim_KeyInTarget:"listener",dim_KeyInMap:y.listener},Protocol:{dim_KeyInStorage:h.listener,dim_KeyInTarget:"listener",dim_KeyInMap:y.listener},PrivateIpAddresses:{dim_KeyInStorage:h.servers,dim_KeyInTarget:"servers",dim_KeyInMap:y.servers},ServerPort:{dim_KeyInStorage:h.servers,dim_KeyInTarget:"serverPort",dim_KeyInIns:"Port",dim_KeyInMap:y.port}};t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"TDMQInstanceAliasList",(function(){return u})),n.d(t,"TDMQInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"keyInStorage",(function(){return h})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"regionSupported",(function(){return m})),n.d(t,"TDMQGetInstanceQueryParams",(function(){return f}));var r=n(4),i=n(0),o=n.n(i),a="QCE/TDMQ",c="tdmqQuery",s={tenantId:"ClusterId",tenant:"ClusterId",topicName:"TopicName",environmentId:"EnvironmentId"},u=["ClusterId","ClusterName"],l={instance:"ClusterId",topicName:"TopicName",environmentId:"EnvironmentId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100}],d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",topicName:"",environmentId:"",queries:{Limit:20,Offset:0}};function f(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var m=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}];function y(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){-1!==e.Dimensions.indexOf("topicName")&&-1===e.Dimensions.indexOf("environmentId")&&e.Dimensions.push("environmentId")})),t}var h={topicName:"topicName",environmentId:"environmentId"},g={TopicName:{dim_KeyInStorage:h.topicName,dim_KeyInTarget:"topicName",dim_KeyInMap:l.topicName},EnvironmentId:{dim_KeyInStorage:h.environmentId,dim_KeyInTarget:"environmentId",dim_KeyInMap:l.environmentId}};t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"GSEFilterFieldsDescriptor",(function(){return m})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"GSEInstanceAliasList",(function(){return l})),n.d(t,"GSEInvalidDemensions",(function(){return u})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return y})),n.d(t,"regionSupported",(function(){return v})),n.d(t,"modifyDimensons",(function(){return b})),n.d(t,"queryMonitorExtraConfg",(function(){return f})),n.d(t,"fleetId",(function(){return c})),n.d(t,"keyInStorage",(function(){return d})),n.d(t,"GSEGetInstanceQueryParams",(function(){return g}));var r=n(4),i=n(0),o=n.n(i),a="QCE/GSE",c="FleetId",s="gseQuery",u={instanceid:"InstanceId",fleetid:"FleetId",queuename:"Name"},l=["InstanceId","PrivateIpAddress","IpAddress"],p={instance:"InstanceId",Name:"Name",FleetId:c},d={fleet:"fleet",queue:"queueName"},f={FleetId:{dim_KeyInStorage:d.fleet,dim_KeyInTarget:"FleetId",dim_KeyInMap:p.FleetId},Name:{dim_KeyInStorage:d.queue,dim_KeyInTarget:"Name",dim_KeyInMap:p.Name}},m=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceId",enDescriptor:"resourceName",cnDescriptor:"资源名称",link:"",type:"input"},{key:"FleetId",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"input"}],y={instanceDocUrl:"https://cloud.tencent.com/document/api/1165/42604",namespace:a,fieldDescriptor:m},h={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",FleetId:"",Name:"",queries:{Limit:20,Offset:0,InstanceId:"",FleetId:""}};function g(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var v=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-ashburn"},{value:"na-siliconvalley"}];function b(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return u[e]||e}))})),t}t.default=h},function(e,t,n){"use strict";n.r(t),n.d(t,"DCDBFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"DCDBInstanceAliasList",(function(){return s})),n.d(t,"DCDBInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"regionSupported",(function(){return v})),n.d(t,"keyInStorage",(function(){return h})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"DCDBGetInstanceQueryParams",(function(){return y}));var r=n(0),i=n(4),o="QCE/TDMYSQL",a="dcdbQuery",c={nodeid:"NodeId",instanceid:"InstanceId",shardid:"ShardInstanceId",ShardId:"ShardInstanceId"},s=["InstanceId","InstanceName"],u={instance:"InstanceId",NodeId:"NodeId",ShardInstanceId:"ShardInstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"实例 ID 查询",link:"",type:"inputMulti"},{key:"SearchName",enDescriptor:"SearchName",cnDescriptor:"搜索的字段名,当前支持的值有:instancename、vip、all",link:"",type:"input"},{key:"SearchKey",enDescriptor:"SearchKey",cnDescriptor:"搜索的关键字",link:"",type:"input"},{key:"ProjectIds",enDescriptor:"ProjectIds",cnDescriptor:"按项目 ID 查询",link:"",type:"inputNumberMulti"},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络 ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"私有网络的子网 ID",link:"",type:"input"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"projectId",value:"projectId"},{text:"createtime",value:"createtime"},{text:"instancename",value:"instancename"}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"私有网络 ID",link:"",type:"select",list:[{text:"desc",value:"desc"},{text:"asc",value:"asc"}]},{key:"ExclusterType",enDescriptor:"ExclusterType",cnDescriptor:"集群类型",link:"",type:"select",list:[{text:"非独享集群",value:1},{text:"独享集群",value:2},{text:"全部",value:0},{text:"asc",value:"asc"}]},{key:"ExclusterIds",enDescriptor:"ExclusterIds",cnDescriptor:"独享集群ID",link:"",type:"inputMulti"},{key:"FilterInstanceType",enDescriptor:"FilterInstanceType",cnDescriptor:"实例类型过滤",link:"",type:"select",multiple:!0,list:[{text:"独享实例",value:1},{text:"主实例",value:2},{text:"灾备实例",value:3}]}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/557/16140",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",ShardId:"",NodeId:"",queries:{Limit:20,Offset:0,InstanceIds:[],SearchName:"",SearchKey:"",ProjectIds:[],VpcId:"",SubnetId:"",OrderBy:{},OrderByType:{},ExclusterType:{},ExclusterIds:[],FilterInstanceType:{}}},f={shardid:"ShardId",instanceid:"InstanceId",nodeid:"NodeId"};function m(e){var t=Object(r.cloneDeep)(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return f[e]||e}))})),t}function y(e){void 0===e&&(e={});var t=Object(i.d)(e,!1);return t.IsFilterVpc=!1,t.IsFilterExcluster=!1,(t.VpcId||t.SubnetId)&&(t.IsFilterVpc=!0),t.ExclusterType&&(t.IsFilterExcluster=!0),Object(r.isArray)(t.FilterInstanceType)&&(t.FilterInstanceType=t.FilterInstanceType.join(",")),t}var h={NodeId:"NodeId",ShardInstanceId:"ShardId"},g={NodeId:{dim_KeyInStorage:h.NodeId,dim_KeyInTarget:"NodeId",dim_KeyInMap:u.NodeId},ShardInstanceId:{dim_KeyInStorage:h.ShardInstanceId,dim_KeyInTarget:"ShardId",dim_KeyInMap:u.ShardInstanceId}},v=[{text:"华北地区(北京)",value:"ap-beijing"},{text:"西南地区(成都)",value:"ap-chengdu"},{text:"西南地区(重庆)",value:"ap-chongqing"},{text:"华南地区(广州)",value:"ap-guangzhou"},{text:"港澳台地区(中国香港)",value:"ap-hongkong"},{text:"亚太南部(孟买)",value:"ap-mumbai"},{text:"华东地区(南京)",value:"ap-nanjing"},{text:"华东地区(上海)",value:"ap-shanghai"},{text:"华东地区(上海金融)",value:"ap-shanghai-fsi"},{text:"华南地区(深圳金融)",value:"ap-shenzhen-fsi"},{text:"亚太东南(新加坡)",value:"ap-singapore"},{text:"亚太东北(东京)",value:"ap-tokyo"},{text:"欧洲地区(法兰克福)",value:"eu-frankfurt"},{text:"美国东部(弗吉尼亚)",value:"na-ashburn"},{text:"美国西部(硅谷)",value:"na-siliconvalley"},{text:"北美地区(多伦多)",value:"na-toronto"}];t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisMemFieldsDescriptor",(function(){return c})),n.d(t,"RedisMemInvalidDemensions",(function(){return p})),n.d(t,"REDISMEMInstanceAliasList",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return d})),n.d(t,"namespace",(function(){return a})),n.d(t,"NodeType",(function(){return f})),n.d(t,"REDISMEMGetInstanceQueryParams",(function(){return u}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var l=["InstanceId","InstanceName","WanIp"],p={instanceid:"InstanceId",rnodeid:"rnodeid",pnodeid:"pnodeid"},d={instance:"InstanceId",rnodeid:"rnodeid",pnodeid:"pnodeid"},f=["Redis","Proxy"];t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"TDMQRABBITMQInstanceAliasList",(function(){return c})),n.d(t,"TDMQInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryMonitorExtraConfg",(function(){return m})),n.d(t,"keyInStorage",(function(){return f})),n.d(t,"regionSupported",(function(){return d})),n.d(t,"TDMQGetInstanceQueryParams",(function(){return p}));var r=n(4),i="QCE/RABBITMQ",o="tdmqQuery",a={instanceid:"InstanceId",node:"NodeName"},c=["InstanceId","InstanceName"],s={instance:"InstanceId",node:"NodeName"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100}],l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",node:"",queries:{Limit:20,Offset:0}};function p(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var d=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],f={node:"NodeName"},m={NodeName:{dim_KeyInStorage:f.node,dim_KeyInTarget:"node",dim_KeyInMap:s.node}};t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"TDMQROCKETMQInstanceAliasList",(function(){return c})),n.d(t,"TDMQInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryMonitorExtraConfg",(function(){return m})),n.d(t,"keyInStorage",(function(){return f})),n.d(t,"regionSupported",(function(){return d})),n.d(t,"TDMQROCKETMQGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o="QCE/ROCKETMQ",a={tenant:"ClusterId",namespace:"NamespaceId",group:"Name"},c=["ClusterId","ClusterName"],s={instance:"ClusterId",namespace:"NamespaceId",group:"Name"},u=[{key:"includeVip",enDescriptor:"includeVip",cnDescriptor:"包含专享集群",link:"",type:"select",list:[{text:"是",value:"true"},{text:"否",value:"false"}]}],l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",namespace:"",group:"",queries:{Limit:20,Offset:0,instanceIdsChecked:!1,filtersChecked:!0,ClusterIdList:[""],Filters:{includeVip:{text:"是",value:"true"}}}};function p(e){void 0===e&&(e={});var t={};if(!i.a.isEmpty(e))if(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(i.a.isArray(e.ClusterIdList)){var n=i.a.compact(e.ClusterIdList);i.a.uniq(n).length>0&&(t.ClusterIdList=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:[i.a.get(e,"value",[])].slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var d=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],f={namespace:"NamespaceId",group:"Name"},m={NamespaceId:{dim_KeyInStorage:f.namespace,dim_KeyInTarget:"namespace",dim_KeyInMap:s.namespace},Name:{dim_KeyInStorage:f.group,dim_KeyInTarget:"group",dim_KeyInMap:s.group}};t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"InitServiceState",(function(){return c})),n.d(t,"SERVICES",(function(){return o})),n.d(t,"Datasources",(function(){return a})),n.d(t,"InstanceAliasList",(function(){return s})),n.d(t,"GetInstanceQueryParams",(function(){return u}));var r=n(1),i=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c=new Proxy({},{get:function(e,t,n){if("string"==typeof t){if(t.startsWith("id4"))return"ClusterId";if(t.startsWith("host4"))return"Ip"}return Reflect.get(e,t,n)},has:function(e,t){return!0}}),s={instance:"ClusterId",node:"Ip"},u={node:"nodeIP"},l={Ip:{dim_KeyInStorage:u.node,dim_KeyInTarget:"nodeIP",dim_KeyInMap:s.node}},p=["ClusterId","ClusterName"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",nodeIP:"",queries:{Offset:0,Limit:10,DisplayStrategy:"",OrderBy:{},Order:{},InstanceIds:[],ProjectId:-1,OrderField:"",Asc:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"VCLBFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"VCLBInstanceAliasList",(function(){return u})),n.d(t,"VCLBInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"clbNamespaceMap",(function(){return h})),n.d(t,"modifyDimensons",(function(){return g})),n.d(t,"regionSupported",(function(){return y})),n.d(t,"BMLBGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/V_CLB",c="vClbQuery",s={InstanceId:"LoadBalancerId"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1",link:"",type:"inputNumber",min:1},{key:"LoadBalancerIds",enDescriptor:"LoadBalancer ID",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancer Name",cnDescriptor:"实例名称",link:"",type:"input"},{key:"Forward",enDescriptor:"Forward",cnDescriptor:"负载均衡实例类型",link:"",type:"select",list:[{text:"通用的负载均衡",value:1},{text:"传统的负载均衡",value:0}]},{key:"Domain",enDescriptor:"Domain",cnDescriptor:"域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义",link:"",type:"input"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancer Vips",cnDescriptor:"负载均衡实例的 VIP 地址",link:"",type:"inputMulti"},{key:"BackendPrivateIps",enDescriptor:"BackendPrivate Ips",cnDescriptor:"负载均衡绑定的后端服务的内网 IP",link:"",type:"inputMulti"},{key:"BackendPublicIps",enDescriptor:"BackendPublic Ips",cnDescriptor:"负载均衡绑定的后端服务的外网 IP",link:"",type:"inputMulti"},{key:"ProjectId",enDescriptor:"Project ID",cnDescriptor:"负载均衡实例所属的项目 ID",link:"",type:"inputNumber"},{key:"VpcId",enDescriptor:"Vpc ID",cnDescriptor:"负载均衡实例所属私有网络",link:"",type:"input"},{key:"SecurityGroup",enDescriptor:"Security Group",cnDescriptor:"安全组ID",link:"",type:"input"},{key:"MasterZone",enDescriptor:"Master Zone",cnDescriptor:"主可用区ID",link:"",type:"input"},{key:"WithRs",enDescriptor:"WithRs",cnDescriptor:"负载均衡是否绑定后端服务",link:"",type:"select",list:[{text:"没有绑定后端服务",value:0},{text:"绑定后端服务",value:1},{text:"查询全部",value:-1}]},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"LoadBalancerName",value:"LoadBalancerName"},{text:"CreateTime",value:"CreateTime"},{text:"Domain",value:"Domain"},{text:"LoadBalancerType",value:"LoadBalancerType"}]},{key:"OrderType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/214/30685",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",Port:"",Protocol:"",listener:"",queries:{LoadBalancerIds:[],Forward:void 0,LoadBalancerName:"",Domain:"",LoadBalancerVips:[],BackendPublicIps:[],BackendPrivateIps:[],Limit:20,Offset:0,ProjectId:void 0,WithRs:{},VpcId:"",SecurityGroup:"",MasterZone:"",OrderBy:{},OrderType:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var y=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],h={public:"QCE/LB_PUBLIC",private:"QCE/LB_PRIVATE"};function g(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"cynosdbMysqlFilterFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return m})),n.d(t,"CYNOSDBMYSQLInstanceAliasList",(function(){return f})),n.d(t,"CYNOSDBInvalidDemensions",(function(){return y})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"regionSupported",(function(){return u})),n.d(t,"modifyDimensons",(function(){return g})),n.d(t,"checkKeys",(function(){return h})),n.d(t,"CYNOSDBMYSQLGetInstanceQueryParams",(function(){return d}));var r=n(0),i=n.n(r),o=n(4),a="QCE/CYNOSDB_MYSQL",c="cynosdbMysqlQuery",s=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:1e3},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"实例id列表",link:"",type:"inputMulti"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"创建时间",value:"CREATETIME"},{text:"过期时间",value:"PERIODENDTIME"}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"排序类型",link:"",type:"select",list:[{text:"升序",value:"ASC"},{text:"降序",value:"DESC"}]},{key:"DbType",enDescriptor:"DbType",cnDescriptor:"引擎类型",link:"",type:"select",list:[{text:"MYSQL",value:"MYSQL"},{text:"POSTGRESQL",value:"POSTGRESQL"}]}],u=[{value:"ap-beijing"},{value:"ap-guangzhou"},{value:"ap-nanjing"},{value:"ap-shanghai"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/1003/48334",namespace:a,fieldDescriptor:s},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,OrderBy:{},OrderByType:{},InstanceIds:[],DbType:{}}};function d(e){return void 0===e&&(e={}),Object(o.d)(e,!1)}var f=["InstanceId","InstanceName"],m={instance:"InstanceId"},y={instanceid:"InstanceId",instanceId:"InstanceId"},h=["instanceId"];function g(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryDescriptor",(function(){return o})),n.d(t,"SCFInstanceAliasList",(function(){return s})),n.d(t,"SCFInvalidDemensions",(function(){return u})),n.d(t,"queryMonitorExtraConfg",(function(){return f})),n.d(t,"regionSupported",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"keyInStorage",(function(){return d})),n.d(t,"SCFGetInstanceQueryParams",(function(){return c})),n.d(t,"SCFDefaultDimensionList",(function(){return m}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"SearchKey",enDescriptor:"SearchKey",cnDescriptor:"支持FunctionName模糊匹配",link:"",type:"input"},{key:"Namespace",enDescriptor:"Namespace",cnDescriptor:"云函数命名空间",link:"",type:"input"},{key:"Description",enDescriptor:"Description",cnDescriptor:"函数描述,支持模糊搜索",link:"",type:"input"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"AddTime",value:"AddTime"},{text:"ModTime",value:"ModTime"},{text:"FunctionName",value:"FunctionName"}]},{key:"Order",enDescriptor:"Order Direction",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"ASC",value:"ASC"},{text:"DESC",value:"DESC"}]}],a={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"FunctionName",version:"",queries:{Offset:0,Limit:20,OrderBy:{},Order:{},SearchKey:"",Namespace:"",Description:""}};function c(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["FunctionId","FunctionName"],u={functionName:"FunctionName",namespace:"Namespace",version:"Version"},l={instance:"FunctionName",version:"Version"},p=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-siliconvalley"},{value:"na-toronto"}],d={version:"version"},f={Version:{dim_KeyInStorage:d.version,dim_KeyInTarget:"version",dim_KeyInMap:l.version}};t.default=a;var m=["functionName","namespace","version"]},function(e,t){e.exports=r},function(e,t,n){"use strict";n.r(t),n.d(t,"CLSFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CLSInstanceAliasList",(function(){return u})),n.d(t,"CLSInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"regionSupported",(function(){return y})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"CLSGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/CLS",c="clsQuery",s={},u=["TopicId","TopicName"],l={instance:"TopicId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"topicName",enDescriptor:"topicName",cnDescriptor:"日志主题名称",link:"",type:"inputMulti"},{key:"topicId",enDescriptor:"topicId",cnDescriptor:"日志主题ID",link:"",type:"inputMulti"},{key:"logsetName",enDescriptor:"logsetName",cnDescriptor:"日志集名称",link:"",type:"inputMulti"},{key:"logsetId",enDescriptor:"logsetId",cnDescriptor:"日志集ID",link:"",type:"inputMulti"},{key:"tagKey",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"inputMulti"},{key:"tag:tagKey",enDescriptor:"tag - tagKey",cnDescriptor:"标签键值对",link:"",type:"inputMulti"},{key:"storageType",enDescriptor:"storageType",cnDescriptor:"日志主题的存储类型",link:"",type:"select",list:[{text:"实时存储",value:"hot"},{text:"离线存储",value:"cold"}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/614/56454",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TopicId",uin:"",queries:{Limit:20,Offset:0,topicName:[],topicId:[],logsetName:[],logsetId:[],tagKey:[],"tag:tagKey":[],storageType:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var y=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}];function h(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["uin","TopicId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"SQLSERVERNETFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"SQLSERVERInstanceAliasList",(function(){return u})),n.d(t,"SQLSERVERInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"regionSupported",(function(){return f})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"SQLSERVERGetInstanceQueryParams",(function(){return h}));var r=n(4),i=n(0),o=n.n(i),a="QCE/SQLSERVER",c="sqlserverQuery",s={resourceId:"InstanceId"},u=["InstanceId","Name"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ProjectId",enDescriptor:"ProjectId",cnDescriptor:"项目ID",link:"",type:"inputNumber"},{key:"Status",enDescriptor:"Status",cnDescriptor:"实例状态",link:"",type:"select",list:[{text:"申请中",value:1},{text:"运行中",value:2},{text:"受限运行中 (主备切换中)",value:3},{text:"已隔离",value:4},{text:"回收中",value:5},{text:"已回收",value:6},{text:"任务执行中",value:7},{text:"已下线",value:8},{text:"实例扩容中",value:9},{text:"实例迁移中",value:10},{text:"只读",value:11},{text:"重启中",value:12}]},{key:"InstanceIdSet",enDescriptor:"InstanceIdSet",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"PayMode",enDescriptor:"PayMode",cnDescriptor:"子网实例ID",link:"",type:"select",list:[{text:"包年包月",value:1},{text:"按量计费",value:0}]},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"实例所属VPC的唯一字符串ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"实例所属子网的唯一字符串ID",link:"",type:"input"},{key:"VipSet",enDescriptor:"VipSet",cnDescriptor:"实例内网地址列表",link:"",type:"inputMulti"},{key:"InstanceNameSet",enDescriptor:"InstanceNameSet",cnDescriptor:"实例名称列表, 模糊查询",link:"",type:"inputMulti"},{key:"VersionSet",enDescriptor:"VersionSet",cnDescriptor:"实例版本代号列表",link:"",type:"inputMulti"},{key:"Zone",enDescriptor:"Zone",cnDescriptor:"实例可用区",link:"",type:"dropdown"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/238/19969",namespace:a,fieldDescriptor:p},f=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-nanjing"},{value:"ap-seoul"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-moscow"},{value:"na-siliconvalley"}],m={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,ProjectId:null,Status:{},InstanceIdSet:[],PayMode:{},VpcId:"",SubnetId:"",VipSet:[],InstanceNameSet:[],VersionSet:[],Zone:""}};function y(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["resourceId"]})),t}function h(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=m},function(e,t,n){"use strict";n.r(t),n.d(t,"BMINTRALBFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMINTRALBInstanceAliasList",(function(){return u})),n.d(t,"BMINTRALBInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"isValidMetric",(function(){return y})),n.d(t,"BMINTRALBGetInstanceQueryParams",(function(){return h}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_INTRA_LB",c="bmIntraLbQuery",s={vip:"LoadBalancerVips",vpcId:"VpcId"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"LoadBalancerIds",enDescriptor:"LoadBalancerIds",cnDescriptor:"负载均衡器ID数组",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancerName",cnDescriptor:"负载均衡器名称",link:"",type:"inputMulti"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancerVips",cnDescriptor:"负载均衡获得的公网IP地址",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/1027/33280",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",queries:{Limit:20,Offset:0,LoadBalancerIds:[],LoadBalancerName:[],LoadBalancerVips:[]}},m=["Inpkg","Outpkg","Intraffic","Outtraffic","Connum","Req"];function y(e){var t=o.a.map(m,o.a.toUpper);return-1!==o.a.indexOf(t,o.a.toUpper(e.MetricName))}function h(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"CPMFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMLBInstanceAliasList",(function(){return u})),n.d(t,"CPMInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"isValidMetric",(function(){return h})),n.d(t,"BMLBGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_LB",c="bmLbQuery",s={vip:"LoadBalancerVips"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"LoadBalancerIds",enDescriptor:"LoadBalancerIds",cnDescriptor:"负载均衡器ID数组",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancerName",cnDescriptor:"负载均衡器名称",link:"",type:"inputMulti"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancerVips",cnDescriptor:"负载均衡获得的公网IP地址",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/1027/33280",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",queries:{Limit:20,Offset:0,LoadBalancerIds:[],LoadBalancerName:[],LoadBalancerVips:[]}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var y=["Inpkg","Outpkg","Intraffic","Outtraffic","Connum","Req"];function h(e){var t=o.a.map(y,o.a.toUpper);return-1!==o.a.indexOf(t,o.a.toUpper(e.MetricName))}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"BMPCXFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMPCXInstanceAliasList",(function(){return u})),n.d(t,"BMPCXInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"BMPCXGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_PCX",c="bmPcxQuery",s={peeringConnectionId:"VpcPeerConnectionId"},u=["VpcPeerConnectionId","VpcPeerConnectionName"],l={instance:"VpcPeerConnectionId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"VpcPeerConnectionIds",enDescriptor:"VpcPeerConnectionIds",cnDescriptor:"对等连接实例ID",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/product/1024/36903",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpcPeerConnectionId",queries:{Limit:20,Offset:0,VpcPeerConnectionIds:[]}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}function y(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["peeringConnectionId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"CBSFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"CBSInstanceAliasList",(function(){return s})),n.d(t,"CBSInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"isValidMetric",(function(){return m})),n.d(t,"CBSGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n(4),o="QCE/BLOCK_STORAGE",a="cbsQuery",c={diskId:"DiskId",InstanceId:"InstanceId",diskname:"DiskName",unInstanceId:"InstanceId"},s=["DiskId","DiskName"],u={instance:"DiskId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DiskIds",enDescriptor:"DiskIds",cnDescriptor:"云硬盘ID",link:"",type:"inputMulti"},{key:"Order",enDescriptor:"Order",cnDescriptor:"排列顺序",link:"",type:"select",list:[{text:"升序排列",value:"ASC"},{text:"降序排列",value:"DESC"}]},{key:"OrderField",enDescriptor:"OrderField",cnDescriptor:"排序的依据字段",link:"",type:"select",list:[{text:"云盘的创建时间排序",value:"CREATE_TIME"},{text:"云盘的到期时间排序",value:"DEADLINE"}]},{key:"ReturnBindAutoSnapshotPolicy",enDescriptor:"ReturnBindAutoSnapshotPolicy",cnDescriptor:"否需要返回云盘绑定的定期快照策略ID",link:"",type:"switch"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/362/16315",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DiskId",queries:{Limit:20,Offset:0,DiskIds:[],OrderField:[],Order:[],ReturnBindAutoSnapshotPolicy:!1}};function f(e){return void 0===e&&(e={}),Object(i.d)(e,!1)}function m(e){void 0===e&&(e={});var t=r.get(e,"Dimensions[0].Dimensions");return 1===t.length&&-1!==r.indexOf(t,"diskId")}t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNPROVINCEFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"CDNPROVINCEInstanceAliasList",(function(){return c})),n.d(t,"CDNPROVINCEInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"CDNPROVINCEGetInstanceQueryParams",(function(){return p}));var r=n(4),i="QCE/CDN_LOG_DATA",o="cdnProvinceQuery",a={domain:"Domain",projectid:"ProjectId",province:"district",appid:"AppId"},c=["Domain","ProjectId"],s={instance:"Domain"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"origin",enDescriptor:"origin",cnDescriptor:"主源站",link:"",type:"inputMulti"},{key:"domain",enDescriptor:"domain",cnDescriptor:"域名",link:"",type:"inputMulti"},{key:"resourceId",enDescriptor:"resourceId",cnDescriptor:"域名id",link:"",type:"inputMulti"},{key:"status",enDescriptor:"status",cnDescriptor:"域名状态",link:"",type:"select",list:[{text:"online",value:"online"},{text:"offline",value:"offline"},{text:"processing",value:"processing"}]},{key:"serviceType",enDescriptor:"serviceType",cnDescriptor:"业务类型",link:"",type:"select",list:[{text:"web",value:"web"},{text:"download",value:"download"},{text:"media",value:"media"}]},{key:"projectId",enDescriptor:"projectId",cnDescriptor:"项目ID",link:"",type:"inputNumberMulti"},{key:"domainType",enDescriptor:"domainType",cnDescriptor:"主源站类型",link:"",type:"select",list:[{text:"自有源",value:"cname"},{text:"cos接入",value:"cos"}]},{key:"fullUrlCache",enDescriptor:"fullUrlCache",cnDescriptor:"全路径缓存",link:"",type:"select",list:[{text:"打开",value:"on"},{text:"关闭",value:"off"}]},{key:"https",enDescriptor:"https",cnDescriptor:"是否配置https",link:"",type:"select",list:[{text:"on",value:"on"},{text:"off",value:"off"},{text:"processing",value:"processing"}]},{key:"originPullProtocol",enDescriptor:"originPullProtocol",cnDescriptor:"回源协议类型",link:"",type:"select",list:[{text:"http",value:"http"},{text:"follow",value:"follow"},{text:"https",value:"https"}]},{key:"tagKey",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"inputMulti"}],l={region:"ap-guangzhou",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"Domain",isp:"",district:"",queries:{Limit:20,Offset:0,origin:[],domain:[],resourceId:[],status:{},serviceType:{},projectId:[],domainType:{},fullUrlCache:{},https:{},originPullProtocol:{},tagKey:[]}};function p(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"CEIPFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CEIPSUMMARYInstanceAliasList",(function(){return u})),n.d(t,"CEIPInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"CEIPSUMMARYGetInstanceQueryParams",(function(){return m}));var r=n(0),i=n.n(r),o=n(4),a="QCE/CEIP_SUMMARY",c="ceipSummaryQuery",s={vip:"AddressIp",eip:"AddressIp"},u=["AddressId","AddressName","AddressIp"],l={instance:"AddressId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"address-id",enDescriptor:"address-id",cnDescriptor:" EIP 的唯一 ID",link:"",type:"inputMulti"},{key:"address-name",enDescriptor:"address-name",cnDescriptor:"EIP 名称",link:"",type:"inputMulti"},{key:"address-ip",enDescriptor:"address-ip",cnDescriptor:"EIP 的 IP 地址",link:"",type:"inputMulti"},{key:"address-status",enDescriptor:"address-status",cnDescriptor:"EIP 的状态",link:"",type:"select",multiple:!0,list:[{text:"CREATING",value:"CREATING"},{text:"BINDING",value:"BINDING"},{text:"BIND",value:"BIND"},{text:"UNBINDING",value:"UNBINDING"},{text:"UNBIND",value:"UNBIND"},{text:"OFFLINING",value:"OFFLINING"},{text:"BIND_ENI",value:"BIND_ENI"}]},{key:"instance-id",enDescriptor:"instance-id",cnDescriptor:"EIP 绑定的实例 ID",link:"",type:"inputMulti"},{key:"private-ip-address",enDescriptor:"private-ip-address",cnDescriptor:"EIP 绑定的内网 IP ",link:"",type:"inputMulti"},{key:"network-interface-id",enDescriptor:"network-interface-id",cnDescriptor:" EIP 绑定的弹性网卡 ID",link:"",type:"inputMulti"},{key:"is-arrears",enDescriptor:"is-arrears",cnDescriptor:"EIP 是否欠费",link:"",type:"select",multiple:!0,list:[{text:"欠费状态",value:"TRUE"},{text:"费用状态正常",value:"FALSE"}]},{key:"address-isp",enDescriptor:"address-isp",cnDescriptor:"运营商类型",link:"",type:"select",multiple:!0,list:[{text:"BGP",value:"BGP"},{text:"CMCC",value:"CMCC"},{text:"CUCC",value:"CUCC"},{text:"CTCC",value:"CTCC"}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/215/16702",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"AddressId",queries:{Limit:20,Offset:0,"address-id":[],"address-name":[],"address-ip":[],"address-status":{},"is-arrears":{},"address-isp":{},"instance-id":[],"private-ip-address":[],"network-interface-id":[]}};function m(e){return void 0===e&&(e={}),Object(o.d)(e,!0)}function y(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["eip"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceQueryDescriptor",(function(){return o})),n.d(t,"InvalidDemensions",(function(){return c})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"InstanceAliasList",(function(){return p})),n.d(t,"GetInstanceQueryParams",(function(){return a})),n.d(t,"queryMonitorExtraConfg",(function(){return l})),n.d(t,"keyInStorage",(function(){return u}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为10,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:50},{key:"TopicName",enDescriptor:"TopicName",cnDescriptor:"精确匹配TopicName",link:"",type:"input"},{key:"TagKey",enDescriptor:"TagKey",cnDescriptor:"标签搜索",link:"",type:"input"}];function a(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c={topicId:"TopicId"},s={instance:"TopicName",subscription:"SubscriptionId"},u={subscriptionId:"subscriptionId"},l={subscriptionId:{dim_KeyInStorage:u.subscriptionId,dim_KeyInTarget:"subscriptionId",dim_KeyInMap:s.subscription}},p=["TopicName","TopicId"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TopicName",subscriptionId:"",queries:{Offset:0,Limit:20,TopicName:"",TagKey:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"CPMFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CPMInstanceAliasList",(function(){return u})),n.d(t,"CPMInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"CPMGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/CPM",c="cpmQuery",s={instanceId:"InstanceId"},u=["InstanceId","Name"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DeviceClassCode",enDescriptor:"DeviceClassCode",cnDescriptor:"机型ID",link:"",type:"dropdown"},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"设备ID数组",link:"",type:"inputMulti"},{key:"WanIps",enDescriptor:"WanIps",cnDescriptor:"外网IP数组",link:"",type:"inputMulti"},{key:"LanIps",enDescriptor:"LanIps",cnDescriptor:"内网IP数组",link:"",type:"inputMulti"},{key:"Alias",enDescriptor:"Alias",cnDescriptor:"设备名称",link:"",type:"input"},{key:"VagueIp",enDescriptor:"VagueIp",cnDescriptor:"模糊IP查询",link:"",type:"input"},{key:"AutoRenewFlag",enDescriptor:"AutoRenewFlag",cnDescriptor:"自动续费标志",link:"",type:"select",list:[{text:"不自动续费",value:0},{text:"自动续费",value:1}]},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络唯一ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"子网唯一ID",link:"",type:"input"},{key:"DeviceType",enDescriptor:"DeviceType",cnDescriptor:"子网实例ID",link:"",type:"select",list:[{text:"计算型",value:"compute"},{text:"标准型",value:"standard"},{text:"存储型",value:"storage"}]},{key:"IsLuckyDevice",enDescriptor:"IsLuckyDevice",cnDescriptor:"竞价实例机器过滤",link:"",type:"select",list:[{text:"非竞价实例机器",value:0},{text:"竞价实例的机器",value:1}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/386/32904",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,DeviceClassCode:"",InstanceIds:[],WanIps:[],LanIps:[],Alias:"",VagueIp:"",AutoRenewFlag:{},VpcId:"",SubnetId:"",DeviceType:{},IsLuckyDevice:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}function y(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["instanceId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"ECDNFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"ECDNInstanceAliasList",(function(){return c})),n.d(t,"ECDNInvalidDemensions",(function(){return u})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"ECDNGetInstanceQueryParams",(function(){return f}));var r=n(0),i=function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o.push({Name:t,Value:Object(r.uniq)(e).slice(0,5)}):Object(r.isObject)(e)&&(Object(r.isEmpty)(Object(r.get)(e,"value",[]))||o.push({Name:t,Value:[Object(r.get)(e,"value",[])].slice(0,5)}))})),o.length>0)return t.Filters=o.map((function(e){return"domain"===e.Name?i(i({},e),{Fuzzy:!0}):e})),t}return t}function m(e){var t=Object(r.cloneDeep)(e);return t.Dimensions.forEach((function(e){e.Dimensions=["domain","projectid"]})),t}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"ECMFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"ECMInstanceAliasList",(function(){return s})),n.d(t,"ECMInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"ECMGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n(4),o="QCE/ECM",a="ecmQuery",c={uuid:"UUID"},s=["InstanceId","InstanceName"],u={instance:"InstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"zone",enDescriptor:"zone",cnDescriptor:"可用区英文标识",link:"",type:"dropdownMulti"},{key:"zone-name",enDescriptor:"zone-name",cnDescriptor:"排列顺序",link:"",type:"inputMulti"},{key:"module-id",enDescriptor:"module-id",cnDescriptor:"模块ID",link:"",type:"inputMulti"},{key:"module-name",enDescriptor:"module-name",cnDescriptor:"模块名称",link:"",type:"inputMulti"},{key:"instance-id",enDescriptor:"instance-id",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"instance-name",enDescriptor:"instance-name",cnDescriptor:"实例名称",link:"",type:"inputMulti"},{key:"ip-address",enDescriptor:"ip-address",cnDescriptor:"内网/公网IP",link:"",type:"inputMulti"},{key:"instance-uuid",enDescriptor:"instance-uuid",cnDescriptor:"实例uuid",link:"",type:"inputMulti"},{key:"instance-state",enDescriptor:"instance-state",cnDescriptor:"实例状态",link:"",type:"select",multiple:!0,list:[{text:"创建中",value:"PENDING"},{text:"创建失败",value:"LAUNCH_FAILED"},{text:"运行中",value:"RUNNING"},{text:"关机",value:"STOPPED"},{text:"开机中",value:"STARTING"},{text:"关机中",value:"STOPPING"},{text:"重启中",value:"REBOOTING"},{text:"停止待销毁",value:"SHUTDOWN"},{text:"销毁中",value:"TERMINATING"}]},{key:"internet-service-provider",enDescriptor:"internet-service-provider",cnDescriptor:"公网IP所属的运营商",link:"",type:"inputMulti"},{key:"instance-family",enDescriptor:"instance-family",cnDescriptor:"机型family",link:"",type:"inputMulti"},{key:"image-id",enDescriptor:"image-id",cnDescriptor:"镜像ID",link:"",type:"inputMulti"},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"实例的vpc id",link:"",type:"inputMulti"},{key:"subnet-id",enDescriptor:"subnet-id",cnDescriptor:"实例的subnet id",link:"",type:"inputMulti"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/1108/42565",namespace:o,fieldDescriptor:l},d={region:"ap-guangzhou",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,zone:[],"zone-name":[],"module-id":[],"module-name":[],"instance-id":[],"instance-name":[],"ip-address":[],"instance-uuid":[],"instance-state":{},"internet-service-provider":[],"instance-family":[],"image-id":[],"vpc-id":[],"subnet-id":[]}};function f(e){return void 0===e&&(e={}),Object(i.d)(e,!0)}function m(e){var t=r.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["UUID"]})),t}t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"PostgresFieldsDescriptor",(function(){return u})),n.d(t,"POSTGRESInstanceAliasList",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return h})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"namespace",(function(){return c})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"PostgreInvalidDemensions",(function(){return y})),n.d(t,"POSTGRESGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n.n(r),o=n(4),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}function l(e){void 0===e&&(e={});var t=i.a.get(e,"Dimensions[0].Dimensions");return 2===t.length&&(-1!==i.a.indexOf(t,"instanceid")&&-1!==i.a.indexOf(t,"insttype")||-1!==i.a.indexOf(t,"InstanceId")&&-1!==i.a.indexOf(t,"InstanceType"))}function p(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return d[e]||e}))})),t}var d={instanceid:"InstanceId",insttype:"InstanceType",region:"Region"},f={instance:"InstanceId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CESFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"CESInstanceAliasList",(function(){return c})),n.d(t,"CESInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"CESGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/CES",o="cesQuery",a={uInstanceId:"InstanceId"},c=["InstanceId","InstanceName"],s={instance:"InstanceId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"集群实例ID列表",link:"",type:"inputMulti"},{key:"InstanceNames",enDescriptor:"InstanceNames",cnDescriptor:"集群实例名称列表",link:"",type:"inputMulti"},{key:"OrderByKey",enDescriptor:"OrderByKey",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"实例ID",value:1},{text:"实例名称",value:2},{text:"可用区",value:3},{text:"创建时间",value:4}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]},{key:"IpList",enDescriptor:"IpList",cnDescriptor:"私有网络vip列表",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/845/30631",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,InstanceIds:[],InstanceNames:[],OrderByKey:{},OrderByType:{},IpList:[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"DCFilterFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return f})),n.d(t,"DCInstanceAliasList",(function(){return d})),n.d(t,"DCInvalidDemensions",(function(){return m})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return u})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"DCGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o=n(4),a="QCE/DC",c="dcQuery",s=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DirectConnectIds",enDescriptor:"DirectConnectIds",cnDescriptor:"物理专线 ID",link:"",type:"inputMulti"}],u={instanceDocUrl:"https://cloud.tencent.com/document/api/216/34826",namespace:a,fieldDescriptor:s},l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DirectConnectId",queries:{Limit:20,Offset:0,DirectConnectIds:[]}};function p(e){return void 0===e&&(e={}),Object(o.d)(e,!1)}var d=["DirectConnectId","DirectConnectName"],f={instance:"DirectConnectId"},m={directConnectId:"DirectConnectId",directconnectid:"DirectConnectId"};function y(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["directConnectId"]})),t}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"DCGFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"DCGInstanceAliasList",(function(){return c})),n.d(t,"DCGInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"DCGGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/DCG",o="dcgQuery",a={directConnectGatewayId:"DirectConnectGatewayId"},c=["DirectConnectGatewayId","DirectConnectGatewayName"],s={instance:"DirectConnectGatewayId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"direct-connect-gateway-id",enDescriptor:"direct-connect-gateway-id",cnDescriptor:"专线网关唯一ID",link:"",type:"inputMulti"},{key:"direct-connect-gateway-name",enDescriptor:"direct-connect-gateway-name",cnDescriptor:"专线网关名称",link:"",type:"inputMulti"},{key:"direct-connect-gateway-ip",enDescriptor:"direct-connect-gateway-ip",cnDescriptor:"专线网关IP",link:"",type:"inputMulti"},{key:"gateway-type",enDescriptor:"gateway-type",cnDescriptor:"网关类型",link:"",type:"select",multiple:!0,list:[{text:"普通型",value:"NORMAL"},{text:"NAT型",value:"NAT"}]},{key:"network-type",enDescriptor:"network-type",cnDescriptor:"网络类型",link:"",type:"select",multiple:!0,list:[{text:"私有网络类型",value:"VPC"},{text:"云联网类型",value:"CCN"}]},{key:"ccn-id",enDescriptor:"ccn-id",cnDescriptor:"专线网关所在云联网ID",link:"",type:"inputMulti"},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"专线网关所在私有网络ID",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/30644",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DirectConnectGatewayId",queries:{Limit:20,Offset:0,"direct-connect-gateway-id":[],"direct-connect-gateway-name":[],"direct-connect-gateway-ip":[],"gateway-type":{},"network-type":{},"ccn-id":[],"vpc-id":[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"DCXFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return m})),n.d(t,"DCXInstanceAliasList",(function(){return f})),n.d(t,"DCXInvalidDemensions",(function(){return y})),n.d(t,"namespace",(function(){return c})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"DCXGetInstanceQueryParams",(function(){return d}));var r=n(0),i=n.n(r),o=n(4),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var u=["InstanceId","InstanceName"],l={target:"InstanceId"},p={instance:"InstanceId",replica:"ReplicaSetId"},d={Replica:{dim_KeyInStorage:"ReplicaSets",dim_KeyInTarget:"replica",dim_KeyInMap:"ReplicaSetId",dim_KeyInIns:"ReplicaSetId"},Node:{dim_KeyInStorage:"ReplicaNodeSets",dim_KeyInTarget:"node",dim_KeyInMap:"NodeId",dim_KeyInIns:"NodeId"}};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"QAAPFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"QAAPInstanceAliasList",(function(){return u})),n.d(t,"QAAPInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"QAAPGetInstanceQueryParams",(function(){return m}));var r=n(0),i=n.n(r),o=n(4),a="QCE/QAAP",c="qaapQuery",s={channelId:"InstanceId"},u=["InstanceId"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ProjectId",enDescriptor:"ProjectId",cnDescriptor:"项目ID",link:"",type:"inputMulti"},{key:"AccessRegion",enDescriptor:"AccessRegion",cnDescriptor:"接入地域",link:"",type:"inputMulti"},{key:"RealServerRegion",enDescriptor:"RealServerRegion",cnDescriptor:"源站地域",link:"",type:"inputMulti"},{key:"GroupId",enDescriptor:"GroupId",cnDescriptor:"通道组ID",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/608/36963",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,ProjectId:[],AccessRegion:[],RealServerRegion:[],GroupId:[]}};function m(e){return void 0===e&&(e={}),Object(o.d)(e,!0)}function y(e){return i.a.cloneDeep(e)}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"TCAPLUSFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"TCAPLUSInstanceAliasList",(function(){return s})),n.d(t,"TCAPLUSInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"regonsMap",(function(){return m})),n.d(t,"TCAPLUSGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n.n(r),o="QCE/TCAPLUS",a="tcaplusQuery",c={},s=["TableInstanceId","TableName"],u={instance:"TableInstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ClusterId",enDescriptor:"ClusterId",cnDescriptor:"表格所属集群ID",link:"",type:"input"},{key:"TableGroupIds",enDescriptor:"TableGroupIds",cnDescriptor:"表格组ID列表",link:"",type:"inputMulti"},{key:"TableName",enDescriptor:"TableName",cnDescriptor:"表格名称",link:"",type:"input"},{key:"TableInstanceId",enDescriptor:"TableInstanceId",cnDescriptor:"表实例ID",link:"",type:"input"},{key:"TableIdlType",enDescriptor:"TableIdlType",cnDescriptor:"表格描述语言类型",link:"",type:"select",list:[{text:"PROTO",value:"PROTO"},{text:"TDR",value:"TDR"}]},{key:"TableType",enDescriptor:"TableType",cnDescriptor:"表格数据结构类型",link:"",type:"select",list:[{text:"GENERIC",value:"GENERIC"},{text:"LIST",value:"LIST"}]},{key:"ListElementNum",enDescriptor:"ListElementNum",cnDescriptor:"LIST表元素个数",link:"",type:"inputNumber"},{key:"ReservedVolume",enDescriptor:"ReservedVolume",cnDescriptor:"表格预留容量(GB)",link:"",type:"inputNumber"},{key:"ReservedReadQps",enDescriptor:"ReservedReadQps",cnDescriptor:"表格预留读CU",link:"",type:"inputNumber"},{key:"ReservedWriteQps",enDescriptor:"ReservedWriteQps",cnDescriptor:"表格预留写CU",link:"",type:"inputNumber"},{key:"Memo",enDescriptor:"Memo",cnDescriptor:"表格备注信息",link:"",type:"input"},{key:"FileName",enDescriptor:"FileName",cnDescriptor:"Key回档文件名,回档专用",link:"",type:"input"},{key:"FileExtType",enDescriptor:"FileExtType",cnDescriptor:"Key回档文件扩展名,回档专用",link:"",type:"input"},{key:"FileSize",enDescriptor:"FileSize",cnDescriptor:"Key回档文件大小,回档专用",link:"",type:"inputNumber"},{key:"FileContent",enDescriptor:"FileContent",cnDescriptor:"Key回档文件内容,回档专用",link:"",type:"input"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/596/39664",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TableInstanceId",queries:{Limit:20,Offset:0,ClusterId:"",TableGroupIds:[],TableName:"",TableInstanceId:"",TableIdlType:{},TableType:{},ListElementNum:null,ReservedVolume:null,ReservedReadQps:null,ReservedWriteQps:null,Memo:"",FileName:"",FileExtType:"",FileSize:null,FileContent:""}};function f(e){void 0===e&&(e={});var t={};t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,t.ClusterId=i.a.get(e,"ClusterId","")||"",t.TableGroupIds=i.a.get(e,"TableGroupIds",[])||[],e=i.a.omit(e,["Offset","Limit","TableGroupIds","ClusterId"]);var n=[];return i.a.forEach(e,(function(e,t){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(n[t]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(n[t]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(n[t]=e)})),t.SelectedTables=n,t}var m={"ap-beijing":"华北地区(北京)","ap-guangzhou":"华南地区(广州)","ap-hongkong":"港澳台地区(中国香港)","ap-seoul":"亚太东北(首尔)","ap-shanghai":"华东地区(上海)","ap-singapore":"亚太东南(新加坡)","ap-tokyo":"亚太东北(东京)","eu-frankfurt":"欧洲地区(法兰克福)","na-ashburn":"美国东部(弗吉尼亚)","na-siliconvalley":"美国西部(硅谷)"};t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"VBCFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VBCInstanceAliasList",(function(){return c})),n.d(t,"VBCInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VBCGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VBC",o="vbcQuery",a={},c=["CcnId","CcnName"],s={instance:"CcnId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ccn-id",enDescriptor:"ccn-id",cnDescriptor:"CCN实例ID",link:"",type:"inputMulti"},{key:"ccn-name",enDescriptor:"ccn-name",cnDescriptor:"CCN名称",link:"",type:"inputMulti"},{key:"ccn-description",enDescriptor:"ccn-description",cnDescriptor:"CCN描述",link:"",type:"inputMulti"},{key:"state",enDescriptor:"state",cnDescriptor:"实例状态",link:"",type:"select",multiple:!0,list:[{text:"隔离中",value:"ISOLATED"},{text:"运行中",value:"AVAILABLE"}]}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/19199",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"CcnId",DRegion:"",SRegion:"",queries:{Limit:20,Offset:0,"ccn-id":[],"ccn-name":[],"ccn-description":[],state:{}}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"VPNGWFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VPNGWInstanceAliasList",(function(){return c})),n.d(t,"VPNGWInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VPNGWGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VPNGW",o="vpngwQuery",a={vpnGwId:"VpnGatewayId"},c=["VpnGatewayId","VpnGatewayName"],s={instance:"VpnGatewayId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"VPC实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-id",enDescriptor:"vpn-gateway-id",cnDescriptor:"VPN实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-name",enDescriptor:"vpn-gateway-name",cnDescriptor:"VPN实例名称",link:"",type:"inputMulti"},{key:"type",enDescriptor:"type",cnDescriptor:"VPN网关类型",link:"",type:"select",multiple:!0,list:[{text:"IPSEC",value:"IPSEC"},{text:"SSL",value:"SSL"}]},{key:"public-ip-address",enDescriptor:"public-ip-address",cnDescriptor:"公网IP",link:"",type:"inputMulti"},{key:"renew-flag",enDescriptor:"renew-flag",cnDescriptor:"网关续费类型",link:"",type:"select",multiple:!0,list:[{text:"手动续费",value:"NOTIFY_AND_MANUAL_RENEW"},{text:"自动续费",value:"NOTIFY_AND_AUTO_RENEW"}]},{key:"zone",enDescriptor:"zone",cnDescriptor:"VPN所在可用区",link:"",type:"dropdownMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/17514",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpnGatewayId",queries:{Limit:20,Offset:0,"vpc-id":[],"vpn-gateway-id":[],"vpn-gateway-name":[],type:{},"public-ip-address":[],"renew-flag":{},zone:[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"VPNXFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VPNXInstanceAliasList",(function(){return c})),n.d(t,"VPNXInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VPNXGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VPNX",o="vpnxQuery",a={vpnConnId:"VpnConnectionId"},c=["VpnConnectionId","VpnConnectionName"],s={instance:"VpnConnectionId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"VPC实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-id",enDescriptor:"vpn-gateway-id",cnDescriptor:"VPN实例ID",link:"",type:"inputMulti"},{key:"customer-gateway-id ",enDescriptor:"customer-gateway-id ",cnDescriptor:"对端网关实例ID",link:"",type:"inputMulti"},{key:"vpn-connection-name",enDescriptor:"vpn-connection-name",cnDescriptor:"通道名称",link:"",type:"inputMulti"},{key:"vpn-connection-id",enDescriptor:"vpn-connection-id",cnDescriptor:"通道实例ID",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/17515",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpnConnectionId",queries:{Limit:20,Offset:0,"vpc-id":[],"vpn-gateway-id":[],"customer-gateway-id":[],"vpn-connection-name":[],"vpn-connection-id":[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"LighthouseFilterFieldsDescriptor",(function(){return a})),n.d(t,"LIGHTHOUSEInstanceAliasList",(function(){return u})),n.d(t,"LighthouseInvalidDemensions",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"modifyDimensons",(function(){return d})),n.d(t,"LIGHTHOUSEGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["InstanceId","InstanceName","PrivateIpAddresses","PublicIpAddresses"],l={instanceid:"InstanceId"},p={instance:"InstanceId"};function d(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CFSQueryDescriptor",(function(){return o})),n.d(t,"CFSInstanceAliasList",(function(){return s})),n.d(t,"CFSInvalidDemensions",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"regionSupported",(function(){return l})),n.d(t,"CFSGetInstanceQueryParams",(function(){return c}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"FileSystemId",enDescriptor:"File System Id",cnDescriptor:"文件系统 ID",link:"",type:"input"},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络(VPC) ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"子网 ID",link:"",type:"input"}],a={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"FileSystemId",version:"",queries:{Offset:0,Limit:20,FileSystemId:"",VpcId:"",SubnetId:""}};function c(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["FileSystemId","FsName"],u={},l=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-nanjing"},{value:"ap-seoul"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-siliconvalley"},{value:"na-toronto"}],p={instance:"InstanceId"};t.default=a},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceQueryDescriptor",(function(){return o})),n.d(t,"InvalidDemensions",(function(){return c})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"InstanceAliasList",(function(){return u})),n.d(t,"GetInstanceQueryParams",(function(){return a}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为10,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:50},{key:"QueueName",enDescriptor:"QueueName",cnDescriptor:"精确匹配QueueName",link:"",type:"input"},{key:"TagKey",enDescriptor:"TagKey",cnDescriptor:"标签搜索",link:"",type:"input"}];function a(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c={queueId:"QueueId",queueName:"QueueName"},s={instance:"QueueName"},u=["QueueName","QueueId"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"QueueName",queries:{Offset:0,Limit:20,QueueName:"",TagKey:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"CVMFilterFieldsDescriptor",(function(){return a})),n.d(t,"CVMInstanceAliasList",(function(){return u})),n.d(t,"isValidMetric",(function(){return d})),n.d(t,"modifyDimensons",(function(){return f})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"CVMGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["InstanceId","InstanceName","PrivateIpAddresses","PublicIpAddresses"],l=["CPUUsage","CpuLoadavg","Cpuloadavg5m","Cpuloadavg15m","BaseCpuUsage","GpuMemTotal","GpuMemUsage","GpuMemUsed","GpuPowDraw","GpuPowLimit","GpuPowUsage","GpuTemp","GpuUtil","LanOuttraffic","LanIntraffic","LanOutpkg","LanInpkg","WanOuttraffic","WanIntraffic","WanOutpkg","WanInpkg","AccOuttraffic","TcpCurrEstab","TimeOffset","MemUsed","MemUsage","CvmDiskUsage","BaseCpuUsage","VmDiskReadIops"],p={instance:"InstanceId"};function d(e){var t=i.a.map(l,i.a.toUpper);return-1!==i.a.indexOf(t,i.a.toUpper(e.MetricName))}function f(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"PCXInstanceAliasList",(function(){return u})),n.d(t,"PCXFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"namespace",(function(){return a})),n.d(t,"PCXGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisFieldsDescriptor",(function(){return a})),n.d(t,"RedisInvalidDemensions",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return d})),n.d(t,"REDISInstanceAliasList",(function(){return l})),n.d(t,"isValidMetric",(function(){return u})),n.d(t,"REDISGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}function u(e){void 0===e&&(e={});var t=i.a.get(e,"Dimensions[0].Dimensions");return 1===t.length&&-1!==i.a.indexOf(t,"instanceid")}var l=["InstanceId","InstanceName","WanIp"],p={redis_uuid:"InstanceId",instanceid:"InstanceId"},d={instance:"InstanceId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"TSFInvalidDemensions",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"TSFInstanceAliasList",(function(){return c})),n.d(t,"TSFFieldsDescriptor",(function(){return i})),n.d(t,"TSFGetInstanceQueryParams",(function(){return a}));var r=n(4),i=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"SearchWord",enDescriptor:"SearchWord",cnDescriptor:"搜索关键字",link:"",type:"input"},{key:"ApplicationIdList",enDescriptor:"ApplicationIdList",cnDescriptor:"应用ID 组成的数组",link:"",type:"inputmulti"},{key:"ApplicationType",enDescriptor:"ApplicationType",cnDescriptor:"应用类型",link:"",type:"select",list:[{text:"所有",value:""},{text:"容器应用",value:"C"},{text:"普通应用/虚拟机应用",value:"V"}]},{key:"MicroserviceType",enDescriptor:"MicroserviceType",cnDescriptor:"应用的微服务类型",link:"",type:"select",list:[{text:"所有",value:""},{text:"普通应用",value:"N"},{text:"Mesh应用",value:"M"},{text:"微服务网关应用",value:"G"},{text:"原生应用",value:"NATIVE"}]},{key:"ApplicationResourceTypeList",enDescriptor:"ApplicationResourceTypeList",cnDescriptor:"应用资源类型数组",link:"",type:"select",multiple:!0,list:[{text:"默认资源类型",value:"DEF"},{text:"微服务网关资源",value:"GW"}]}],o={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ApplicationId",queries:{Limit:20,Offset:0,SearchWord:"",OrderBy:"",OrderType:null,ApplicationType:"",MicroserviceType:"",ApplicationResourceTypeList:[],ApplicationIdList:[]}};function a(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var c=["ApplicationId","ApplicationName"],s={applicationid:"ApplicationId"},u={instance:"ApplicationId"};t.default=o},function(e,t,n){"use strict";n.r(t),n.d(t,"BWPFilterFieldsDescriptor",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BWPInstanceAliasList",(function(){return u})),n.d(t,"BWPInvalidDemensions",(function(){return p})),n.d(t,"BWPGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.BandwidthPackageIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["BandwidthPackageId","BandwidthPackageName"],l={instance:"BandwidthPackageId"},p={bandwidthPackageId:"BandwidthPackageId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNFilterFieldsDescriptor",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"CDNInstanceAliasList",(function(){return u})),n.d(t,"CDNInvalidDemensions",(function(){return l})),n.d(t,"CDNGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&n.push({Name:t,Value:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||n.push({Name:t,Value:i.a.get(e,"value",[]).slice(0,5)}))})),n.length>0&&(t.Filters=n)}return t}var u=["Domain","ProjectId"],l={projectId:"ProjectId",domain:"Domain"},p={instance:"Domain"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"LBFilterDescriptor",(function(){return a})),n.d(t,"LBInstanceAliasList",(function(){return u})),n.d(t,"LBInvalidDemensions",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"LBGetInstanceQueryParams",(function(){return s}));var r,i=n(0),o=n.n(i),a=[{key:"address-id",enDescriptor:"Address ID",cnDescriptor:"EIP 的唯一 ID ",link:"",type:"inputmulti"},{key:"address-name",enDescriptor:"Address Name",cnDescriptor:"EIP 名称 ",link:"",type:"inputmulti"},{key:"address-ip",enDescriptor:"Address IP",cnDescriptor:"EIP 的 IP 地址 ",link:"",type:"inputmulti"},{key:"address-status",enDescriptor:"Address Status",cnDescriptor:"EIP 的状态",link:"",type:"select",list:[{value:"CREATING",text:"CREATING"},{value:"BINDING",text:"BINDING"},{value:"BIND",text:"BIND"},{value:"UNBINDING",text:"UNBINDING"},{value:"UNBIND",text:"UNBIND"},{value:"OFFLINING",text:"OFFLINING"},{value:"BIND_ENI",text:"BIND_ENI"}]},{key:"instance-id",enDescriptor:"Instance ID",cnDescriptor:"实例ID ",link:"",type:"inputmulti"},{key:"private-ip-address",enDescriptor:"Private IP Address",cnDescriptor:"EIP 绑定的内网 IP",link:"",type:"inputmulti"},{key:"network-interface-id",enDescriptor:"Network Interface ID",cnDescriptor:"EIP 绑定的弹性网卡 ID",link:"",type:"inputmulti"},{key:"is-arrears",enDescriptor:"Arrears",cnDescriptor:"EIP 是否欠费 ",link:"",type:"select",list:[{text:"正常",value:"FALSE"},{text:"欠费",value:"TRUE"}]}],c={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"AddressId",version:"",queries:(r={Offset:0,Limit:20},r.AddressIds=[""],r.Filters={"address-id":[],"address-name":[],"address-ip":[],"address-status ":[],"instance-id ":[],"private-ip-address":[],"network-interface-id ":[],"is-arrears ":[]},r)};function s(e){void 0===e&&(e={});var t={};if(!o.a.isEmpty(e))if(t.Limit=o.a.get(e,"Limit",20)||20,t.Offset=o.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(o.a.isArray(e.AddressIds)){var n=o.a.compact(e.AddressIds);o.a.uniq(n).length>0&&(t.AddressIds=o.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];o.a.forEach(e.Filters,(function(e,t){r.length>9||(o.a.isArray(e)?(e=o.a.compact(e)).length>0&&r.push({Name:t,Values:o.a.uniq(e).slice(0,5)}):o.a.isObject(e)&&(o.a.isEmpty(o.a.get(e,"value",[]))||r.push({Name:t,Values:o.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["AddressId","AddressName","AddressIp"],l={eip:"AddressIp"},p={instance:"AddressId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"NATGatewayFilterFieldsDescriptor",(function(){return c})),n.d(t,"NATGATEWAYInstanceAliasList",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"NATInvalidDemensions",(function(){return p})),n.d(t,"NATGATEWAYGetInstanceQueryParams",(function(){return u}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var l={instance:"NatGatewayId"},p={natId:"NatGatewayId"};t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"OVCDNFilterFieldsDescriptor",(function(){return a})),n.d(t,"OVCDNInstanceAliasList",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"OVCDNInvalidDemensions",(function(){return l})),n.d(t,"OVCDNGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&n.push({Name:t,Value:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||n.push({Name:t,Value:i.a.get(e,"value",[]).slice(0,5)}))})),n.length>0&&(t.Filters=n)}return t}var u=["Domain","ResourceId"],l={projectId:"ProjectId",domain:"Domain"},p={instance:"Domain"};t.default=c},,function(e,t){e.exports=i},,function(e,t,n){"use strict";n.r(t),n.d(t,"TKEFilterFieldsDescriptor",(function(){return a})),n.d(t,"TKEInstanceAliasList",(function(){return c})),n.d(t,"TKEGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",conditions:[],groupBys:"",queries:{Limit:20,Offset:0,instanceIdsChecked:!1,filtersChecked:!0,ClusterIds:[""],Filters:{ClusterName:[],ClusterType:[],ClusterStatus:[],"tag-key":[]}}},a=[{key:"ClusterName",enDescriptor:"Cluster Name",cnDescriptor:"集群名",link:"",type:"input"},{key:"ClusterType",enDescriptor:"Cluster Type",cnDescriptor:"集群类型",link:"",type:"inputmulti"},{key:"ClusterStatus",enDescriptor:"Cluster Status",cnDescriptor:"集群状态",link:"",type:"inputmulti"},{key:"Tags",enDescriptor:"Tags",cnDescriptor:"标签键值对",link:"",type:"inputmulti"},{key:"vpc-id",enDescriptor:"VPC",cnDescriptor:"VPC",link:"",type:"input"},{key:"tag-key",enDescriptor:"Tag Key",cnDescriptor:"标签键",link:"",type:"inputmulti"},{key:"tag-value",enDescriptor:"Tag Value",cnDescriptor:"标签值",link:"",type:"inputmulti"}],c=["ClusterId","ClusterName"];function s(e){void 0===e&&(e={});var t={};if(!i.a.isEmpty(e))if(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(i.a.isArray(e.InstanceIds)){var n=i.a.compact(e.InstanceIds);i.a.uniq(n).length>0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}t.default=o},function(e,t,n){"use strict";n.r(t);var r,i=n(21),o=n(3),a=n(2),c=n(4),s=n(8),u=n(1),l=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),p=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},d=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0?D.map((function(e){return{TopicId:e.TopicId,TopicName:e.TopicName}})):v,PartitionList:k.length>0?k:b}]}}))}))},t.prototype.formatTopicVarDisplay=function(e,t,n){var r=this;return t?t.replace(/\$\{(\w+)\}/g,(function(t,n){return n&&r.TopicAliasList.includes(n)?r.getAliasValue(e,n):""})):this.getAliasValue(e,n)},t.prototype.fetchMetricData=function(e,t,n,r){return d(this,void 0,void 0,(function(){var i,o,a,c,s,p,d,m,y,h=this;return f(this,(function(f){switch(f.label){case 0:return i=r.topicalias,o=r.groupname,a=r.topicid,[4,this.getConsumerGroups(t,{InstanceId:n.InstanceId,groupname:o,topicid:a})];case 1:return c=f.sent(),s=r.display,p=c.TopicList,d=c.GroupList,m=c.PartitionList,i=this.TopicAliasList.includes(i)?i:this.templateQueryIdMap.topicId,y={GroupList:d.map((function(e){return e._InstanceAliasValue=e.GroupName,{text:e.GroupName,value:e[u.templateQueryIdMap.groupName]}})),TopicList:p.map((function(e){var t=h.formatTopicVarDisplay(e,s,i);return e._InstanceAliasValue=t||e[u.templateQueryIdMap.topicId],{text:t||e[u.templateQueryIdMap.topicId],value:e[u.templateQueryIdMap.topicId],TopicName:e.TopicName}})),PartitionList:m.map((function(e){return e._InstanceAliasValue=e[u.templateQueryIdMap.partition],{text:e[u.templateQueryIdMap.partition],value:e[u.templateQueryIdMap.partition]}}))},[4,l.a.setExtraStorage(this.service,this.keyInStorage.TopicList,p)];case 2:return f.sent(),[4,l.a.setExtraStorage(this.service,this.keyInStorage.GroupList,d)];case 3:return f.sent(),[4,l.a.setExtraStorage(this.service,this.keyInStorage.PartitionList,m)];case 4:switch(f.sent(),e){case"DescribeTopicList":return[2,y.TopicList];case"DescribeGroup":return[2,y.GroupList];case"DescribePartion":return[2,y.PartitionList];default:return[2,[]]}return[2]}}))}))},t}(s.BaseDatasource);t.default=m},function(e,t,n){"use strict";n.r(t);var r,i=n(12),o=n(3),a=n(0),c=n.n(a),s=n(2),u=n(4),l=n(8),p=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),d=function(){return(d=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=i)return r;var o=Object(s.k)(i,50),a=[];return c.a.forEach(o,(function(t){a.push(n.getInstances(e,t))})),Promise.all(a).then((function(e){return c.a.forEach(e,(function(e){r=c.a.concat(r,e)})),r})).catch((function(e){return r}))}))},t.prototype.getVpcId=function(e,t){void 0===t&&(t={}),(t=l({Offset:0,Limit:20},t)).Offset=String(t.Offset),t.Limit=String(t.Limit);var n=Object(s.e)(e,"vpc");return this.doRequest({url:this.url+n.path,data:t},n.service,{region:e,action:"DescribeVpcs"}).then((function(e){return c.a.map(e.VpcSet||[],(function(e){return{text:e.VpcId,value:e.VpcId}}))}))},t.prototype.getVpcIds=function(e){var t=this,n=[],r={Offset:0,Limit:100};r.Offset=String(r.Offset),r.Limit=String(r.Limit);var i=Object(s.e)(e,"vpc");return this.doRequest({url:this.url+i.path,data:r},i.service,{region:e,action:"DescribeVpcs"}).then((function(r){n=c.a.map(r.VpcSet||[],(function(e){return{text:e.VpcId,value:e.VpcId}}));var i=r.TotalCount||0;if(n.length>=i)return n;var o=Object(s.k)(i,100),a=[];return c.a.forEach(o,(function(n){a.push(t.getVpcId(e,n))})),Promise.all(a).then((function(e){return c.a.forEach(e,(function(e){n=c.a.concat(n,e)})),n})).catch((function(e){return n}))}))},t.prototype.doRequestV2=function(e,t,n){return void 0===n&&(n={}),p(this,void 0,void 0,(function(){return d(this,(function(r){switch(r.label){case 0:return[4,Object(s.d)(e,t,n,this.secretId,this.instanceSettings.id,this.backendSrv)];case 1:return e=r.sent(),[2,this.backendSrv.datasourceRequest(e).then((function(e){return c.a.get(e,"data",{})})).catch((function(e){throw e}))]}}))}))},t}(o.BaseDatasource);t.default=f},function(e,t,n){"use strict";n.r(t);var r,i=n(39),o=n(3),a=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),c=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.Namespace=i.namespace,o.InstanceAliasList=i.POSTGRESInstanceAliasList,o.InvalidDimensions=i.PostgreInvalidDemensions,o.templateQueryIdMap=i.templateQueryIdMap,o.InstanceReqConfig={service:"postgres",action:"DescribeDBInstances",responseField:"DBInstanceSet"},o.MetricReqConfig={resultFilter:i.modifyDimensons},o}return a(t,e),t}(o.BaseDatasource);t.default=c},function(e,t,n){"use strict";n.r(t);var r,i=n(0),o=n(49),a=n(3),c=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0?"_".concat(r.timeshift):"";return{target:"".concat(e.MetricName," - ").concat(o).concat(a),datapoints:Object(i.map)(t.Values,(function(e){return[e.Value,1e3*e.Timestamp+d]}))}}))})))}))},t}(c.BaseDatasource);t.default=p},function(e,t,n){"use strict";n.r(t);var r,i=n(60),o=n(3),a=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),c=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.Namespace="QCE/TSF",o.InstanceAliasList=i.TSFInstanceAliasList,o.InvalidDimensions=i.TSFInvalidDemensions,o.templateQueryIdMap=i.templateQueryIdMap,o.InstanceReqConfig={service:"tsf",action:"DescribeApplications",responseField:"Content"},o}return a(t,e),t}(o.BaseDatasource);t.default=c},function(e,t,n){"use strict";n.r(t);var r,i=n(23),o=n(3),a=n(0),c=n.n(a),s=n(2),u=n(1),l=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),p=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},d=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,l)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(29);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(30);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(31);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"BWPQueryCtrl",(function(){return a})),n.d(t,"bwpQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(61),a=function(){function e(e,t){e.init=function(){e.BWPFilterFieldsDescriptor=o.BWPFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("bwpQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(32);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"CDBQueryCtrl",(function(){return a})),n.d(t,"cdbQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(42),a=function(){function e(e,t){e.init=function(){e.CDBFieldsDescriptor=o.CDBFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"ZoneIds":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cdb",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cdbQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNQueryCtrl",(function(){return a})),n.d(t,"cdnQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(62),a=function(){function e(e,t){e.init=function(){e.CDNFilterFieldsDescriptor=o.CDNFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cdnQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return l})),n.d(t,"sQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(33),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,p)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(34);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(43);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(55),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n \n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cfsQuery",u)},function(e,t,n){"use strict";n.r(t),n.d(t,"CKAFKAQueryCtrl",(function(){return l})),n.d(t,"scfQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(10),a=n(4),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 主题,消费分组,分区 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n \n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"=",instance:"="},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("ckafkaQuery",p)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return f}));var r=n(6),i=n.n(r),o=n(0),a=n(12),c=n(2),s=n(4),u=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},l=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n\x3c!--Listener维度部分--\x3e\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n');function f(){return{template:d,controller:p,restrict:"E",scope:{target:"=",namespace:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("clbQuery",f)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return a})),n.d(t,"sQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(27),a=function(){function e(e,t){e.init=function(){e.GSEFilterFieldsDescriptor=o.CLSFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n \n
\n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(56);Object(r.default)("cmqQuery",{fieldDescriptor:i.InstanceQueryDescriptor,instanceDocUrl:"https://cloud.tencent.com/document/api/406/42624",namespace:"QCE/CMQ"})},function(e,t,n){"use strict";n.r(t),n.d(t,"CmqTopicQueryCtrl",(function(){return u})),n.d(t,"scfQuery",(function(){return l}));var r=n(6),i=n.n(r),o=n(35),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 主题的ui --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n \n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("cmqTopicQuery",l)},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceAliasList",(function(){return a})),n.d(t,"GetInstanceQueryParams",(function(){return o}));var r=n(0),i=n.n(r);function o(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var a=["BucketName"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"BucketName",queries:{}}},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(36);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"CVMQueryCtrl",(function(){return a})),n.d(t,"cvmQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(57),a=function(){function e(e,t){e.init=function(){e.CVMFilterFieldsDescriptor=o.CVMFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cvmQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(24);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(44);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(15),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(45);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(46);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(37);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(38);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return s})),n.d(t,"sQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(20),a=n(2),c=[{label:"diskId",field:"diskId"}],s=function(){function e(e,t){e.init=function(){e.ECMBLOCKSTORAGEFilterFieldsDescriptor=o.ECMBLOCKSTORAGEFilterFieldsDescriptor,e.ExtraFields=c,e.namespace=o.namespace},e.getExtraFields=function(){return c.filter((function(t){var n,r;return t.field in(null!==(n=e.dims)&&void 0!==n?n:{})||t.label in(null!==(r=e.dims)&&void 0!==r?r:{})}))},e.getExtraDropdown=function(t,n){var r=t.instance,i=Object(a.f)(e.namespace);r=e.datasource.getServiceFn(i,"getVariable")(r);try{return(r=JSON.parse(r)).DataDisks.map((function(e){return e._InstanceAliasValue=e[o.templateQueryIdMap.diskId],{text:e[o.templateQueryIdMap.diskId],value:JSON.stringify(e)}}))}catch(t){var c={InstanceId:r};return e.datasource.getServiceFn(i,"getDiskList")({payload:c}).map((function(e){return{text:e[o.templateQueryIdMap.diskId],value:JSON.stringify(e)}}))}},e.init()}return e.$inject=["$scope","$rootScope"],e}();function u(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(47);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(14),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t),n.d(t,"LBQueryCtrl",(function(){return a})),n.d(t,"lbQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(63),a=function(){function e(e,t){e.init=function(){e.LBFilterDescriptor=o.LBFilterDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n\n\x3c!--Filters部分--\x3e\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("lbQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"LighthouseQueryCtrl",(function(){return a})),n.d(t,"lighthouseQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(54),a=function(){function e(e,t){e.init=function(){e.LighthouseFilterFieldsDescriptor=o.LighthouseFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("lighthouse",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("lighthouseQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"MongoDBQueryCtrl",(function(){return p})),n.d(t,"mongodbQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(0),a=n(48),c=n(2),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onRefresh:"&",onChange:"&"},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("mongodbQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"MrQueryCtrl",(function(){return u})),n.d(t,"mrQuery",(function(){return l}));var r=n(22),i=n(6),o=n.n(i),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\x3c!-- 主题的ui --\x3e\n
\n
\n
\n \n
\n\n \n \n
\n
\n
\n
\n\n \n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}o.a.directive("mrQuery",l)},function(e,t,n){"use strict";n.r(t),n.d(t,"NatGatewayQueryCtrl",(function(){return a})),n.d(t,"natGatewayQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(64),a=function(){function e(e,t){e.init=function(){e.NATGatewayFilterFieldsDescriptor=o.NATGatewayFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(e){return[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("natGatewayQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"OVCDNQueryCtrl",(function(){return a})),n.d(t,"ovCdnQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(65),a=function(){function e(e,t){e.init=function(){e.OVCDNFilterFieldsDescriptor=o.OVCDNFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("ovCdnQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"PCXQueryCtrl",(function(){return a})),n.d(t,"pcxQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(58),a=function(){function e(e,t){e.init=function(){e.PCXFieldsDescriptor=o.PCXFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"vpcId":return e.getVpcIds();default:return[]}},e.getVpcIds=function(){return e.region?e.datasource.getVpcIds("pcx",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("pcxQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(39);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(49);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisQueryCtrl",(function(){return a})),n.d(t,"redisQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(59),a=function(){function e(e,t){e.init=function(){e.RedisFieldsDescriptor=o.RedisFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(e){return[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("redisQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisMemQueryCtrl",(function(){return l})),n.d(t,"redisMemQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(0),a=n(16),c=n(2),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("redisMemQuery",p)},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(25),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- version部分 --\x3e\n
\n
\n \n
\n \n \n
\n
\n
\n\n \n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&"}}}i.a.directive("scfQuery",u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(28);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(50);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(13),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(17),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("tdmqRabbitmqQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"TdmqRocketmqQueryCtrl",(function(){return p})),n.d(t,"tdmqRocketmqQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(18),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("tdmqRocketmqQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return c})),n.d(t,"sQuery",(function(){return s}));var r=n(6),i=n.n(r),o=n(0),a=n(69),c=function(){function e(e,t){e.init=function(){e.TKEFilterFieldsDescriptor=a.TKEFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.addCondition=function(){e.target.conditions.push({Key:"",Operator:"=",Value:""})},e.deleteCondition=function(t){var n=e.target.conditions[t];Object(o.isEmpty)(n.Key)||Object(o.isEmpty)(n.Operator)||Object(o.isEmpty)(n.Value)?e.target.conditions.splice(t,1):(e.target.conditions.splice(t,1),e.onRefresh())},e.getOperator=function(){return Promise.resolve([{text:"=",value:"="},{text:"in",value:"in"}])},e.init()}return e.$inject=["$scope","$rootScope"],e}();function s(){return{template:'\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n \n
\n
\n \n
\n \n \n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n',controller:c,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("tkeQuery",s)},function(e,t,n){"use strict";n.r(t),n.d(t,"TSFQueryCtrl",(function(){return a})),n.d(t,"tsfQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(60),a=function(){function e(e,t){e.init=function(){e.TSFFieldsDescriptor=o.TSFFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("tsfQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(23);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"VBCQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(51),a=n(2),c=[],s=function(){function e(e,t){e.init=function(){e.VBCFilterFieldsDescriptor=o.VBCFilterFieldsDescriptor,e.namespace=o.namespace},e.getExtraFields=function(){return c.filter((function(t){var n;return t.field in(null!==(n=e.dims)&&void 0!==n?n:{})}))},e.getExtraDropdown=function(t){var n=Object(a.f)(e.namespace);return e.datasource.getFilterDropdown(n,{field:t})},e.init()}return e.$inject=["$scope","$rootScope"],e}();function u(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("vbcQuery",u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(40);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(52);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(53);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(41);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){var r={".":19,"./":19,"./MonitorDatasource":182,"./MonitorDatasource.ts":182,"./_base/datasource":3,"./_base/datasource.ts":3,"./_base/query":7,"./_base/query.ts":7,"./_base/query_filter":185,"./_base/query_filter.ts":185,"./_base/types":186,"./_base/types.ts":186,"./apigateway/datasource":70,"./apigateway/datasource.ts":70,"./apigateway/query":126,"./apigateway/query.ts":126,"./apigateway/query_def":21,"./apigateway/query_def.ts":21,"./bmIntraLb/datasource":71,"./bmIntraLb/datasource.ts":71,"./bmIntraLb/query":127,"./bmIntraLb/query.ts":127,"./bmIntraLb/query_def":29,"./bmIntraLb/query_def.ts":29,"./bm_lb/datasource":72,"./bm_lb/datasource.ts":72,"./bm_lb/query":128,"./bm_lb/query.ts":128,"./bm_lb/query_def":30,"./bm_lb/query_def.ts":30,"./bm_pcx/datasource":73,"./bm_pcx/datasource.ts":73,"./bm_pcx/query":129,"./bm_pcx/query.ts":129,"./bm_pcx/query_def":31,"./bm_pcx/query_def.ts":31,"./bwp/datasource":74,"./bwp/datasource.ts":74,"./bwp/query":130,"./bwp/query.ts":130,"./bwp/query_def":61,"./bwp/query_def.ts":61,"./cbs/datasource":75,"./cbs/datasource.ts":75,"./cbs/query":131,"./cbs/query.ts":131,"./cbs/query_def":32,"./cbs/query_def.ts":32,"./cdb/datasource":76,"./cdb/datasource.ts":76,"./cdb/query":132,"./cdb/query.ts":132,"./cdb/query_def":42,"./cdb/query_def.ts":42,"./cdn/datasource":77,"./cdn/datasource.ts":77,"./cdn/query":133,"./cdn/query.ts":133,"./cdn/query_def":62,"./cdn/query_def.ts":62,"./cdn_province/datasource":78,"./cdn_province/datasource.ts":78,"./cdn_province/query":134,"./cdn_province/query.ts":134,"./cdn_province/query_def":33,"./cdn_province/query_def.ts":33,"./ceip_summary/datasource":79,"./ceip_summary/datasource.ts":79,"./ceip_summary/query":135,"./ceip_summary/query.ts":135,"./ceip_summary/query_def":34,"./ceip_summary/query_def.ts":34,"./ces/datasource":80,"./ces/datasource.ts":80,"./ces/query":136,"./ces/query.ts":136,"./ces/query_def":43,"./ces/query_def.ts":43,"./cfs/datasource":81,"./cfs/datasource.ts":81,"./cfs/query":137,"./cfs/query.ts":137,"./cfs/query_def":55,"./cfs/query_def.ts":55,"./ckafka/datasource":82,"./ckafka/datasource.ts":82,"./ckafka/query":138,"./ckafka/query.ts":138,"./ckafka/query_def":10,"./ckafka/query_def.ts":10,"./clb/datasource":83,"./clb/datasource.ts":83,"./clb/query":139,"./clb/query.ts":139,"./clb/query_def":12,"./clb/query_def.ts":12,"./cls/datasource":84,"./cls/datasource.ts":84,"./cls/query":140,"./cls/query.ts":140,"./cls/query_def":27,"./cls/query_def.ts":27,"./cmq/datasource":85,"./cmq/datasource.ts":85,"./cmq/query":141,"./cmq/query.ts":141,"./cmq/query_def":56,"./cmq/query_def.ts":56,"./cmq_topic/datasource":86,"./cmq_topic/datasource.ts":86,"./cmq_topic/query":142,"./cmq_topic/query.ts":142,"./cmq_topic/query_def":35,"./cmq_topic/query_def.ts":35,"./cos/datasource":87,"./cos/datasource.ts":87,"./cos/query_def":143,"./cos/query_def.ts":143,"./cpm/datasource":88,"./cpm/datasource.ts":88,"./cpm/query":144,"./cpm/query.ts":144,"./cpm/query_def":36,"./cpm/query_def.ts":36,"./cvm/datasource":89,"./cvm/datasource.ts":89,"./cvm/query":145,"./cvm/query.ts":145,"./cvm/query_def":57,"./cvm/query_def.ts":57,"./cynosdb_mysql/datasource":90,"./cynosdb_mysql/datasource.ts":90,"./cynosdb_mysql/query":146,"./cynosdb_mysql/query.ts":146,"./cynosdb_mysql/query_def":24,"./cynosdb_mysql/query_def.ts":24,"./dc/datasource":91,"./dc/datasource.ts":91,"./dc/query":147,"./dc/query.ts":147,"./dc/query_def":44,"./dc/query_def.ts":44,"./dcdb/datasource":92,"./dcdb/datasource.ts":92,"./dcdb/query":148,"./dcdb/query.ts":148,"./dcdb/query_def":15,"./dcdb/query_def.ts":15,"./dcg/datasource":93,"./dcg/datasource.ts":93,"./dcg/query":149,"./dcg/query.ts":149,"./dcg/query_def":45,"./dcg/query_def.ts":45,"./dcx/datasource":94,"./dcx/datasource.ts":94,"./dcx/query":150,"./dcx/query.ts":150,"./dcx/query_def":46,"./dcx/query_def.ts":46,"./ecdn/datasource":95,"./ecdn/datasource.ts":95,"./ecdn/query":151,"./ecdn/query.ts":151,"./ecdn/query_def":37,"./ecdn/query_def.ts":37,"./ecm/datasource":96,"./ecm/datasource.ts":96,"./ecm/query":152,"./ecm/query.ts":152,"./ecm/query_def":38,"./ecm/query_def.ts":38,"./ecm_block_storage/datasource":97,"./ecm_block_storage/datasource.ts":97,"./ecm_block_storage/query":153,"./ecm_block_storage/query.ts":153,"./ecm_block_storage/query_def":20,"./ecm_block_storage/query_def.ts":20,"./ecm_lb/datasource":98,"./ecm_lb/datasource.ts":98,"./ecm_lb/query":154,"./ecm_lb/query.ts":154,"./ecm_lb/query_def":47,"./ecm_lb/query_def.ts":47,"./gse/datasource":99,"./gse/datasource.ts":99,"./gse/query":155,"./gse/query.ts":155,"./gse/query_def":14,"./gse/query_def.ts":14,"./index":19,"./index.ts":19,"./lb/datasource":100,"./lb/datasource.ts":100,"./lb/query":156,"./lb/query.ts":156,"./lb/query_def":63,"./lb/query_def.ts":63,"./lighthouse/datasource":101,"./lighthouse/datasource.ts":101,"./lighthouse/query":157,"./lighthouse/query.ts":157,"./lighthouse/query_def":54,"./lighthouse/query_def.ts":54,"./mongodb/datasource":102,"./mongodb/datasource.ts":102,"./mongodb/query":158,"./mongodb/query.ts":158,"./mongodb/query_def":48,"./mongodb/query_def.ts":48,"./mr/datasource":103,"./mr/datasource.ts":103,"./mr/query":159,"./mr/query.ts":159,"./mr/query_def":22,"./mr/query_def.ts":22,"./nat_gateway/datasource":104,"./nat_gateway/datasource.ts":104,"./nat_gateway/query":160,"./nat_gateway/query.ts":160,"./nat_gateway/query_def":64,"./nat_gateway/query_def.ts":64,"./ov_cdn/datasource":105,"./ov_cdn/datasource.ts":105,"./ov_cdn/query":161,"./ov_cdn/query.ts":161,"./ov_cdn/query_def":65,"./ov_cdn/query_def.ts":65,"./pcx/datasource":106,"./pcx/datasource.ts":106,"./pcx/query":162,"./pcx/query.ts":162,"./pcx/query_def":58,"./pcx/query_def.ts":58,"./postgresql/datasource":107,"./postgresql/datasource.ts":107,"./postgresql/query":163,"./postgresql/query.ts":163,"./postgresql/query_def":39,"./postgresql/query_def.ts":39,"./qaap/datasource":108,"./qaap/datasource.ts":108,"./qaap/query":164,"./qaap/query.ts":164,"./qaap/query_def":49,"./qaap/query_def.ts":49,"./redis/datasource":109,"./redis/datasource.ts":109,"./redis/query":165,"./redis/query.ts":165,"./redis/query_def":59,"./redis/query_def.ts":59,"./redis_mem/datasource":110,"./redis_mem/datasource.ts":110,"./redis_mem/query":166,"./redis_mem/query.ts":166,"./redis_mem/query_def":16,"./redis_mem/query_def.ts":16,"./scf/datasource":111,"./scf/datasource.ts":111,"./scf/query":167,"./scf/query.ts":167,"./scf/query_def":25,"./scf/query_def.ts":25,"./sqlserver/datasource":112,"./sqlserver/datasource.ts":112,"./sqlserver/query":168,"./sqlserver/query.ts":168,"./sqlserver/query_def":28,"./sqlserver/query_def.ts":28,"./tcaplus/datasource":113,"./tcaplus/datasource.ts":113,"./tcaplus/query":169,"./tcaplus/query.ts":169,"./tcaplus/query_def":50,"./tcaplus/query_def.ts":50,"./tdmq/datasource":114,"./tdmq/datasource.ts":114,"./tdmq/query":170,"./tdmq/query.ts":170,"./tdmq/query_def":13,"./tdmq/query_def.ts":13,"./tdmq_rabbitmq/datasource":115,"./tdmq_rabbitmq/datasource.ts":115,"./tdmq_rabbitmq/query":171,"./tdmq_rabbitmq/query.ts":171,"./tdmq_rabbitmq/query_def":17,"./tdmq_rabbitmq/query_def.ts":17,"./tdmq_rocketmq/datasource":116,"./tdmq_rocketmq/datasource.ts":116,"./tdmq_rocketmq/query":172,"./tdmq_rocketmq/query.ts":172,"./tdmq_rocketmq/query_def":18,"./tdmq_rocketmq/query_def.ts":18,"./tke/datasource":117,"./tke/datasource.ts":117,"./tke/query":173,"./tke/query.ts":173,"./tke/query_def":69,"./tke/query_def.ts":69,"./tsf/datasource":118,"./tsf/datasource.ts":118,"./tsf/query":174,"./tsf/query.ts":174,"./tsf/query_def":60,"./tsf/query_def.ts":60,"./v_clb/datasource":119,"./v_clb/datasource.ts":119,"./v_clb/query":175,"./v_clb/query.ts":175,"./v_clb/query_def":23,"./v_clb/query_def.ts":23,"./vbc/datasource":120,"./vbc/datasource.ts":120,"./vbc/query":176,"./vbc/query.ts":176,"./vbc/query_def":51,"./vbc/query_def.ts":51,"./vpc_net_detect/datasource":121,"./vpc_net_detect/datasource.ts":121,"./vpc_net_detect/query":177,"./vpc_net_detect/query.ts":177,"./vpc_net_detect/query_def":40,"./vpc_net_detect/query_def.ts":40,"./vpngw/datasource":122,"./vpngw/datasource.ts":122,"./vpngw/query":178,"./vpngw/query.ts":178,"./vpngw/query_def":52,"./vpngw/query_def.ts":52,"./vpnx/datasource":123,"./vpnx/datasource.ts":123,"./vpnx/query":179,"./vpnx/query.ts":179,"./vpnx/query_def":53,"./vpnx/query_def.ts":53,"./waf/datasource":124,"./waf/datasource.ts":124,"./waf/query":180,"./waf/query.ts":180,"./waf/query_def":41,"./waf/query_def.ts":41};function i(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=o,e.exports=i,i.id=181},function(e,t,n){"use strict";n.r(t),n.d(t,"TCMonitorDatasource",(function(){return u}));var r=n(0),i=n.n(r),o=n(19),a=n(2),c=n(4),s=n(9),u=function(){function e(e,t,n){var r=this;this.instanceSettings=e,this.backendSrv=t,this.templateSrv=n,i.a.forEach(o.Datasources,(function(e,t){r[t]=new e(r.instanceSettings,r.backendSrv,r.templateSrv)}))}return e.$inject=["instanceSettings","backendSrv","templateSrv"],e.prototype.getNamespaces=function(){var e=this,t=[];return i.a.forEach(o.SERVICES,(function(n){!0===e.instanceSettings.jsonData[n.service]&&t.push(n)})),t},e.prototype.getCascaderNamespaces=function(){var e=this,t=o.SERVICES.filter((function(t){return e.instanceSettings.jsonData[t.service]}));return Object(c.f)(t)},e.prototype.getSelectedServices=function(){var e=this.getNamespaces();return i.a.map(e,(function(e){var t=e.namespace;return Object(a.f)(t)}))},e.prototype.query=function(e){var t=this,n=[],r=this.getSelectedServices();return i.a.forEach(r,(function(r){var o=i.a.cloneDeep(e),a=i.a.filter(o.targets,(function(e){return e.service===r}));if(o.targets=a,o.targets.length>0){var c=t["".concat(i.a.toUpper(r),"Datasource")].query(o);c&&n.push(c)}})),0===n.length?Promise.resolve({data:[],state:s.LoadingState.Done}):Promise.all(n).then((function(e){return{data:i.a.flatten(e),state:s.LoadingState.Done}}))},e.prototype.metricFindQuery=function(e,t){var n=Object(a.h)(e),r=Object(a.f)(n.namespace||"");if(i.a.isEmpty(n)||!n.namespace||!n.action||!r)return Promise.resolve([]);if(this["".concat(i.a.toUpper(r),"Datasource")].metricFindQuery){var o=this["".concat(i.a.toUpper(r),"Datasource")].metricFindQuery(n,i.a.get(t,"variable.regex",void 0));if(o)return o}return Promise.resolve([])},e.prototype.getRegions=function(e){return this["".concat(i.a.toUpper(e),"Datasource")].getRegions?this["".concat(i.a.toUpper(e),"Datasource")].getRegions():[]},e.prototype.getMetrics=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getMetrics(t)},e.prototype.getZones=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getZones?this["".concat(i.a.toUpper(e),"Datasource")].getZones(t):[]},e.prototype.getFilterDropdown=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getFilterDropdown?this["".concat(i.a.toUpper(e),"Datasource")].getFilterDropdown(t):[]},e.prototype.getInstances=function(e,t,n){return this["".concat(i.a.toUpper(e),"Datasource")].getInstances(t,n)},e.prototype.getListeners=function(e,t,n){return this["".concat(i.a.toUpper(e),"Datasource")].getListeners?this["".concat(i.a.toUpper(e),"Datasource")].getListeners(t,n):[]},e.prototype.getVpcIds=function(e,t){if(this["".concat(i.a.toUpper(e),"Datasource")].getVpcIds)return this["".concat(i.a.toUpper(e),"Datasource")].getVpcIds(t)},e.prototype.testDatasource=function(){var e=this,t=[],n=this.getSelectedServices();return i.a.forEach(n,(function(n){t.push(e["".concat(i.a.toUpper(n),"Datasource")].testDatasource())})),0===t.length?Promise.resolve(null):Promise.all(t).then((function(e){var t="success",n="DataSource Connection OK",r=i.a.reduce(e,(function(e,t){return"error"===t.status&&(""===e&&(e+="Oops! Found an error in: "),e+="".concat(t.service,": ").concat(t.message,"; \n")),e}),"");return r&&(t="error",n=r),{status:t,message:n,title:i.a.upperFirst(t)}}))},e.prototype.getServiceFn=function(e,t){var n=this;return function(){for(var r,o=[],a=0;a=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122?n+=t.charAt(r):o<128?n+=i[o]:o<2048?n+=i[192|o>>6]+i[128|63&o]:o<55296||o>=57344?n+=i[224|o>>12]+i[128|o>>6&63]+i[128|63&o]:(r+=1,o=65536+((1023&o)<<10|1023&t.charCodeAt(r)),n+=i[240|o>>18]+i[128|o>>12&63]+i[128|o>>6&63]+i[128|63&o])}return n},isBuffer:function(e){return null!=e&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},merge:function e(t,n,i){if(!n)return t;if("object"!=typeof n){if(Array.isArray(t))t.push(n);else{if("object"!=typeof t)return[t,n];(i.plainObjects||i.allowPrototypes||!r.call(Object.prototype,n))&&(t[n]=!0)}return t}if("object"!=typeof t)return[t].concat(n);var a=t;return Array.isArray(t)&&!Array.isArray(n)&&(a=o(t,i)),Array.isArray(t)&&Array.isArray(n)?(n.forEach((function(n,o){r.call(t,o)?t[o]&&"object"==typeof t[o]?t[o]=e(t[o],n,i):t.push(n):t[o]=n})),t):Object.keys(n).reduce((function(t,o){var a=n[o];return r.call(t,o)?t[o]=e(t[o],a,i):t[o]=a,t}),a)}}},function(e,t,n){"use strict";var r=String.prototype.replace,i=/%20/g;e.exports={default:"RFC3986",formatters:{RFC1738:function(e){return r.call(e,i,"+")},RFC3986:function(e){return e}},RFC1738:"RFC1738",RFC3986:"RFC3986"}},function(e,t,n){"use strict";n.r(t),n.d(t,"queryDDO",(function(){return a}));var r=n(6),i=n.n(r),o=function(){function e(t,n){Object.assign(t,e._config),t.onChecked=function(e,n){!0===t.target.queries[e]&&(t.target.queries[n]=!1),t.onChange()},t.init()}return e.$inject=["$scope","$rootScope"],e}();function a(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n',controller:o,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}t.default=function(e,t){o._config=t,i.a.directive(e,a)}},function(e,t,n){"use strict";n.r(t)},function(e,t,n){"use strict";var r=n(189),i=n(190),o=n(184);e.exports={formats:o,parse:i,stringify:r}},function(e){e.exports=JSON.parse('{"type":"datasource","name":"Tencent Cloud Monitoring","id":"tencentcloud-monitor-datasource","backend":true,"alerting":true,"logs":true,"metrics":true,"annotations":false,"executable":"tencentcloud-monitor-app-backend","queryOptions":{"maxDataPoints":true},"routes":[{"path":"cls-internal","url":"https://cls.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"region-internal","url":"https://region.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"api-internal","url":"https://api.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cmq-internal","url":"https://cmq.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shanghai-internal","url":"https://cmq.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shenzhen-internal","url":"https://cmq.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"emr-internal","url":"https://emr.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shanghai-internal","url":"https://emr.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shenzhen-internal","url":"https://emr.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"scf-internal","url":"https://scf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shanghai-internal","url":"https://scf.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shenzhen-internal","url":"https://scf.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cfs-internal","url":"https://cfs.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shanghai-internal","url":"https://cfs.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shenzhen-internal","url":"https://cfs.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ckafka-internal","url":"https://ckafka.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shanghai-internal","url":"https://ckafka.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shenzhen-internal","url":"https://ckafka.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"clb-internal","url":"https://clb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shanghai-internal","url":"https://clb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shenzhen-internal","url":"https://clb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"mongodb-internal","url":"https://mongodb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shanghai-internal","url":"https://mongodb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shenzhen-internal","url":"https://mongodb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"vpc-internal","url":"https://vpc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shanghai-internal","url":"https://vpc.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shenzhen-internal","url":"https://vpc.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"pcx-internal","url":"https://vpc.api.qcloud.com.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/x-www-form-urlencoded"}]},{"path":"cvm-internal","url":"https://cvm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shanghai-internal","url":"https://cvm.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shenzhen-internal","url":"https://cvm.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"monitor-internal","url":"https://monitor.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shanghai-internal","url":"https://monitor.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shenzhen-internal","url":"https://monitor.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdb-internal","url":"https://cdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shanghai-internal","url":"https://cdb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shenzhen-internal","url":"https://cdb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"postgres-internal","url":"https://postgres.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shanghai-internal","url":"https://postgres.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shenzhen-internal","url":"https://postgres.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdn-internal","url":"https://cdn.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"redis-internal","url":"https://redis.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dcdb-internal","url":"https://dcdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dc-internal","url":"https://dc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cynosdb-internal","url":"https://cynosdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"sqlserver-internal","url":"https://sqlserver.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmeip-internal","url":"https://bmeip.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmvpc-internal","url":"https://bmvpc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmlb-internal","url":"https://bmlb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bm-internal","url":"https://bm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"es-internal","url":"https://es.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cbs-internal","url":"https://cbs.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tcaplusdb-internal","url":"https://tcaplusdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"apigateway-internal","url":"https://apigateway.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tdmq-internal","url":"https://tdmq.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gaap-internal","url":"https://gaap.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecm-internal","url":"https://ecm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gse-internal","url":"https://gse.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"lighthouse-internal","url":"https://lighthouse.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tsf-internal","url":"https://tsf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"rum-internal","url":"https://rum.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tke-internal","url":"https://tke.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecdn-internal","url":"https://ecdn.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"waf-internal","url":"https://waf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"apigateway","url":"https://apigateway.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"api","url":"https://api.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cmq","url":"https://cmq.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shanghai","url":"https://cmq.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shenzhen","url":"https://cmq.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"emr","url":"https://emr.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shanghai","url":"https://emr.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shenzhen","url":"https://emr.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"scf","url":"https://scf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shanghai","url":"https://scf.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shenzhen","url":"https://scf.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cfs","url":"https://cfs.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shanghai","url":"https://cfs.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shenzhen","url":"https://cfs.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ckafka","url":"https://ckafka.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shanghai","url":"https://ckafka.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shenzhen","url":"https://ckafka.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"clb","url":"https://clb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shanghai","url":"https://clb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shenzhen","url":"https://clb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"mongodb","url":"https://mongodb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shanghai","url":"https://mongodb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shenzhen","url":"https://mongodb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"vpc","url":"https://vpc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shanghai","url":"https://vpc.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shenzhen","url":"https://vpc.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"pcx","url":"https://vpc.api.qcloud.com","headers":[{"name":"Content-Type","content":"application/x-www-form-urlencoded"}]},{"path":"cvm","url":"https://cvm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shanghai","url":"https://cvm.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shenzhen","url":"https://cvm.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"monitor","url":"https://monitor.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shanghai","url":"https://monitor.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shenzhen","url":"https://monitor.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdb","url":"https://cdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shanghai","url":"https://cdb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shenzhen","url":"https://cdb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"postgres","url":"https://postgres.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shanghai","url":"https://postgres.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shenzhen","url":"https://postgres.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdn","url":"https://cdn.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"redis","url":"https://redis.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dcdb","url":"https://dcdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dc","url":"https://dc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cynosdb","url":"https://cynosdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"sqlserver","url":"https://sqlserver.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmeip","url":"https://bmeip.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmvpc","url":"https://bmvpc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmlb","url":"https://bmlb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bm","url":"https://bm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"es","url":"https://es.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cbs","url":"https://cbs.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tcaplusdb","url":"https://tcaplusdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tdmq","url":"https://tdmq.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gaap","url":"https://gaap.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecm","url":"https://ecm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gse","url":"https://gse.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cls","url":"https://cls.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cls/shanghai","url":"https://cls.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cls/shenzhen","url":"https://cls.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"region","url":"https://region.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"lighthouse","url":"https://lighthouse.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tsf","url":"https://tsf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"rum","url":"https://rum.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tke","url":"https://tke.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecdn","url":"https://ecdn.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"waf","url":"https://waf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]}],"info":{"author":{"name":"Tencent Cloud"},"logos":{"small":"img/tencent-cloud.svg","large":"img/tencent-cloud.svg"},"description":"Data source for Tencent Cloud monitoring service"}}')},function(e,t,n){"use strict";var r=n(183),i=n(184),o={brackets:function(e){return e+"[]"},indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},a=Date.prototype.toISOString,c={delimiter:"&",encode:!0,encoder:r.encode,encodeValuesOnly:!1,serializeDate:function(e){return a.call(e)},skipNulls:!1,strictNullHandling:!1},s=function e(t,n,i,o,a,s,u,l,p,d,f,m){var y=t;if("function"==typeof u)y=u(n,y);else if(y instanceof Date)y=d(y);else if(null===y){if(o)return s&&!m?s(n,c.encoder):n;y=""}if("string"==typeof y||"number"==typeof y||"boolean"==typeof y||r.isBuffer(y))return s?[f(m?n:s(n,c.encoder))+"="+f(s(y,c.encoder))]:[f(n)+"="+f(String(y))];var h,g=[];if(void 0===y)return g;if(Array.isArray(u))h=u;else{var v=Object.keys(y);h=l?v.sort(l):v}for(var b=0;b0?_+x:""}},function(e,t,n){"use strict";var r=n(183),i=Object.prototype.hasOwnProperty,o={allowDots:!1,allowPrototypes:!1,arrayLimit:20,decoder:r.decode,delimiter:"&",depth:5,parameterLimit:1e3,plainObjects:!1,strictNullHandling:!1},a=function(e,t,n){if(e){var r=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,a=/(\[[^[\]]*])/.exec(r),c=a?r.slice(0,a.index):r,s=[];if(c){if(!n.plainObjects&&i.call(Object.prototype,c)&&!n.allowPrototypes)return;s.push(c)}for(var u=0;null!==(a=o.exec(r))&&u=0;--i){var o,a=e[i];if("[]"===a)o=(o=[]).concat(r);else{o=n.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,s=parseInt(c,10);!isNaN(s)&&a!==c&&String(s)===c&&s>=0&&n.parseArrays&&s<=n.arrayLimit?(o=[])[s]=r:o[c]=r}r=o}return r}(s,t,n)}};e.exports=function(e,t){var n=t?r.assign({},t):{};if(null!==n.decoder&&void 0!==n.decoder&&"function"!=typeof n.decoder)throw new TypeError("Decoder has to be a function.");if(n.ignoreQueryPrefix=!0===n.ignoreQueryPrefix,n.delimiter="string"==typeof n.delimiter||r.isRegExp(n.delimiter)?n.delimiter:o.delimiter,n.depth="number"==typeof n.depth?n.depth:o.depth,n.arrayLimit="number"==typeof n.arrayLimit?n.arrayLimit:o.arrayLimit,n.parseArrays=!1!==n.parseArrays,n.decoder="function"==typeof n.decoder?n.decoder:o.decoder,n.allowDots="boolean"==typeof n.allowDots?n.allowDots:o.allowDots,n.plainObjects="boolean"==typeof n.plainObjects?n.plainObjects:o.plainObjects,n.allowPrototypes="boolean"==typeof n.allowPrototypes?n.allowPrototypes:o.allowPrototypes,n.parameterLimit="number"==typeof n.parameterLimit?n.parameterLimit:o.parameterLimit,n.strictNullHandling="boolean"==typeof n.strictNullHandling?n.strictNullHandling:o.strictNullHandling,""===e||null==e)return n.plainObjects?Object.create(null):{};for(var c="string"==typeof e?function(e,t){for(var n={},r=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,a=t.parameterLimit===1/0?void 0:t.parameterLimit,c=r.split(t.delimiter,a),s=0;s0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(this.configured=!0))}return e.$inject=["$scope","$injector","$q"],e.prototype.moveToFolder=function(e,t){return o(this,void 0,void 0,(function(){var n;return a(this,(function(r){switch(r.label){case 0:return[4,c.get("/api/dashboards/uid/".concat(e))];case 1:return n=r.sent().dashboard,[4,c.post("/api/dashboards/db/",{dashboard:n,folderId:t,message:"",overwrite:!0})];case 2:return r.sent(),[2]}}))}))},e.prototype.reviseDashboard=function(){var e;return o(this,void 0,void 0,(function(){var t,n,r,i,o,s=this;return a(this,(function(a){switch(a.label){case 0:return[4,l()];case 1:return t=a.sent(),n=t[0],r=t[1],[4,c.get("/api/plugins/".concat(null===(e=this.appModel)||void 0===e?void 0:e.id,"/dashboards"))];case 2:return i=a.sent(),o=i.map((function(e){var t=e.importedUrl,i=e.path,o=t.split("/")[2];return o?s.moveToFolder(o,i.endsWith("_en_dashboard.json")?r:n):Promise.resolve()})),[2,Promise.all(o)]}}))}))},e.prototype.postUpdate=function(){var e;return o(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return(null===(e=this.appModel)||void 0===e?void 0:e.enabled)?[4,this.reviseDashboard()]:[2];case 1:return t.sent(),[2,this.$q.resolve(!0)]}}))}))},e.templateUrl="components/config.html",e}()}])})); +define("TencentCloudMonitorGrafanaApp",["lodash","app/core/core_module","@grafana/data","@grafana/runtime","moment"],(function(e,t,n,r,i){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=195)}([function(t,n){t.exports=e},function(e,t,n){"use strict";var r={language:"语言",enable_intranet_API_mode:"开启内网API模式",cloud_database:"云数据库",cloud_load_balancer:"负载均衡",virtual_private_cloud:"私有网络",content_delivery_network:"内容分发网络",message_queue:"消息队列",direct_connect:"专线接入",cloud_physical_machine:"黑石物理服务器",elastic_mapReduce:"弹性 MapReduce",edge_computing_machine:"边缘计算机器",RUM:"前端性能监控(RUM)",CLS:"日志服务(CLS)",CVM:"云服务器(CVM)",CDB:"云数据库 MySQL(CDB)",CMONGO:"云数据库 MongoDB(CMONGO)",POSTGRES:"云数据库 PostgreSQL(POSTGRES)",REDIS:"云数据库 Redis(REDIS)",REDIS_MEM:"云数据库 Redis内存版(5s)(REDIS_MEM)",SQLSERVER:"云数据库 SQL Server(SQLSERVER)",CYNOSDB_MYSQL:"云数据库 CYNOSDB_MYSQL(CYNOSDB_MYSQL)",TCAPLUS:"云数据库 TcaplusDB(TCAPLUS)",TDMYSQL:"分布式数据库 TDSQL MySQL(TDMYSQL)",PCX:"私有网络-对等连接(PCX)",BWP:"私有网络-带宽包(BWP)",NAT_GATEWAY:"私有网络-NAT 网关(NAT_GATEWAY)",VPNGW:"私有网络-VPN 网关(VPNGW)",VPNX:"私有网络-VPN 通道(VPNX)",DCG:"私有网络-专线网关(DCG)",CEIP_SUMMARY:"私有网络-Anycast 弹性公网IP(CEIP_SUMMARY)",VPC_NET_DETECT:"私有网络-网络探测(VPC_NET_DETECT)",VBC:"私有网络-云联网(VBC)",LB:"私有网络-弹性公网IP(LB)",LB_PUBLIC:"公网负载均衡监控指标(LB_PUBLIC)",LB_PRIVATE:"内网负载均衡四层协议监控指标(LB_PRIVATE)",LOADBALANCE:"内网负载均衡七层协议监控指标(LOADBALANCE)",CDN:"国内域名(CDN)",CDN_LOG_DATA:"省份域名(CDN_LOG_DATA)",OV_CDN:"国外域名(OV_CDN)",SCF_V2:"云函数(SCF)",CFS:"文件存储(CFS)",COS:"对象存储(COS)",CKAFKA:"消息队列 CKafka(CKAFKA)",CMQ:"消息队列-队列服务监控(CMQ)",CMQTOPIC:"消息队列-主题订阅监控(CMQTOPIC)",TDMQ:"消息队列 Pulsar 版(TDMQ)",TDMQ_ROCKETMQ:"消息队列 RocketMQ 版(ROCKETMQ)",TDMQ_RABBITMQ:"消息队列 RabbitMQ 版(RABBITMQ)",DCX:"专线接入-专用通道(DCX)",DC:"专线接入-物理专线(DC)",CPM:"黑石物理服务器(CPM)",BM_PCX:"黑石对等连接(BM_PCX)",BM_LB:"黑石外网负载均衡(BM_LB)",BM_INTRA_LB:"黑石内网负载均衡(BM_INTRA_LB)",CES:"Elasticsearch指标(CES)",BLOCK_STORAGE:"云硬盘(BLOCK_STORAGE)",APIGATEWAY:"API 网关(APIGATEWAY)",QAAP:"全球应用加速(GAAP)",ECM:"边缘计算和网络监控(ECM)",ECM_BLOCK_STORAGE:"边缘计算存储监控(ECM_BLOCK_STORAGE)",ECM_LB:"边缘计算负载均衡(ECM_LB)",GSE:"游戏服务器伸缩(GSE)",TKE:"容器服务(TKE)",ECDN:"全站加速网络(ECDN)",WAF:"Web 应用防火墙(WAF)",multi_scene:"多场景版",lite:"精简版",cloud_monitor:"云监控",cloud_log_service:"日志服务",real_user_monitoring:"前端性能监控",region:"地域",log_topic:"日志主题",syntax_rule:"语法规则",max_result_num:"最大结果条数",search_statement:"检索语句",time_unit:"Time unit",seconds:"seconds",search_description:"按照具体的查询条件搜索实例,默认拉取前 20 条实例","ap-guangzhou":"华南地区(广州)","ap-shenzhen-fsi":"华南地区(深圳金融)","ap-guangzhou-open":"华南地区(广州OPEN)","ap-shenzhen":"华南地区(深圳)","ap-qingyuan":"华南地区(清远)","ap-shanghai":"华东地区(上海)","ap-shanghai-fsi":"华东地区(上海金融)","ap-jinan-ec":"华东地区(济南)","ap-hangzhou-ec":"华东地区(杭州)","ap-nanjing":"华东地区(南京)","ap-fuzhou-ec":"华东地区(福州)","ap-hefei-ec":"华东地区(合肥)","ap-beijing":"华北地区(北京)","ap-tianjin":"华北地区(天津)","ap-beijing-fsi":"华北地区(北京金融)","ap-shijiazhuang-ec":"华北地区(石家庄)","ap-wuhan-ec":"华中地区(武汉)","ap-changsha-ec":"华中地区(长沙)","ap-zhengzhou-ec":"华中地区(郑州)","ap-chengdu":"西南地区(成都)","ap-chongqing":"西南地区(重庆)","ap-xian-ec":"西北地区(西安)","ap-shenyang-ec":"东北地区(沈阳)","ap-taipei":"港澳台地区(中国台北)","ap-hongkong":"港澳台地区(中国香港)","ap-seoul":"亚太东北(首尔)","ap-tokyo":"亚太东北(东京)","ap-singapore":"亚太东南(新加坡)","ap-bangkok":"亚太东南(曼谷)","ap-jakarta":"亚太东南(雅加达)","na-siliconvalley":"美国西部(硅谷)","eu-frankfurt":"欧洲地区(法兰克福)","eu-moscow":"欧洲地区(莫斯科)","ap-mumbai":"亚太南部(孟买)","na-ashburn":"美国东部(弗吉尼亚)","sa-saopaulo":"南美地区(圣保罗)","na-toronto":"北美地区(多伦多)"},i={language:"Language",enable_intranet_API_mode:"Enable Intranet API Mode",cloud_database:"Cloud Database",cloud_load_balancer:"Cloud Load Balancer",virtual_private_cloud:"Virtual Private Cloud",content_delivery_network:"Content Delivery Network",message_queue:"Message Queue",direct_connect:"Direct Connect",cloud_physical_machine:"Cloud Physical Machine",elastic_mapReduce:"Elastic MapReduce",edge_computing_machine:"Edge Computing Machine",RUM:"Real User Monitoring(RUM)",CLS:"Cloud Log Service(CLS)",CVM:"Cloud Virtual Machine(CVM)",CDB:"TencentDB for MySQL(CDB)",CMONGO:"TencentDB for MongoDB(CMONGO)",POSTGRES:"TencentDB for PostgreSQL(POSTGRES)",REDIS:"TencentDB for Redis(REDIS)",REDIS_MEM:"TencentDB for Redis(Memory Edition, 5-Second)(REDIS_MEM)",SQLSERVER:"TencentDB for SQL Server(SQLSERVER)",CYNOSDB_MYSQL:"TencentDB for CYNOSDB_MYSQL(CYNOSDB_MYSQL)",TCAPLUS:"TencentDB for TcaplusDB(TCAPLUS)",TDMYSQL:"TDSQL for MySQL(TDMYSQL)",PCX:"Peering Connection(PCX)",BWP:"Bandwidth Packet(BWP)",NAT_GATEWAY:"NAT Gateway(NAT_GATEWAY)",VPNGW:"VPN Gateway(VPNGW)",VPNX:"VPN Tunnel(VPNX)",DCG:"Direct Connect Gateway(DCG)",CEIP_SUMMARY:"Anycast EIP(CEIP_SUMMARY)",VPC_NET_DETECT:"Network Detection(VPC_NET_DETECT)",VBC:"Cloud Connect Network(VBC)",LB:"Elastic IP(LB)",LB_PUBLIC:"Public Network CLB(LB_PUBLIC)",LB_PRIVATE:"Private Network CLB Layer-4 Protocol(LB_PRIVATE)",LOADBALANCE:"Private Network CLB Layer-7 Protocol(LOADBALANCE)",CDN:"Chinese Mainland Domain(CDN)",CDN_LOG_DATA:"Province(CDN_LOG_DATA)",OV_CDN:"Overseas Domain(OV_CDN)",SCF_V2:"Serverless Cloud Function(SCF)",CFS:"Cloud File Storage(CFS)",COS:"Cloud Object Storage(COS)",CKAFKA:"Message Queue CKafka(CKAFKA)",CMQ:"Message Queue for Queue Service(CMQ)",CMQTOPIC:"Message Queue for Topic Subscription(CMQTOPIC)",TDMQ:"Tencent Distributed Message Queue for Pulsar(TDMQ)",TDMQ_ROCKETMQ:"Tencent Distributed Message Queue for RocketMQ(ROCKETMQ)",TDMQ_RABBITMQ:"Tencent Distributed Message Queue for RabbitMQ(RABBITMQ)",DCX:"Direct Connect for Dedicated Tunnel(DCX)",DC:"Direct Connect for Connection(DC)",CPM:"Cloud Physical Machine(CPM)",BM_PCX:"Cloud Physical Machine for Peering Connection(BM_PCX)",BM_LB:"Cloud Physical Machine for Public Network CLB(BM_LB)",BM_INTRA_LB:"Cloud Physical Machine for Private Network CLB(BM_INTRA_LB)",CES:"Elasticsearch Service(CES)",BLOCK_STORAGE:"Cloud Block Storage(BLOCK_STORAGE)",APIGATEWAY:"API Gateway(APIGATEWAY)",QAAP:"Global Application Acceleration Platform(GAAP)",ECM:"Edge Computing Machine for Computation and Networking(ECM)",ECM_BLOCK_STORAGE:"Edge Computing Machine for Block Storage(ECM_BLOCK_STORAGE)",ECM_LB:"Edge Computing Machine for Layer-4 CLB(ECM_LB)",GSE:"Game Server Elastic-scaling(GSE)",TKE:"Tencent Kubernetes Engine(TKE)",ECDN:"Enterprise Content Delivery Network(ECDN)",WAF:"Web Application Firewall(WAF)",multi_scene:"Multi-Scene",lite:"Lite",cloud_monitor:"Cloud Monitor",cloud_log_service:"Cloud Log Service",real_user_monitoring:"Real User Monitoring",region:"Region",log_topic:"Log Topic",syntax_rule:"Syntax Rule",max_result_num:"Maximum result number",search_statement:"Search Statement",time_unit:"Time unit",seconds:"seconds",search_description:"Search for instances according to specific query conditions, and pull the first 20 instances by default","ap-guangzhou":"South China(Guangzhou)","ap-shenzhen-fsi":"South China(Shenzhen Finance)","ap-guangzhou-open":"South China(Guangzhou OPEN)","ap-shenzhen":"South China(Shenzhen)","ap-qingyuan":"South China(Qingyuan)","ap-shanghai":"East China(Shanghai)","ap-shanghai-fsi":"East China(Shanghai Finance)","ap-jinan-ec":"East China(Jinan)","ap-hangzhou-ec":"East China(Hangzhou)","ap-nanjing":"East China(Nanjing)","ap-fuzhou-ec":"East China(Fuzhou)","ap-hefei-ec":"East China(Hefei)","ap-beijing":"North China region(Beijing)","ap-tianjin":"North China region(Tianjin)","ap-beijing-fsi":"North China region(Beijing Finance)","ap-shijiazhuang-ec":"North China region(Shijiazhuang)","ap-wuhan-ec":"Central China(Wuhan)","ap-changsha-ec":"Central China(Changsha)","ap-zhengzhou-ec":"Central China(Zhengzhou)","ap-chengdu":"Southwest China(Chengdu)","ap-chongqing":"Southwest China(Chongqing)","ap-xian-ec":"Northwest region(Xi'an)","ap-shenyang-ec":"Northeast China(Shenyang)","ap-taipei":"Hong Kong, Macau and Taiwan (China)(Taipei, China)","ap-hongkong":"Hong Kong, Macau and Taiwan (China)(Hong Kong, China)","ap-seoul":"Northeast Asia(Seoul)","ap-tokyo":"Northeast Asia(Tokyo)","ap-singapore":"Southeast Asia(Singapore)","ap-bangkok":"Southeast Asia(Bangkok)","ap-jakarta":"Southeast Asia(Jakarta)","na-siliconvalley":"US West(Silicon Valley)","eu-frankfurt":"Europe(Frankfurt)","eu-moscow":"Europe(Northeastern Europe)","ap-mumbai":"South Asia(Mumbai)","na-ashburn":"US East(Virginia)","sa-saopaulo":"South America(São Paulo)","na-toronto":"North America(Toronto)"};n.d(t,"a",(function(){return o})),n.d(t,"d",(function(){return c})),n.d(t,"c",(function(){return s})),n.d(t,"b",(function(){return u}));var o,a="zh-CN";!function(e){e.Chinese="zh-CN",e.English="en-US"}(o||(o={}));var c=function(e){return a===o.Chinese?r[e]:i[e]},s=function(e){a=e},u=function(){return a}},function(e,t,n){"use strict";var r=n(0),i=n.n(r),o=n(187),a=n.n(o),c=n(19),s=n(67),u=n.n(s),l=function(){return(l=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&-1===t._InstanceAliasValue.indexOf(r[o].timeshift)&&(t._InstanceAliasValue+="_".concat(r[o].timeshift)),t[e]=d.getDimensionsVal(t,p,y),d.checkKeys.length>0&&d.checkKeys.forEach((function(n){t[n]=t[e]})),n[e]={Name:e,Value:t[e]},[2]}}))},d=this,m=0,y=e,g.label=1;case 1:return m0){var r=i.a.cloneDeep(t);return r[n].timeshift="",m(m([],e,!0),[r,t],!1)}return m(m([],e,!0),[t],!1)}),[]).map((function(r){return d(t,void 0,void 0,(function(){var t,o,l,p,d,m,y,h,g,v,b,I,D=this;return f(this,(function(f){switch(f.label){case 0:return t=Object(c.j)(this.templateSrv,e.scopedVars,r[n].instance,!0),[4,s.a.getInstance(this.service)];case 1:o=f.sent(),l=Object(u.c)(r[n].timeshift),t=[].concat(t).map((function(e){var t,n;try{return JSON.parse(e)}catch(r){return o?null!==(n=i.a.cloneDeep(o.find((function(t){return t[D.templateQueryIdMap.instance]===e}))))&&void 0!==n?n:{}:null===(t=D.getDefaultInsObj)||void 0===t?void 0:t.call(D,e)}})),p=Object(c.j)(this.templateSrv,e.scopedVars,r[n].region,!1),d=[],m=0,y=t,f.label=2;case 2:return m=g)return(null==f?void 0:f.response)?f.response(r):r;var v=Object(c.k)(g,(null==o?void 0:o.Limit)||100),b=[];return i.a.forEach(v,(function(r){b.push(n.getInstances(e,p(p({},r),t)))})),Promise.all(b).then((function(e){return i.a.forEach(e,(function(e){r=i.a.concat(r,e)})),(null==f?void 0:f.response)?f.response(r):r})).catch((function(e){return(null==f?void 0:f.response)?f.response(r):r}))}))},e.prototype.isValidConfigField=function(e){return e&&e.length>0},e.prototype.testDatasource=function(){var e=this;return this.isValidConfigField(this.secretId)?Promise.all([this.getRegions(),this.getMetrics(),this.getInstances("ap-guangzhou",{Offset:0,Limit:1})]).then((function(t){var n=i.a.get(t,"[0].Error",{}),r=i.a.get(t,"[1].Error",{}),o=i.a.get(t,"[2].Error",{}),a=i.a.get(n,"Code",""),c=i.a.get(r,"Code",""),s=i.a.get(o,"Code","");if(a||c||s){var u=[];a&&u.push(i.a.get(n,"Code")),c&&u.push(i.a.get(r,"Code")),s&&u.push(i.a.get(o,"Code"));var l=i.a.join(i.a.compact(i.a.uniq(u)),"; ");return{service:e.service,status:"error",message:l}}return{namespace:e.namespace,service:e.service,status:"success",message:"Successfully queried the ".concat(e.service," service."),title:"Success"}})).catch((function(t){var n="".concat(e.service," service:");return n+=t.statusText?t.statusText+"; ":"",i.a.get(t,"data.error.code","")?n+=t.data.error.code+". "+t.data.error.message:i.a.get(t,"data.error","")?n+=t.data.error:i.a.get(t,"data","")?n+=t.data:n+="Cannot connect to ".concat(e.service," service."),{service:e.service,status:"error",message:n}})):{service:this.service,status:"error",message:"The SecretId/SecretKey field is required."}},e.prototype.doRequest=function(e,t,n){return void 0===n&&(n={}),d(this,void 0,void 0,(function(){return f(this,(function(r){switch(r.label){case 0:return[4,Object(c.c)(e,t,n,this.secretId,this.instanceSettings.id,this.backendSrv)];case 1:return e=r.sent(),[2,this.backendSrv.datasourceRequest(e).then((function(e){return i.a.get(e,"data.Response",{})})).catch((function(e){throw e}))]}}))}))},e}()},function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"d",(function(){return p})),n.d(t,"b",(function(){return d})),n.d(t,"f",(function(){return f})),n.d(t,"e",(function(){return m})),n.d(t,"c",(function(){return y}));var r=n(0),i=n.n(r),o=n(19),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(t?r.push({Name:o,Values:i.a.uniq(e).slice(0,5)}):n[o]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t?r.push({Name:o,Values:i.a.get(e,"value",[]).slice(0,5)}):n[o]=i.a.get(e,"value")):null!=e&&""!==e&&(t?r.push({Name:o,Values:e}):n[o]=e)})),t&&r.length>0)return n.Filters=r,n}return n}function d(e){return i.a.get(i.a.find(o.SERVICES,(function(t){return t.service===e})),"namespace")}function f(e){return e.reduce((function(e,t){var n=t.namespace,r=t.label,i=t.groupName,o=void 0===i?r:i,a=e.find((function(e){return e.label===o}));return a?(a.items.push({label:r,value:n}),e):(e.push({label:o,value:o,items:[{label:r,value:n}]}),e)}),[]).map((function(e){return 1===e.items.length?{label:e.items[0].label,value:e.items[0].value}:e}))}var m=function(e,t,n){try{var r=JSON.parse(e),i=JSON.parse(t);return r[n]===i[n]}catch(n){return e===t}},y=function(e){var t=/^(\d+)([d|h|m|s])$/.exec(e);if(!t)return 0;var n=parseInt(t[1],10);switch(t[2]){case"d":return 86400*n*1e3;case"h":return 3600*n*1e3;case"m":return 60*n*1e3;case"s":return 1e3*n}return 0}},,function(e,n){e.exports=t},function(e,t,n){"use strict";n.r(t);var r=n(6),i=n.n(r),o=n(2);t.default=function(e,t){var n,r,a=(n=t,function(){function e(e,t){Object.assign(e,n),e.getDropdown=function(t){var n=Object(o.f)(e.namespace);return e.datasource.getFilterDropdown(n,{field:t,region:e.region})}}return e.$inject=["$scope","$rootScope"],e}());i.a.directive(e,(r=a,function(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n',controller:r,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}))}},function(e,t,n){"use strict";var r=function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["InstanceId","InstanceName"],u=["TopicId","TopicName"],l={instance:"InstanceId",topicId:"TopicId",groupName:"GroupName",partition:"PartitionId"},p=new Proxy({topicId:"TopicId",topicName:"TopicName",consumerGroup:"GroupName",partition:"PartitionId"},{get:function(e,t){return"instanceid"===String(t).toLocaleLowerCase()?"InstanceId":e[t]}}),d={TopicList:"TopicList",GroupList:"GroupList",PartitionList:"PartitionList"},f={TopicId:{dim_KeyInStorage:d.TopicList,dim_KeyInTarget:"topicId",dim_KeyInMap:l.topicId},TopicName:{dim_KeyInStorage:d.TopicList,dim_KeyInTarget:"topicId",dim_KeyInMap:l.topicId},GroupName:{dim_KeyInStorage:d.GroupList,dim_KeyInTarget:"consumerGroup",dim_KeyInMap:l.groupName},PartitionId:{dim_KeyInStorage:d.PartitionList,dim_KeyInTarget:"partition",dim_KeyInMap:l.partition}};t.default=a},,function(e,t,n){"use strict";n.r(t),n.d(t,"LOADBALANCEFieldsDescriptor",(function(){return a})),n.d(t,"InstanceAliasList",(function(){return l})),n.d(t,"LOADBALANCEListenerAliasList",(function(){return p})),n.d(t,"LOADBALANCEServerAliasList",(function(){return d})),n.d(t,"LOADBALANCEVALIDDIMENSIONS",(function(){return f})),n.d(t,"templateQueryIdMap",(function(){return y})),n.d(t,"CANDIATEDIMENSIONS",(function(){return m})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"keyInStorage",(function(){return h})),n.d(t,"queryEditorConfig",(function(){return c})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"GetInstanceQueryParams",(function(){return u}));var r=n(4),i="QCE/LOADBALANCE",o="loadBalanceQuery",a=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1",link:"",type:"inputNumber",min:1},{key:"LoadBalancerIds",enDescriptor:"LoadBalancer ID",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancer Name",cnDescriptor:"实例名称",link:"",type:"input"},{key:"Forward",enDescriptor:"Forward",cnDescriptor:"负载均衡实例类型",link:"",type:"select",list:[{text:"通用的负载均衡",value:1},{text:"传统的负载均衡",value:0}]},{key:"Domain",enDescriptor:"Domain",cnDescriptor:"域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义",link:"",type:"input"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancer Vips",cnDescriptor:"负载均衡实例的 VIP 地址",link:"",type:"inputMulti"},{key:"BackendPrivateIps",enDescriptor:"BackendPrivate Ips",cnDescriptor:"负载均衡绑定的后端服务的内网 IP",link:"",type:"inputMulti"},{key:"BackendPublicIps",enDescriptor:"BackendPublic Ips",cnDescriptor:"负载均衡绑定的后端服务的外网 IP",link:"",type:"inputMulti"},{key:"ProjectId",enDescriptor:"Project ID",cnDescriptor:"负载均衡实例所属的项目 ID",link:"",type:"inputNumber"},{key:"VpcId",enDescriptor:"Vpc ID",cnDescriptor:"负载均衡实例所属私有网络",link:"",type:"input"},{key:"SecurityGroup",enDescriptor:"Security Group",cnDescriptor:"安全组ID",link:"",type:"input"},{key:"MasterZone",enDescriptor:"Master Zone",cnDescriptor:"主可用区ID",link:"",type:"input"},{key:"WithRs",enDescriptor:"WithRs",cnDescriptor:"负载均衡是否绑定后端服务",link:"",type:"select",list:[{text:"没有绑定后端服务",value:0},{text:"绑定后端服务",value:1},{text:"查询全部",value:-1}]},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"LoadBalancerName",value:"LoadBalancerName"},{text:"CreateTime",value:"CreateTime"},{text:"Domain",value:"Domain"},{text:"LoadBalancerType",value:"LoadBalancerType"}]},{key:"OrderType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]}],c={instanceDocUrl:"https://cloud.tencent.com/document/api/214/30685",namespace:i,fieldDescriptor:a},s={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",Port:"",Protocol:"",listener:"",servers:"",serverPort:"",queries:{LoadBalancerIds:[],Forward:void 0,LoadBalancerName:"",Domain:"",LoadBalancerVips:[],BackendPublicIps:[],BackendPrivateIps:[],Limit:20,Offset:0,ProjectId:void 0,WithRs:{},VpcId:"",SecurityGroup:"",MasterZone:"",OrderBy:{},OrderType:{}}};function u(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var l=["LoadBalancerId","LoadBalancerName","LoadBalancerVips"],p=["ListenerId","ListenerName","Port"],d=["PrivateIpAddresses","InstanceId"],f={vip:"LoadBalancerVips",loadBalancerPort:"Port",protocol:"Protocol",lanIp:"PrivateIpAddresses",port:"ServerPort"},m={LoadBalancerVips:"AddressIPv6"},y={instance:"LoadBalancerId",listener:"ListenerId",servers:"PrivateIpAddresses",port:"Port"},h={listener:"ListenerList",servers:"ServersList"},g={Port:{dim_KeyInStorage:h.listener,dim_KeyInTarget:"listener",dim_KeyInMap:y.listener},Protocol:{dim_KeyInStorage:h.listener,dim_KeyInTarget:"listener",dim_KeyInMap:y.listener},PrivateIpAddresses:{dim_KeyInStorage:h.servers,dim_KeyInTarget:"servers",dim_KeyInMap:y.servers},ServerPort:{dim_KeyInStorage:h.servers,dim_KeyInTarget:"serverPort",dim_KeyInIns:"Port",dim_KeyInMap:y.port}};t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"TDMQInstanceAliasList",(function(){return u})),n.d(t,"TDMQInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"keyInStorage",(function(){return h})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"regionSupported",(function(){return m})),n.d(t,"TDMQGetInstanceQueryParams",(function(){return f}));var r=n(4),i=n(0),o=n.n(i),a="QCE/TDMQ",c="tdmqQuery",s={tenantId:"ClusterId",tenant:"ClusterId",topicName:"TopicName",environmentId:"EnvironmentId"},u=["ClusterId","ClusterName"],l={instance:"ClusterId",topicName:"TopicName",environmentId:"EnvironmentId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100}],d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",topicName:"",environmentId:"",queries:{Limit:20,Offset:0}};function f(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var m=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}];function y(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){-1!==e.Dimensions.indexOf("topicName")&&-1===e.Dimensions.indexOf("environmentId")&&e.Dimensions.push("environmentId")})),t}var h={topicName:"topicName",environmentId:"environmentId"},g={TopicName:{dim_KeyInStorage:h.topicName,dim_KeyInTarget:"topicName",dim_KeyInMap:l.topicName},EnvironmentId:{dim_KeyInStorage:h.environmentId,dim_KeyInTarget:"environmentId",dim_KeyInMap:l.environmentId}};t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"GSEFilterFieldsDescriptor",(function(){return m})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"GSEInstanceAliasList",(function(){return l})),n.d(t,"GSEInvalidDemensions",(function(){return u})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return y})),n.d(t,"regionSupported",(function(){return v})),n.d(t,"modifyDimensons",(function(){return b})),n.d(t,"queryMonitorExtraConfg",(function(){return f})),n.d(t,"fleetId",(function(){return c})),n.d(t,"keyInStorage",(function(){return d})),n.d(t,"GSEGetInstanceQueryParams",(function(){return g}));var r=n(4),i=n(0),o=n.n(i),a="QCE/GSE",c="FleetId",s="gseQuery",u={instanceid:"InstanceId",fleetid:"FleetId",queuename:"Name"},l=["InstanceId","PrivateIpAddress","IpAddress"],p={instance:"InstanceId",Name:"Name",FleetId:c},d={fleet:"fleet",queue:"queueName"},f={FleetId:{dim_KeyInStorage:d.fleet,dim_KeyInTarget:"FleetId",dim_KeyInMap:p.FleetId},Name:{dim_KeyInStorage:d.queue,dim_KeyInTarget:"Name",dim_KeyInMap:p.Name}},m=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceId",enDescriptor:"resourceName",cnDescriptor:"资源名称",link:"",type:"input"},{key:"FleetId",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"input"}],y={instanceDocUrl:"https://cloud.tencent.com/document/api/1165/42604",namespace:a,fieldDescriptor:m},h={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",FleetId:"",Name:"",queries:{Limit:20,Offset:0,InstanceId:"",FleetId:""}};function g(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var v=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-ashburn"},{value:"na-siliconvalley"}];function b(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return u[e]||e}))})),t}t.default=h},function(e,t,n){"use strict";n.r(t),n.d(t,"DCDBFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"DCDBInstanceAliasList",(function(){return s})),n.d(t,"DCDBInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"regionSupported",(function(){return v})),n.d(t,"keyInStorage",(function(){return h})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"DCDBGetInstanceQueryParams",(function(){return y}));var r=n(0),i=n(4),o="QCE/TDMYSQL",a="dcdbQuery",c={nodeid:"NodeId",instanceid:"InstanceId",shardid:"ShardInstanceId",ShardId:"ShardInstanceId"},s=["InstanceId","InstanceName"],u={instance:"InstanceId",NodeId:"NodeId",ShardInstanceId:"ShardInstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"实例 ID 查询",link:"",type:"inputMulti"},{key:"SearchName",enDescriptor:"SearchName",cnDescriptor:"搜索的字段名,当前支持的值有:instancename、vip、all",link:"",type:"input"},{key:"SearchKey",enDescriptor:"SearchKey",cnDescriptor:"搜索的关键字",link:"",type:"input"},{key:"ProjectIds",enDescriptor:"ProjectIds",cnDescriptor:"按项目 ID 查询",link:"",type:"inputNumberMulti"},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络 ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"私有网络的子网 ID",link:"",type:"input"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"projectId",value:"projectId"},{text:"createtime",value:"createtime"},{text:"instancename",value:"instancename"}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"私有网络 ID",link:"",type:"select",list:[{text:"desc",value:"desc"},{text:"asc",value:"asc"}]},{key:"ExclusterType",enDescriptor:"ExclusterType",cnDescriptor:"集群类型",link:"",type:"select",list:[{text:"非独享集群",value:1},{text:"独享集群",value:2},{text:"全部",value:0},{text:"asc",value:"asc"}]},{key:"ExclusterIds",enDescriptor:"ExclusterIds",cnDescriptor:"独享集群ID",link:"",type:"inputMulti"},{key:"FilterInstanceType",enDescriptor:"FilterInstanceType",cnDescriptor:"实例类型过滤",link:"",type:"select",multiple:!0,list:[{text:"独享实例",value:1},{text:"主实例",value:2},{text:"灾备实例",value:3}]}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/557/16140",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",ShardId:"",NodeId:"",queries:{Limit:20,Offset:0,InstanceIds:[],SearchName:"",SearchKey:"",ProjectIds:[],VpcId:"",SubnetId:"",OrderBy:{},OrderByType:{},ExclusterType:{},ExclusterIds:[],FilterInstanceType:{}}},f={shardid:"ShardId",instanceid:"InstanceId",nodeid:"NodeId"};function m(e){var t=Object(r.cloneDeep)(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return f[e]||e}))})),t}function y(e){void 0===e&&(e={});var t=Object(i.d)(e,!1);return t.IsFilterVpc=!1,t.IsFilterExcluster=!1,(t.VpcId||t.SubnetId)&&(t.IsFilterVpc=!0),t.ExclusterType&&(t.IsFilterExcluster=!0),Object(r.isArray)(t.FilterInstanceType)&&(t.FilterInstanceType=t.FilterInstanceType.join(",")),t}var h={NodeId:"NodeId",ShardInstanceId:"ShardId"},g={NodeId:{dim_KeyInStorage:h.NodeId,dim_KeyInTarget:"NodeId",dim_KeyInMap:u.NodeId},ShardInstanceId:{dim_KeyInStorage:h.ShardInstanceId,dim_KeyInTarget:"ShardId",dim_KeyInMap:u.ShardInstanceId}},v=[{text:"华北地区(北京)",value:"ap-beijing"},{text:"西南地区(成都)",value:"ap-chengdu"},{text:"西南地区(重庆)",value:"ap-chongqing"},{text:"华南地区(广州)",value:"ap-guangzhou"},{text:"港澳台地区(中国香港)",value:"ap-hongkong"},{text:"亚太南部(孟买)",value:"ap-mumbai"},{text:"华东地区(南京)",value:"ap-nanjing"},{text:"华东地区(上海)",value:"ap-shanghai"},{text:"华东地区(上海金融)",value:"ap-shanghai-fsi"},{text:"华南地区(深圳金融)",value:"ap-shenzhen-fsi"},{text:"亚太东南(新加坡)",value:"ap-singapore"},{text:"亚太东北(东京)",value:"ap-tokyo"},{text:"欧洲地区(法兰克福)",value:"eu-frankfurt"},{text:"美国东部(弗吉尼亚)",value:"na-ashburn"},{text:"美国西部(硅谷)",value:"na-siliconvalley"},{text:"北美地区(多伦多)",value:"na-toronto"}];t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisMemFieldsDescriptor",(function(){return c})),n.d(t,"RedisMemInvalidDemensions",(function(){return p})),n.d(t,"REDISMEMInstanceAliasList",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return d})),n.d(t,"namespace",(function(){return a})),n.d(t,"NodeType",(function(){return f})),n.d(t,"REDISMEMGetInstanceQueryParams",(function(){return u}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var l=["InstanceId","InstanceName","WanIp"],p={instanceid:"InstanceId",rnodeid:"rnodeid",pnodeid:"pnodeid"},d={instance:"InstanceId",rnodeid:"rnodeid",pnodeid:"pnodeid"},f=["Redis","Proxy"];t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"TDMQRABBITMQInstanceAliasList",(function(){return c})),n.d(t,"TDMQInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryMonitorExtraConfg",(function(){return m})),n.d(t,"keyInStorage",(function(){return f})),n.d(t,"regionSupported",(function(){return d})),n.d(t,"TDMQGetInstanceQueryParams",(function(){return p}));var r=n(4),i="QCE/RABBITMQ",o="tdmqQuery",a={instanceid:"InstanceId",node:"NodeName"},c=["InstanceId","InstanceName"],s={instance:"InstanceId",node:"NodeName"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100}],l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",node:"",queries:{Limit:20,Offset:0}};function p(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var d=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],f={node:"NodeName"},m={NodeName:{dim_KeyInStorage:f.node,dim_KeyInTarget:"node",dim_KeyInMap:s.node}};t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"TDMQROCKETMQInstanceAliasList",(function(){return c})),n.d(t,"TDMQInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryMonitorExtraConfg",(function(){return m})),n.d(t,"keyInStorage",(function(){return f})),n.d(t,"regionSupported",(function(){return d})),n.d(t,"TDMQROCKETMQGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o="QCE/ROCKETMQ",a={tenant:"ClusterId",namespace:"NamespaceId",group:"Name"},c=["ClusterId","ClusterName"],s={instance:"ClusterId",namespace:"NamespaceId",group:"Name"},u=[{key:"includeVip",enDescriptor:"includeVip",cnDescriptor:"包含专享集群",link:"",type:"select",list:[{text:"是",value:"true"},{text:"否",value:"false"}]}],l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",namespace:"",group:"",queries:{Limit:20,Offset:0,instanceIdsChecked:!1,filtersChecked:!0,ClusterIdList:[""],Filters:{includeVip:{text:"是",value:"true"}}}};function p(e){void 0===e&&(e={});var t={};if(!i.a.isEmpty(e))if(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(i.a.isArray(e.ClusterIdList)){var n=i.a.compact(e.ClusterIdList);i.a.uniq(n).length>0&&(t.ClusterIdList=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:[i.a.get(e,"value",[])].slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var d=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],f={namespace:"NamespaceId",group:"Name"},m={NamespaceId:{dim_KeyInStorage:f.namespace,dim_KeyInTarget:"namespace",dim_KeyInMap:s.namespace},Name:{dim_KeyInStorage:f.group,dim_KeyInTarget:"group",dim_KeyInMap:s.group}};t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"InitServiceState",(function(){return c})),n.d(t,"SERVICES",(function(){return o})),n.d(t,"Datasources",(function(){return a})),n.d(t,"InstanceAliasList",(function(){return s})),n.d(t,"GetInstanceQueryParams",(function(){return u}));var r=n(1),i=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c=new Proxy({},{get:function(e,t,n){if("string"==typeof t){if(t.startsWith("id4"))return"ClusterId";if(t.startsWith("host4"))return"Ip"}return Reflect.get(e,t,n)},has:function(e,t){return!0}}),s={instance:"ClusterId",node:"Ip"},u={node:"nodeIP"},l={Ip:{dim_KeyInStorage:u.node,dim_KeyInTarget:"nodeIP",dim_KeyInMap:s.node}},p=["ClusterId","ClusterName"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",nodeIP:"",queries:{Offset:0,Limit:10,DisplayStrategy:"",OrderBy:{},Order:{},InstanceIds:[],ProjectId:-1,OrderField:"",Asc:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"VCLBFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"VCLBInstanceAliasList",(function(){return u})),n.d(t,"VCLBInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"clbNamespaceMap",(function(){return h})),n.d(t,"modifyDimensons",(function(){return g})),n.d(t,"regionSupported",(function(){return y})),n.d(t,"BMLBGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/V_CLB",c="vClbQuery",s={InstanceId:"LoadBalancerId"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1",link:"",type:"inputNumber",min:1},{key:"LoadBalancerIds",enDescriptor:"LoadBalancer ID",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancer Name",cnDescriptor:"实例名称",link:"",type:"input"},{key:"Forward",enDescriptor:"Forward",cnDescriptor:"负载均衡实例类型",link:"",type:"select",list:[{text:"通用的负载均衡",value:1},{text:"传统的负载均衡",value:0}]},{key:"Domain",enDescriptor:"Domain",cnDescriptor:"域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义",link:"",type:"input"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancer Vips",cnDescriptor:"负载均衡实例的 VIP 地址",link:"",type:"inputMulti"},{key:"BackendPrivateIps",enDescriptor:"BackendPrivate Ips",cnDescriptor:"负载均衡绑定的后端服务的内网 IP",link:"",type:"inputMulti"},{key:"BackendPublicIps",enDescriptor:"BackendPublic Ips",cnDescriptor:"负载均衡绑定的后端服务的外网 IP",link:"",type:"inputMulti"},{key:"ProjectId",enDescriptor:"Project ID",cnDescriptor:"负载均衡实例所属的项目 ID",link:"",type:"inputNumber"},{key:"VpcId",enDescriptor:"Vpc ID",cnDescriptor:"负载均衡实例所属私有网络",link:"",type:"input"},{key:"SecurityGroup",enDescriptor:"Security Group",cnDescriptor:"安全组ID",link:"",type:"input"},{key:"MasterZone",enDescriptor:"Master Zone",cnDescriptor:"主可用区ID",link:"",type:"input"},{key:"WithRs",enDescriptor:"WithRs",cnDescriptor:"负载均衡是否绑定后端服务",link:"",type:"select",list:[{text:"没有绑定后端服务",value:0},{text:"绑定后端服务",value:1},{text:"查询全部",value:-1}]},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"LoadBalancerName",value:"LoadBalancerName"},{text:"CreateTime",value:"CreateTime"},{text:"Domain",value:"Domain"},{text:"LoadBalancerType",value:"LoadBalancerType"}]},{key:"OrderType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/214/30685",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",Port:"",Protocol:"",listener:"",queries:{LoadBalancerIds:[],Forward:void 0,LoadBalancerName:"",Domain:"",LoadBalancerVips:[],BackendPublicIps:[],BackendPrivateIps:[],Limit:20,Offset:0,ProjectId:void 0,WithRs:{},VpcId:"",SecurityGroup:"",MasterZone:"",OrderBy:{},OrderType:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var y=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],h={public:"QCE/LB_PUBLIC",private:"QCE/LB_PRIVATE"};function g(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"cynosdbMysqlFilterFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return m})),n.d(t,"CYNOSDBMYSQLInstanceAliasList",(function(){return f})),n.d(t,"CYNOSDBInvalidDemensions",(function(){return y})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"regionSupported",(function(){return u})),n.d(t,"modifyDimensons",(function(){return g})),n.d(t,"checkKeys",(function(){return h})),n.d(t,"CYNOSDBMYSQLGetInstanceQueryParams",(function(){return d}));var r=n(0),i=n.n(r),o=n(4),a="QCE/CYNOSDB_MYSQL",c="cynosdbMysqlQuery",s=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:1e3},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"实例id列表",link:"",type:"inputMulti"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"创建时间",value:"CREATETIME"},{text:"过期时间",value:"PERIODENDTIME"}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"排序类型",link:"",type:"select",list:[{text:"升序",value:"ASC"},{text:"降序",value:"DESC"}]},{key:"DbType",enDescriptor:"DbType",cnDescriptor:"引擎类型",link:"",type:"select",list:[{text:"MYSQL",value:"MYSQL"},{text:"POSTGRESQL",value:"POSTGRESQL"}]}],u=[{value:"ap-beijing"},{value:"ap-guangzhou"},{value:"ap-nanjing"},{value:"ap-shanghai"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/1003/48334",namespace:a,fieldDescriptor:s},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,OrderBy:{},OrderByType:{},InstanceIds:[],DbType:{}}};function d(e){return void 0===e&&(e={}),Object(o.d)(e,!1)}var f=["InstanceId","InstanceName"],m={instance:"InstanceId"},y={instanceid:"InstanceId",instanceId:"InstanceId"},h=["instanceId"];function g(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryDescriptor",(function(){return o})),n.d(t,"SCFInstanceAliasList",(function(){return s})),n.d(t,"SCFInvalidDemensions",(function(){return u})),n.d(t,"queryMonitorExtraConfg",(function(){return f})),n.d(t,"regionSupported",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"keyInStorage",(function(){return d})),n.d(t,"SCFGetInstanceQueryParams",(function(){return c})),n.d(t,"SCFDefaultDimensionList",(function(){return m}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"SearchKey",enDescriptor:"SearchKey",cnDescriptor:"支持FunctionName模糊匹配",link:"",type:"input"},{key:"Namespace",enDescriptor:"Namespace",cnDescriptor:"云函数命名空间",link:"",type:"input"},{key:"Description",enDescriptor:"Description",cnDescriptor:"函数描述,支持模糊搜索",link:"",type:"input"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"AddTime",value:"AddTime"},{text:"ModTime",value:"ModTime"},{text:"FunctionName",value:"FunctionName"}]},{key:"Order",enDescriptor:"Order Direction",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"ASC",value:"ASC"},{text:"DESC",value:"DESC"}]}],a={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"FunctionName",version:"",queries:{Offset:0,Limit:20,OrderBy:{},Order:{},SearchKey:"",Namespace:"",Description:""}};function c(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["FunctionId","FunctionName"],u={functionName:"FunctionName",namespace:"Namespace",version:"Version"},l={instance:"FunctionName",version:"Version"},p=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-siliconvalley"},{value:"na-toronto"}],d={version:"version"},f={Version:{dim_KeyInStorage:d.version,dim_KeyInTarget:"version",dim_KeyInMap:l.version}};t.default=a;var m=["functionName","namespace","version"]},function(e,t){e.exports=r},function(e,t,n){"use strict";n.r(t),n.d(t,"CLSFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CLSInstanceAliasList",(function(){return u})),n.d(t,"CLSInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"regionSupported",(function(){return y})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"CLSGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/CLS",c="clsQuery",s={},u=["TopicId","TopicName"],l={instance:"TopicId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"topicName",enDescriptor:"topicName",cnDescriptor:"日志主题名称",link:"",type:"inputMulti"},{key:"topicId",enDescriptor:"topicId",cnDescriptor:"日志主题ID",link:"",type:"inputMulti"},{key:"logsetName",enDescriptor:"logsetName",cnDescriptor:"日志集名称",link:"",type:"inputMulti"},{key:"logsetId",enDescriptor:"logsetId",cnDescriptor:"日志集ID",link:"",type:"inputMulti"},{key:"tagKey",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"inputMulti"},{key:"tag:tagKey",enDescriptor:"tag - tagKey",cnDescriptor:"标签键值对",link:"",type:"inputMulti"},{key:"storageType",enDescriptor:"storageType",cnDescriptor:"日志主题的存储类型",link:"",type:"select",list:[{text:"实时存储",value:"hot"},{text:"离线存储",value:"cold"}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/614/56454",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TopicId",uin:"",queries:{Limit:20,Offset:0,topicName:[],topicId:[],logsetName:[],logsetId:[],tagKey:[],"tag:tagKey":[],storageType:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var y=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}];function h(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["uin","TopicId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"SQLSERVERNETFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"SQLSERVERInstanceAliasList",(function(){return u})),n.d(t,"SQLSERVERInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"regionSupported",(function(){return f})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"SQLSERVERGetInstanceQueryParams",(function(){return h}));var r=n(4),i=n(0),o=n.n(i),a="QCE/SQLSERVER",c="sqlserverQuery",s={resourceId:"InstanceId"},u=["InstanceId","Name"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ProjectId",enDescriptor:"ProjectId",cnDescriptor:"项目ID",link:"",type:"inputNumber"},{key:"Status",enDescriptor:"Status",cnDescriptor:"实例状态",link:"",type:"select",list:[{text:"申请中",value:1},{text:"运行中",value:2},{text:"受限运行中 (主备切换中)",value:3},{text:"已隔离",value:4},{text:"回收中",value:5},{text:"已回收",value:6},{text:"任务执行中",value:7},{text:"已下线",value:8},{text:"实例扩容中",value:9},{text:"实例迁移中",value:10},{text:"只读",value:11},{text:"重启中",value:12}]},{key:"InstanceIdSet",enDescriptor:"InstanceIdSet",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"PayMode",enDescriptor:"PayMode",cnDescriptor:"子网实例ID",link:"",type:"select",list:[{text:"包年包月",value:1},{text:"按量计费",value:0}]},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"实例所属VPC的唯一字符串ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"实例所属子网的唯一字符串ID",link:"",type:"input"},{key:"VipSet",enDescriptor:"VipSet",cnDescriptor:"实例内网地址列表",link:"",type:"inputMulti"},{key:"InstanceNameSet",enDescriptor:"InstanceNameSet",cnDescriptor:"实例名称列表, 模糊查询",link:"",type:"inputMulti"},{key:"VersionSet",enDescriptor:"VersionSet",cnDescriptor:"实例版本代号列表",link:"",type:"inputMulti"},{key:"Zone",enDescriptor:"Zone",cnDescriptor:"实例可用区",link:"",type:"dropdown"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/238/19969",namespace:a,fieldDescriptor:p},f=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-nanjing"},{value:"ap-seoul"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-moscow"},{value:"na-siliconvalley"}],m={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,ProjectId:null,Status:{},InstanceIdSet:[],PayMode:{},VpcId:"",SubnetId:"",VipSet:[],InstanceNameSet:[],VersionSet:[],Zone:""}};function y(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["resourceId"]})),t}function h(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=m},function(e,t,n){"use strict";n.r(t),n.d(t,"BMINTRALBFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMINTRALBInstanceAliasList",(function(){return u})),n.d(t,"BMINTRALBInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"isValidMetric",(function(){return y})),n.d(t,"BMINTRALBGetInstanceQueryParams",(function(){return h}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_INTRA_LB",c="bmIntraLbQuery",s={vip:"LoadBalancerVips",vpcId:"VpcId"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"LoadBalancerIds",enDescriptor:"LoadBalancerIds",cnDescriptor:"负载均衡器ID数组",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancerName",cnDescriptor:"负载均衡器名称",link:"",type:"inputMulti"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancerVips",cnDescriptor:"负载均衡获得的公网IP地址",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/1027/33280",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",queries:{Limit:20,Offset:0,LoadBalancerIds:[],LoadBalancerName:[],LoadBalancerVips:[]}},m=["Inpkg","Outpkg","Intraffic","Outtraffic","Connum","Req"];function y(e){var t=o.a.map(m,o.a.toUpper);return-1!==o.a.indexOf(t,o.a.toUpper(e.MetricName))}function h(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"CPMFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMLBInstanceAliasList",(function(){return u})),n.d(t,"CPMInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"isValidMetric",(function(){return h})),n.d(t,"BMLBGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_LB",c="bmLbQuery",s={vip:"LoadBalancerVips"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"LoadBalancerIds",enDescriptor:"LoadBalancerIds",cnDescriptor:"负载均衡器ID数组",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancerName",cnDescriptor:"负载均衡器名称",link:"",type:"inputMulti"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancerVips",cnDescriptor:"负载均衡获得的公网IP地址",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/1027/33280",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",queries:{Limit:20,Offset:0,LoadBalancerIds:[],LoadBalancerName:[],LoadBalancerVips:[]}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var y=["Inpkg","Outpkg","Intraffic","Outtraffic","Connum","Req"];function h(e){var t=o.a.map(y,o.a.toUpper);return-1!==o.a.indexOf(t,o.a.toUpper(e.MetricName))}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"BMPCXFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMPCXInstanceAliasList",(function(){return u})),n.d(t,"BMPCXInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"BMPCXGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_PCX",c="bmPcxQuery",s={peeringConnectionId:"VpcPeerConnectionId"},u=["VpcPeerConnectionId","VpcPeerConnectionName"],l={instance:"VpcPeerConnectionId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"VpcPeerConnectionIds",enDescriptor:"VpcPeerConnectionIds",cnDescriptor:"对等连接实例ID",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/product/1024/36903",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpcPeerConnectionId",queries:{Limit:20,Offset:0,VpcPeerConnectionIds:[]}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}function y(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["peeringConnectionId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"CBSFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"CBSInstanceAliasList",(function(){return s})),n.d(t,"CBSInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"isValidMetric",(function(){return m})),n.d(t,"CBSGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n(4),o="QCE/BLOCK_STORAGE",a="cbsQuery",c={diskId:"DiskId",InstanceId:"InstanceId",diskname:"DiskName",unInstanceId:"InstanceId"},s=["DiskId","DiskName"],u={instance:"DiskId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DiskIds",enDescriptor:"DiskIds",cnDescriptor:"云硬盘ID",link:"",type:"inputMulti"},{key:"Order",enDescriptor:"Order",cnDescriptor:"排列顺序",link:"",type:"select",list:[{text:"升序排列",value:"ASC"},{text:"降序排列",value:"DESC"}]},{key:"OrderField",enDescriptor:"OrderField",cnDescriptor:"排序的依据字段",link:"",type:"select",list:[{text:"云盘的创建时间排序",value:"CREATE_TIME"},{text:"云盘的到期时间排序",value:"DEADLINE"}]},{key:"ReturnBindAutoSnapshotPolicy",enDescriptor:"ReturnBindAutoSnapshotPolicy",cnDescriptor:"否需要返回云盘绑定的定期快照策略ID",link:"",type:"switch"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/362/16315",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DiskId",queries:{Limit:20,Offset:0,DiskIds:[],OrderField:[],Order:[],ReturnBindAutoSnapshotPolicy:!1}};function f(e){return void 0===e&&(e={}),Object(i.d)(e,!1)}function m(e){void 0===e&&(e={});var t=r.get(e,"Dimensions[0].Dimensions");return 1===t.length&&-1!==r.indexOf(t,"diskId")}t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNPROVINCEFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"CDNPROVINCEInstanceAliasList",(function(){return c})),n.d(t,"CDNPROVINCEInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"CDNPROVINCEGetInstanceQueryParams",(function(){return p}));var r=n(4),i="QCE/CDN_LOG_DATA",o="cdnProvinceQuery",a={domain:"Domain",projectid:"ProjectId",province:"district",appid:"AppId"},c=["Domain","ProjectId"],s={instance:"Domain"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"origin",enDescriptor:"origin",cnDescriptor:"主源站",link:"",type:"inputMulti"},{key:"domain",enDescriptor:"domain",cnDescriptor:"域名",link:"",type:"inputMulti"},{key:"resourceId",enDescriptor:"resourceId",cnDescriptor:"域名id",link:"",type:"inputMulti"},{key:"status",enDescriptor:"status",cnDescriptor:"域名状态",link:"",type:"select",list:[{text:"online",value:"online"},{text:"offline",value:"offline"},{text:"processing",value:"processing"}]},{key:"serviceType",enDescriptor:"serviceType",cnDescriptor:"业务类型",link:"",type:"select",list:[{text:"web",value:"web"},{text:"download",value:"download"},{text:"media",value:"media"}]},{key:"projectId",enDescriptor:"projectId",cnDescriptor:"项目ID",link:"",type:"inputNumberMulti"},{key:"domainType",enDescriptor:"domainType",cnDescriptor:"主源站类型",link:"",type:"select",list:[{text:"自有源",value:"cname"},{text:"cos接入",value:"cos"}]},{key:"fullUrlCache",enDescriptor:"fullUrlCache",cnDescriptor:"全路径缓存",link:"",type:"select",list:[{text:"打开",value:"on"},{text:"关闭",value:"off"}]},{key:"https",enDescriptor:"https",cnDescriptor:"是否配置https",link:"",type:"select",list:[{text:"on",value:"on"},{text:"off",value:"off"},{text:"processing",value:"processing"}]},{key:"originPullProtocol",enDescriptor:"originPullProtocol",cnDescriptor:"回源协议类型",link:"",type:"select",list:[{text:"http",value:"http"},{text:"follow",value:"follow"},{text:"https",value:"https"}]},{key:"tagKey",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"inputMulti"}],l={region:"ap-guangzhou",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"Domain",isp:"",district:"",queries:{Limit:20,Offset:0,origin:[],domain:[],resourceId:[],status:{},serviceType:{},projectId:[],domainType:{},fullUrlCache:{},https:{},originPullProtocol:{},tagKey:[]}};function p(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"CEIPFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CEIPSUMMARYInstanceAliasList",(function(){return u})),n.d(t,"CEIPInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"CEIPSUMMARYGetInstanceQueryParams",(function(){return m}));var r=n(0),i=n.n(r),o=n(4),a="QCE/CEIP_SUMMARY",c="ceipSummaryQuery",s={vip:"AddressIp",eip:"AddressIp"},u=["AddressId","AddressName","AddressIp"],l={instance:"AddressId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"address-id",enDescriptor:"address-id",cnDescriptor:" EIP 的唯一 ID",link:"",type:"inputMulti"},{key:"address-name",enDescriptor:"address-name",cnDescriptor:"EIP 名称",link:"",type:"inputMulti"},{key:"address-ip",enDescriptor:"address-ip",cnDescriptor:"EIP 的 IP 地址",link:"",type:"inputMulti"},{key:"address-status",enDescriptor:"address-status",cnDescriptor:"EIP 的状态",link:"",type:"select",multiple:!0,list:[{text:"CREATING",value:"CREATING"},{text:"BINDING",value:"BINDING"},{text:"BIND",value:"BIND"},{text:"UNBINDING",value:"UNBINDING"},{text:"UNBIND",value:"UNBIND"},{text:"OFFLINING",value:"OFFLINING"},{text:"BIND_ENI",value:"BIND_ENI"}]},{key:"instance-id",enDescriptor:"instance-id",cnDescriptor:"EIP 绑定的实例 ID",link:"",type:"inputMulti"},{key:"private-ip-address",enDescriptor:"private-ip-address",cnDescriptor:"EIP 绑定的内网 IP ",link:"",type:"inputMulti"},{key:"network-interface-id",enDescriptor:"network-interface-id",cnDescriptor:" EIP 绑定的弹性网卡 ID",link:"",type:"inputMulti"},{key:"is-arrears",enDescriptor:"is-arrears",cnDescriptor:"EIP 是否欠费",link:"",type:"select",multiple:!0,list:[{text:"欠费状态",value:"TRUE"},{text:"费用状态正常",value:"FALSE"}]},{key:"address-isp",enDescriptor:"address-isp",cnDescriptor:"运营商类型",link:"",type:"select",multiple:!0,list:[{text:"BGP",value:"BGP"},{text:"CMCC",value:"CMCC"},{text:"CUCC",value:"CUCC"},{text:"CTCC",value:"CTCC"}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/215/16702",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"AddressId",queries:{Limit:20,Offset:0,"address-id":[],"address-name":[],"address-ip":[],"address-status":{},"is-arrears":{},"address-isp":{},"instance-id":[],"private-ip-address":[],"network-interface-id":[]}};function m(e){return void 0===e&&(e={}),Object(o.d)(e,!0)}function y(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["eip"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceQueryDescriptor",(function(){return o})),n.d(t,"InvalidDemensions",(function(){return c})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"InstanceAliasList",(function(){return p})),n.d(t,"GetInstanceQueryParams",(function(){return a})),n.d(t,"queryMonitorExtraConfg",(function(){return l})),n.d(t,"keyInStorage",(function(){return u}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为10,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:50},{key:"TopicName",enDescriptor:"TopicName",cnDescriptor:"精确匹配TopicName",link:"",type:"input"},{key:"TagKey",enDescriptor:"TagKey",cnDescriptor:"标签搜索",link:"",type:"input"}];function a(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c={topicId:"TopicId"},s={instance:"TopicName",subscription:"SubscriptionId"},u={subscriptionId:"subscriptionId"},l={subscriptionId:{dim_KeyInStorage:u.subscriptionId,dim_KeyInTarget:"subscriptionId",dim_KeyInMap:s.subscription}},p=["TopicName","TopicId"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TopicName",subscriptionId:"",queries:{Offset:0,Limit:20,TopicName:"",TagKey:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"CPMFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CPMInstanceAliasList",(function(){return u})),n.d(t,"CPMInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"CPMGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/CPM",c="cpmQuery",s={instanceId:"InstanceId"},u=["InstanceId","Name"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DeviceClassCode",enDescriptor:"DeviceClassCode",cnDescriptor:"机型ID",link:"",type:"dropdown"},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"设备ID数组",link:"",type:"inputMulti"},{key:"WanIps",enDescriptor:"WanIps",cnDescriptor:"外网IP数组",link:"",type:"inputMulti"},{key:"LanIps",enDescriptor:"LanIps",cnDescriptor:"内网IP数组",link:"",type:"inputMulti"},{key:"Alias",enDescriptor:"Alias",cnDescriptor:"设备名称",link:"",type:"input"},{key:"VagueIp",enDescriptor:"VagueIp",cnDescriptor:"模糊IP查询",link:"",type:"input"},{key:"AutoRenewFlag",enDescriptor:"AutoRenewFlag",cnDescriptor:"自动续费标志",link:"",type:"select",list:[{text:"不自动续费",value:0},{text:"自动续费",value:1}]},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络唯一ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"子网唯一ID",link:"",type:"input"},{key:"DeviceType",enDescriptor:"DeviceType",cnDescriptor:"子网实例ID",link:"",type:"select",list:[{text:"计算型",value:"compute"},{text:"标准型",value:"standard"},{text:"存储型",value:"storage"}]},{key:"IsLuckyDevice",enDescriptor:"IsLuckyDevice",cnDescriptor:"竞价实例机器过滤",link:"",type:"select",list:[{text:"非竞价实例机器",value:0},{text:"竞价实例的机器",value:1}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/386/32904",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,DeviceClassCode:"",InstanceIds:[],WanIps:[],LanIps:[],Alias:"",VagueIp:"",AutoRenewFlag:{},VpcId:"",SubnetId:"",DeviceType:{},IsLuckyDevice:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}function y(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["instanceId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"ECDNFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"ECDNInstanceAliasList",(function(){return c})),n.d(t,"ECDNInvalidDemensions",(function(){return u})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"ECDNGetInstanceQueryParams",(function(){return f}));var r=n(0),i=function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o.push({Name:t,Value:Object(r.uniq)(e).slice(0,5)}):Object(r.isObject)(e)&&(Object(r.isEmpty)(Object(r.get)(e,"value",[]))||o.push({Name:t,Value:[Object(r.get)(e,"value",[])].slice(0,5)}))})),o.length>0)return t.Filters=o.map((function(e){return"domain"===e.Name?i(i({},e),{Fuzzy:!0}):e})),t}return t}function m(e){var t=Object(r.cloneDeep)(e);return t.Dimensions.forEach((function(e){e.Dimensions=["domain","projectid"]})),t}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"ECMFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"ECMInstanceAliasList",(function(){return s})),n.d(t,"ECMInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"ECMGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n(4),o="QCE/ECM",a="ecmQuery",c={uuid:"UUID"},s=["InstanceId","InstanceName"],u={instance:"InstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"zone",enDescriptor:"zone",cnDescriptor:"可用区英文标识",link:"",type:"dropdownMulti"},{key:"zone-name",enDescriptor:"zone-name",cnDescriptor:"排列顺序",link:"",type:"inputMulti"},{key:"module-id",enDescriptor:"module-id",cnDescriptor:"模块ID",link:"",type:"inputMulti"},{key:"module-name",enDescriptor:"module-name",cnDescriptor:"模块名称",link:"",type:"inputMulti"},{key:"instance-id",enDescriptor:"instance-id",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"instance-name",enDescriptor:"instance-name",cnDescriptor:"实例名称",link:"",type:"inputMulti"},{key:"ip-address",enDescriptor:"ip-address",cnDescriptor:"内网/公网IP",link:"",type:"inputMulti"},{key:"instance-uuid",enDescriptor:"instance-uuid",cnDescriptor:"实例uuid",link:"",type:"inputMulti"},{key:"instance-state",enDescriptor:"instance-state",cnDescriptor:"实例状态",link:"",type:"select",multiple:!0,list:[{text:"创建中",value:"PENDING"},{text:"创建失败",value:"LAUNCH_FAILED"},{text:"运行中",value:"RUNNING"},{text:"关机",value:"STOPPED"},{text:"开机中",value:"STARTING"},{text:"关机中",value:"STOPPING"},{text:"重启中",value:"REBOOTING"},{text:"停止待销毁",value:"SHUTDOWN"},{text:"销毁中",value:"TERMINATING"}]},{key:"internet-service-provider",enDescriptor:"internet-service-provider",cnDescriptor:"公网IP所属的运营商",link:"",type:"inputMulti"},{key:"instance-family",enDescriptor:"instance-family",cnDescriptor:"机型family",link:"",type:"inputMulti"},{key:"image-id",enDescriptor:"image-id",cnDescriptor:"镜像ID",link:"",type:"inputMulti"},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"实例的vpc id",link:"",type:"inputMulti"},{key:"subnet-id",enDescriptor:"subnet-id",cnDescriptor:"实例的subnet id",link:"",type:"inputMulti"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/1108/42565",namespace:o,fieldDescriptor:l},d={region:"ap-guangzhou",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,zone:[],"zone-name":[],"module-id":[],"module-name":[],"instance-id":[],"instance-name":[],"ip-address":[],"instance-uuid":[],"instance-state":{},"internet-service-provider":[],"instance-family":[],"image-id":[],"vpc-id":[],"subnet-id":[]}};function f(e){return void 0===e&&(e={}),Object(i.d)(e,!0)}function m(e){var t=r.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["UUID"]})),t}t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"PostgresFieldsDescriptor",(function(){return u})),n.d(t,"POSTGRESInstanceAliasList",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return h})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"namespace",(function(){return c})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"PostgreInvalidDemensions",(function(){return y})),n.d(t,"POSTGRESGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n.n(r),o=n(4),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}function l(e){void 0===e&&(e={});var t=i.a.get(e,"Dimensions[0].Dimensions");return 2===t.length&&(-1!==i.a.indexOf(t,"instanceid")&&-1!==i.a.indexOf(t,"insttype")||-1!==i.a.indexOf(t,"InstanceId")&&-1!==i.a.indexOf(t,"InstanceType"))}function p(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return d[e]||e}))})),t}var d={instanceid:"InstanceId",insttype:"InstanceType",region:"Region"},f={instance:"InstanceId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CESFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"CESInstanceAliasList",(function(){return c})),n.d(t,"CESInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"CESGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/CES",o="cesQuery",a={uInstanceId:"InstanceId"},c=["InstanceId","InstanceName"],s={instance:"InstanceId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"集群实例ID列表",link:"",type:"inputMulti"},{key:"InstanceNames",enDescriptor:"InstanceNames",cnDescriptor:"集群实例名称列表",link:"",type:"inputMulti"},{key:"OrderByKey",enDescriptor:"OrderByKey",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"实例ID",value:1},{text:"实例名称",value:2},{text:"可用区",value:3},{text:"创建时间",value:4}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]},{key:"IpList",enDescriptor:"IpList",cnDescriptor:"私有网络vip列表",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/845/30631",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,InstanceIds:[],InstanceNames:[],OrderByKey:{},OrderByType:{},IpList:[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"DCFilterFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return f})),n.d(t,"DCInstanceAliasList",(function(){return d})),n.d(t,"DCInvalidDemensions",(function(){return m})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return u})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"DCGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o=n(4),a="QCE/DC",c="dcQuery",s=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DirectConnectIds",enDescriptor:"DirectConnectIds",cnDescriptor:"物理专线 ID",link:"",type:"inputMulti"}],u={instanceDocUrl:"https://cloud.tencent.com/document/api/216/34826",namespace:a,fieldDescriptor:s},l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DirectConnectId",queries:{Limit:20,Offset:0,DirectConnectIds:[]}};function p(e){return void 0===e&&(e={}),Object(o.d)(e,!1)}var d=["DirectConnectId","DirectConnectName"],f={instance:"DirectConnectId"},m={directConnectId:"DirectConnectId",directconnectid:"DirectConnectId"};function y(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["directConnectId"]})),t}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"DCGFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"DCGInstanceAliasList",(function(){return c})),n.d(t,"DCGInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"DCGGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/DCG",o="dcgQuery",a={directConnectGatewayId:"DirectConnectGatewayId"},c=["DirectConnectGatewayId","DirectConnectGatewayName"],s={instance:"DirectConnectGatewayId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"direct-connect-gateway-id",enDescriptor:"direct-connect-gateway-id",cnDescriptor:"专线网关唯一ID",link:"",type:"inputMulti"},{key:"direct-connect-gateway-name",enDescriptor:"direct-connect-gateway-name",cnDescriptor:"专线网关名称",link:"",type:"inputMulti"},{key:"direct-connect-gateway-ip",enDescriptor:"direct-connect-gateway-ip",cnDescriptor:"专线网关IP",link:"",type:"inputMulti"},{key:"gateway-type",enDescriptor:"gateway-type",cnDescriptor:"网关类型",link:"",type:"select",multiple:!0,list:[{text:"普通型",value:"NORMAL"},{text:"NAT型",value:"NAT"}]},{key:"network-type",enDescriptor:"network-type",cnDescriptor:"网络类型",link:"",type:"select",multiple:!0,list:[{text:"私有网络类型",value:"VPC"},{text:"云联网类型",value:"CCN"}]},{key:"ccn-id",enDescriptor:"ccn-id",cnDescriptor:"专线网关所在云联网ID",link:"",type:"inputMulti"},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"专线网关所在私有网络ID",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/30644",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DirectConnectGatewayId",queries:{Limit:20,Offset:0,"direct-connect-gateway-id":[],"direct-connect-gateway-name":[],"direct-connect-gateway-ip":[],"gateway-type":{},"network-type":{},"ccn-id":[],"vpc-id":[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"DCXFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return m})),n.d(t,"DCXInstanceAliasList",(function(){return f})),n.d(t,"DCXInvalidDemensions",(function(){return y})),n.d(t,"namespace",(function(){return c})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"DCXGetInstanceQueryParams",(function(){return d}));var r=n(0),i=n.n(r),o=n(4),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var u=["InstanceId","InstanceName"],l={target:"InstanceId"},p={instance:"InstanceId",replica:"ReplicaSetId"},d={Replica:{dim_KeyInStorage:"ReplicaSets",dim_KeyInTarget:"replica",dim_KeyInMap:"ReplicaSetId",dim_KeyInIns:"ReplicaSetId"},Node:{dim_KeyInStorage:"ReplicaNodeSets",dim_KeyInTarget:"node",dim_KeyInMap:"NodeId",dim_KeyInIns:"NodeId"}};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"QAAPFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"QAAPInstanceAliasList",(function(){return u})),n.d(t,"QAAPInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"QAAPGetInstanceQueryParams",(function(){return m}));var r=n(0),i=n.n(r),o=n(4),a="QCE/QAAP",c="qaapQuery",s={channelId:"InstanceId"},u=["InstanceId"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ProjectId",enDescriptor:"ProjectId",cnDescriptor:"项目ID",link:"",type:"inputMulti"},{key:"AccessRegion",enDescriptor:"AccessRegion",cnDescriptor:"接入地域",link:"",type:"inputMulti"},{key:"RealServerRegion",enDescriptor:"RealServerRegion",cnDescriptor:"源站地域",link:"",type:"inputMulti"},{key:"GroupId",enDescriptor:"GroupId",cnDescriptor:"通道组ID",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/608/36963",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,ProjectId:[],AccessRegion:[],RealServerRegion:[],GroupId:[]}};function m(e){return void 0===e&&(e={}),Object(o.d)(e,!0)}function y(e){return i.a.cloneDeep(e)}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"TCAPLUSFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"TCAPLUSInstanceAliasList",(function(){return s})),n.d(t,"TCAPLUSInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"regonsMap",(function(){return m})),n.d(t,"TCAPLUSGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n.n(r),o="QCE/TCAPLUS",a="tcaplusQuery",c={},s=["TableInstanceId","TableName"],u={instance:"TableInstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ClusterId",enDescriptor:"ClusterId",cnDescriptor:"表格所属集群ID",link:"",type:"input"},{key:"TableGroupIds",enDescriptor:"TableGroupIds",cnDescriptor:"表格组ID列表",link:"",type:"inputMulti"},{key:"TableName",enDescriptor:"TableName",cnDescriptor:"表格名称",link:"",type:"input"},{key:"TableInstanceId",enDescriptor:"TableInstanceId",cnDescriptor:"表实例ID",link:"",type:"input"},{key:"TableIdlType",enDescriptor:"TableIdlType",cnDescriptor:"表格描述语言类型",link:"",type:"select",list:[{text:"PROTO",value:"PROTO"},{text:"TDR",value:"TDR"}]},{key:"TableType",enDescriptor:"TableType",cnDescriptor:"表格数据结构类型",link:"",type:"select",list:[{text:"GENERIC",value:"GENERIC"},{text:"LIST",value:"LIST"}]},{key:"ListElementNum",enDescriptor:"ListElementNum",cnDescriptor:"LIST表元素个数",link:"",type:"inputNumber"},{key:"ReservedVolume",enDescriptor:"ReservedVolume",cnDescriptor:"表格预留容量(GB)",link:"",type:"inputNumber"},{key:"ReservedReadQps",enDescriptor:"ReservedReadQps",cnDescriptor:"表格预留读CU",link:"",type:"inputNumber"},{key:"ReservedWriteQps",enDescriptor:"ReservedWriteQps",cnDescriptor:"表格预留写CU",link:"",type:"inputNumber"},{key:"Memo",enDescriptor:"Memo",cnDescriptor:"表格备注信息",link:"",type:"input"},{key:"FileName",enDescriptor:"FileName",cnDescriptor:"Key回档文件名,回档专用",link:"",type:"input"},{key:"FileExtType",enDescriptor:"FileExtType",cnDescriptor:"Key回档文件扩展名,回档专用",link:"",type:"input"},{key:"FileSize",enDescriptor:"FileSize",cnDescriptor:"Key回档文件大小,回档专用",link:"",type:"inputNumber"},{key:"FileContent",enDescriptor:"FileContent",cnDescriptor:"Key回档文件内容,回档专用",link:"",type:"input"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/596/39664",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TableInstanceId",queries:{Limit:20,Offset:0,ClusterId:"",TableGroupIds:[],TableName:"",TableInstanceId:"",TableIdlType:{},TableType:{},ListElementNum:null,ReservedVolume:null,ReservedReadQps:null,ReservedWriteQps:null,Memo:"",FileName:"",FileExtType:"",FileSize:null,FileContent:""}};function f(e){void 0===e&&(e={});var t={};t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,t.ClusterId=i.a.get(e,"ClusterId","")||"",t.TableGroupIds=i.a.get(e,"TableGroupIds",[])||[],e=i.a.omit(e,["Offset","Limit","TableGroupIds","ClusterId"]);var n=[];return i.a.forEach(e,(function(e,t){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(n[t]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(n[t]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(n[t]=e)})),t.SelectedTables=n,t}var m={"ap-beijing":"华北地区(北京)","ap-guangzhou":"华南地区(广州)","ap-hongkong":"港澳台地区(中国香港)","ap-seoul":"亚太东北(首尔)","ap-shanghai":"华东地区(上海)","ap-singapore":"亚太东南(新加坡)","ap-tokyo":"亚太东北(东京)","eu-frankfurt":"欧洲地区(法兰克福)","na-ashburn":"美国东部(弗吉尼亚)","na-siliconvalley":"美国西部(硅谷)"};t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"VBCFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VBCInstanceAliasList",(function(){return c})),n.d(t,"VBCInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VBCGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VBC",o="vbcQuery",a={},c=["CcnId","CcnName"],s={instance:"CcnId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ccn-id",enDescriptor:"ccn-id",cnDescriptor:"CCN实例ID",link:"",type:"inputMulti"},{key:"ccn-name",enDescriptor:"ccn-name",cnDescriptor:"CCN名称",link:"",type:"inputMulti"},{key:"ccn-description",enDescriptor:"ccn-description",cnDescriptor:"CCN描述",link:"",type:"inputMulti"},{key:"state",enDescriptor:"state",cnDescriptor:"实例状态",link:"",type:"select",multiple:!0,list:[{text:"隔离中",value:"ISOLATED"},{text:"运行中",value:"AVAILABLE"}]}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/19199",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"CcnId",DRegion:"",SRegion:"",queries:{Limit:20,Offset:0,"ccn-id":[],"ccn-name":[],"ccn-description":[],state:{}}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"VPNGWFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VPNGWInstanceAliasList",(function(){return c})),n.d(t,"VPNGWInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VPNGWGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VPNGW",o="vpngwQuery",a={vpnGwId:"VpnGatewayId"},c=["VpnGatewayId","VpnGatewayName"],s={instance:"VpnGatewayId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"VPC实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-id",enDescriptor:"vpn-gateway-id",cnDescriptor:"VPN实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-name",enDescriptor:"vpn-gateway-name",cnDescriptor:"VPN实例名称",link:"",type:"inputMulti"},{key:"type",enDescriptor:"type",cnDescriptor:"VPN网关类型",link:"",type:"select",multiple:!0,list:[{text:"IPSEC",value:"IPSEC"},{text:"SSL",value:"SSL"}]},{key:"public-ip-address",enDescriptor:"public-ip-address",cnDescriptor:"公网IP",link:"",type:"inputMulti"},{key:"renew-flag",enDescriptor:"renew-flag",cnDescriptor:"网关续费类型",link:"",type:"select",multiple:!0,list:[{text:"手动续费",value:"NOTIFY_AND_MANUAL_RENEW"},{text:"自动续费",value:"NOTIFY_AND_AUTO_RENEW"}]},{key:"zone",enDescriptor:"zone",cnDescriptor:"VPN所在可用区",link:"",type:"dropdownMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/17514",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpnGatewayId",queries:{Limit:20,Offset:0,"vpc-id":[],"vpn-gateway-id":[],"vpn-gateway-name":[],type:{},"public-ip-address":[],"renew-flag":{},zone:[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"VPNXFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VPNXInstanceAliasList",(function(){return c})),n.d(t,"VPNXInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VPNXGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VPNX",o="vpnxQuery",a={vpnConnId:"VpnConnectionId"},c=["VpnConnectionId","VpnConnectionName"],s={instance:"VpnConnectionId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"VPC实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-id",enDescriptor:"vpn-gateway-id",cnDescriptor:"VPN实例ID",link:"",type:"inputMulti"},{key:"customer-gateway-id ",enDescriptor:"customer-gateway-id ",cnDescriptor:"对端网关实例ID",link:"",type:"inputMulti"},{key:"vpn-connection-name",enDescriptor:"vpn-connection-name",cnDescriptor:"通道名称",link:"",type:"inputMulti"},{key:"vpn-connection-id",enDescriptor:"vpn-connection-id",cnDescriptor:"通道实例ID",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/17515",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpnConnectionId",queries:{Limit:20,Offset:0,"vpc-id":[],"vpn-gateway-id":[],"customer-gateway-id":[],"vpn-connection-name":[],"vpn-connection-id":[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"LighthouseFilterFieldsDescriptor",(function(){return a})),n.d(t,"LIGHTHOUSEInstanceAliasList",(function(){return u})),n.d(t,"LighthouseInvalidDemensions",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"modifyDimensons",(function(){return d})),n.d(t,"LIGHTHOUSEGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["InstanceId","InstanceName","PrivateIpAddresses","PublicIpAddresses"],l={instanceid:"InstanceId"},p={instance:"InstanceId"};function d(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CFSQueryDescriptor",(function(){return o})),n.d(t,"CFSInstanceAliasList",(function(){return s})),n.d(t,"CFSInvalidDemensions",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"regionSupported",(function(){return l})),n.d(t,"CFSGetInstanceQueryParams",(function(){return c}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"FileSystemId",enDescriptor:"File System Id",cnDescriptor:"文件系统 ID",link:"",type:"input"},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络(VPC) ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"子网 ID",link:"",type:"input"}],a={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"FileSystemId",version:"",queries:{Offset:0,Limit:20,FileSystemId:"",VpcId:"",SubnetId:""}};function c(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["FileSystemId","FsName"],u={},l=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-nanjing"},{value:"ap-seoul"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-siliconvalley"},{value:"na-toronto"}],p={instance:"InstanceId"};t.default=a},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceQueryDescriptor",(function(){return o})),n.d(t,"InvalidDemensions",(function(){return c})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"InstanceAliasList",(function(){return u})),n.d(t,"GetInstanceQueryParams",(function(){return a}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为10,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:50},{key:"QueueName",enDescriptor:"QueueName",cnDescriptor:"精确匹配QueueName",link:"",type:"input"},{key:"TagKey",enDescriptor:"TagKey",cnDescriptor:"标签搜索",link:"",type:"input"}];function a(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c={queueId:"QueueId",queueName:"QueueName"},s={instance:"QueueName"},u=["QueueName","QueueId"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"QueueName",queries:{Offset:0,Limit:20,QueueName:"",TagKey:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"CVMFilterFieldsDescriptor",(function(){return a})),n.d(t,"CVMInstanceAliasList",(function(){return u})),n.d(t,"isValidMetric",(function(){return d})),n.d(t,"modifyDimensons",(function(){return f})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"CVMGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["InstanceId","InstanceName","PrivateIpAddresses","PublicIpAddresses"],l=["CPUUsage","CpuLoadavg","Cpuloadavg5m","Cpuloadavg15m","BaseCpuUsage","GpuMemTotal","GpuMemUsage","GpuMemUsed","GpuPowDraw","GpuPowLimit","GpuPowUsage","GpuTemp","GpuUtil","LanOuttraffic","LanIntraffic","LanOutpkg","LanInpkg","WanOuttraffic","WanIntraffic","WanOutpkg","WanInpkg","AccOuttraffic","TcpCurrEstab","TimeOffset","MemUsed","MemUsage","CvmDiskUsage","BaseCpuUsage","VmDiskReadIops"],p={instance:"InstanceId"};function d(e){var t=i.a.map(l,i.a.toUpper);return-1!==i.a.indexOf(t,i.a.toUpper(e.MetricName))}function f(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"PCXInstanceAliasList",(function(){return u})),n.d(t,"PCXFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"namespace",(function(){return a})),n.d(t,"PCXGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisFieldsDescriptor",(function(){return a})),n.d(t,"RedisInvalidDemensions",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return d})),n.d(t,"REDISInstanceAliasList",(function(){return l})),n.d(t,"isValidMetric",(function(){return u})),n.d(t,"REDISGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}function u(e){void 0===e&&(e={});var t=i.a.get(e,"Dimensions[0].Dimensions");return 1===t.length&&-1!==i.a.indexOf(t,"instanceid")}var l=["InstanceId","InstanceName","WanIp"],p={redis_uuid:"InstanceId",instanceid:"InstanceId"},d={instance:"InstanceId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"TSFInvalidDemensions",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"TSFInstanceAliasList",(function(){return c})),n.d(t,"TSFFieldsDescriptor",(function(){return i})),n.d(t,"TSFGetInstanceQueryParams",(function(){return a}));var r=n(4),i=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"SearchWord",enDescriptor:"SearchWord",cnDescriptor:"搜索关键字",link:"",type:"input"},{key:"ApplicationIdList",enDescriptor:"ApplicationIdList",cnDescriptor:"应用ID 组成的数组",link:"",type:"inputmulti"},{key:"ApplicationType",enDescriptor:"ApplicationType",cnDescriptor:"应用类型",link:"",type:"select",list:[{text:"所有",value:""},{text:"容器应用",value:"C"},{text:"普通应用/虚拟机应用",value:"V"}]},{key:"MicroserviceType",enDescriptor:"MicroserviceType",cnDescriptor:"应用的微服务类型",link:"",type:"select",list:[{text:"所有",value:""},{text:"普通应用",value:"N"},{text:"Mesh应用",value:"M"},{text:"微服务网关应用",value:"G"},{text:"原生应用",value:"NATIVE"}]},{key:"ApplicationResourceTypeList",enDescriptor:"ApplicationResourceTypeList",cnDescriptor:"应用资源类型数组",link:"",type:"select",multiple:!0,list:[{text:"默认资源类型",value:"DEF"},{text:"微服务网关资源",value:"GW"}]}],o={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ApplicationId",queries:{Limit:20,Offset:0,SearchWord:"",OrderBy:"",OrderType:null,ApplicationType:"",MicroserviceType:"",ApplicationResourceTypeList:[],ApplicationIdList:[]}};function a(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var c=["ApplicationId","ApplicationName"],s={applicationid:"ApplicationId"},u={instance:"ApplicationId"};t.default=o},function(e,t,n){"use strict";n.r(t),n.d(t,"BWPFilterFieldsDescriptor",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BWPInstanceAliasList",(function(){return u})),n.d(t,"BWPInvalidDemensions",(function(){return p})),n.d(t,"BWPGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.BandwidthPackageIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["BandwidthPackageId","BandwidthPackageName"],l={instance:"BandwidthPackageId"},p={bandwidthPackageId:"BandwidthPackageId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNFilterFieldsDescriptor",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"CDNInstanceAliasList",(function(){return u})),n.d(t,"CDNInvalidDemensions",(function(){return l})),n.d(t,"CDNGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&n.push({Name:t,Value:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||n.push({Name:t,Value:i.a.get(e,"value",[]).slice(0,5)}))})),n.length>0&&(t.Filters=n)}return t}var u=["Domain","ProjectId"],l={projectId:"ProjectId",domain:"Domain"},p={instance:"Domain"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"LBFilterDescriptor",(function(){return a})),n.d(t,"LBInstanceAliasList",(function(){return u})),n.d(t,"LBInvalidDemensions",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"LBGetInstanceQueryParams",(function(){return s}));var r,i=n(0),o=n.n(i),a=[{key:"address-id",enDescriptor:"Address ID",cnDescriptor:"EIP 的唯一 ID ",link:"",type:"inputmulti"},{key:"address-name",enDescriptor:"Address Name",cnDescriptor:"EIP 名称 ",link:"",type:"inputmulti"},{key:"address-ip",enDescriptor:"Address IP",cnDescriptor:"EIP 的 IP 地址 ",link:"",type:"inputmulti"},{key:"address-status",enDescriptor:"Address Status",cnDescriptor:"EIP 的状态",link:"",type:"select",list:[{value:"CREATING",text:"CREATING"},{value:"BINDING",text:"BINDING"},{value:"BIND",text:"BIND"},{value:"UNBINDING",text:"UNBINDING"},{value:"UNBIND",text:"UNBIND"},{value:"OFFLINING",text:"OFFLINING"},{value:"BIND_ENI",text:"BIND_ENI"}]},{key:"instance-id",enDescriptor:"Instance ID",cnDescriptor:"实例ID ",link:"",type:"inputmulti"},{key:"private-ip-address",enDescriptor:"Private IP Address",cnDescriptor:"EIP 绑定的内网 IP",link:"",type:"inputmulti"},{key:"network-interface-id",enDescriptor:"Network Interface ID",cnDescriptor:"EIP 绑定的弹性网卡 ID",link:"",type:"inputmulti"},{key:"is-arrears",enDescriptor:"Arrears",cnDescriptor:"EIP 是否欠费 ",link:"",type:"select",list:[{text:"正常",value:"FALSE"},{text:"欠费",value:"TRUE"}]}],c={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"AddressId",version:"",queries:(r={Offset:0,Limit:20},r.AddressIds=[""],r.Filters={"address-id":[],"address-name":[],"address-ip":[],"address-status ":[],"instance-id ":[],"private-ip-address":[],"network-interface-id ":[],"is-arrears ":[]},r)};function s(e){void 0===e&&(e={});var t={};if(!o.a.isEmpty(e))if(t.Limit=o.a.get(e,"Limit",20)||20,t.Offset=o.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(o.a.isArray(e.AddressIds)){var n=o.a.compact(e.AddressIds);o.a.uniq(n).length>0&&(t.AddressIds=o.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];o.a.forEach(e.Filters,(function(e,t){r.length>9||(o.a.isArray(e)?(e=o.a.compact(e)).length>0&&r.push({Name:t,Values:o.a.uniq(e).slice(0,5)}):o.a.isObject(e)&&(o.a.isEmpty(o.a.get(e,"value",[]))||r.push({Name:t,Values:o.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["AddressId","AddressName","AddressIp"],l={eip:"AddressIp"},p={instance:"AddressId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"NATGatewayFilterFieldsDescriptor",(function(){return c})),n.d(t,"NATGATEWAYInstanceAliasList",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"NATInvalidDemensions",(function(){return p})),n.d(t,"NATGATEWAYGetInstanceQueryParams",(function(){return u}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var l={instance:"NatGatewayId"},p={natId:"NatGatewayId"};t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"OVCDNFilterFieldsDescriptor",(function(){return a})),n.d(t,"OVCDNInstanceAliasList",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"OVCDNInvalidDemensions",(function(){return l})),n.d(t,"OVCDNGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&n.push({Name:t,Value:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||n.push({Name:t,Value:i.a.get(e,"value",[]).slice(0,5)}))})),n.length>0&&(t.Filters=n)}return t}var u=["Domain","ResourceId"],l={projectId:"ProjectId",domain:"Domain"},p={instance:"Domain"};t.default=c},,function(e,t){e.exports=i},,function(e,t,n){"use strict";n.r(t),n.d(t,"TKEFilterFieldsDescriptor",(function(){return a})),n.d(t,"TKEInstanceAliasList",(function(){return c})),n.d(t,"TKEGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",conditions:[],groupBys:"",queries:{Limit:20,Offset:0,instanceIdsChecked:!1,filtersChecked:!0,ClusterIds:[""],Filters:{ClusterName:[],ClusterType:[],ClusterStatus:[],"tag-key":[]}}},a=[{key:"ClusterName",enDescriptor:"Cluster Name",cnDescriptor:"集群名",link:"",type:"input"},{key:"ClusterType",enDescriptor:"Cluster Type",cnDescriptor:"集群类型",link:"",type:"inputmulti"},{key:"ClusterStatus",enDescriptor:"Cluster Status",cnDescriptor:"集群状态",link:"",type:"inputmulti"},{key:"Tags",enDescriptor:"Tags",cnDescriptor:"标签键值对",link:"",type:"inputmulti"},{key:"vpc-id",enDescriptor:"VPC",cnDescriptor:"VPC",link:"",type:"input"},{key:"tag-key",enDescriptor:"Tag Key",cnDescriptor:"标签键",link:"",type:"inputmulti"},{key:"tag-value",enDescriptor:"Tag Value",cnDescriptor:"标签值",link:"",type:"inputmulti"}],c=["ClusterId","ClusterName"];function s(e){void 0===e&&(e={});var t={};if(!i.a.isEmpty(e))if(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(i.a.isArray(e.InstanceIds)){var n=i.a.compact(e.InstanceIds);i.a.uniq(n).length>0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}t.default=o},function(e,t,n){"use strict";n.r(t);var r,i=n(21),o=n(3),a=n(2),c=n(4),s=n(8),u=n(1),l=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),p=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},d=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0?D.map((function(e){return{TopicId:e.TopicId,TopicName:e.TopicName}})):v,PartitionList:k.length>0?k:b}]}}))}))},t.prototype.formatTopicVarDisplay=function(e,t,n){var r=this;return t?t.replace(/\$\{(\w+)\}/g,(function(t,n){return n&&r.TopicAliasList.includes(n)?r.getAliasValue(e,n):""})):this.getAliasValue(e,n)},t.prototype.fetchMetricData=function(e,t,n,r){return d(this,void 0,void 0,(function(){var i,o,a,c,s,p,d,m,y,h=this;return f(this,(function(f){switch(f.label){case 0:return i=r.topicalias,o=r.groupname,a=r.topicid,[4,this.getConsumerGroups(t,{InstanceId:n.InstanceId,groupname:o,topicid:a})];case 1:return c=f.sent(),s=r.display,p=c.TopicList,d=c.GroupList,m=c.PartitionList,i=this.TopicAliasList.includes(i)?i:this.templateQueryIdMap.topicId,y={GroupList:d.map((function(e){return e._InstanceAliasValue=e.GroupName,{text:e.GroupName,value:e[u.templateQueryIdMap.groupName]}})),TopicList:p.map((function(e){var t=h.formatTopicVarDisplay(e,s,i);return e._InstanceAliasValue=t||e[u.templateQueryIdMap.topicId],{text:t||e[u.templateQueryIdMap.topicId],value:e[u.templateQueryIdMap.topicId],TopicName:e.TopicName}})),PartitionList:m.map((function(e){return e._InstanceAliasValue=e[u.templateQueryIdMap.partition],{text:e[u.templateQueryIdMap.partition],value:e[u.templateQueryIdMap.partition]}}))},[4,l.a.setExtraStorage(this.service,this.keyInStorage.TopicList,p)];case 2:return f.sent(),[4,l.a.setExtraStorage(this.service,this.keyInStorage.GroupList,d)];case 3:return f.sent(),[4,l.a.setExtraStorage(this.service,this.keyInStorage.PartitionList,m)];case 4:switch(f.sent(),e){case"DescribeTopicList":return[2,y.TopicList];case"DescribeGroup":return[2,y.GroupList];case"DescribePartion":return[2,y.PartitionList];default:return[2,[]]}return[2]}}))}))},t}(s.BaseDatasource);t.default=m},function(e,t,n){"use strict";n.r(t);var r,i=n(12),o=n(3),a=n(0),c=n.n(a),s=n(2),u=n(4),l=n(8),p=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),d=function(){return(d=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=i)return r;var o=Object(s.k)(i,50),a=[];return c.a.forEach(o,(function(t){a.push(n.getInstances(e,t))})),Promise.all(a).then((function(e){return c.a.forEach(e,(function(e){r=c.a.concat(r,e)})),r})).catch((function(e){return r}))}))},t.prototype.getVpcId=function(e,t){void 0===t&&(t={}),(t=l({Offset:0,Limit:20},t)).Offset=String(t.Offset),t.Limit=String(t.Limit);var n=Object(s.e)(e,"vpc");return this.doRequest({url:this.url+n.path,data:t},n.service,{region:e,action:"DescribeVpcs"}).then((function(e){return c.a.map(e.VpcSet||[],(function(e){return{text:e.VpcId,value:e.VpcId}}))}))},t.prototype.getVpcIds=function(e){var t=this,n=[],r={Offset:0,Limit:100};r.Offset=String(r.Offset),r.Limit=String(r.Limit);var i=Object(s.e)(e,"vpc");return this.doRequest({url:this.url+i.path,data:r},i.service,{region:e,action:"DescribeVpcs"}).then((function(r){n=c.a.map(r.VpcSet||[],(function(e){return{text:e.VpcId,value:e.VpcId}}));var i=r.TotalCount||0;if(n.length>=i)return n;var o=Object(s.k)(i,100),a=[];return c.a.forEach(o,(function(n){a.push(t.getVpcId(e,n))})),Promise.all(a).then((function(e){return c.a.forEach(e,(function(e){n=c.a.concat(n,e)})),n})).catch((function(e){return n}))}))},t.prototype.doRequestV2=function(e,t,n){return void 0===n&&(n={}),p(this,void 0,void 0,(function(){return d(this,(function(r){switch(r.label){case 0:return[4,Object(s.d)(e,t,n,this.secretId,this.instanceSettings.id,this.backendSrv)];case 1:return e=r.sent(),[2,this.backendSrv.datasourceRequest(e).then((function(e){return c.a.get(e,"data",{})})).catch((function(e){throw e}))]}}))}))},t}(o.BaseDatasource);t.default=f},function(e,t,n){"use strict";n.r(t);var r,i=n(39),o=n(3),a=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),c=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.Namespace=i.namespace,o.InstanceAliasList=i.POSTGRESInstanceAliasList,o.InvalidDimensions=i.PostgreInvalidDemensions,o.templateQueryIdMap=i.templateQueryIdMap,o.InstanceReqConfig={service:"postgres",action:"DescribeDBInstances",responseField:"DBInstanceSet"},o.MetricReqConfig={resultFilter:i.modifyDimensons},o}return a(t,e),t}(o.BaseDatasource);t.default=c},function(e,t,n){"use strict";n.r(t);var r,i=n(0),o=n(49),a=n(3),c=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0?"_".concat(r.timeshift):"";return{target:"".concat(e.MetricName," - ").concat(o).concat(a),datapoints:Object(i.map)(t.Values,(function(e){return[e.Value,1e3*e.Timestamp+d]}))}}))})))}))},t}(c.BaseDatasource);t.default=p},function(e,t,n){"use strict";n.r(t);var r,i=n(60),o=n(3),a=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),c=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.Namespace="QCE/TSF",o.InstanceAliasList=i.TSFInstanceAliasList,o.InvalidDimensions=i.TSFInvalidDemensions,o.templateQueryIdMap=i.templateQueryIdMap,o.InstanceReqConfig={service:"tsf",action:"DescribeApplications",responseField:"Content"},o}return a(t,e),t}(o.BaseDatasource);t.default=c},function(e,t,n){"use strict";n.r(t);var r,i=n(23),o=n(3),a=n(0),c=n.n(a),s=n(2),u=n(1),l=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),p=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},d=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,l)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(29);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(30);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(31);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"BWPQueryCtrl",(function(){return a})),n.d(t,"bwpQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(61),a=function(){function e(e,t){e.init=function(){e.BWPFilterFieldsDescriptor=o.BWPFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("bwpQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(32);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"CDBQueryCtrl",(function(){return a})),n.d(t,"cdbQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(42),a=function(){function e(e,t){e.init=function(){e.CDBFieldsDescriptor=o.CDBFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"ZoneIds":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cdb",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cdbQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNQueryCtrl",(function(){return a})),n.d(t,"cdnQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(62),a=function(){function e(e,t){e.init=function(){e.CDNFilterFieldsDescriptor=o.CDNFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cdnQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return l})),n.d(t,"sQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(33),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,p)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(34);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(43);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(55),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n \n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cfsQuery",u)},function(e,t,n){"use strict";n.r(t),n.d(t,"CKAFKAQueryCtrl",(function(){return l})),n.d(t,"scfQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(10),a=n(4),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 主题,消费分组,分区 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n \n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"=",instance:"="},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("ckafkaQuery",p)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return f}));var r=n(6),i=n.n(r),o=n(0),a=n(12),c=n(2),s=n(4),u=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},l=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n\x3c!--Listener维度部分--\x3e\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n');function f(){return{template:d,controller:p,restrict:"E",scope:{target:"=",namespace:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("clbQuery",f)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return a})),n.d(t,"sQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(27),a=function(){function e(e,t){e.init=function(){e.GSEFilterFieldsDescriptor=o.CLSFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n \n
\n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(56);Object(r.default)("cmqQuery",{fieldDescriptor:i.InstanceQueryDescriptor,instanceDocUrl:"https://cloud.tencent.com/document/api/406/42624",namespace:"QCE/CMQ"})},function(e,t,n){"use strict";n.r(t),n.d(t,"CmqTopicQueryCtrl",(function(){return u})),n.d(t,"scfQuery",(function(){return l}));var r=n(6),i=n.n(r),o=n(35),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 主题的ui --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n \n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("cmqTopicQuery",l)},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceAliasList",(function(){return a})),n.d(t,"GetInstanceQueryParams",(function(){return o}));var r=n(0),i=n.n(r);function o(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var a=["BucketName"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"BucketName",queries:{}}},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(36);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"CVMQueryCtrl",(function(){return a})),n.d(t,"cvmQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(57),a=function(){function e(e,t){e.init=function(){e.CVMFilterFieldsDescriptor=o.CVMFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cvmQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(24);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(44);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(15),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(45);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(46);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(37);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(38);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return s})),n.d(t,"sQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(20),a=n(2),c=[{label:"diskId",field:"diskId"}],s=function(){function e(e,t){e.init=function(){e.ECMBLOCKSTORAGEFilterFieldsDescriptor=o.ECMBLOCKSTORAGEFilterFieldsDescriptor,e.ExtraFields=c,e.namespace=o.namespace},e.getExtraFields=function(){return c.filter((function(t){var n,r;return t.field in(null!==(n=e.dims)&&void 0!==n?n:{})||t.label in(null!==(r=e.dims)&&void 0!==r?r:{})}))},e.getExtraDropdown=function(t,n){var r=t.instance,i=Object(a.f)(e.namespace);r=e.datasource.getServiceFn(i,"getVariable")(r);try{return(r=JSON.parse(r)).DataDisks.map((function(e){return e._InstanceAliasValue=e[o.templateQueryIdMap.diskId],{text:e[o.templateQueryIdMap.diskId],value:JSON.stringify(e)}}))}catch(t){var c={InstanceId:r};return e.datasource.getServiceFn(i,"getDiskList")({payload:c}).map((function(e){return{text:e[o.templateQueryIdMap.diskId],value:JSON.stringify(e)}}))}},e.init()}return e.$inject=["$scope","$rootScope"],e}();function u(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(47);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(14),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t),n.d(t,"LBQueryCtrl",(function(){return a})),n.d(t,"lbQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(63),a=function(){function e(e,t){e.init=function(){e.LBFilterDescriptor=o.LBFilterDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n\n\x3c!--Filters部分--\x3e\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("lbQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"LighthouseQueryCtrl",(function(){return a})),n.d(t,"lighthouseQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(54),a=function(){function e(e,t){e.init=function(){e.LighthouseFilterFieldsDescriptor=o.LighthouseFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("lighthouse",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("lighthouseQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"MongoDBQueryCtrl",(function(){return p})),n.d(t,"mongodbQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(0),a=n(48),c=n(2),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onRefresh:"&",onChange:"&"},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("mongodbQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"MrQueryCtrl",(function(){return u})),n.d(t,"mrQuery",(function(){return l}));var r=n(22),i=n(6),o=n.n(i),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\x3c!-- 主题的ui --\x3e\n
\n
\n
\n \n
\n\n \n \n
\n
\n
\n
\n\n \n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}o.a.directive("mrQuery",l)},function(e,t,n){"use strict";n.r(t),n.d(t,"NatGatewayQueryCtrl",(function(){return a})),n.d(t,"natGatewayQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(64),a=function(){function e(e,t){e.init=function(){e.NATGatewayFilterFieldsDescriptor=o.NATGatewayFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(e){return[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("natGatewayQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"OVCDNQueryCtrl",(function(){return a})),n.d(t,"ovCdnQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(65),a=function(){function e(e,t){e.init=function(){e.OVCDNFilterFieldsDescriptor=o.OVCDNFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("ovCdnQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"PCXQueryCtrl",(function(){return a})),n.d(t,"pcxQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(58),a=function(){function e(e,t){e.init=function(){e.PCXFieldsDescriptor=o.PCXFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"vpcId":return e.getVpcIds();default:return[]}},e.getVpcIds=function(){return e.region?e.datasource.getVpcIds("pcx",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("pcxQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(39);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(49);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisQueryCtrl",(function(){return a})),n.d(t,"redisQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(59),a=function(){function e(e,t){e.init=function(){e.RedisFieldsDescriptor=o.RedisFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(e){return[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("redisQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisMemQueryCtrl",(function(){return l})),n.d(t,"redisMemQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(0),a=n(16),c=n(2),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("redisMemQuery",p)},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(25),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- version部分 --\x3e\n
\n
\n \n
\n \n \n
\n
\n
\n\n \n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&"}}}i.a.directive("scfQuery",u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(28);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(50);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(13),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(17),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("tdmqRabbitmqQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"TdmqRocketmqQueryCtrl",(function(){return p})),n.d(t,"tdmqRocketmqQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(18),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("tdmqRocketmqQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return c})),n.d(t,"sQuery",(function(){return s}));var r=n(6),i=n.n(r),o=n(0),a=n(69),c=function(){function e(e,t){e.init=function(){e.TKEFilterFieldsDescriptor=a.TKEFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.addCondition=function(){e.target.conditions.push({Key:"",Operator:"=",Value:""})},e.deleteCondition=function(t){var n=e.target.conditions[t];Object(o.isEmpty)(n.Key)||Object(o.isEmpty)(n.Operator)||Object(o.isEmpty)(n.Value)?e.target.conditions.splice(t,1):(e.target.conditions.splice(t,1),e.onRefresh())},e.getOperator=function(){return Promise.resolve([{text:"=",value:"="},{text:"in",value:"in"}])},e.init()}return e.$inject=["$scope","$rootScope"],e}();function s(){return{template:'\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n \n
\n
\n \n
\n \n \n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n',controller:c,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("tkeQuery",s)},function(e,t,n){"use strict";n.r(t),n.d(t,"TSFQueryCtrl",(function(){return a})),n.d(t,"tsfQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(60),a=function(){function e(e,t){e.init=function(){e.TSFFieldsDescriptor=o.TSFFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("tsfQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(23);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"VBCQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(51),a=n(2),c=[],s=function(){function e(e,t){e.init=function(){e.VBCFilterFieldsDescriptor=o.VBCFilterFieldsDescriptor,e.namespace=o.namespace},e.getExtraFields=function(){return c.filter((function(t){var n;return t.field in(null!==(n=e.dims)&&void 0!==n?n:{})}))},e.getExtraDropdown=function(t){var n=Object(a.f)(e.namespace);return e.datasource.getFilterDropdown(n,{field:t})},e.init()}return e.$inject=["$scope","$rootScope"],e}();function u(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("vbcQuery",u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(40);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(52);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(53);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(41);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){var r={".":19,"./":19,"./MonitorDatasource":182,"./MonitorDatasource.ts":182,"./_base/datasource":3,"./_base/datasource.ts":3,"./_base/query":7,"./_base/query.ts":7,"./_base/query_filter":185,"./_base/query_filter.ts":185,"./_base/types":186,"./_base/types.ts":186,"./apigateway/datasource":70,"./apigateway/datasource.ts":70,"./apigateway/query":126,"./apigateway/query.ts":126,"./apigateway/query_def":21,"./apigateway/query_def.ts":21,"./bmIntraLb/datasource":71,"./bmIntraLb/datasource.ts":71,"./bmIntraLb/query":127,"./bmIntraLb/query.ts":127,"./bmIntraLb/query_def":29,"./bmIntraLb/query_def.ts":29,"./bm_lb/datasource":72,"./bm_lb/datasource.ts":72,"./bm_lb/query":128,"./bm_lb/query.ts":128,"./bm_lb/query_def":30,"./bm_lb/query_def.ts":30,"./bm_pcx/datasource":73,"./bm_pcx/datasource.ts":73,"./bm_pcx/query":129,"./bm_pcx/query.ts":129,"./bm_pcx/query_def":31,"./bm_pcx/query_def.ts":31,"./bwp/datasource":74,"./bwp/datasource.ts":74,"./bwp/query":130,"./bwp/query.ts":130,"./bwp/query_def":61,"./bwp/query_def.ts":61,"./cbs/datasource":75,"./cbs/datasource.ts":75,"./cbs/query":131,"./cbs/query.ts":131,"./cbs/query_def":32,"./cbs/query_def.ts":32,"./cdb/datasource":76,"./cdb/datasource.ts":76,"./cdb/query":132,"./cdb/query.ts":132,"./cdb/query_def":42,"./cdb/query_def.ts":42,"./cdn/datasource":77,"./cdn/datasource.ts":77,"./cdn/query":133,"./cdn/query.ts":133,"./cdn/query_def":62,"./cdn/query_def.ts":62,"./cdn_province/datasource":78,"./cdn_province/datasource.ts":78,"./cdn_province/query":134,"./cdn_province/query.ts":134,"./cdn_province/query_def":33,"./cdn_province/query_def.ts":33,"./ceip_summary/datasource":79,"./ceip_summary/datasource.ts":79,"./ceip_summary/query":135,"./ceip_summary/query.ts":135,"./ceip_summary/query_def":34,"./ceip_summary/query_def.ts":34,"./ces/datasource":80,"./ces/datasource.ts":80,"./ces/query":136,"./ces/query.ts":136,"./ces/query_def":43,"./ces/query_def.ts":43,"./cfs/datasource":81,"./cfs/datasource.ts":81,"./cfs/query":137,"./cfs/query.ts":137,"./cfs/query_def":55,"./cfs/query_def.ts":55,"./ckafka/datasource":82,"./ckafka/datasource.ts":82,"./ckafka/query":138,"./ckafka/query.ts":138,"./ckafka/query_def":10,"./ckafka/query_def.ts":10,"./clb/datasource":83,"./clb/datasource.ts":83,"./clb/query":139,"./clb/query.ts":139,"./clb/query_def":12,"./clb/query_def.ts":12,"./cls/datasource":84,"./cls/datasource.ts":84,"./cls/query":140,"./cls/query.ts":140,"./cls/query_def":27,"./cls/query_def.ts":27,"./cmq/datasource":85,"./cmq/datasource.ts":85,"./cmq/query":141,"./cmq/query.ts":141,"./cmq/query_def":56,"./cmq/query_def.ts":56,"./cmq_topic/datasource":86,"./cmq_topic/datasource.ts":86,"./cmq_topic/query":142,"./cmq_topic/query.ts":142,"./cmq_topic/query_def":35,"./cmq_topic/query_def.ts":35,"./cos/datasource":87,"./cos/datasource.ts":87,"./cos/query_def":143,"./cos/query_def.ts":143,"./cpm/datasource":88,"./cpm/datasource.ts":88,"./cpm/query":144,"./cpm/query.ts":144,"./cpm/query_def":36,"./cpm/query_def.ts":36,"./cvm/datasource":89,"./cvm/datasource.ts":89,"./cvm/query":145,"./cvm/query.ts":145,"./cvm/query_def":57,"./cvm/query_def.ts":57,"./cynosdb_mysql/datasource":90,"./cynosdb_mysql/datasource.ts":90,"./cynosdb_mysql/query":146,"./cynosdb_mysql/query.ts":146,"./cynosdb_mysql/query_def":24,"./cynosdb_mysql/query_def.ts":24,"./dc/datasource":91,"./dc/datasource.ts":91,"./dc/query":147,"./dc/query.ts":147,"./dc/query_def":44,"./dc/query_def.ts":44,"./dcdb/datasource":92,"./dcdb/datasource.ts":92,"./dcdb/query":148,"./dcdb/query.ts":148,"./dcdb/query_def":15,"./dcdb/query_def.ts":15,"./dcg/datasource":93,"./dcg/datasource.ts":93,"./dcg/query":149,"./dcg/query.ts":149,"./dcg/query_def":45,"./dcg/query_def.ts":45,"./dcx/datasource":94,"./dcx/datasource.ts":94,"./dcx/query":150,"./dcx/query.ts":150,"./dcx/query_def":46,"./dcx/query_def.ts":46,"./ecdn/datasource":95,"./ecdn/datasource.ts":95,"./ecdn/query":151,"./ecdn/query.ts":151,"./ecdn/query_def":37,"./ecdn/query_def.ts":37,"./ecm/datasource":96,"./ecm/datasource.ts":96,"./ecm/query":152,"./ecm/query.ts":152,"./ecm/query_def":38,"./ecm/query_def.ts":38,"./ecm_block_storage/datasource":97,"./ecm_block_storage/datasource.ts":97,"./ecm_block_storage/query":153,"./ecm_block_storage/query.ts":153,"./ecm_block_storage/query_def":20,"./ecm_block_storage/query_def.ts":20,"./ecm_lb/datasource":98,"./ecm_lb/datasource.ts":98,"./ecm_lb/query":154,"./ecm_lb/query.ts":154,"./ecm_lb/query_def":47,"./ecm_lb/query_def.ts":47,"./gse/datasource":99,"./gse/datasource.ts":99,"./gse/query":155,"./gse/query.ts":155,"./gse/query_def":14,"./gse/query_def.ts":14,"./index":19,"./index.ts":19,"./lb/datasource":100,"./lb/datasource.ts":100,"./lb/query":156,"./lb/query.ts":156,"./lb/query_def":63,"./lb/query_def.ts":63,"./lighthouse/datasource":101,"./lighthouse/datasource.ts":101,"./lighthouse/query":157,"./lighthouse/query.ts":157,"./lighthouse/query_def":54,"./lighthouse/query_def.ts":54,"./mongodb/datasource":102,"./mongodb/datasource.ts":102,"./mongodb/query":158,"./mongodb/query.ts":158,"./mongodb/query_def":48,"./mongodb/query_def.ts":48,"./mr/datasource":103,"./mr/datasource.ts":103,"./mr/query":159,"./mr/query.ts":159,"./mr/query_def":22,"./mr/query_def.ts":22,"./nat_gateway/datasource":104,"./nat_gateway/datasource.ts":104,"./nat_gateway/query":160,"./nat_gateway/query.ts":160,"./nat_gateway/query_def":64,"./nat_gateway/query_def.ts":64,"./ov_cdn/datasource":105,"./ov_cdn/datasource.ts":105,"./ov_cdn/query":161,"./ov_cdn/query.ts":161,"./ov_cdn/query_def":65,"./ov_cdn/query_def.ts":65,"./pcx/datasource":106,"./pcx/datasource.ts":106,"./pcx/query":162,"./pcx/query.ts":162,"./pcx/query_def":58,"./pcx/query_def.ts":58,"./postgresql/datasource":107,"./postgresql/datasource.ts":107,"./postgresql/query":163,"./postgresql/query.ts":163,"./postgresql/query_def":39,"./postgresql/query_def.ts":39,"./qaap/datasource":108,"./qaap/datasource.ts":108,"./qaap/query":164,"./qaap/query.ts":164,"./qaap/query_def":49,"./qaap/query_def.ts":49,"./redis/datasource":109,"./redis/datasource.ts":109,"./redis/query":165,"./redis/query.ts":165,"./redis/query_def":59,"./redis/query_def.ts":59,"./redis_mem/datasource":110,"./redis_mem/datasource.ts":110,"./redis_mem/query":166,"./redis_mem/query.ts":166,"./redis_mem/query_def":16,"./redis_mem/query_def.ts":16,"./scf/datasource":111,"./scf/datasource.ts":111,"./scf/query":167,"./scf/query.ts":167,"./scf/query_def":25,"./scf/query_def.ts":25,"./sqlserver/datasource":112,"./sqlserver/datasource.ts":112,"./sqlserver/query":168,"./sqlserver/query.ts":168,"./sqlserver/query_def":28,"./sqlserver/query_def.ts":28,"./tcaplus/datasource":113,"./tcaplus/datasource.ts":113,"./tcaplus/query":169,"./tcaplus/query.ts":169,"./tcaplus/query_def":50,"./tcaplus/query_def.ts":50,"./tdmq/datasource":114,"./tdmq/datasource.ts":114,"./tdmq/query":170,"./tdmq/query.ts":170,"./tdmq/query_def":13,"./tdmq/query_def.ts":13,"./tdmq_rabbitmq/datasource":115,"./tdmq_rabbitmq/datasource.ts":115,"./tdmq_rabbitmq/query":171,"./tdmq_rabbitmq/query.ts":171,"./tdmq_rabbitmq/query_def":17,"./tdmq_rabbitmq/query_def.ts":17,"./tdmq_rocketmq/datasource":116,"./tdmq_rocketmq/datasource.ts":116,"./tdmq_rocketmq/query":172,"./tdmq_rocketmq/query.ts":172,"./tdmq_rocketmq/query_def":18,"./tdmq_rocketmq/query_def.ts":18,"./tke/datasource":117,"./tke/datasource.ts":117,"./tke/query":173,"./tke/query.ts":173,"./tke/query_def":69,"./tke/query_def.ts":69,"./tsf/datasource":118,"./tsf/datasource.ts":118,"./tsf/query":174,"./tsf/query.ts":174,"./tsf/query_def":60,"./tsf/query_def.ts":60,"./v_clb/datasource":119,"./v_clb/datasource.ts":119,"./v_clb/query":175,"./v_clb/query.ts":175,"./v_clb/query_def":23,"./v_clb/query_def.ts":23,"./vbc/datasource":120,"./vbc/datasource.ts":120,"./vbc/query":176,"./vbc/query.ts":176,"./vbc/query_def":51,"./vbc/query_def.ts":51,"./vpc_net_detect/datasource":121,"./vpc_net_detect/datasource.ts":121,"./vpc_net_detect/query":177,"./vpc_net_detect/query.ts":177,"./vpc_net_detect/query_def":40,"./vpc_net_detect/query_def.ts":40,"./vpngw/datasource":122,"./vpngw/datasource.ts":122,"./vpngw/query":178,"./vpngw/query.ts":178,"./vpngw/query_def":52,"./vpngw/query_def.ts":52,"./vpnx/datasource":123,"./vpnx/datasource.ts":123,"./vpnx/query":179,"./vpnx/query.ts":179,"./vpnx/query_def":53,"./vpnx/query_def.ts":53,"./waf/datasource":124,"./waf/datasource.ts":124,"./waf/query":180,"./waf/query.ts":180,"./waf/query_def":41,"./waf/query_def.ts":41};function i(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=o,e.exports=i,i.id=181},function(e,t,n){"use strict";n.r(t),n.d(t,"TCMonitorDatasource",(function(){return u}));var r=n(0),i=n.n(r),o=n(19),a=n(2),c=n(4),s=n(9),u=function(){function e(e,t,n){var r=this;this.instanceSettings=e,this.backendSrv=t,this.templateSrv=n,i.a.forEach(o.Datasources,(function(e,t){r[t]=new e(r.instanceSettings,r.backendSrv,r.templateSrv)}))}return e.$inject=["instanceSettings","backendSrv","templateSrv"],e.prototype.getNamespaces=function(){var e=this,t=[];return i.a.forEach(o.SERVICES,(function(n){!0===e.instanceSettings.jsonData[n.service]&&t.push(n)})),t},e.prototype.getCascaderNamespaces=function(){var e=this,t=o.SERVICES.filter((function(t){return e.instanceSettings.jsonData[t.service]}));return Object(c.f)(t)},e.prototype.getSelectedServices=function(){var e=this.getNamespaces();return i.a.map(e,(function(e){var t=e.namespace;return Object(a.f)(t)}))},e.prototype.query=function(e){var t=this,n=[],r=this.getSelectedServices();return i.a.forEach(r,(function(r){var o=i.a.cloneDeep(e),a=i.a.filter(o.targets,(function(e){return e.service===r}));if(o.targets=a,o.targets.length>0){var c=t["".concat(i.a.toUpper(r),"Datasource")].query(o);c&&n.push(c)}})),0===n.length?Promise.resolve({data:[],state:s.LoadingState.Done}):Promise.all(n).then((function(e){return{data:i.a.flatten(e),state:s.LoadingState.Done}}))},e.prototype.metricFindQuery=function(e,t){var n=Object(a.h)(e),r=Object(a.f)(n.namespace||"");if(i.a.isEmpty(n)||!n.namespace||!n.action||!r)return Promise.resolve([]);if(this["".concat(i.a.toUpper(r),"Datasource")].metricFindQuery){var o=this["".concat(i.a.toUpper(r),"Datasource")].metricFindQuery(n,i.a.get(t,"variable.regex",void 0));if(o)return o}return Promise.resolve([])},e.prototype.getRegions=function(e){return this["".concat(i.a.toUpper(e),"Datasource")].getRegions?this["".concat(i.a.toUpper(e),"Datasource")].getRegions():[]},e.prototype.getMetrics=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getMetrics(t)},e.prototype.getZones=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getZones?this["".concat(i.a.toUpper(e),"Datasource")].getZones(t):[]},e.prototype.getFilterDropdown=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getFilterDropdown?this["".concat(i.a.toUpper(e),"Datasource")].getFilterDropdown(t):[]},e.prototype.getInstances=function(e,t,n){return this["".concat(i.a.toUpper(e),"Datasource")].getInstances(t,n)},e.prototype.getListeners=function(e,t,n){return this["".concat(i.a.toUpper(e),"Datasource")].getListeners?this["".concat(i.a.toUpper(e),"Datasource")].getListeners(t,n):[]},e.prototype.getVpcIds=function(e,t){if(this["".concat(i.a.toUpper(e),"Datasource")].getVpcIds)return this["".concat(i.a.toUpper(e),"Datasource")].getVpcIds(t)},e.prototype.testDatasource=function(){var e=this,t=[],n=this.getSelectedServices();return i.a.forEach(n,(function(n){t.push(e["".concat(i.a.toUpper(n),"Datasource")].testDatasource())})),0===t.length?Promise.resolve(null):Promise.all(t).then((function(e){var t="success",n="DataSource Connection OK",r=i.a.reduce(e,(function(e,t){return"error"===t.status&&(""===e&&(e+="Oops! Found an error in: "),e+="".concat(t.service,": ").concat(t.message,"; \n")),e}),"");return r&&(t="error",n=r),{status:t,message:n,title:i.a.upperFirst(t)}}))},e.prototype.getServiceFn=function(e,t){var n=this;return function(){for(var r,o=[],a=0;a=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122?n+=t.charAt(r):o<128?n+=i[o]:o<2048?n+=i[192|o>>6]+i[128|63&o]:o<55296||o>=57344?n+=i[224|o>>12]+i[128|o>>6&63]+i[128|63&o]:(r+=1,o=65536+((1023&o)<<10|1023&t.charCodeAt(r)),n+=i[240|o>>18]+i[128|o>>12&63]+i[128|o>>6&63]+i[128|63&o])}return n},isBuffer:function(e){return null!=e&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},merge:function e(t,n,i){if(!n)return t;if("object"!=typeof n){if(Array.isArray(t))t.push(n);else{if("object"!=typeof t)return[t,n];(i.plainObjects||i.allowPrototypes||!r.call(Object.prototype,n))&&(t[n]=!0)}return t}if("object"!=typeof t)return[t].concat(n);var a=t;return Array.isArray(t)&&!Array.isArray(n)&&(a=o(t,i)),Array.isArray(t)&&Array.isArray(n)?(n.forEach((function(n,o){r.call(t,o)?t[o]&&"object"==typeof t[o]?t[o]=e(t[o],n,i):t.push(n):t[o]=n})),t):Object.keys(n).reduce((function(t,o){var a=n[o];return r.call(t,o)?t[o]=e(t[o],a,i):t[o]=a,t}),a)}}},function(e,t,n){"use strict";var r=String.prototype.replace,i=/%20/g;e.exports={default:"RFC3986",formatters:{RFC1738:function(e){return r.call(e,i,"+")},RFC3986:function(e){return e}},RFC1738:"RFC1738",RFC3986:"RFC3986"}},function(e,t,n){"use strict";n.r(t),n.d(t,"queryDDO",(function(){return a}));var r=n(6),i=n.n(r),o=function(){function e(t,n){Object.assign(t,e._config),t.onChecked=function(e,n){!0===t.target.queries[e]&&(t.target.queries[n]=!1),t.onChange()},t.init()}return e.$inject=["$scope","$rootScope"],e}();function a(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n',controller:o,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}t.default=function(e,t){o._config=t,i.a.directive(e,a)}},function(e,t,n){"use strict";n.r(t)},function(e,t,n){"use strict";var r=n(189),i=n(190),o=n(184);e.exports={formats:o,parse:i,stringify:r}},function(e){e.exports=JSON.parse('{"type":"datasource","name":"Tencent Cloud Monitoring","id":"tencentcloud-monitor-datasource","backend":true,"alerting":true,"logs":true,"metrics":true,"annotations":false,"executable":"tencentcloud-monitor-app-backend","queryOptions":{"maxDataPoints":true},"routes":[{"path":"cls-internal","url":"https://cls.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"region-internal","url":"https://region.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"api-internal","url":"https://api.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cmq-internal","url":"https://cmq.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shanghai-internal","url":"https://cmq.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shenzhen-internal","url":"https://cmq.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"emr-internal","url":"https://emr.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shanghai-internal","url":"https://emr.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shenzhen-internal","url":"https://emr.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"scf-internal","url":"https://scf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shanghai-internal","url":"https://scf.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shenzhen-internal","url":"https://scf.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cfs-internal","url":"https://cfs.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shanghai-internal","url":"https://cfs.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shenzhen-internal","url":"https://cfs.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ckafka-internal","url":"https://ckafka.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shanghai-internal","url":"https://ckafka.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shenzhen-internal","url":"https://ckafka.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"clb-internal","url":"https://clb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shanghai-internal","url":"https://clb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shenzhen-internal","url":"https://clb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"mongodb-internal","url":"https://mongodb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shanghai-internal","url":"https://mongodb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shenzhen-internal","url":"https://mongodb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"vpc-internal","url":"https://vpc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shanghai-internal","url":"https://vpc.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shenzhen-internal","url":"https://vpc.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"pcx-internal","url":"https://vpc.api.qcloud.com.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/x-www-form-urlencoded"}]},{"path":"cvm-internal","url":"https://cvm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shanghai-internal","url":"https://cvm.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shenzhen-internal","url":"https://cvm.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"monitor-internal","url":"https://monitor.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shanghai-internal","url":"https://monitor.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shenzhen-internal","url":"https://monitor.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdb-internal","url":"https://cdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shanghai-internal","url":"https://cdb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shenzhen-internal","url":"https://cdb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"postgres-internal","url":"https://postgres.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shanghai-internal","url":"https://postgres.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shenzhen-internal","url":"https://postgres.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdn-internal","url":"https://cdn.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"redis-internal","url":"https://redis.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dcdb-internal","url":"https://dcdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dc-internal","url":"https://dc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cynosdb-internal","url":"https://cynosdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"sqlserver-internal","url":"https://sqlserver.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmeip-internal","url":"https://bmeip.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmvpc-internal","url":"https://bmvpc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmlb-internal","url":"https://bmlb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bm-internal","url":"https://bm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"es-internal","url":"https://es.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cbs-internal","url":"https://cbs.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tcaplusdb-internal","url":"https://tcaplusdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"apigateway-internal","url":"https://apigateway.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tdmq-internal","url":"https://tdmq.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gaap-internal","url":"https://gaap.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecm-internal","url":"https://ecm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gse-internal","url":"https://gse.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"lighthouse-internal","url":"https://lighthouse.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tsf-internal","url":"https://tsf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"rum-internal","url":"https://rum.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tke-internal","url":"https://tke.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecdn-internal","url":"https://ecdn.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"waf-internal","url":"https://waf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"apigateway","url":"https://apigateway.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"api","url":"https://api.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cmq","url":"https://cmq.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shanghai","url":"https://cmq.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shenzhen","url":"https://cmq.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"emr","url":"https://emr.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shanghai","url":"https://emr.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shenzhen","url":"https://emr.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"scf","url":"https://scf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shanghai","url":"https://scf.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shenzhen","url":"https://scf.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cfs","url":"https://cfs.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shanghai","url":"https://cfs.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shenzhen","url":"https://cfs.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ckafka","url":"https://ckafka.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shanghai","url":"https://ckafka.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shenzhen","url":"https://ckafka.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"clb","url":"https://clb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shanghai","url":"https://clb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shenzhen","url":"https://clb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"mongodb","url":"https://mongodb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shanghai","url":"https://mongodb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shenzhen","url":"https://mongodb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"vpc","url":"https://vpc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shanghai","url":"https://vpc.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shenzhen","url":"https://vpc.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"pcx","url":"https://vpc.api.qcloud.com","headers":[{"name":"Content-Type","content":"application/x-www-form-urlencoded"}]},{"path":"cvm","url":"https://cvm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shanghai","url":"https://cvm.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shenzhen","url":"https://cvm.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"monitor","url":"https://monitor.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shanghai","url":"https://monitor.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shenzhen","url":"https://monitor.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdb","url":"https://cdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shanghai","url":"https://cdb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shenzhen","url":"https://cdb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"postgres","url":"https://postgres.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shanghai","url":"https://postgres.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shenzhen","url":"https://postgres.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdn","url":"https://cdn.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"redis","url":"https://redis.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dcdb","url":"https://dcdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dc","url":"https://dc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cynosdb","url":"https://cynosdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"sqlserver","url":"https://sqlserver.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmeip","url":"https://bmeip.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmvpc","url":"https://bmvpc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmlb","url":"https://bmlb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bm","url":"https://bm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"es","url":"https://es.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cbs","url":"https://cbs.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tcaplusdb","url":"https://tcaplusdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tdmq","url":"https://tdmq.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gaap","url":"https://gaap.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecm","url":"https://ecm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gse","url":"https://gse.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cls","url":"https://cls.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cls/shanghai","url":"https://cls.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cls/shenzhen","url":"https://cls.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"region","url":"https://region.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"lighthouse","url":"https://lighthouse.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tsf","url":"https://tsf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"rum","url":"https://rum.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tke","url":"https://tke.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecdn","url":"https://ecdn.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"waf","url":"https://waf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]}],"info":{"author":{"name":"Tencent Cloud"},"logos":{"small":"img/tencent-cloud.svg","large":"img/tencent-cloud.svg"},"description":"Data source for Tencent Cloud monitoring service"}}')},function(e,t,n){"use strict";var r=n(183),i=n(184),o={brackets:function(e){return e+"[]"},indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},a=Date.prototype.toISOString,c={delimiter:"&",encode:!0,encoder:r.encode,encodeValuesOnly:!1,serializeDate:function(e){return a.call(e)},skipNulls:!1,strictNullHandling:!1},s=function e(t,n,i,o,a,s,u,l,p,d,f,m){var y=t;if("function"==typeof u)y=u(n,y);else if(y instanceof Date)y=d(y);else if(null===y){if(o)return s&&!m?s(n,c.encoder):n;y=""}if("string"==typeof y||"number"==typeof y||"boolean"==typeof y||r.isBuffer(y))return s?[f(m?n:s(n,c.encoder))+"="+f(s(y,c.encoder))]:[f(n)+"="+f(String(y))];var h,g=[];if(void 0===y)return g;if(Array.isArray(u))h=u;else{var v=Object.keys(y);h=l?v.sort(l):v}for(var b=0;b0?_+x:""}},function(e,t,n){"use strict";var r=n(183),i=Object.prototype.hasOwnProperty,o={allowDots:!1,allowPrototypes:!1,arrayLimit:20,decoder:r.decode,delimiter:"&",depth:5,parameterLimit:1e3,plainObjects:!1,strictNullHandling:!1},a=function(e,t,n){if(e){var r=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,a=/(\[[^[\]]*])/.exec(r),c=a?r.slice(0,a.index):r,s=[];if(c){if(!n.plainObjects&&i.call(Object.prototype,c)&&!n.allowPrototypes)return;s.push(c)}for(var u=0;null!==(a=o.exec(r))&&u=0;--i){var o,a=e[i];if("[]"===a)o=(o=[]).concat(r);else{o=n.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,s=parseInt(c,10);!isNaN(s)&&a!==c&&String(s)===c&&s>=0&&n.parseArrays&&s<=n.arrayLimit?(o=[])[s]=r:o[c]=r}r=o}return r}(s,t,n)}};e.exports=function(e,t){var n=t?r.assign({},t):{};if(null!==n.decoder&&void 0!==n.decoder&&"function"!=typeof n.decoder)throw new TypeError("Decoder has to be a function.");if(n.ignoreQueryPrefix=!0===n.ignoreQueryPrefix,n.delimiter="string"==typeof n.delimiter||r.isRegExp(n.delimiter)?n.delimiter:o.delimiter,n.depth="number"==typeof n.depth?n.depth:o.depth,n.arrayLimit="number"==typeof n.arrayLimit?n.arrayLimit:o.arrayLimit,n.parseArrays=!1!==n.parseArrays,n.decoder="function"==typeof n.decoder?n.decoder:o.decoder,n.allowDots="boolean"==typeof n.allowDots?n.allowDots:o.allowDots,n.plainObjects="boolean"==typeof n.plainObjects?n.plainObjects:o.plainObjects,n.allowPrototypes="boolean"==typeof n.allowPrototypes?n.allowPrototypes:o.allowPrototypes,n.parameterLimit="number"==typeof n.parameterLimit?n.parameterLimit:o.parameterLimit,n.strictNullHandling="boolean"==typeof n.strictNullHandling?n.strictNullHandling:o.strictNullHandling,""===e||null==e)return n.plainObjects?Object.create(null):{};for(var c="string"==typeof e?function(e,t){for(var n={},r=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,a=t.parameterLimit===1/0?void 0:t.parameterLimit,c=r.split(t.delimiter,a),s=0;s0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(this.configured=!0))}return e.$inject=["$scope","$injector","$q"],e.prototype.moveToFolder=function(e,t){return o(this,void 0,void 0,(function(){var n;return a(this,(function(r){switch(r.label){case 0:return[4,c.get("/api/dashboards/uid/".concat(e))];case 1:return n=r.sent().dashboard,[4,c.post("/api/dashboards/db/",{dashboard:n,folderId:t,message:"",overwrite:!0})];case 2:return r.sent(),[2]}}))}))},e.prototype.reviseDashboard=function(){var e;return o(this,void 0,void 0,(function(){var t,n,r,i,o,s=this;return a(this,(function(a){switch(a.label){case 0:return[4,l()];case 1:return t=a.sent(),n=t[0],r=t[1],[4,c.get("/api/plugins/".concat(null===(e=this.appModel)||void 0===e?void 0:e.id,"/dashboards"))];case 2:return i=a.sent(),o=i.map((function(e){var t=e.importedUrl,i=e.path,o=t.split("/")[2];return o?s.moveToFolder(o,i.endsWith("_en_dashboard.json")?r:n):Promise.resolve()})),[2,Promise.all(o)]}}))}))},e.prototype.postUpdate=function(){var e;return o(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return(null===(e=this.appModel)||void 0===e?void 0:e.enabled)?[4,this.reviseDashboard()]:[2];case 1:return t.sent(),[2,this.$q.resolve(!0)]}}))}))},e.templateUrl="components/config.html",e}()}])})); //# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/dist/components/config.js.map b/dist/components/config.js.map index 2a231f8..edb5f2d 100644 --- a/dist/components/config.js.map +++ b/dist/components/config.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://TencentCloudMonitorGrafanaApp/webpack/bootstrap","webpack://TencentCloudMonitorGrafanaApp/external \"lodash\"","webpack://TencentCloudMonitorGrafanaApp/./locale/zh_CN.ts","webpack://TencentCloudMonitorGrafanaApp/./locale/en_US.ts","webpack://TencentCloudMonitorGrafanaApp/./locale/index.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/sign.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/signV2.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/constants.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/_base/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/utils.ts","webpack://TencentCloudMonitorGrafanaApp/external \"app/core/core_module\"","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/_base/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/indexedDB.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/datasourceStorage.ts","webpack://TencentCloudMonitorGrafanaApp/external \"@grafana/data\"","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ckafka/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/clb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/gse/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcdb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis_mem/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rabbitmq/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rocketmq/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/index.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_block_storage/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/apigateway/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mr/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/v_clb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cynosdb_mysql/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/scf/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/external \"@grafana/runtime\"","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cls/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/sqlserver/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bmIntraLb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_lb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_pcx/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cbs/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn_province/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ceip_summary/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq_topic/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cpm/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecdn/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/postgresql/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpc_net_detect/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/waf/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ces/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dc/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcg/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcx/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_lb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mongodb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/qaap/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tcaplus/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vbc/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpngw/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpnx/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lighthouse/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cfs/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cvm/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/pcx/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tsf/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bwp/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/nat_gateway/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ov_cdn/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/external \"moment\"","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tke/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/apigateway/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bmIntraLb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_lb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_pcx/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bwp/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cbs/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn_province/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ceip_summary/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ces/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cfs/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ckafka/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/clb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cls/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq_topic/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cos/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cpm/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cvm/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cynosdb_mysql/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dc/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcdb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcg/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcx/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecdn/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_block_storage/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_lb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/gse/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lighthouse/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mongodb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mr/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/nat_gateway/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ov_cdn/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/pcx/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/postgresql/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/qaap/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis_mem/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/scf/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/sqlserver/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tcaplus/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rabbitmq/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rocketmq/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tke/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tsf/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/v_clb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vbc/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpc_net_detect/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpngw/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpnx/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/waf/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/apigateway/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bmIntraLb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_lb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_pcx/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bwp/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cbs/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn_province/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ceip_summary/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ces/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cfs/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ckafka/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/clb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cls/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq_topic/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cos/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cpm/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cvm/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cynosdb_mysql/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dc/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcdb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcg/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcx/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecdn/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_block_storage/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_lb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/gse/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lighthouse/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mongodb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mr/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/nat_gateway/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ov_cdn/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/pcx/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/postgresql/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/qaap/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis_mem/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/scf/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/sqlserver/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tcaplus/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rabbitmq/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rocketmq/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tke/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tsf/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/v_clb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vbc/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpc_net_detect/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpngw/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpnx/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/waf/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor sync ^.*$","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/MonitorDatasource.ts","webpack://TencentCloudMonitorGrafanaApp/../node_modules/qs/lib/utils.js","webpack://TencentCloudMonitorGrafanaApp/../node_modules/qs/lib/formats.js","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/_base/query_filter.ts","webpack://TencentCloudMonitorGrafanaApp/../node_modules/qs/lib/index.js","webpack://TencentCloudMonitorGrafanaApp/../node_modules/qs/lib/stringify.js","webpack://TencentCloudMonitorGrafanaApp/../node_modules/qs/lib/parse.js","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor sync ^\\.\\/[a-zA-Z]\\w+\\/(datasource)|(query(_def)","webpack://TencentCloudMonitorGrafanaApp/./components/config.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__0__","language","enable_intranet_API_mode","cloud_database","cloud_load_balancer","virtual_private_cloud","content_delivery_network","message_queue","direct_connect","cloud_physical_machine","elastic_mapReduce","edge_computing_machine","RUM","CLS","CVM","CDB","CMONGO","POSTGRES","REDIS","REDIS_MEM","SQLSERVER","CYNOSDB_MYSQL","TCAPLUS","TDMYSQL","PCX","BWP","NAT_GATEWAY","VPNGW","VPNX","DCG","CEIP_SUMMARY","VPC_NET_DETECT","VBC","LB","LB_PUBLIC","LB_PRIVATE","LOADBALANCE","CDN","CDN_LOG_DATA","OV_CDN","SCF_V2","CFS","COS","CKAFKA","CMQ","CMQTOPIC","TDMQ","TDMQ_ROCKETMQ","TDMQ_RABBITMQ","DCX","DC","CPM","BM_PCX","BM_LB","BM_INTRA_LB","CES","BLOCK_STORAGE","APIGATEWAY","QAAP","ECM","ECM_BLOCK_STORAGE","ECM_LB","GSE","TKE","ECDN","WAF","multi_scene","lite","cloud_monitor","cloud_log_service","real_user_monitoring","region","log_topic","search_statement","time_unit","seconds","search_description","Language","locale_language","Chinese","setLanguage","getLanguage","options","secretId","service","action","host","version","payload","backendSrv","datasourceId","this","JSON","stringify","nowDate","utc","timestamp","unix","date","format","getHeader","getResourceHeader","res","datasourceRequest","url","method","headers","data","Host","Service","Version","Action","Region","Timestamp","Method","Uri","Query","Body","Headers","resp","authorization","token","intranet","grafanaVersion","window","grafanaBootData","settings","buildInfo","Authorization","toString","defaults","path","generateQueryString","getResourceQueryString","assign","secretKey","querystring","queryString","TcDataSourceId","id","FINACE_REGIONS","SERVICES_API_INFO","api","monitor","cls","cvm","cdb","pcx","vpc","mongodb","clb","postgres","cdn","redis","scf","cfs","ckafka","dc","cynosdb","sqlserver","bm","bmeip","bmvpc","bmlb","es","emr","cmq","cbs","tcaplusdb","dcdb","apigateway","tdmq","tdmq_rabbitmq","tdmq_rocketmq","gaap","ecm","gse","lighthouse","tsf","rum","tke","ecdn","waf","FINACE_HOST","GetServiceAPIInfo","indexOf","find","__","getHostAndPath","GetServiceFromNamespace","namespace","ParseMetricQuery","query","result","queries","split","forEach","item","str","trim","val","parse","e","toLower","ReplaceVariable","templateSrv","scopedVars","field","multiple","varname","varFlag","regResult1","String","match","regResult2","parseVariableFormat","replaceVar","replace","error","isArray","GetDimensions","obj","isEmpty","dimensions","Value","undefined","push","Name","ParseQueryResult","response","instances","timeshift","instanceList","cloneDeep","dataPoints","map","dataPoint","instanceAliasValue","length","isInstanceMatch","_InstanceAliasValue","splice","target","MetricName","datapoints","parseDataPoint","timestamps","values","index","instance","isVariable","GetRequestParams","signObj","signParams","pick","headerSigned","GetRequestParamsV2","sign","SliceLength","total","len","num","Math","ceil","Offset","CoreApp","IS_DEVELOPMENT_ENVIRONMENT","instanceSettings","instanceListCache","extraMetricDims","checkKeys","MetricReqConfig","extrasAlias","queryMonitorExtraConfg","CandiateDimensions","jsonData","Namespace","getOtherAlias","alias","extra","extraAlia","getVariable","getAliasValue","Array","join","formatVarDisplay","displayTpl","instanceAlias","a","b","InstanceAliasList","includes","metricFindQuery","regex","display","instancealias","templateQueryIdMap","isObject","isString","getRegions","getVariableInstances","flatMap","insAlias","text","setInstance","getInstance","instanceCache","fetchMetricData","Promise","resolve","dimensionsFormat","dimKeys","ins","dimensionObject","keyTmp","invalidDim","InvalidDimensions","getInvalidDimensions","extraDimValue","dim_KeyInStorage","dim_KeyInTarget","dim_KeyInMap","dim_KeyInIns","extraSourceMap","getExtraStorage","extraStorage","isStringOrNumber","isNumber","otherAlias","getDimensionsVal","Ekey","dimVal","filter","targets","hide","metricName","reduce","prev","cloneTarget","concat","inst","getDefaultInsObj","insInReq","keys","dimResult","Dimensions","StartTime","range","from","subtract","EndTime","to","Period","period","Instances","getMonitorData","all","then","responses","flatten","getInstanceReqConfig","selfIns","metric","rs","valStr","params","serviceInfo","doRequest","RegionSet","RegionName","RegionState","getMetrics","MetricSet","resFilterFn","resultFilter","getInstances","InstanceReqConfig","interceptor","Limit","request","Error","TotalCount","TotalCnt","TotalNumber","param","isValidConfigField","testDatasource","cvmErr","monitorErr","serviceErr","cvmAuthFail","monitorAuthFail","serviceAuthFail","messages","message","compact","uniq","status","title","statusText","code","getFieldsValue","fields","fetchAllFactory","fetcher","_params","omit","Result","firstLists","delta","batchCount","pmList","fill","_","isOffsetPage","acc","cur","lists","list","instanceQueryParamsBaseParse","isFilter","Values","slice","Filters","getNamesapceFromService","serviceName","serviceGroupBy","services","label","groupName","existedGroup","items","isTargetEqual","newTargetString","oldTargetString","newTarget","oldTarget","getTimeShiftInMs","timeShift","parts","exec","amount","parseInt","__WEBPACK_EXTERNAL_MODULE__6__","config","detailConfig","QueryCtrl","newQueryIns","$scope","$rootScope","getDropdown","datasource","getFilterDropdown","directive","template","controller","restrict","scope","showDetail","getDropdownOptions","onChange","store","promisify","type","reject","onsuccess","event","returnMap","msg","onerror","props","initDB","indexedDB","webkitIndexedDB","mozIndexedDB","msIndexedDB","open","onupgradeneeded","db","objectStoreNames","contains","createObjectStore","keyPath","openDB","insertData","storeName","transaction","objectStore","add","oncomplete","addData","isCover","getData","oldData","getObjectStore","newData","requestUpdate","put","seviceName","getAllData","getAll","insKey","cacheWay","setStorage","getStorage","setExtraStorage","EValue","serviceKey","storage","__WEBPACK_EXTERNAL_MODULE__9__","CKAFKAQueryDescriptor","enDescriptor","cnDescriptor","link","min","max","CKAFKA_STATE","metricUnit","topicId","topicName","consumerGroup","partition","Status","InstanceId","SearchWord","TagKey","GetInstanceQueryParams","CKAFKAInstanceAliasList","CKAFKATopicAliasList","CKAFKAInvalidDemensions","Proxy","prop","toLocaleLowerCase","keyInStorage","TopicList","GroupList","PartitionList","TopicId","TopicName","GroupName","PartitionId","queryEditorName","LOADBALANCEFieldsDescriptor","queryEditorConfig","instanceDocUrl","fieldDescriptor","LOADBALANCE_STATE","Port","Protocol","listener","servers","serverPort","LoadBalancerIds","Forward","LoadBalancerName","Domain","LoadBalancerVips","BackendPublicIps","BackendPrivateIps","ProjectId","WithRs","VpcId","SecurityGroup","MasterZone","OrderBy","OrderType","LOADBALANCEListenerAliasList","LOADBALANCEServerAliasList","LOADBALANCEVALIDDIMENSIONS","vip","loadBalancerPort","protocol","lanIp","port","CANDIATEDIMENSIONS","PrivateIpAddresses","ServerPort","TDMQInvalidDemensions","tenantId","tenant","environmentId","TDMQInstanceAliasList","TDMQFilterFieldsDescriptor","CDNPROVINCE_STATE","regionSupported","modifyDimensons","metricItem","metricTmp","EnvironmentId","fleetId","GSEInvalidDemensions","instanceid","fleetid","queuename","GSEInstanceAliasList","FleetId","fleet","queue","GSEFilterFieldsDescriptor","GSE_STATE","v","DCDBInvalidDemensions","nodeid","shardid","ShardId","DCDBInstanceAliasList","NodeId","ShardInstanceId","DCDBFilterFieldsDescriptor","DCDB_STATE","InstanceIds","SearchName","SearchKey","ProjectIds","SubnetId","OrderByType","ExclusterType","ExclusterIds","FilterInstanceType","modifyMetricConf","IsFilterVpc","IsFilterExcluster","RedisMemFieldsDescriptor","REDISMEM_STATE","VpcIds","SubnetIds","InstanceName","UniqVpcIds","UniqSubnetIds","TypeVersion","EngineName","AutoRenew","BillingMode","Type","rnodeid","pnodeid","REDISMEMInstanceAliasList","RedisMemInvalidDemensions","NodeType","node","TDMQRABBITMQInstanceAliasList","TDMQ_STATE","NodeName","group","TDMQROCKETMQInstanceAliasList","instanceIdsChecked","filtersChecked","ClusterIdList","includeVip","NamespaceId","SERVICES","href","hideRegion","Datasources","InitStates","hackModuleName","postgresql","mr","filePath","moduleName","fileName","prefix","toUpperCase","getParams","ECMBLOCKSTORAGEInvalidDemensions","uuid","diskId","ECMBLOCKSTORAGEInstanceAliasList","ECMBLOCKSTORAGEFilterFieldsDescriptor","ECMBLOCKSTORAGE_STATE","DiskId","APIGATEWAYInvalidDemensions","serviceId","environmentName","apiid","apiId","APIGATEWAYInstanceAliasList","environmentList","EnvironmentName","APIGATEWAYFilterFieldsDescriptor","APIGATEWAY_STATE","ServiceId","ServiceName","NotUsagePlanId","Environment","IpVersion","InstanceQueryDescriptor","InvalidDemensions","k","receiver","startsWith","Reflect","has","propKey","Ip","nodeIP","DisplayStrategy","Order","OrderField","Asc","VCLBInvalidDemensions","VCLBInstanceAliasList","VCLBFilterFieldsDescriptor","VCLB_STATE","clbNamespaceMap","public","private","cynosdbMysqlFilterFieldsDescriptor","CYNOSDB_STATE","DbType","CYNOSDBMYSQLInstanceAliasList","CYNOSDBInvalidDemensions","instanceId","SCFQueryDescriptor","SCF_STATE","Description","SCFInstanceAliasList","SCFInvalidDemensions","functionName","SCFDefaultDimensionList","__WEBPACK_EXTERNAL_MODULE__26__","CLSInvalidDemensions","CLSInstanceAliasList","CLSFilterFieldsDescriptor","CLS_STATE","uin","logsetName","logsetId","tagKey","storageType","SQLSERVERInvalidDemensions","resourceId","SQLSERVERInstanceAliasList","SQLSERVERNETFilterFieldsDescriptor","SQLSERVER_STATE","InstanceIdSet","PayMode","VipSet","InstanceNameSet","VersionSet","Zone","BMINTRALBInvalidDemensions","vpcId","BMINTRALBInstanceAliasList","BMINTRALBFilterFieldsDescriptor","BMINTRALB_STATE","BMLBValidMetricsT","isValidMetric","validMetrics","toUpper","CPMInvalidDemensions","BMLBInstanceAliasList","CPMFilterFieldsDescriptor","CPM_STATE","BMPCXInvalidDemensions","peeringConnectionId","BMPCXInstanceAliasList","BMPCXFilterFieldsDescriptor","BMPCX_STATE","VpcPeerConnectionIds","CBSInvalidDemensions","diskname","unInstanceId","CBSInstanceAliasList","CBSFilterFieldsDescriptor","CBS_STATE","DiskIds","ReturnBindAutoSnapshotPolicy","metricObj","dimension","CDNPROVINCEInvalidDemensions","domain","projectid","province","appid","CDNPROVINCEInstanceAliasList","CDNPROVINCEFilterFieldsDescriptor","isp","district","origin","serviceType","projectId","domainType","fullUrlCache","https","originPullProtocol","CEIPInvalidDemensions","eip","CEIPSUMMARYInstanceAliasList","CEIPFilterFieldsDescriptor","CEIP_STATE","subscription","subscriptionId","CPMInstanceAliasList","DeviceClassCode","WanIps","LanIps","Alias","VagueIp","AutoRenewFlag","DeviceType","IsLuckyDevice","ECDNInstanceAliasList","ECDNInvalidDemensions","ECDN_STATE","disable","area","ECDNFilterFieldsDescriptor","_queries","Fuzzy","ECMInvalidDemensions","ECMInstanceAliasList","ECMFilterFieldsDescriptor","ECM_STATE","zone","PostgresFieldsDescriptor","POSTGRESInstanceAliasList","POSTGRES_STATE","PostgreInvalidDemensions","uid","VPCNETInvalidDemensions","netdetectid","netDetectId","VPCNETDETECTInstanceAliasList","VPCNETFilterFieldsDescriptor","VPCNET_STATE","WAFFilterFieldsDescriptor","WAF_STATE","WAFInstanceAliasList","WAFInvalidDemensions","CDBFieldsDescriptor","CDB_STATE","InstanceTypes","Vips","SecurityGroupId","PayTypes","InstanceNames","TaskStatus","EngineVersions","ZoneIds","CdbErrors","OrderDirection","InitFlag","CDBInstanceAliasList","CDBInvalidDemensions","insttype","CESInvalidDemensions","uInstanceId","CESInstanceAliasList","CESFilterFieldsDescriptor","CES_STATE","OrderByKey","IpList","DCFilterFieldsDescriptor","DC_STATE","DirectConnectIds","DCInstanceAliasList","DCInvalidDemensions","directConnectId","directconnectid","DCGInvalidDemensions","directConnectGatewayId","DCGInstanceAliasList","DCGFilterFieldsDescriptor","DCG_STATE","DCXFilterFieldsDescriptor","DCX_STATE","DCXInstanceAliasList","DCXInvalidDemensions","directconnectconnid","directConnectConnId","ECMLBInvalidDemensions","ECMLBInstanceAliasList","ECMLBFilterFieldsDescriptor","MONGODBFieldsDescriptor","MONGODB_STATE","InstanceType","ClusterType","MONGODBInstanceAliasList","MONGODBInvalidDemensions","replica","Replica","Node","QAAPInvalidDemensions","channelId","QAAPInstanceAliasList","QAAPFilterFieldsDescriptor","QAAP_STATE","AccessRegion","RealServerRegion","GroupId","TCAPLUSInvalidDemensions","TCAPLUSInstanceAliasList","TCAPLUSFilterFieldsDescriptor","TCAPLUS_STATE","ClusterId","TableGroupIds","TableName","TableInstanceId","TableIdlType","TableType","ListElementNum","ReservedVolume","ReservedReadQps","ReservedWriteQps","Memo","FileName","FileExtType","FileSize","FileContent","SelectedTables","regonsMap","VBCInvalidDemensions","VBCInstanceAliasList","VBCFilterFieldsDescriptor","VBC_STATE","DRegion","SRegion","state","VPNGWInvalidDemensions","vpnGwId","VPNGWInstanceAliasList","VPNGWFilterFieldsDescriptor","VPNGW_STATE","VPNXInvalidDemensions","vpnConnId","VPNXInstanceAliasList","VPNXFilterFieldsDescriptor","VPNX_STATE","LighthouseFilterFieldsDescriptor","LIGHTHOUSE_STATE","LIGHTHOUSEInstanceAliasList","LighthouseInvalidDemensions","CFSQueryDescriptor","CFS_STATE","FileSystemId","CFSInstanceAliasList","CFSInvalidDemensions","queueId","queueName","QueueName","CVMFilterFieldsDescriptor","CVM_STATE","CVMInstanceAliasList","CVMValidMetricsT","CVMValidMetrics","PCX_STATE","limit","offset","peeringConnectionName","PCXFieldsDescriptor","PCXInstanceAliasList","RedisFieldsDescriptor","REDIS_STATE","REDISInstanceAliasList","RedisInvalidDemensions","redis_uuid","TSFFieldsDescriptor","TSF_STATE","ApplicationType","MicroserviceType","ApplicationResourceTypeList","ApplicationIdList","TSFInstanceAliasList","TSFInvalidDemensions","applicationid","BWPFilterFieldsDescriptor","BWP_STATE","BandwidthPackageIds","BWPInstanceAliasList","BWPInvalidDemensions","bandwidthPackageId","CDNFilterFieldsDescriptor","CDN_STATE","CDNInstanceAliasList","CDNInvalidDemensions","LBFilterDescriptor","LB_STATE","LBInstanceAliasList","LBInvalidDemensions","NATGATEWAYInstanceAliasList","NATGatewayFilterFieldsDescriptor","NATGATEWAY_STATE","NatGatewayIds","NATInvalidDemensions","natId","OVCDNFilterFieldsDescriptor","OVCDN_STATE","OVCDNInstanceAliasList","OVCDNInvalidDemensions","__WEBPACK_EXTERNAL_MODULE__67__","TKE_STATE","conditions","groupBys","ClusterIds","ClusterName","ClusterStatus","TKEFilterFieldsDescriptor","TKEInstanceAliasList","responseField","getEnvironmentNameList","LoadBalancerType","RegionMap","keyBy","RegionInfoSet","rawSet","getZones","ZoneSet","ZoneName","ZoneId","ZoneState","getConsumerList","MapInfoList","TopicAliasList","consumerGroupCache","getConsumerGroups","groupname","topicid","consumerGoup","GroupDetailList","uniqBy","SubscribedInfos","ConsumerGroupName","SubscribedInfo","partitions","sub","Partition","formatTopicVarDisplay","topic","topicAlias","topicalias","par","ListenerAliasList","ServerAliasList","tagret","getListenerList","LoadBalancerId","formatVariableDisplay","aliasList","getServerList","listenerId","ListenerIds","Listeners","Rules","Targets","elem","listenAlias","lisId","listenerid","serverprivateip","serveralias","serversList","chain","dims","Set","fetchAllSubscription","SubscriptionId","cosURL","Buckets","BucketName","bucket","DeviceClassSet","Product","extraActionMap","DescribeDCDBShards","pickKey","DescribeDCDBInstanceNodeInfo","RegionList","act","getDiskList","instanceObj","getQueueNameList","getFleetList","ReplicaAliasList","replicaAlias","ReplicaSetId","replicasetid","times","SecondaryNum","nodeId","fetchAllNodes","NodeFlag","resultT","doRequestV2","totalCount","getVpcId","VpcSet","getVpcIds","MonitorVersion","getInstanceNodeInfo","nodetype","ndoeTypeIndex","getVersions","Versions","FunctionName","RegionInfos","DescribeTopics","DescribeEnvironments","DescribeRabbitMQNodeList","DescribeRocketMQNamespaces","DescribeRocketMQGroups","variableToArray","variable","tke_cluster_instance_id","Key","Operator","MetricNames","Module","Conditions","GroupBys","Data","Points","point","dimensionSort","dimensionString","timeshiftString","getAllMetrics","public_metrics","private_metrics","init","getInstanceId","getServiceFn","getExtraDropdown","sQuery","onRefresh","onChecked","srcField","dstField","bwpQuery","BWPQueryCtrl","cdbQuery","CDBQueryCtrl","cdnQuery","CDNQueryCtrl","ExtraFields","scfQuery","SCFQueryCtrl","onInstanceChange","getExtraFields","CKAFKAQueryCtrl","element","attrs","$watch","newValue","oldValue","onFieldChange","getVariableId","variableData","getServersDropdown","getServerPortDropdown","serverPortList","cacheMap","getTopicName","onExtraFieldChange","datas","CmqTopicQueryCtrl","cvmQuery","CVMQueryCtrl","dropdownTextConfig","actionMaps","lbQuery","LBQueryCtrl","lighthouseQuery","LighthouseQueryCtrl","replicaId","mongodbQuery","MongoDBQueryCtrl","some","dataT","mrQuery","MrQueryCtrl","natGatewayQuery","NatGatewayQueryCtrl","ovCdnQuery","OVCDNQueryCtrl","pcxQuery","PCXQueryCtrl","redisQuery","RedisQueryCtrl","clearExtrasAlias","redisMemQuery","RedisMemQueryCtrl","evId","tdmqRocketmqQuery","TdmqRocketmqQueryCtrl","addCondition","deleteCondition","targetCondition","getOperator","tsfQuery","TSFQueryCtrl","VBCQueryCtrl","webpackContext","req","webpackContextResolve","_class","getNamespaces","namespaces","getCascaderNamespaces","validServices","getSelectedServices","promises","optionsTemp","promiseTemp","Done","results","getListeners","errorMsg","upperFirst","fnName","argu","hexTable","array","arrayToObject","source","plainObjects","refs","j","pop","compacted","compactQueue","decode","decodeURIComponent","encode","string","out","charCodeAt","charAt","isBuffer","constructor","isRegExp","merge","allowPrototypes","mergeTarget","percentTwenties","formatters","RFC1738","RFC3986","SPQueryCtrl","_config","queryDDO","formats","utils","arrayPrefixGenerators","brackets","indices","repeat","toISO","Date","toISOString","delimiter","encoder","encodeValuesOnly","serializeDate","skipNulls","strictNullHandling","generateArrayPrefix","sort","allowDots","formatter","objKeys","opts","TypeError","arrayFormat","joined","addQueryPrefix","arrayLimit","decoder","depth","parameterLimit","parseKeys","givenKey","child","segment","parent","leaf","root","cleanRoot","isNaN","parseArrays","parseObject","ignoreQueryPrefix","tempObj","cleanStr","Infinity","part","bracketEqualsPos","pos","parseValues","newObj","tcFolder","folderId","tcFolder_EN","getFolderId","folders","folderEnId","post","folder","folderEn","oldPost","pluginId","location","pathname","endsWith","backendInterceptor","$injector","$q","appEditCtrl","setPostUpdateHook","postUpdate","appModel","configured","enabled","datasources","ds","moveToFolder","dashbaordUid","dashboard","overwrite","reviseDashboard","pmlist","importedUrl","templateUrl"],"mappings":"6JACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,IAIjBlC,EAAoBA,EAAoBmC,EAAI,K,gBClFrDhC,EAAOD,QAAUkC,G,6BCAjB,IAsHe,EAtHD,CACZC,SAAU,KACVC,yBAA0B,YAC1BC,eAAgB,OAChBC,oBAAqB,OACrBC,sBAAuB,OACvBC,yBAA0B,SAC1BC,cAAe,OACfC,eAAgB,OAChBC,uBAAwB,UACxBC,kBAAmB,eACnBC,uBAAwB,SAExBC,IAAK,cACLC,IAAK,YACLC,IAAK,YACLC,IAAK,kBACLC,OAAQ,uBACRC,SAAU,4BACVC,MAAO,oBACPC,UAAW,+BACXC,UAAW,6BACXC,cAAe,oCACfC,QAAS,0BACTC,QAAS,8BACTC,IAAK,iBACLC,IAAK,gBACLC,YAAa,2BACbC,MAAO,qBACPC,KAAM,oBACNC,IAAK,iBACLC,aAAc,oCACdC,eAAgB,4BAChBC,IAAK,gBACLC,GAAI,kBACJC,UAAW,wBACXC,WAAY,6BACZC,YAAa,8BACbC,IAAK,YACLC,aAAc,qBACdC,OAAQ,eACRC,OAAQ,WACRC,IAAK,YACLC,IAAK,YACLC,OAAQ,sBACRC,IAAK,mBACLC,SAAU,wBACVC,KAAM,sBACNC,cAAe,4BACfC,cAAe,4BACfC,IAAK,iBACLC,GAAI,gBACJC,IAAK,eACLC,OAAQ,iBACRC,MAAO,kBACPC,YAAa,wBACbC,IAAK,uBACLC,cAAe,qBACfC,WAAY,qBACZC,KAAM,eACNC,IAAK,iBACLC,kBAAmB,8BACnBC,OAAQ,mBACRC,IAAK,eACLC,IAAK,YACLC,KAAM,eACNC,IAAK,iBAELC,YAAa,OACbC,KAAM,MACNC,cAAe,MACfC,kBAAmB,OACnBC,qBAAsB,SACtBC,OAAQ,KACRC,UAAW,OACXC,iBAAkB,OAClBC,UAAW,YACXC,QAAS,UACTC,mBAAoB,6BAEpB,eAAgB,WAChB,kBAAmB,aACnB,oBAAqB,eACrB,cAAe,WACf,cAAe,WACf,cAAe,WACf,kBAAmB,aACnB,cAAe,WACf,iBAAkB,WAClB,aAAc,WACd,eAAgB,WAChB,cAAe,WACf,aAAc,WACd,aAAc,WACd,iBAAkB,aAClB,qBAAsB,YACtB,cAAe,WACf,iBAAkB,WAClB,kBAAmB,WACnB,aAAc,WACd,eAAgB,WAChB,aAAc,WACd,iBAAkB,WAClB,YAAa,cACb,cAAe,cACf,WAAY,WACZ,WAAY,WACZ,eAAgB,YAChB,aAAc,WACd,aAAc,YACd,mBAAoB,WACpB,eAAgB,aAChB,YAAa,YACb,YAAa,WACb,aAAc,aACd,cAAe,YACf,aAAc,aCGD,EAvHD,CACZ3E,SAAU,WACVC,yBAA0B,2BAC1BC,eAAgB,iBAChBC,oBAAqB,sBACrBC,sBAAuB,wBACvBC,yBAA0B,2BAC1BC,cAAe,gBACfC,eAAgB,iBAChBC,uBAAwB,yBACxBC,kBAAmB,oBACnBC,uBAAwB,yBAExBC,IAAK,4BACLC,IAAK,yBACLC,IAAK,6BACLC,IAAK,2BACLC,OAAQ,gCACRC,SAAU,qCACVC,MAAO,6BACPC,UAAW,2DACXC,UAAW,sCACXC,cAAe,6CACfC,QAAS,mCACTC,QAAS,2BACTC,IAAK,0BACLC,IAAK,wBACLC,YAAa,2BACbC,MAAO,qBACPC,KAAM,mBACNC,IAAK,8BACLC,aAAc,4BACdC,eAAgB,oCAChBC,IAAK,6BACLC,GAAI,iBACJC,UAAW,gCACXC,WAAY,mDACZC,YAAa,oDACbC,IAAK,+BACLC,aAAc,yBACdC,OAAQ,0BACRC,OAAQ,iCACRC,IAAK,0BACLC,IAAK,4BACLC,OAAQ,+BACRC,IAAK,uCACLC,SAAU,iDACVC,KAAM,qDACNC,cAAe,2DACfC,cAAe,2DACfC,IAAK,2CACLC,GAAI,oCACJC,IAAK,8BACLC,OAAQ,wDACRC,MAAO,uDACPC,YAAa,8DACbC,IAAK,6BACLC,cAAe,qCACfC,WAAY,0BACZC,KAAM,iDACNC,IAAK,6DACLC,kBAAmB,8DACnBC,OAAQ,iDACRC,IAAK,mCACLC,IAAK,iCACLC,KAAM,4CACNC,IAAK,gCAELC,YAAa,cACbC,KAAM,OACNC,cAAe,gBACfC,kBAAmB,oBACnBC,qBAAsB,uBACtBC,OAAQ,SACRC,UAAW,YACXC,iBAAkB,mBAClBC,UAAW,YACXC,QAAS,UACTC,mBACE,0GAEF,eAAgB,yBAChB,kBAAmB,gCACnB,oBAAqB,8BACrB,cAAe,wBACf,cAAe,wBACf,cAAe,uBACf,kBAAmB,+BACnB,cAAe,oBACf,iBAAkB,uBAClB,aAAc,sBACd,eAAgB,qBAChB,cAAe,oBACf,aAAc,8BACd,aAAc,8BACd,iBAAkB,sCAClB,qBAAsB,mCACtB,cAAe,uBACf,iBAAkB,0BAClB,kBAAmB,2BACnB,aAAc,2BACd,eAAgB,6BAChB,aAAc,0BACd,iBAAkB,4BAClB,YAAa,qDACb,cAAe,wDACf,WAAY,wBACZ,WAAY,wBACZ,eAAgB,4BAChB,aAAc,0BACd,aAAc,0BACd,mBAAoB,0BACpB,eAAgB,oBAChB,YAAa,8BACb,YAAa,qBACb,aAAc,oBACd,cAAe,2BACf,aAAc,0BCrHhB,wIAGA,IAEYC,EAFRC,EAAkB,SAEtB,SAAYD,GACV,kBACA,kBAFF,CAAYA,MAAQ,KAKb,IAAM,EAAI,SAACtF,GAChB,OAAIuF,IAAoBD,EAASE,QACxB,EAAMxF,GAER,EAAMA,IAGFyF,EAAc,SAAC/E,GAC1B6E,EAAkB7E,GAGPgF,EAAc,WAAM,OAAAH,I,0nDCdjC,WAyBE,WAAYI,GACF,IAAAC,EAA6FD,EAArF,SAAEE,EAAmFF,EAA5E,QAAEG,EAA0EH,EAApE,OAAEI,EAAkEJ,EAA9D,KAAEK,EAA4DL,EAArD,QAAE,EAAmDA,EAAvC,QAAZM,OAAO,IAAG,KAAE,EAAEjB,EAAqCW,EAA/B,OAAEO,EAA6BP,EAAnB,WAAEQ,EAAiBR,EAAL,aAChGS,KAAKR,SAAWA,EAEhBQ,KAAKP,QAAUA,EACfO,KAAKN,OAASA,EACdM,KAAKL,KAAOA,EACZK,KAAKJ,QAAUA,EACfI,KAAKH,QAA6B,iBAAZA,EAAuBA,EAAUI,KAAKC,UAAUL,GACtEG,KAAKpB,OAASA,EACd,IAAMuB,EAAU,MAASC,MACzBJ,KAAKK,UAAYF,EAAQG,OACzBN,KAAKO,KAAOJ,EAAQK,OAAO,cAC3BR,KAAKF,WAAaA,EAClBE,KAAKD,aAAeA,EAoDxB,OAjDQ,YAAAU,UAAN,W,mEACE,SAAOT,KAAKU,4BAGR,YAAAA,kBAAN,W,oHACMC,EAAsE,G,iBAE3D,O,sBAAA,GAAMX,KAAKF,WAAWc,kBAAkB,CACnDC,IAAK,2BAAoBb,KAAKD,aAAY,sBAC1Ce,OAAQ,OACRC,QAAS,CAAE,eAAgB,oBAC3BC,KAAM,CACJC,KAAMjB,KAAKL,KACXuB,QAASlB,KAAKP,QACd0B,QAASnB,KAAKJ,QACdwB,OAAQpB,KAAKN,OACb2B,OAAQrB,KAAKpB,OACb0C,UAAWtB,KAAKK,UAChBkB,OAjEgB,OAkEhBC,IAjEW,IAkEXC,MAjEmB,GAkEnBC,KAAM1B,KAAKH,QACX8B,QAAS,CACP,eAnEQ,mBAoERhC,KAAMK,KAAKL,U,cAjBXiC,EAAO,SAqBbjB,EAAMiB,EAAKZ,K,0CAmBb,OAjBQa,EAAmClB,EAAtB,cAAEmB,EAAoBnB,EAAf,MAAEoB,EAAapB,EAAL,SAChCqB,GAAqE,QAApD,EAAyC,QAAzC,EAA+B,QAA/B,EAACC,OAAeC,uBAAe,eAAEC,gBAAQ,eAAEC,iBAAS,eAAExC,UAAW,QAgBxF,GAfgB,EAAH,KACXyC,cAAeR,EACf,eA9Ec,mBA+Ed,cAAe7B,KAAKN,OACpB,iBAAkBM,KAAKK,UAAUiC,WACjC,eAAgBtC,KAAKJ,QACrB,qBAAsB,aAAMoC,EAAc,kBAAU,UAChDhC,KAAKpB,QAAU,CACjB,cAAeoB,KAAKpB,SAElBkD,GAAS,CACX,aAAcA,IACd,CACFC,SAAUA,aAIhB,EA3FA,G,+0CCGA,WAOE,WAAYQ,GAAZ,gBAAY,IAAAA,MAAA,IANZ,KAAAA,SAAgB,CACdC,KAAM,gBACN1B,OAAQ,QAWV,KAAA2B,oBAAsB,gD,2BACpB,SAAOzC,KAAK0C,iCAPZ1C,KAAKuC,SAAWxJ,OAAO4J,OAAO3C,KAAKuC,SAAUA,GAC7CvC,KAAKuC,SAASK,UAAY,GAC1B5C,KAAKF,WAAayC,EAASzC,WAC3BE,KAAKD,aAAewC,EAASxC,aAgCjC,OAzBQ,YAAA2C,uBAAN,W,8GACM/B,EAA+E,G,iBAIpE,O,sBAFLK,EAAShB,KAAKuC,SAAV,KACN1C,EAA0B,iBAATmB,EAAoBA,EAAOf,KAAKC,UAAUc,GACpD,GAAMhB,KAAKF,WAAWc,kBAAkB,CACnDC,IAAK,2BAAoBb,KAAKD,aAAY,sBAC1Ce,OAAQ,OACRC,QAAS,CAAE,eAAgB,oBAC3BC,KAAM,CACJC,KAAMjB,KAAKuC,SAAS5C,KACpByB,OAAQpB,KAAKuC,SAAS7C,OACtByB,QAASnB,KAAKuC,SAAS3C,QACvByB,OAAQrB,KAAKuC,SAAS3D,OACtB2C,OAAQvB,KAAKuC,SAASzB,OACtBU,IAAKxB,KAAKuC,SAASC,KACnBf,MAAO,GACPC,KAAM7B,M,cAZJ+B,EAAO,SAebjB,EAAMiB,EAAKZ,K,0CAGb,OADQwB,EAAsC7B,EAAlC,KAAEkC,EAAgClC,EAArB,YAAEhB,EAAmBgB,EAAf,KAAEoB,EAAapB,EAAL,SACzC,GAAO,CAAEmC,YAAaD,EAAaL,KAAMA,EAAM7C,KAAMA,EAAMoC,SAAUA,YAEzE,EA3CA,G,8zECDagB,EAAiB,EAAYC,GAGpCC,EAAiB,CAAC,kBAAmB,mBACrCC,EAAoB,CACxBC,IAAK,CACH1D,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAGRyD,QAAS,CACP3D,QAAS,UACTG,QAAS,aACT4C,KAAM,WACN7C,KAAM,+BAGR0D,IAAK,CACH5D,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAGR2D,IAAK,CACH7D,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAGR4D,IAAK,CACH9D,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAGR6D,IAAK,CACH/D,QAAS,MACTG,QAAS,GACT4C,KAAM,OACN7C,KAAM,sBAGR8D,IAAK,CACHhE,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAGR+D,QAAS,CACPjE,QAAS,UACTG,QAAS,aACT4C,KAAM,WACN7C,KAAM,+BAGRgE,IAAK,CACHlE,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAGRiE,SAAU,CACRnE,QAAS,WACTG,QAAS,aACT4C,KAAM,YACN7C,KAAM,gCAGRkE,IAAK,CACHpE,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAGRmE,MAAO,CACLrE,QAAS,QACTG,QAAS,aACT4C,KAAM,SACN7C,KAAM,6BAERoE,IAAK,CACHtE,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAERqE,IAAK,CACHvE,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAERsE,OAAQ,CACNxE,QAAS,SACTG,QAAS,aACT4C,KAAM,UACN7C,KAAM,8BAGRuE,GAAI,CACFzE,QAAS,KACTG,QAAS,aACT4C,KAAM,MACN7C,KAAM,0BAGRwE,QAAS,CACP1E,QAAS,UACTG,QAAS,aACT4C,KAAM,WACN7C,KAAM,+BAGRyE,UAAW,CACT3E,QAAS,YACTG,QAAS,aACT4C,KAAM,aACN7C,KAAM,iCAGR0E,GAAI,CACF5E,QAAS,KACTG,QAAS,aACT4C,KAAM,MACN7C,KAAM,0BAER2E,MAAO,CACL7E,QAAS,QACTG,QAAS,aACT4C,KAAM,SACN7C,KAAM,6BAER4E,MAAO,CACL9E,QAAS,QACTG,QAAS,aACT4C,KAAM,SACN7C,KAAM,6BAER6E,KAAM,CACJ/E,QAAS,OACTG,QAAS,aACT4C,KAAM,QACN7C,KAAM,4BAGR8E,GAAI,CACFhF,QAAS,KACTG,QAAS,aACT4C,KAAM,MACN7C,KAAM,0BAGR+E,IAAK,CACHjF,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAGRgF,IAAK,CACHlF,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAERiF,IAAK,CACHnF,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAGRkF,UAAW,CACTpF,QAAS,YACTG,QAAS,aACT4C,KAAM,aACN7C,KAAM,iCAGRmF,KAAM,CACJrF,QAAS,OACTG,QAAS,aACT4C,KAAM,QACN7C,KAAM,4BAGRoF,WAAY,CACVtF,QAAS,aACTG,QAAS,aACT4C,KAAM,cACN7C,KAAM,kCAERqF,KAAM,CACJvF,QAAS,OACTG,QAAS,aACT4C,KAAM,QACN7C,KAAM,4BAERsF,cAAe,CACbxF,QAAS,OACTG,QAAS,aACT4C,KAAM,QACN7C,KAAM,4BAERuF,cAAe,CACbzF,QAAS,OACTG,QAAS,aACT4C,KAAM,QACN7C,KAAM,4BAERwF,KAAM,CACJ1F,QAAS,OACTG,QAAS,aACT4C,KAAM,QACN7C,KAAM,4BAERyF,IAAK,CACH3F,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAER0F,IAAK,CACH5F,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAER2F,WAAY,CACV7F,QAAS,aACTG,QAAS,aACT4C,KAAM,cACN7C,KAAM,kCAER4F,IAAK,CACH9F,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAER6F,IAAK,CACH/F,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAER8F,IAAK,CACHhG,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAER+F,KAAM,CACJjG,QAAS,OACTG,QAAS,aACT4C,KAAM,QACN7C,KAAM,4BAERgG,IAAK,CACHlG,QAAS,MACTG,QAAS,aACT4C,KAAM,OACN7C,KAAM,2BAERf,OAAQ,CACNa,QAAS,SACTG,QAAS,aACT4C,KAAM,UACN7C,KAAM,+BAkBJiG,EAAc,CAClB7B,IAAK,CACH,kBAAmB,CACjBvB,KAAM,oBACN7C,KAAM,2CAER,kBAAmB,CACjB6C,KAAM,oBACN7C,KAAM,4CAGVqE,IAAK,CACH,kBAAmB,CACjBxB,KAAM,oBACN7C,KAAM,2CAER,kBAAmB,CACjB6C,KAAM,oBACN7C,KAAM,4CAGVsE,OAAQ,CACN,kBAAmB,CACjBzB,KAAM,uBACN7C,KAAM,8CAER,kBAAmB,CACjB6C,KAAM,uBACN7C,KAAM,+CAGVgE,IAAK,CACH,kBAAmB,CACjBnB,KAAM,oBACN7C,KAAM,2CAER,kBAAmB,CACjB6C,KAAM,oBACN7C,KAAM,4CAGV+D,QAAS,CACP,kBAAmB,CACjBlB,KAAM,wBACN7C,KAAM,+CAER,kBAAmB,CACjB6C,KAAM,wBACN7C,KAAM,gDAGV8D,IAAK,CACH,kBAAmB,CACjBjB,KAAM,oBACN7C,KAAM,2CAER,kBAAmB,CACjB6C,KAAM,oBACN7C,KAAM,4CAGV2D,IAAK,CACH,kBAAmB,CACjBd,KAAM,oBACN7C,KAAM,2CAER,kBAAmB,CACjB6C,KAAM,oBACN7C,KAAM,4CAGV4D,IAAK,CACH,kBAAmB,CACjBf,KAAM,oBACN7C,KAAM,2CAER,kBAAmB,CACjB6C,KAAM,oBACN7C,KAAM,4CAGVyD,QAAS,CACP,kBAAmB,CACjBZ,KAAM,wBACN7C,KAAM,+CAER,kBAAmB,CACjB6C,KAAM,wBACN7C,KAAM,gDAGViE,SAAU,CACR,kBAAmB,CACjBpB,KAAM,yBACN7C,KAAM,gDAER,kBAAmB,CACjB6C,KAAM,yBACN7C,KAAM,iDAGV+E,IAAK,CACH,kBAAmB,CACjBlC,KAAM,oBACN7C,KAAM,2CAER,kBAAmB,CACjB6C,KAAM,oBACN7C,KAAM,4CAGVgF,IAAK,CACH,kBAAmB,CACjBnC,KAAM,oBACN7C,KAAM,2CAER,kBAAmB,CACjB6C,KAAM,oBACN7C,KAAM,4CAGV0D,IAAK,CACH,kBAAmB,CACjBb,KAAM,oBACN7C,KAAM,2CAER,kBAAmB,CACjB6C,KAAM,oBACN7C,KAAM,6CAMN,SAAUkG,EAAkBjH,EAAQa,GACxC,cAAayD,EAAkBzD,IAAY,IAI7C,SAAwBb,EAAQa,GAC9B,IAA2C,IAAvC,IAAEqG,QAAQ7C,EAAgBrE,GAC5B,MAAO,GAET,OACE,IAAEmH,KACA,IAAEA,KAAKH,GAAa,SAACI,EAAIpM,GAAQ,OAAAA,IAAA,MACjC,SAACoM,EAAIpM,GAAQ,OAAAA,IAAA,MACV,GAZ4CqM,CAAerH,EAAQa,IAmBtE,SAAUyG,EAAwBC,GACtC,OAAO,IAAEjN,IACP,IAAE6M,KAAK,YAAU,SAACtG,GAAY,OAAAA,EAAQ0G,YAAR,KAC9B,WAWE,SAAUC,EAAiBC,GAC/B,QAD+B,IAAAA,MAAA,KAC1BA,EACH,MAAO,GAET,IAAMC,EAAS,GACTC,EAAU,IAAEC,MAAMH,EAAO,KAa/B,OAZA,IAAEI,QAAQF,GAAS,SAACG,GAClB,IAAMC,EAAM,IAAEH,MAAME,EAAM,KAC1B,GAAI,IAAEE,KAAK,IAAE1N,IAAIyN,EAAK,IAAK,KAAM,CAC/B,IAAIE,EAAM,IAAED,KAAK,IAAE1N,IAAIyN,EAAK,IAAK,KACjC,IACEE,EAAM5G,KAAK6G,MAAMD,GACjB,MAAOE,IAGTT,EAAO,IAAEU,QAAQ,IAAEJ,KAAK,IAAE1N,IAAIyN,EAAK,IAAK,OAASE,MAG9CP,EA+CH,SAAUW,EAAgBC,EAAaC,EAAYC,EAAOC,QAAA,IAAAA,OAAA,GACxD,MAnBR,SAA6BC,GAG3B,IAAIC,GAAU,EACRC,GAHNF,EAAUG,OAAOH,GAAW,KAGDI,MAAM,gBAC7BF,IACFD,GAAU,EACVD,EAAU,YAAOE,EAAW,GAAE,WAGhC,IAAMG,EAAaL,EAAQI,MAAM,0BAKjC,OAJIC,IACFJ,GAAU,EACVD,EAAU,YAAOK,EAAW,GAAE,WAEzB,CAAEL,QAAO,EAAEC,QAAO,GAIIK,CAAoBR,GAAzCE,EAAO,UAAEC,EAAO,UACpBM,EAAaX,EAAYY,QAAQR,EAASH,GAC9C,GAAII,EACF,IACEM,EAAa5H,KAAK6G,MAAMe,GACxB,MAAOE,IAKX,OAHKV,GAAY,IAAEW,QAAQH,KACzBA,EAAa,IAAE3O,IAAI2O,EAAY,IAAK,KAE/BA,EAIH,SAAUI,EAAcC,GAC5B,GAAI,IAAEC,QAAQD,GACZ,MAAO,GAET,IAAME,EAAoB,GAM1B,OALA,IAAE3B,QAAQyB,GAAK,SAACxB,GACK,OAAfA,EAAK2B,YAAiCC,IAAf5B,EAAK2B,OAAsC,KAAf3B,EAAK2B,OAC1DD,EAAWG,KAAK,CAAEC,KAAM9B,EAAK8B,KAAMH,MAA6B,iBAAf3B,EAAK2B,MAAqB3B,EAAK2B,MAAQ,UAAG3B,EAAK2B,YAG7FD,EAIH,SAAUK,EAAiBC,EAAUC,EAAuBC,QAAvB,IAAAD,MAAA,SAAuB,IAAAC,MAAA,GAChE,IAAMC,EAAe,IAAEC,UAAUH,GAE3BI,EAAa,IAAE7P,IAAIwP,EAAU,aAAc,IACjD,OAAO,IAAEM,IAAID,GAAY,SAACE,GAExB,IADA,IAAIC,EAAqB,IAAEhQ,IAAI+P,EAAW,uBACjC5Q,EAAI,EAAGA,EAAIwQ,EAAaM,OAAQ9Q,IACvC,GAAI+Q,EAAgBP,EAAaxQ,GAAI,IAAEa,IAAI+P,EAAW,aAAc,KAAM,CACxEC,EAAqBL,EAAaxQ,GAAGgR,oBACrCR,EAAaS,OAAOjR,EAAG,GACvB,MAGJ,MAAO,CACLkR,OAAQ,UAAGb,EAASc,WAAU,cAAMN,GACpCO,WAAYC,EAAeT,EAAWL,OAM5C,SAASc,EAAeT,EAAWL,QAAA,IAAAA,MAAA,GACjC,IAAMe,EAAa,IAAEzQ,IAAI+P,EAAW,aAAc,IAC5CW,EAAS,IAAE1Q,IAAI+P,EAAW,SAAU,IAK1C,OAJeU,EAAWX,KAAI,SAAC3I,EAAWwJ,GACxC,MAAO,CAACD,EAAOC,GAAoB,IAAZxJ,EAAmBuI,MAO9C,SAASQ,EAAgBU,EAAU1B,GAGjC,IAFA,IAAIV,GAAQ,EAEHrP,EAAI,EAAGA,EAAI+P,EAAWe,OAAQ9Q,IACrC,GAAI,IAAEa,IAAI4Q,EAAU1B,EAAW/P,GAAGmQ,KAAM,IAAIlG,aAAe8F,EAAW/P,GAAGgQ,MAAM/F,WAAY,CACzFoF,GAAQ,EACR,MAGJ,OAAOA,EAQH,SAAUqC,EAAWzQ,GACzB,SAAIA,IAAUA,EAAMoO,MAAM,kBAAmBpO,EAAMoO,MAAM,2BAcrD,SAAgBsC,EAAiBzK,EAASE,EAASwK,EAAmBzK,EAAUO,EAAcD,G,YAA3C,IAAAmK,MAAA,I,+FAUjB,OAThCC,EAAa,EAAH,KACd1K,SAAQ,EACRK,QAASN,EAAQyB,MAAQ,IACtBiJ,GACC,IAAEE,KAAKtE,EAAkBoE,EAAQrL,QAAU,GAAIa,GAAU,CAAC,UAAW,OAAQ,aAAe,IAAG,CACnGK,WAAU,EACVC,aAAY,IAGwB,GADzB,IAAI,EAAKmK,GAC2BzJ,a,OAQjD,OARM,EAAgC,SAA9BsB,EAAQ,WAAKqI,EAAY,IAA3B,cAGN7K,EAAQwB,QAAUhI,OAAO4J,OAAOpD,EAAQwB,SAAW,GAAE,KAAOqJ,GAAgB,CAAE,gBAAiB,gBAC/F7K,EAAQuB,OAAS,OACbiB,IACFxC,EAAQsB,KAAO,aAEjB,GAAOtB,UAWH,SAAgB8K,EACpB9K,EACAE,EACAwK,EACAzK,EACAO,EACAD,G,YALA,IAAAP,MAAA,SAEA,IAAA0K,MAAA,I,qGAiB8C,OAZxCjJ,EAAOzB,EAAQyB,MAAQ,GACvBkJ,EAAa,EAAH,KACd1K,SAAQ,EACRwB,KAAI,GACDiJ,GACC,IAAEE,KAAKtE,EAAkBoE,EAAQrL,QAAU,GAAIa,GAAU,CAAC,OAAQ,aAAe,IAAG,CACxFK,WAAU,EACVC,aAAY,IAEdR,EAAQuB,OAAS,OACXwJ,EAAO,IAAI,EAAOJ,GACxB3K,EAAQwB,QAAUhI,OAAO4J,OAAOpD,EAAQwB,SAAW,GAAI,CAAE,eAAgB,sCAC3B,GAAMuJ,EAAK7H,uB,OAWzD,OAXM,EAAwC,SAAtCK,EAAW,cAAEN,EAAI,OAAE7C,EAAI,OAAU,WACzCJ,EAAQyB,KAAO,IAAGd,UAAS,SACtBX,EAAQyB,MACR8B,GACCnD,GAAQ,CAAEA,KAAMA,KAMtBJ,EAAQsB,KAAO2B,EACf,GAAOjD,UAGH,SAAUgL,EAAYC,EAAWC,QAAX,IAAAD,MAAA,QAAW,IAAAC,MAAA,GAGrC,IAFA,IAAMnE,EAAgB,GAChBoE,EAAMC,KAAKC,KAAKJ,EAAQC,GACrBpS,EAAI,EAAGA,EAAIqS,EAAKrS,IACvBiO,EAAOiC,KAAK,CAAEsC,OAAQJ,EAAMpS,IAE9B,OAAOiO,EAaF,IAKKwE,EALCC,GAA6B,GAK1C,SAAYD,GACV,iCACA,qCACA,wBACA,oBACA,oBACA,6BACA,6BAPF,CAAYA,MAAO,M,k3DChrBnB,aAwCE,WAAYE,EAAkBlL,EAAYoH,GArC1C,KAAA+D,kBAA2B,GAC3B,KAAAC,gBAA4B,GAM5B,KAAAC,UAAsB,GACtB,KAAAC,gBAEI,GACJ,KAAAC,YAAyB,GAQzB,KAAAC,uBAA0D,GAC1D,KAAAC,mBAA8C,GAkB5CvL,KAAKgL,iBAAmBA,EACxBhL,KAAKF,WAAaA,EAClBE,KAAKkH,YAAcA,EACnBlH,KAAKa,IAAMmK,EAAiBnK,IAC5Bb,KAAKR,UAAYwL,EAAiBQ,UAAY,IAAIhM,UAAY,GAC9D,YAAYwL,EAAiBQ,SAASlR,UAAY,IAAS8E,SAgiB/D,OA9kBA,0DAiDE,sBAAI,wBAAS,C,IAAb,WAEE,OAAOY,KAAKyL,WAAa,YAAwBzL,KAAKP,U,gCAIxD,YAAAiM,cAAA,SAAc5B,EAAeP,GAA7B,I,EAAA,OACMjD,EAAS,GACPqF,EAAQ7B,EAAST,oBAOvB,OANgB,QAAhB,EAAArJ,KAAKqL,mBAAW,SAAE5E,SAAQ,SAACmF,GACzB,IAAMC,EAAY,EAAKC,YAAYvC,EAAOqC,IACtCC,IAA2C,IAA9BF,EAAM7F,QAAQ+F,KAC7BvF,GAAU,aAAMuF,OAGbvF,GAIT,YAAAyF,cAAA,SAAcjC,EAA+B6B,GAC3C,IAAMrF,EAASwD,EAAS6B,GACxB,OAAOK,MAAMhE,QAAQ1B,GAAUA,EAAO2F,OAAS3F,GAGjD,YAAA4F,iBAAA,SAAiBpC,EAA+BqC,EAAgCC,GAAhF,WAEE,OAAID,EACKA,EAAWrE,QAAQ,gBAAgB,SAACuE,EAAGC,GAC5C,OAAKA,GAAM,EAAKC,kBAAkBC,SAASF,GAGpC,EAAKP,cAAcjC,EAAUwC,GAF3B,MAKNtM,KAAK+L,cAAcjC,EAAUsC,IAKhC,YAAAK,gBAAN,SAAsBpG,EAAoBqG,G,mIAGxC,OAFQhN,EAA6C2G,EAAvC,OAAEF,EAAqCE,EAA5B,UAAEsG,EAA0BtG,EAAnB,QAAE,EAAiBA,EAAL,QAAZxG,OAAO,IAAG,KAAE,EAC1CjB,EAA6DyH,EAAvD,OAAE,EAAqDA,EAAL,cAAhDuG,OAAa,IAAG,EAAA5M,KAAK6M,mBAAmB/C,SAAQ,EACzDpK,GAAWyG,GAIZ,IAAE2G,SAASjN,IACb,IAAE4G,QAAQ5G,GAAS,SAACvG,EAAOM,GACzBiG,EAAQjG,GAAO,IAAEmT,SAASzT,GAAS,EAAKwS,YAAYxS,GAASA,KAK7CoG,EAAOgI,MAAM,sBAE/B,GAAO1H,KAAKgN,eAGdpO,EAASoB,KAAK8L,YAAYlN,KAGZc,EAAOgI,MAAM,uBACV,GAAM1H,KAAKiN,qBAAqBrO,EAAQiB,IADrD,OAlBF,GAAO,I,OAqCP,OAlBMyG,EAAS,SACfsG,EAAgB5M,KAAKuM,kBAAkBC,SAASI,GAAiBA,EAAgB5M,KAAK6M,mBAAmB/C,SAEnGnJ,EAAM2F,EAAO4G,SAAQ,SAACxG,GAC1B,IAAMyG,EAAW,EAAKjB,iBAAiBxF,EAAMiG,EAASC,GAItD,OAFAlG,EAAK2C,oBAAsB8D,EAEtBzG,EAAKkG,GACH,CACL,CACEQ,KAAMD,EACN7T,MAAOoN,EAAK,EAAKmG,mBAAmB/C,YAJP,MAUnC,GAAM,IAAgBuD,YAAYrN,KAAKP,QAAS6G,I,OAChD,OADA,SACA,GAAO3F,G,UAILmJ,EAAW9J,KAAK8L,YAAYzF,EAAK,UACjC,IAAE2B,QAAQ8B,KAAWA,EAAWA,EAAS,MACzClL,GAAUc,GAAUoK,GAApB,Y,iBAGsB,O,sBAAA,GAAM,IAAgBwD,YAAYtN,KAAKP,U,cAAvD8N,EAAgB,SAEtBzD,EAAyG,QAA9F,MAAEhB,UAAUyE,EAAcxH,MAAK,SAACW,GAAS,OAAAA,EAAK,EAAKmG,mBAAmB/C,YAA7B,aAAqD,QAAI,G,0CAG/G,SAAO9J,KAAKwN,gBAAgB9N,EAAQd,EAAQkL,EAAUzD,I,OAGxD,SAAOoH,QAAQC,QAAQ,aAGnB,YAAAF,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,EAAezD,G,mEACnE,SAAO,WAkBH,YAAAsH,iBAAN,SAAuBC,EAASC,EAAKC,EAAiBvE,EAAQ9J,EAASF,G,yHAC5D3F,G,uFACHmU,EAASnU,GACPoU,EAAa,EAAKC,mBAAqB,EAAKC,qBAAoB,EAAO3E,EAAO9J,KACrE7F,KAEbmU,EAASC,EAAWpU,GACpBiU,EAAIjU,GAAOiU,EAAIE,IAGbI,EAAgB,EAAKrC,YAAYvC,EAAO9J,GAASsO,KACjD,EAAKzC,uBAAuByC,GAA5B,YACI,EAKF,EAAKzC,uBAAuByC,GAJ9BK,EAAgB,mBAChB,IAAAC,uBAAe,IAAG,EAAAN,EAAM,EACxB,IAAAO,aACAC,EAAY,eAEV,EAAW,YAAgB,EAAKrH,YAAa3H,EAAQ4H,WAAYoC,EAAO9J,GAAS4O,IAAkB,GACnGG,EAAsB,G,8CAExBA,EAAiBvO,KAAK6G,MAAM,G,aAGP,O,SADjB,IAAEkB,QAAQ,KAAW,EAAW,EAAS,IACxB,GAAM,IAAgByG,gBAAgB,EAAKhP,QAAS2O,I,cAAnEM,EAAe,SAErBF,EAMI,QALF,EAAAE,aAAY,EAAZA,EAAc3I,MAAK,SAACW,GAClB,OAAI,IAAEsB,QAAQtB,EAAK,IACVA,EAAK,GAAc,KAAO,EAE5BA,EAAK,KAAkB,YAC9B,QAAI,G,oBAEJiI,EAAmB,IAAE5B,SAASyB,IAAmB,IAAEI,SAASJ,GAE5DrB,EAAWU,EAAIxE,qBACfwF,EAAaF,EAAmBH,EAAiBA,EAAenF,uBAClB,IAAlC8D,EAASrH,QAAQ+I,KACjChB,EAAIxE,qBAAuB,aAAMwF,IAGnCV,EAAgBQ,EAAmBH,EAAiBA,aAAc,EAAdA,EAAiBD,GAAgBR,G,aAErFF,EAAIxE,qBAAuB,EAAKqC,cAAcmC,EAAKtE,EAAO9J,I,wBAI1D,YAAiB8J,EAAO9J,GAASmJ,WAAa,IACkB,IAAhEiF,EAAIxE,oBAAoBvD,QAAQyD,EAAO9J,GAASmJ,aAEhDiF,EAAIxE,qBAAuB,WAAIE,EAAO9J,GAASmJ,YAIjDiF,EAAIjU,GAAO,EAAKkV,iBAAiBjB,EAAKE,EAAQI,GAE1C,EAAKhD,UAAUhC,OAAS,GAC1B,EAAKgC,UAAU1E,SAAQ,SAACsI,GACtBlB,EAAIkB,GAAQlB,EAAIjU,MAGpBkU,EAAgBlU,GAAO,CAAE4O,KAAM5O,EAAKyO,MAAOwF,EAAIjU,I,kBA7D1B,EAAP,EAAAgU,E,wBAAA,YAAPhU,EAAG,K,KAAHA,KAAc,M,wCAAP,I,aA+DhB,SAAOkU,WAET,YAAAgB,iBAAA,SAAiBjB,EAA0BjU,EAAauU,GACtD,IAAIa,EAASnB,EAAIjU,GAIjB,OAHI,IAAEuO,QAAQ6G,IAAWhP,KAAKuL,mBAAmB3R,KAC/CoV,EAASnB,EAAI7N,KAAKuL,mBAAmB3R,KAEhCoV,UAAUb,GAEnB,YAAA9H,MAAA,SAAM9G,GAAN,WACQE,EAAUO,KAAKP,QAEf8G,EAAU,IAAE0I,OAAO1P,EAAQ2P,SAAS,SAACxI,GAEzC,SACgB,IAAdA,EAAKyI,OACHzI,EAAKP,YACLO,EAAKjH,GAAS2P,YACf,IAAEjH,QAAQ,YAAgB,EAAKjB,YAAa3H,EAAQ4H,WAAYT,EAAKjH,GAASb,QAAQ,KACtF,IAAEuJ,QAAQ,YAAgB,EAAKjB,YAAa3H,EAAQ4H,WAAYT,EAAKjH,GAASqK,UAAU,QAG1FuF,QAAO,SAACC,EAAM/F,GACb,GAAI,YAAiBA,EAAO9J,GAASmJ,WAAa,EAAG,CACnD,IAAM2G,EAAc,IAAEzG,UAAUS,GAEhC,OADAgG,EAAY9P,GAASmJ,UAAY,GACjC,OAAW0G,GAAI,IAAEC,EAAahG,IAAM,GAEtC,cAAW+F,GAAI,IAAE/F,IAAM,KACtB,IACFP,KAAI,SAAOO,GAAM,qC,qFAIM,OADlBZ,EAAY,YAAgB3I,KAAKkH,YAAa3H,EAAQ4H,WAAYoC,EAAO9J,GAASqK,UAAU,GAC1E,GAAM,IAAgBwD,YAAYtN,KAAKP,U,OAAvD8N,EAAgB,SAChB3E,EAAY,YAAiBW,EAAO9J,GAASmJ,WAEnDD,EAAY,GAAG6G,OAAO7G,GAAWK,KAAI,SAACyG,G,QACpC,IACE,OAAOxP,KAAK6G,MAAM2I,GAClB,MAAO1H,GAEP,OAAKwF,EAC4F,QAA1F,MAAEzE,UAAUyE,EAAcxH,MAAK,SAACW,GAAS,OAAAA,EAAK,EAAKmG,mBAAmB/C,YAA7B,aAAiD,QAAI,GADrD,QAArB,IAAK4F,wBAAgB,oBAArB,EAAwBD,OAIjD7Q,EAAS,YAAgBoB,KAAKkH,YAAa3H,EAAQ4H,WAAYoC,EAAO9J,GAASb,QAAQ,GACvF+Q,EAAgB,G,EACG,EAAT,EAAAhH,E,wBAAA,YAAPkF,EAAG,KACJC,EAAkBvE,EAAO9J,GAASqO,gBAElCF,EAAU7U,OAAO6W,KAAK9B,GACV,GAAM9N,KAAK2N,iBAAiBC,EAASC,EAAKC,EAAiBvE,EAAQ9J,EAASF,KAJvE,M,OAIjBsQ,EAAY,SAElBF,EAASpH,KAAK,CAAC,CAAEuH,WAAY,YAAcD,M,wBAN7B,I,aAgBhB,OARM7O,EAAO,CACX+O,UAAW,IAAOxQ,EAAQyQ,MAAMC,MAAMC,SAAStH,GAAWpI,SAC1D2P,QAAS,IAAO5Q,EAAQyQ,MAAMI,IAAIF,SAAStH,GAAWpI,SACtD6P,OAAQ9G,EAAO9J,GAAS6Q,QAAU,IAClCC,UAAW,IAAErD,QAAQyC,GACrBlE,UAAWlC,EAAOpD,UAClBqD,WAAYD,EAAO9J,GAAS2P,YAE9B,GAAOpP,KAAKwQ,eAAexP,EAAMpC,EAAQ+J,EAAWY,EAAO9J,GAAUF,cAGzE,OAAuB,IAAnBgH,EAAQ4C,OACH,GAGFsE,QAAQgD,IAAIlK,GAChBmK,MAAK,SAACC,GACL,OAAO,IAAEC,QAAQD,MAFd,OAIE,SAAC5I,GACN,MAAO,OAGb,YAAA2H,iBAAA,SAAiB7B,GACf,MAAO,IAET,YAAAgD,qBAAA,SAAqBC,GACnB,MAAO,IAET,YAAA5C,qBAAA,SAAqB4C,EAAcvH,GACjC,MAAO,IAGT,YAAAuC,YAAA,SAAYiF,GACV,IAAMC,EAAKhR,KAAKkH,YAAYY,SAASiJ,GAAU,IAAInK,QAC7CqK,EAASD,EAAGtJ,MAAM,iBAExB,OAAIuJ,EACKA,EAAO,GAAGzK,MAAM,KAElBwK,GAST,YAAAR,eAAA,SAAeU,EAAQtS,EAAQ+J,EAAWY,EAAQhK,GAChD,IAAM4R,EAAc,YAAkBvS,EAAQ,WACxCgK,EAAY,YAAiBW,EAAOX,WAC1C,OAAO5I,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAMkQ,GAERC,EAAY1R,QACZ,CAAEC,OAAQ,iBAAkBd,OAAM,IAClC8R,MAAK,SAAChI,GACN,OAAO,YAAiBA,EAAUC,EAAWC,OAIjD,YAAAoE,WAAA,WACE,OAAOhN,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAM,QAElB,MACA,CAAEnB,OAAQ,oBACVgR,MAAK,SAAChI,GACN,OAAO,IAAEuG,OACP,IAAEjG,IAAIN,EAAS2I,WAAa,IAAI,SAAC3K,GAC/B,MAAO,CACL0G,KAAM1G,EAAK4K,WACXhY,MAAOoN,EAAKrF,OACZkQ,YAAa7K,EAAK6K,iBAGtB,SAAC7K,GAAS,oBAAAA,EAAK6K,mBAKrB,YAAAC,WAAA,SAAW5S,GAAX,gBAAW,IAAAA,MAAA,gBACT,IAAMuS,EAAc,YAAkBvS,EAAQ,WAC9C,OAAOoB,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAM,CACJyK,UAAWzL,KAAKmG,YAGpBgL,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,wBAClBgR,MAAK,SAAChI,GACN,IAAM/H,EAAM,IAAEsO,OACZ,IAAEA,OAAOvG,EAAS+I,WAAa,IAAI,SAAC/K,GAAS,QAAEA,EAAK+E,YAAc,EAAKtF,YAAcO,EAAxC,gBAEzCgL,EAAc,EAAKtG,gBAAgBuG,aACzC,OAAID,EACK/Q,EAAIqI,KAAI,SAACtC,GAAS,OAAAgL,EAAA,MAEpB/Q,MAIX,YAAAiR,aAAA,SAAahT,EAAQsS,QAAA,IAAAA,MAAA,IACb,MAKFlR,KAAK6R,mBAAqB7R,KAAK6Q,qBAAqB7Q,MAJtD,IAAAP,eAAO,IAAG,EAAAO,KAAKP,QAAO,EACtBC,EAAM,SACS0H,EAAK,gBACpB0K,EAAW,cAEbZ,EAAS,EAAH,CAAKrG,OAAQ,EAAGkH,MAAO,KAAQb,GACrC,IAAMC,EAAc,YAAkBvS,EAAQa,GAC9C,OAAOO,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,MAAM8Q,aAAW,EAAXA,EAAaE,SAAUF,EAAYE,QAAQd,GAAUA,GAE7DC,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAM,IAChBgR,MAAK,SAAChI,G,QAOFpC,EALJ,OAAIoC,aAAQ,EAARA,EAAUuJ,OAELvJ,GAKLtB,IACFd,EAAqE,QAA5D,EAAsB,QAAtB,MAAEpN,IAAIwP,EAAUtB,UAAM,QAAI,IAAElO,IAAIwP,EAAU,iBAAUtB,WAAQ,QAAI,KAIvE0K,aAAW,EAAXA,EAAapJ,YACfpC,EAASwL,EAAYpJ,SAASpC,IAEzBA,OAIX,YAAA2G,qBAAA,SAAqBrO,EAAQyH,GAA7B,gBAA6B,IAAAA,MAAA,IAC3B,IAAIC,EAAgB,GACd4K,EAAS,EAAK,CAAErG,OAAQ,EAAGkH,MAAO,KAAU1L,GAE5C,EAKFrG,KAAK6R,mBAAqB7R,KAAK6Q,qBAAqB7Q,MAJtD,IAAAP,eAAO,IAAG,EAAAO,KAAKP,QAAO,EACtBC,EAAM,SACS0H,EAAK,gBACpB0K,EAAW,cAGPX,EAAc,YAAkBvS,EAAQa,GAC9C,OAAOO,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,MAAM8Q,aAAW,EAAXA,EAAaE,SAAUF,EAAYE,QAAQd,GAAUA,GAE7DC,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAM,IAChBgR,MAAK,SAAChI,G,gBACNpC,EAAqE,QAA5D,EAAsB,QAAtB,MAAEpN,IAAIwP,EAAUtB,UAAM,QAAI,IAAElO,IAAIwP,EAAU,iBAAUtB,WAAQ,QAAI,GACzE,IAAMoD,EACoG,QAAxG,EAAgE,QAAhE,EAAwC,QAAxC,EAAmB,QAAnB,EAAA9B,EAASwJ,kBAAU,QAAIxJ,EAASyJ,gBAAQ,QAAIzJ,EAAS0J,mBAAW,QAAI,IAAElZ,IAAIwP,EAAU,4BAAoB,QAAI,EAC9G,GAAIpC,EAAO6C,QAAUqB,EACnB,OAAOsH,aAAW,EAAXA,EAAapJ,UAAWoJ,EAAYpJ,SAASpC,GAAUA,EAE9D,IAAM+L,EAAQ,YAAY7H,GAAO0G,aAAM,EAANA,EAAQa,QAAS,KAC5C,EAAkB,GAIxB,OAHA,IAAEtL,QAAQ4L,GAAO,SAAC3L,GAChB,EAAS6B,KAAK,EAAKqJ,aAAahT,EAAM,OAAO8H,GAASL,QAEjDoH,QAAQgD,IAAI,GAChBC,MAAK,SAACC,GAIL,OAHA,IAAElK,QAAQkK,GAAW,SAACjK,GACpBJ,EAAS,IAAEkJ,OAAOlJ,EAAQI,OAErBoL,aAAW,EAAXA,EAAapJ,UAAWoJ,EAAYpJ,SAASpC,GAAUA,KAL3D,OAOE,SAACyB,GACN,OAAO+J,aAAW,EAAXA,EAAapJ,UAAWoJ,EAAYpJ,SAASpC,GAAUA,SAOxE,YAAAgM,mBAAA,SAAmBlL,GACjB,OAAOA,GAASA,EAAM+B,OAAS,GAGjC,YAAAoJ,eAAA,sBAIE,OAAKvS,KAAKsS,mBAAmBtS,KAAKR,UAQ3BiO,QAAQgD,IAAI,CACjBzQ,KAAKgN,aACLhN,KAAKwR,aAYLxR,KAAK4R,aAAa,eAAgB,CAChC/G,OAAQ,EACRkH,MAAO,MAGRrB,MAAK,SAACC,GACL,IAAM6B,EAAS,IAAEtZ,IAAIyX,EAAW,YAAa,IACvC8B,EAAa,IAAEvZ,IAAIyX,EAAW,YAAa,IAC3C+B,EAAa,IAAExZ,IAAIyX,EAAW,YAAa,IAI3CgC,EAAc,IAAEzZ,IAAIsZ,EAAQ,OAAQ,IACpCI,EAAkB,IAAE1Z,IAAIuZ,EAAY,OAAQ,IAC5CI,EAAkB,IAAE3Z,IAAIwZ,EAAY,OAAQ,IAClD,GAAIC,GAAeC,GAAmBC,EAAiB,CACrD,IAAMC,EAAkB,GACpBH,GACFG,EAASvK,KAAK,IAAErP,IAAIsZ,EAAQ,SAE1BI,GACFE,EAASvK,KAAK,IAAErP,IAAIuZ,EAAY,SAE9BI,GACFC,EAASvK,KAAK,IAAErP,IAAIwZ,EAAY,SAElC,IAAMK,EAAU,IAAE9G,KAAK,IAAE+G,QAAQ,IAAEC,KAAKH,IAAY,MACpD,MAAO,CACLrT,QAAS,EAAKA,QACdyT,OAAQ,QACRH,QAAO,GAGT,MAAO,CACL5M,UAAW,EAAKA,UAChB1G,QAAS,EAAKA,QACdyT,OAAQ,UACRH,QAAS,mCAA4B,EAAKtT,QAAO,aACjD0T,MAAO,cApDR,OAwDE,SAACpL,GACN,IAAIgL,EAAU,UAAG,EAAKtT,QAAO,aAW7B,OAVAsT,GAAWhL,EAAMqL,WAAarL,EAAMqL,WAAa,KAAO,GACpD,IAAEla,IAAI6O,EAAO,kBAAmB,IAClCgL,GAAWhL,EAAM/G,KAAK+G,MAAMsL,KAAO,KAAOtL,EAAM/G,KAAK+G,MAAMgL,QAClD,IAAE7Z,IAAI6O,EAAO,aAAc,IACpCgL,GAAWhL,EAAM/G,KAAK+G,MACb,IAAE7O,IAAI6O,EAAO,OAAQ,IAC9BgL,GAAWhL,EAAM/G,KAEjB+R,GAAW,4BAAqB,EAAKtT,QAAO,aAEvC,CACLA,QAAS,EAAKA,QACdyT,OAAQ,QACRH,QAASA,MA9EN,CACLtT,QAASO,KAAKP,QACdyT,OAAQ,QACRH,QAAS,8CAgFT,YAAA3B,UAAN,SAAgB7R,EAASE,EAASwK,G,YAAA,IAAAA,MAAA,I,mFACtB,SAAM,YACd1K,EACAE,EACAwK,EACAjK,KAAKR,SACLQ,KAAKgL,iBAAiBhI,GACtBhD,KAAKF,a,OAEP,OARAP,EAAU,SAQV,GAAOS,KAAKF,WACTc,kBAAkBrB,GAClBmR,MAAK,SAAChI,GACL,OAAO,IAAExP,IAAIwP,EAAU,gBAAiB,OAHrC,OAKE,SAACX,GACN,MAAMA,cAGd,EA9kBA,I,iyDCvBA,SAASuL,EAAeha,EAAOia,GAC7B,OAAOA,EAAOvK,KAAI,SAACtC,GAAS,WAAExN,IAAII,EAAOoN,EAAM,IAAExN,IAAII,EAAO,iBAAUoN,GAA1C,QAGxB,SAAgB8M,EAAgBC,EAAsCC,EAActM,G,kIAM5E,OALN8J,EAAS,EAAH,GAAQ,IAAEyC,KAAKD,EAAS,CAAC,mBAC9B3B,MAAQb,EAAOa,OAPP,GAQfb,EAAOrG,OAAsB,QAAb,EAAAqG,EAAOrG,cAAM,QAAI,EAGrB,GAAM4I,EAAQvC,I,OAQ1B,OARMF,EAA4B,QAAtB,kBAAsB,QAAI,GAChCuC,EAASvH,MAAMhE,QAAQZ,GAASA,EAAQ,CAACA,GAIzC8K,EAAyF,QAA5E,EAAqD,QAArD,EAAsC,QAAtC,EAAa,QAAb,EAAAlB,EAAGkB,kBAAU,QAAa,QAAT,EAAAlB,EAAG4C,cAAM,eAAE1B,kBAAU,QAAIlB,EAAGmB,gBAAQ,QAAa,QAAT,EAAAnB,EAAG4C,cAAM,eAAEzB,gBAAQ,QAAI,EAC7F0B,EAAaP,EAAetC,EAAIuC,GAEnB,IAAfrB,GAAoB2B,EAAW,GAAG1K,SAAW+I,EAE/C,GAAO2B,IAIHC,EAAQ5B,EAAa2B,EAAW,GAAG1K,OACnC4K,EAAapJ,KAAKC,KAAKkJ,EA1Bd,IA2BTE,EAAS,IAAIhI,MAAM+H,GAAYE,KAAK,GAAGjL,KAAI,SAACkL,EAAGrK,GAEnD,OADAqH,EAAOrG,OAAS6I,EAAQS,aAAe,EAAItK,GAAS,EAAIA,GAASqH,EAAOa,MACjE0B,EAAQvC,MAIE,GAAMzD,QAAQgD,IAAIuD,K,OAErC,SAFmB,SAED3E,QAAO,SAAC+E,EAAKC,GAC7B,IAAMC,EAAQhB,EAAee,EAAKd,GAGlC,OADAa,EAAI3N,SAAQ,SAAC8N,EAAM1K,GAAU,OAAA0K,EAAKhM,KAAI,MAATgM,EAAaD,EAAb,OACtBF,IACNP,WASC,SAAUW,EAA6BjO,EAAckO,GACzD,IAAMvD,EAAc,GACpB,IAAK,IAAE/I,QAAQ5B,GAAU,CACvB2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAM,EAAiB,GA2BvB,GA1BA,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IACZsL,EACF,EAAQlM,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAEzB,KAAKvM,GAAMiO,MAAM,EAAG,KAExDzD,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAGhB,IAAEoG,SAASpG,IAChB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MAC7EmM,EACF,EAAQlM,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAExb,IAAIwN,EAAM,QAAS,IAAIiO,MAAM,EAAG,KAEpEzD,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,UAGrBA,SAAgD,KAATA,IAC5C+N,EACF,EAAQlM,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQhO,IAElCwK,EAAOtX,GAAO8M,MAIhB+N,GAAY,EAAQtL,OAAS,EAE/B,OADA+H,EAAO0D,QAAU,EACV1D,EAGX,OAAOA,EAGH,SAAU2D,EAAwBC,GACtC,OAAO,IAAE5b,IACP,IAAE6M,KAAK,YAAU,SAACtG,GAAY,OAAAA,EAAQA,UAAR,KAC9B,aAIE,SAAUsV,EACdC,GAmBA,OAjBeA,EAAS3F,QAAO,SAAC+E,EAAKC,GAC3B,IAAAlO,EAAwCkO,EAA/B,UAAEY,EAA6BZ,EAAxB,MAAE,EAAsBA,EAAL,UAAjBa,OAAS,IAAG,EAAAD,EAAK,EAErCE,EAAef,EAAIrO,MAAK,SAACW,GAAS,OAAAA,EAAKuO,QAAL,KACxC,OAAKE,GAKLA,EAAaC,MAAM7M,KAAK,CAAE0M,MAAK,EAAE3b,MAAO6M,IACjCiO,IALLA,EAAI7L,KAAK,CAAE0M,MAAOC,EAAW5b,MAAO4b,EAAWE,MAAO,CAAC,CAAEH,MAAK,EAAE3b,MAAO6M,MAChEiO,KAKR,IAGepL,KAAI,SAACtC,GACrB,OAAsB,IAAtBA,EAAK0O,MAAMjM,OAAe,CAAE8L,MAAOvO,EAAK0O,MAAM,GAAGH,MAAO3b,MAAOoN,EAAK0O,MAAM,GAAG9b,OAAUoN,KAKpF,IAAM2O,EAAgB,SAACC,EAAyBC,EAAyB3b,GAC9E,IACE,IAAM4b,EAAYvV,KAAK6G,MAAMwO,GACvBG,EAAYxV,KAAK6G,MAAMyO,GAC7B,OAAOC,EAAU5b,KAAS6b,EAAU7b,GACrC,MAAMmN,GACL,OAAOuO,IAAoBC,IAIlBG,EAAmB,SAACC,GAC/B,IAAMC,EAAQ,qBAAqBC,KAAKF,GACxC,IAAKC,EACH,OAAO,EAET,IAAME,EAASC,SAASH,EAAM,GAAI,IAElC,OADaA,EAAM,IAEjB,IAAK,IACH,OAAgB,MAATE,EAAiB,IAC1B,IAAK,IACH,OAAgB,KAATA,EAAgB,IACzB,IAAK,IACH,OAAgB,GAATA,EAAc,IACvB,IAAK,IACH,OAAgB,IAATA,EAEX,OAAO,I,eCvJT1d,EAAOD,QAAU6d,G,6BCAjB,kCA0He,mBAACpd,EAAcqd,GAE5B,IAxHoBC,EAoGGC,EAoBjBC,GAxHcF,EAwHaD,EAvHjC,WAIE,WAAYI,EAAQC,GAClBvd,OAAO4J,OAAO0T,EAAQH,GAEtBG,EAAOE,YAAc,SAACnP,GACpB,IAAM3H,EAAU,YAAwB4W,EAAOlQ,WAC/C,OAAOkQ,EAAOG,WAAWC,kBAAkBhX,EAAS,CAAE2H,MAAK,EAAExI,OAAQyX,EAAOzX,UAGlF,OAZA,kCAYA,EAZA,IAwHA,IAAW8X,UAAU9d,GArBEud,EAqBoBC,EApBpC,WACL,MAAO,CACLO,SAvFW,uyFAwFXC,WAAYT,EACZU,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,W,6jDCtFZC,EAAmB,CACvBte,KAAM,sBACNgB,IAAK,WAEDud,EAAY,SAACnF,EAAcoF,GAC/B,OAAO,IAAI3J,SAAa,SAACC,EAAS2J,GAChCrF,EAAQsF,UAAY,SAACC,GACnB,IAAMC,EAAiB,CACrBD,MAAOA,EAAMhO,OAAOjD,OACpB0L,QAASA,EAAQ1L,OACjBmR,IAAK,QAEP/J,EAAQ8J,EAAUJ,GAAQ,SAE5BpF,EAAQ0F,QAAU,SAACH,GAAmB,OAAAF,EAAOE,EAAMhO,OAAOxB,OAApB,aAwJ3B,MApJf,WAIE,WAAY4P,GAHZ,KAAA/e,KAAO,kBACP,KAAAgH,QAAU,EAGA,MAA0C+X,EAAzB,KAAjB/e,OAAI,IAAG,aAAU,EAAE,EAAuB+e,EAAZ,QAAX/X,OAAO,IAAG,IAAC,EAAEsX,EAAUS,EAAL,MAC7C3X,KAAKpH,KAAOA,EACZoH,KAAKJ,QAAUA,EAEfI,KAAK4X,OAAOV,GAqIhB,OA9HE,YAAAU,OAAA,SAAOV,GACL,IACMlF,GADY/P,OAAO4V,WAAa5V,OAAO6V,iBAAmB7V,OAAO8V,cAAgB9V,OAAO+V,aACpEC,KAAKjY,KAAKpH,KAAMoH,KAAKJ,SAE/CoS,EAAQkG,gBAAkB,SAACX,GACzB,IAAMY,EAAMZ,EAAMhO,OAA4BjD,OAC1C6R,EAAGC,iBAAiBC,SAASnB,EAAMte,MAKvCuf,EAAGG,kBAAkBpB,EAAMte,KAAM,CAC/B2f,QAASrB,EAAMtd,OAGnBoY,EAAQ0F,QAAU,WAAM,OAAAjK,QAAQ4J,OAAO,IAAIpF,MAAnB,cACxBD,EAAQsF,UAAY,WAAM,OAAA7J,QAAQC,QAAR,cAG5B,YAAA8K,OAAA,WACE,IACMxG,GADY/P,OAAO4V,WAAa5V,OAAO6V,iBAAmB7V,OAAO8V,cAAgB9V,OAAO+V,aACpEC,KAAKjY,KAAKpH,KAAMoH,KAAKJ,SAE/C,OAAOuX,EAAUnF,EAAS,UAQtB,YAAAyG,WAAN,SAAiBC,EAAmB1X,G,oGAGrB,O,sBAAA,GAAMhB,KAAKwY,U,OAOtB,OAPML,EAAK,SACL,EAAcA,EAAGQ,YAAYD,EAAW,aAC1B,EAAYE,YAAYF,GAEhCG,IAAI7X,GAGhB,GAAO,IAAIyM,SAAQ,SAACC,EAAS2J,GAC3B,EAAYyB,WAAa,WAEvBpL,EAAQ,aAGV,EAAYgK,QAAU,SAAUH,GAC9BF,EAAOE,Q,OAIX,O,WAAA,GAAO9J,QAAQ4J,OAAO,I,yBAQpB,YAAA0B,QAAN,SAAc/X,EAAgBgY,G,0GAIV,O,sBADVN,EAAYxB,EAAMte,KACR,GAAMoH,KAAKiZ,QAAQjY,EAAKvB,U,OACpB,OADdyZ,EAAU,SACI,GAAMlZ,KAAKmZ,eAAeT,EAAW,c,OAYzD,OAZME,EAAc,SAEfM,GAEHlZ,KAAKyY,WAAWC,EAAW1X,GAGzBoY,EAAO,OAAaF,GAAYlY,GAChCgY,IAASI,EAAUpY,GAEjBqY,EAAgBT,EAAYU,IAAIF,GAEtC,GAAOjC,EAAUkC,I,OAEjB,O,WAAA,GAAO5L,QAAQ4J,OAAO,I,yBAUpB,YAAA4B,QAAN,SAAcM,G,sGAIU,O,sBADdb,EAAYxB,EAAMte,KACJ,GAAMoH,KAAKmZ,eAAeT,I,OAG9C,OAHME,EAAc,SACd5G,EAAU4G,EAAY1f,IAAIqgB,GAEhC,GAAOpC,EAAUnF,EAAS,Y,OAE1B,O,WAAA,GAAOvE,QAAQ4J,OAAO,I,yBAGpB,YAAAmC,WAAN,SAAiBd,G,oGAGO,O,sBAAA,GAAM1Y,KAAKmZ,eAAeT,I,OAE/B,OAFTE,EAAc,SACd5G,EAAU4G,EAAYa,SACb,GAAMtC,EAAUnF,EAAS,Y,OAExC,SAFe,UAEU,I,OAEzB,O,WAAA,GAAOvE,QAAQ4J,OAAO,I,yBAQZ,YAAA8B,eAAd,SAA6BT,EAAmBtB,G,qBAAa3J,SAAO,W,wDAErD,O,sBAAA,GAAMzN,KAAKwY,U,OACtB,SADW,SACDG,YAAYD,EAAWtB,GAAMwB,YAAYF,I,OAEnD,O,WAAA,GAAOjL,QAAQ4J,OAAO,I,yBAG5B,EA9IA,GAoJe,CAAc,CAAEH,MAAK,I,60CCnMpC,aAKE,aAFA,KAAAwC,OAAS,YACT,KAAAC,SAAW,GA8Bb,OA5BE,YAAAtM,YAAA,SAAY5N,EAAiBnG,GAC3B,OAAO0G,KAAK4Z,WAAWna,EAASO,KAAK0Z,OAAQpgB,GAAO,IAEhD,YAAAgU,YAAN,SAAkB7N,G,mEAChB,SAAOO,KAAK6Z,WAAWpa,EAASO,KAAK0Z,gBAEvC,YAAAI,gBAAA,SAAgBra,EAAiBsP,EAAcgL,GAC7C,OAAO/Z,KAAK4Z,WAAWna,EAASsP,EAAMgL,GAAQ,IAE1C,YAAAtL,gBAAN,SAAsBhP,EAAiBsP,G,mEACrC,SAAO/O,KAAK6Z,WAAWpa,EAASsP,WAE1B,YAAA6K,WAAR,SAAmBI,EAAoBpgB,EAAaN,EAA4B0f,G,MAE9E,YAF8E,IAAAA,OAAA,GAEvEnB,EAAUkB,UAAO,GAEpBtZ,QAASua,IACRpgB,GAAMN,E,GAET0f,IAIU,YAAAa,WAAd,SAAyBpa,EAAiB7F,G,gGACxB,SAAMie,EAAUoB,QAAQxZ,I,OAExC,OAFMwa,EAAU,SAEhB,GAAOrgB,EAAMqgB,aAAO,EAAPA,EAAUrgB,GAAOqgB,WAElC,EAlCA,GAmCe,QAAI,G,cCpCnB7hB,EAAOD,QAAU+hB,G,6BCAjB,0cAEaC,EAAwB,CACnC,CACEvgB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,aACLwgB,aAAc,aACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,kBACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,iBACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,MAKtBmhB,EAAe,CACnB7b,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACfuO,QAAS,GACTC,UAAW,GACXC,cAAe,GACfC,UAAW,GACXvU,QAAS,CACPsE,OAAQ,EACRkH,MAAO,GACPgJ,OAAQ,GACRC,WAAY,GACZC,WAAY,GACZC,OAAQ,KAIZ,SAASC,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAoBpB,OAnBK,IAAE/I,QAAQ5B,KACb2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAChB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAGT,IAAMkK,EAA0B,CAAC,aAAc,gBACzCC,EAAuB,CAAC,UAAW,aAEnCxO,EAAqB,CACzB/C,SAAU,aACV6Q,QAAS,UACTzF,UAAW,YACX4F,UAAW,eAGPQ,EAA0B,IAAIC,MAClC,CACEZ,QAAS,UACTC,UAAW,YACXC,cAAe,YACfC,UAAW,eAEb,CACE5hB,IAAK,SAACgP,EAAKsT,GACT,MAAyC,eAArC/T,OAAO+T,GAAMC,oBAA6C,aACvDvT,EAAIsT,MAKXE,EAAe,CACnBC,UAAW,YACXC,UAAW,YACXC,cAAe,iBAgBXvQ,EAAyB,CAC7BwQ,QAAS,CACP1N,iBAAkBsN,EAAaC,UAC/BtN,gBAAiB,UACjBC,aAAczB,EAAmB8N,SAGnCoB,UAAW,CACT3N,iBAAkBsN,EAAaC,UAC/BtN,gBAAiB,UACjBC,aAAczB,EAAmB8N,SAEnCqB,UAAW,CACT5N,iBAAkBsN,EAAaE,UAC/BvN,gBAAiB,gBACjBC,aAAczB,EAAmBqI,WAEnC+G,YAAa,CACX7N,iBAAkBsN,EAAaG,cAC/BxN,gBAAiB,YACjBC,aAAczB,EAAmBiO,YAGtB,a,8BCtKf,gsBAEM3U,EAAY,kBAGZ+V,EAAkB,mBAwBlBC,EAAkD,CACtD,CACEviB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,wBACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,oBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SACN7C,KA3DiB,CACnB,CAAEnH,KAAM,UAAW9T,MAAO,GAC1B,CAAE8T,KAAM,UAAW9T,MAAO,KA2D1B,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,wCACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,mBACLwgB,aAAc,oBACdC,aAAc,iBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,oBACLwgB,aAAc,qBACdC,aAAc,oBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,oBACdC,aAAc,oBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,aACdC,aAAc,iBACdC,KAAM,GACNlD,KAAM,eAER,CACExd,IAAK,QACLwgB,aAAc,SACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,gBACLwgB,aAAc,iBACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,aACLwgB,aAAc,cACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,SACN7C,KA1GW,CACb,CAAEnH,KAAM,WAAY9T,MAAO,GAC3B,CAAE8T,KAAM,SAAU9T,MAAO,GACzB,CAAE8T,KAAM,OAAQ9T,OAAQ,KAyGxB,CACEM,IAAK,UACLwgB,aAAc,UACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KA9HY,CACd,CAAEnH,KAAM,mBAAoB9T,MAAO,oBACnC,CAAE8T,KAAM,aAAc9T,MAAO,cAC7B,CAAE8T,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,mBAAoB9T,MAAO,sBA4HnC,CACEM,IAAK,YACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KA/Hc,CAChB,CAAEnH,KAAM,KAAM9T,MAAO,GACrB,CAAE8T,KAAM,KAAM9T,MAAO,MAkIjB8iB,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiBH,GAqBbI,EAAoB,CACxB3d,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,iBACfoQ,KAAM,GACNC,SAAU,GACVC,SAAU,GACVC,QAAS,GACTC,WAAY,GAEZrW,QAjCe,CACfsW,gBAAiB,GACjBC,aAASxU,EACTyU,iBAAkB,GAClBC,OAAQ,GACRC,iBAAkB,GAClBC,iBAAkB,GAClBC,kBAAmB,GACnBpL,MAAO,GACPlH,OAAQ,EACRuS,eAAW9U,EACX+U,OAAQ,GACRC,MAAO,GACPC,cAAe,GACfC,WAAY,GACZC,QAAS,GACTC,UAAW,KA4Cb,SAASvC,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAE/C,IAAMgG,EAAoB,CAAC,iBAAkB,mBAAoB,oBAC3DoR,EAA+B,CAAC,aAAc,eAAgB,QAC9DC,EAA6B,CAAC,qBAAsB,cACpDC,EAA6B,CACjCC,IAAK,mBAELC,iBAAkB,OAClBC,SAAU,WACVC,MAAO,qBACPC,KAAM,cAGFC,EAAqB,CACzBlB,iBAAkB,eAWdpQ,EAAqB,CACzB/C,SAAU,iBACV4S,SAAU,aACVC,QAAS,qBACTuB,KAAM,QAGFxC,EAAe,CACnBgB,SAAU,eACVC,QAAS,eAeLrR,EAAyB,CAC7BkR,KAAM,CACJpO,iBAAkBsN,EAAagB,SAC/BrO,gBAAiB,WACjBC,aAAczB,EAAmB6P,UAEnCD,SAAU,CACRrO,iBAAkBsN,EAAagB,SAC/BrO,gBAAiB,WACjBC,aAAczB,EAAmB6P,UAEnC0B,mBAAoB,CAClBhQ,iBAAkBsN,EAAaiB,QAC/BtO,gBAAiB,UACjBC,aAAczB,EAAmB8P,SAEnC0B,WAAY,CACVjQ,iBAAkBsN,EAAaiB,QAC/BtO,gBAAiB,aACjBE,aAAc,OACdD,aAAczB,EAAmBqR,OAGtB,a,6BCnSf,qlBAGM/X,EAAY,WAGZ+V,EAAkB,YAElBoC,EAAwB,CAC5BC,SAAU,YACVC,OAAQ,YACR5D,UAAW,YACX6D,cAAe,iBAIXC,EAAwB,CAAC,YAAa,eAEtC7R,EAAqB,CACzB/C,SAAU,YACV8Q,UAAW,YACX6D,cAAe,iBASXE,EAAiD,CACrD,CACE/kB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,MAIHoE,EAAoB,CACxBhgB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,YAEfwO,UAAW,GACX6D,cAAe,GACflY,QApCuB,CACvBwL,MAAO,GACPlH,OAAQ,IAqCV,SAASsQ,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAE/C,IAAMsY,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,eACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,cACT,CAAEA,MAAO,eACT,CAAEA,MAAO,YACT,CAAEA,MAAO,YACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,aACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,aACT,CAAEA,MAAO,cACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,eAEX,SAASwlB,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAM9B,OALAC,EAAUlP,WAAWrJ,SAAQ,SAACC,IACkB,IAA1CA,EAAKoJ,WAAWhK,QAAQ,eAAqE,IAA9CY,EAAKoJ,WAAWhK,QAAQ,kBACzEY,EAAKoJ,WAAWvH,KAAK,oBAGlByW,EAGT,IAAMtD,EAAe,CACnBd,UAAW,YACX6D,cAAe,iBAeXnT,EAAyB,CAC7ByQ,UAAW,CACT3N,iBAAkBsN,EAAad,UAC/BvM,gBAAiB,YACjBC,aAAczB,EAAmB+N,WAEnCqE,cAAe,CACb7Q,iBAAkBsN,EAAa+C,cAC/BpQ,gBAAiB,gBACjBC,aAAczB,EAAmB4R,gBAGtB,a,6BChIf,2qBAGMtY,EAAY,UACZ+Y,EAAU,UAEVhD,EAAkB,WAElBiD,EAAuB,CAC3BC,WAAY,aACZC,QAAS,UACTC,UAAW,QAIPC,EAAuB,CAAC,aAAc,mBAAoB,aAE1D1S,EAAqB,CACzB/C,SAAU,aACVtB,KAAM,OACNgX,QAASN,GAILxD,EAAe,CACnB+D,MAAO,QACPC,MAAO,aAeHpU,EAAyB,CAC7BkU,QAAS,CACPpR,iBAAkBsN,EAAa+D,MAC/BpR,gBAAiB,UACjBC,aAAczB,EAAmB2S,SAEnChX,KAAM,CACJ4F,iBAAkBsN,EAAagE,MAC/BrR,gBAAiB,OACjBC,aAAczB,EAAmBrE,OAW/BmX,EAAgD,CACpD,CACE/lB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,aACLwgB,aAAc,eACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,UACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,UAKJgF,EAAuC,CAC3CC,eAAgB,oDAChBlW,UAAS,EACTmW,gBAAiBqD,GAGbC,EAAY,CAChBhhB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACfoT,QAAS,GACThX,KAAM,GACNjC,QA1DsB,CACtBwL,MAAO,GACPlH,OAAQ,EACRmQ,WAAY,GACZwE,QAAS,KAyDX,SAASrE,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAG/C,IAAMsY,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,cAET,CAAEA,MAAO,gBACT,CAAEA,MAAO,eACT,CAAEA,MAAO,aACT,CAAEA,MAAO,YACT,CAAEA,MAAO,cACT,CAAEA,MAAO,eAGT,CAAEA,MAAO,gBACT,CAAEA,MAAO,YACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,cACT,CAAEA,MAAO,qBAGX,SAASwlB,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAapJ,EAAKoJ,WAAW9G,KAAI,SAAC6W,GAAM,OAAAV,EAAqBU,IAArB,QAExCb,EAEM,a,6BClJf,8nBAGM7Y,EAAY,cAGZ+V,EAAkB,YAElB4D,EAAwB,CAC5BC,OAAQ,SACRX,WAAY,aACZY,QAAS,kBACTC,QAAS,mBAILC,EAAwB,CAAC,aAAc,gBAEvCrT,EAAqB,CACzB/C,SAAU,aACVqW,OAAQ,SACRC,gBAAiB,mBAwBbC,EAAiD,CACrD,CACEzmB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,cACLwgB,aAAc,cACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,sCACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,oBAER,CACExd,IAAK,QACLwgB,aAAc,QACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,WACLwgB,aAAc,WACdC,aAAc,aACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,YAAa9T,MAAO,aAC5B,CAAE8T,KAAM,aAAc9T,MAAO,cAC7B,CAAE8T,KAAM,eAAgB9T,MAAO,kBAGnC,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,MAAO9T,MAAO,SAG1B,CACEM,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,QAAS9T,MAAO,GACxB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,KAAM9T,MAAO,GACrB,CAAE8T,KAAM,MAAO9T,MAAO,SAG1B,CACEM,IAAK,eACLwgB,aAAc,eACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,qBACLwgB,aAAc,qBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,OAAQ9T,MAAO,MAMvB8iB,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiB+D,GAGbC,EAAa,CACjB1hB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf6T,QAAS,GACTE,OAAQ,GACR5Z,QA3JuB,CACvBwL,MAAO,GACPlH,OAAQ,EACR0V,YAAa,GACbC,WAAY,GACZC,UAAW,GACXC,WAAY,GAEZpD,MAAO,GACPqD,SAAU,GAEVlD,QAAS,GACTmD,YAAa,GAEbC,cAAe,GAEfC,aAAc,GACdC,mBAAoB,KA4IhBC,EAAmB,CACvBhB,QAAS,UACTZ,WAAY,aACZW,OAAQ,UAEV,SAASjB,EAAgBC,GACvB,IAAMC,EAAY,oBAAUD,GAI5B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAapJ,EAAKoJ,WAAW9G,KAAI,SAAC6W,GAAM,OAAAmB,EAAiBnB,IAAjB,QAExCb,EAGT,SAAS7D,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAS,YAA6B3K,GAAS,GAOrD,OALA2K,EAAO+P,aAAc,EACrB/P,EAAOgQ,mBAAoB,GACvBhQ,EAAOoM,OAASpM,EAAOyP,YAAUzP,EAAO+P,aAAc,GACtD/P,EAAO2P,gBAAe3P,EAAOgQ,mBAAoB,GACjD,kBAAQhQ,EAAO6P,sBAAqB7P,EAAO6P,mBAAqB7P,EAAO6P,mBAAmB9U,KAAK,MAC5FiF,EAGT,IAAMwK,EAAe,CACnByE,OAAQ,SACRC,gBAAiB,WAeb9U,EAAyB,CAC7B6U,OAAQ,CACN/R,iBAAkBsN,EAAayE,OAC/B9R,gBAAiB,SACjBC,aAAczB,EAAmBsT,QAEnCC,gBAAiB,CACfhS,iBAAkBsN,EAAa0E,gBAC/B/R,gBAAiB,UACjBC,aAAczB,EAAmBuT,kBAI/BvB,EAAkB,CACtB,CAAEzR,KAAM,WAAY9T,MAAO,cAC3B,CAAE8T,KAAM,WAAY9T,MAAO,cAC3B,CAAE8T,KAAM,WAAY9T,MAAO,gBAC3B,CAAE8T,KAAM,WAAY9T,MAAO,gBAC3B,CAAE8T,KAAM,cAAe9T,MAAO,eAC9B,CAAE8T,KAAM,WAAY9T,MAAO,aAC3B,CAAE8T,KAAM,WAAY9T,MAAO,cAC3B,CAAE8T,KAAM,WAAY9T,MAAO,eAC3B,CAAE8T,KAAM,aAAc9T,MAAO,mBAC7B,CAAE8T,KAAM,aAAc9T,MAAO,mBAC7B,CAAE8T,KAAM,YAAa9T,MAAO,gBAC5B,CAAE8T,KAAM,WAAY9T,MAAO,YAC3B,CAAE8T,KAAM,aAAc9T,MAAO,gBAC7B,CAAE8T,KAAM,aAAc9T,MAAO,cAC7B,CAAE8T,KAAM,WAAY9T,MAAO,oBAC3B,CAAE8T,KAAM,YAAa9T,MAAO,eAEf,a,ynBC9PT6M,EAAY,gBAqEZgb,EAA2B,CAC/B,CACEvnB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,aACLwgB,aAAc,cACdC,aAAc,OACdjD,KAAM,SAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAzEY,CACd,CAAEnH,KAAM,YAAa9T,MAAO,aAC5B,CAAE8T,KAAM,eAAgB9T,MAAO,gBAC/B,CAAE8T,KAAM,aAAc9T,MAAO,cAC7B,CAAE8T,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,cAAe9T,MAAO,iBAsE9B,CACEM,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAzEc,CAChB,CAAEnH,KAAM,KAAM9T,MAAO,GACrB,CAAE8T,KAAM,KAAM9T,MAAO,KAyErB,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,0BACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,aACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,eACLwgB,aAAc,eACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,mDACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,sCACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdhT,UAAU,EACV+P,KAAM,SACN7C,KAxJW,CACb,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,QAAS9T,MAAO,GACxB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,OAAQ,GACvB,CAAE8T,KAAM,MAAO9T,OAAQ,KAqJvB,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAxJgB,CAClB,CAAEnH,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,KAuJtB,CACEM,IAAK,aACLwgB,aAAc,aACdC,aAAc,+BACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdhT,UAAU,EACV+P,KAAM,SACN7C,KArLc,CAChB,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,UAAW9T,MAAO,KAoL1B,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,kCACdC,KAAM,GACNlD,KAAM,SACN7C,KAlMgB,CAClB,CAAEnH,KAAM,OAAQ9T,MAAO,YACvB,CAAE8T,KAAM,OAAQ9T,MAAO,aAkMvB,CACEM,IAAK,OACLwgB,aAAc,OACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KArKS,CACX,CAAEnH,KAAM,YAAa9T,MAAO,GAC5B,CAAE8T,KAAM,eAAgB9T,MAAO,GAC/B,CAAE8T,KAAM,SAAU9T,MAAO,GACzB,CAAE8T,KAAM,SAAU9T,MAAO,GACzB,CAAE8T,KAAM,eAAgB9T,MAAO,GAC/B,CAAE8T,KAAM,eAAgB9T,MAAO,GAC/B,CAAE8T,KAAM,eAAgB9T,MAAO,GAC/B,CAAE8T,KAAM,cAAe9T,MAAO,GAC9B,CAAE8T,KAAM,cAAe9T,MAAO,MAgK1B8nB,EAAiB,CACrBxiB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QAAS,EAAF,GArKW,CAClByU,WAAY,GACZyC,QAAS,GACTC,UAAW,KACX2D,OAAQ,GACRC,UAAW,GACXZ,WAAY,GACZD,UAAW,GACXc,aAAc,GACdC,WAAY,GACZC,cAAe,GACf1G,OAAQ,GACR2G,YAAa,KACbC,WAAY,GACZC,UAAW,KACXC,YAAa,GACbC,KAAM,OAsJNC,QAAS,GACTC,QAAS,IAGX,SAAS7G,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAqBpB,OApBK,IAAE/I,QAAQ5B,KACb2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAEhB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAGT,IAAM+Q,EAA4B,CAAC,aAAc,eAAgB,SAE3DC,EAA4B,CAChC9C,WAAY,aACZ2C,QAAS,UACTC,QAAS,WAGLnV,EAAqB,CACzB/C,SAAU,aACViY,QAAS,UACTC,QAAS,WAGLG,EAAW,CAAC,QAAS,SAEZ,a,6BCrQf,6hBAGMhc,EAAY,eAGZ+V,EAAkB,YAElBoC,EAAwB,CAC5Bc,WAAY,aACZgD,KAAM,YAIFC,EAAgC,CAAC,aAAc,gBAE/CxV,EAAqB,CACzB/C,SAAU,aACVsY,KAAM,YASFzD,EAAiD,CACrD,CACE/kB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,MAIH8H,EAAa,CACjB1jB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aAEfgW,KAAM,GACN7b,QAnCuB,CACvBwL,MAAO,GACPlH,OAAQ,IAoCV,SAASsQ,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAE/C,IAAMsY,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,eACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,cACT,CAAEA,MAAO,eACT,CAAEA,MAAO,YACT,CAAEA,MAAO,YACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,aACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,aACT,CAAEA,MAAO,cACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,eAILoiB,EAAe,CACnB0G,KAAM,YAeF9W,EAAyB,CAC7BiX,SAAU,CACRnU,iBAAkBsN,EAAa0G,KAC/B/T,gBAAiB,OACjBC,aAAczB,EAAmBuV,OAGtB,a,6BC9Gf,8fAEMjc,EAAY,eAEZmY,EAAwB,CAC5BE,OAAQ,YACRrY,UAAW,cACXqc,MAAO,QAIHC,EAAgC,CAAC,YAAa,eAE9C5V,EAAqB,CACzB/C,SAAU,YACV3D,UAAW,cACXqc,MAAO,QAeH7D,EAAiD,CACrD,CACE/kB,IAAK,aACLwgB,aAAc,aACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,IAAK9T,MAAO,QACpB,CAAE8T,KAAM,IAAK9T,MAAO,YAKpBgpB,EAAa,CACjB1jB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,YAEfjG,UAAW,GACXqc,MAAO,GACPjc,QApCuB,CACvBwL,MAAO,GACPlH,OAAQ,EACR6X,oBAAoB,EACpBC,gBAAgB,EAChBC,cAAe,CAAC,IAChBhO,QAAS,CACPiO,WAAY,CAAEzV,KAAM,IAAK9T,MAAO,WAgCpC,SAAS6hB,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GACpB,IAAK,IAAE/I,QAAQ5B,GAGb,GAFA2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC3CA,EAAQmc,oBACV,GAAI,IAAE1a,QAAQzB,EAAQqc,eAAgB,CACpC,IAAMA,EAAgB,IAAE5P,QAAQzM,EAAQqc,eACpC,IAAE3P,KAAK2P,GAAezZ,OAAS,IACjC+H,EAAO0R,cAAgB,IAAE3P,KAAK2P,GAAejO,MAAM,EAAG,YAGrD,GAAIpO,EAAQoc,eAAgB,CACjC,IAAM,EAAiB,GACvB,IAAElc,QAAQF,EAAQqO,SAAS,SAAClO,EAAW9M,GACjC,EAAQuP,OAAS,IAGjB,IAAEnB,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,GAChB,EAAQZ,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAEzB,KAAKvM,GAAMiO,MAAM,EAAG,KAEjD,IAAE7H,SAASpG,KACf,IAAEyB,QAAQ,IAAEjP,IAAIwN,EAAM,QAAS,MAClC,EAAQ6B,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,CAAC,IAAExb,IAAIwN,EAAM,QAAS,KAAKiO,MAAM,EAAG,UAIxE,EAAQxL,OAAS,IACnB+H,EAAO0D,QAAU,GAIvB,OAAO1D,EAET,IAAM2N,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,eACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,cACT,CAAEA,MAAO,eACT,CAAEA,MAAO,YACT,CAAEA,MAAO,YACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,aACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,aACT,CAAEA,MAAO,cACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,eAILoiB,EAAe,CACnBvV,UAAW,cACXqc,MAAO,QAeHlX,EAAyB,CAC7BwX,YAAa,CACX1U,iBAAkBsN,EAAavV,UAC/BkI,gBAAiB,YACjBC,aAAczB,EAAmB1G,WAEnCqC,KAAM,CACJ4F,iBAAkBsN,EAAa8G,MAC/BnU,gBAAiB,QACjBC,aAAczB,EAAmB2V,QAGtB,a,geC5ITO,EAA0B,CAC9B,CACEtjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,oDAER,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,mDACN,gBACE,OAAO,YAAE,oBAGb,CACEvjB,QAAS,UACT,YACE,OAAO,YAAE,WAEX0G,UAAW,aACX6c,KAAM,mDACN,gBACE,OAAO,YAAE,oBAGb,CACEvjB,QAAS,WACT,YACE,OAAO,YAAE,aAEX0G,UAAW,eACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,oBAGb,CACEvjB,QAAS,QACT,YACE,OAAO,YAAE,UAEX0G,UAAW,YACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,oBAGb,CACEvjB,QAAS,WACT,YACE,OAAO,YAAE,cAEX0G,UAAW,gBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,oBAGb,CACEvjB,QAAS,YACT,YACE,OAAO,YAAE,cAEX0G,UAAW,gBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,oBAGb,CACEvjB,QAAS,eACT,YACE,OAAO,YAAE,kBAEX0G,UAAW,oBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,oBAGb,CACEvjB,QAAS,UACT,YACE,OAAO,YAAE,YAEX0G,UAAW,cACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,oBAGb,CACEvjB,QAAS,OACT,YACE,OAAO,YAAE,YAEX0G,UAAW,cACX6c,KAAM,wDAER,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,sDACN,gBACE,OAAO,YAAE,2BAGb,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,mDACN,gBACE,OAAO,YAAE,2BAGb,CACEvjB,QAAS,aACT,YACE,OAAO,YAAE,gBAEX0G,UAAW,kBACX6c,KAAM,mDACN,gBACE,OAAO,YAAE,2BAGb,CACEvjB,QAAS,QACT,YACE,OAAO,YAAE,UAEX0G,UAAW,YACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,2BAGb,CACEvjB,QAAS,OACT,YACE,OAAO,YAAE,SAEX0G,UAAW,WACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,2BAGb,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,2BAGb,CACEvjB,QAAS,cACT,YACE,OAAO,YAAE,iBAEX0G,UAAW,mBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,2BAGb,CACEvjB,QAAS,eACT,YACE,OAAO,YAAE,mBAEX0G,UAAW,qBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,2BAGb,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,2BAGb,CACEvjB,QAAS,KACT,YACE,OAAO,YAAE,OAEX0G,UAAW,SACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,2BAGb,CACEvjB,QAAS,WACT,YACE,OAAO,YAAE,cAEX0G,UAAW,gBACX6c,KAAM,uDACN,gBACE,MAAO,UAAG,YAAE,uBAAsB,YAAI,YAAE,eAAc,OAG1D,CACEvjB,QAAS,YACT,YACE,OAAO,YAAE,eAEX0G,UAAW,iBACX6c,KAAM,uDACN,gBACE,MAAO,UAAG,YAAE,uBAAsB,YAAI,YAAE,eAAc,OAG1D,CACEvjB,QAAS,cACT,YACE,OAAO,YAAE,gBAEX0G,UAAW,kBACX6c,KAAM,uDACN,gBACE,MAAO,UAAG,YAAE,uBAAsB,YAAI,YAAE,eAAc,OAG1D,CACEvjB,QAAS,OACT,YACE,MAAO,UAAG,YAAE,uBAAsB,YAAI,YAAE,QAAO,MAEjD0G,UAAW,YACX6c,KAAM,uDACN,gBACE,MAAO,UAAG,YAAE,uBAAsB,YAAI,YAAE,QAAO,OAGnD,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX8c,YAAY,EACZD,KAAM,uDACN,gBACE,OAAO,YAAE,8BAGb,CACEvjB,QAAS,cACT,YACE,OAAO,YAAE,iBAEX0G,UAAW,mBACX8c,YAAY,EACZD,KAAM,uDACN,gBACE,OAAO,YAAE,8BAGb,CACEvjB,QAAS,QACT,YACE,OAAO,YAAE,WAEX0G,UAAW,aACX8c,YAAY,EACZD,KAAM,uDACN,gBACE,OAAO,YAAE,8BAGb,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,WAEX0G,UAAW,aACX6c,KAAM,wDAER,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,wDAER,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,wDAER,CACEvjB,QAAS,SACT,YACE,OAAO,YAAE,WAEX0G,UAAW,aACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,mBAGb,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,mBAGb,CACEvjB,QAAS,WACT,YACE,OAAO,YAAE,aAEX0G,UAAW,eACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,mBAGb,CACEvjB,QAAS,OACT,YACE,OAAO,YAAE,SAEX0G,UAAW,WACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,mBAGb,CACEvjB,QAAS,eACT,YACE,OAAO,YAAE,kBAEX0G,UAAW,eACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,mBAGb,CACEvjB,QAAS,eACT,YACE,OAAO,YAAE,kBAEX0G,UAAW,eACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,mBAGb,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,oBAGb,CACEvjB,QAAS,KACT,YACE,OAAO,YAAE,OAEX0G,UAAW,SACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,oBAGb,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,4BAGb,CACEvjB,QAAS,QACT,YACE,OAAO,YAAE,WAEX0G,UAAW,aACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,4BAGb,CACEvjB,QAAS,OACT,YACE,OAAO,YAAE,UAEX0G,UAAW,YACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,4BAGb,CACEvjB,QAAS,YACT,YACE,OAAO,YAAE,gBAEX0G,UAAW,kBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,4BAGb,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,wDAER,CACEvjB,QAAS,SACT,YACE,MAAO,UAAG,YAAE,qBAAoB,WAElC0G,UAAW,gBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,uBAGb,CACEvjB,QAAS,UACT,YACE,MAAO,UAAG,YAAE,qBAAoB,YAElC0G,UAAW,iBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,uBAGb,CACEvjB,QAAS,SACT,YACE,MAAO,UAAG,YAAE,qBAAoB,WAElC0G,UAAW,gBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,uBAGb,CACEvjB,QAAS,SACT,YACE,MAAO,UAAG,YAAE,qBAAoB,WAElC0G,UAAW,gBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,uBAGb,CACEvjB,QAAS,WACT,YACE,MAAO,UAAG,YAAE,qBAAoB,aAElC0G,UAAW,kBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,uBAGb,CACEvjB,QAAS,UACT,YACE,MAAO,UAAG,YAAE,qBAAoB,YAElC0G,UAAW,iBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,uBAGb,CACEvjB,QAAS,SACT,YACE,MAAO,UAAG,YAAE,qBAAoB,WAElC0G,UAAW,gBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,uBAGb,CACEvjB,QAAS,cACT,YACE,MAAO,UAAG,YAAE,qBAAoB,gBAElC0G,UAAW,qBACX6c,KAAM,uDACN,gBACE,OAAO,YAAE,uBAGb,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,kBAEX0G,UAAW,oBACX6c,KAAM,uDAER,CACEvjB,QAAS,aACT,YACE,OAAO,YAAE,eAEX0G,UAAW,iBACX6c,KAAM,wDAER,CACEvjB,QAAS,OACT,YACE,OAAO,YAAE,SAEX0G,UAAW,WACX6c,KAAM,kDAER,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEXwjB,YAAY,EACZ9c,UAAW,UACX6c,KAAM,kDACN,gBACE,OAAO,YAAE,4BAGb,CACEvjB,QAAS,kBACT,YACE,OAAO,YAAE,sBAEXwjB,YAAY,EACZ9c,UAAW,wBACX6c,KAAM,kDACN,gBACE,OAAO,YAAE,4BAGb,CACEvjB,QAAS,QACT,YACE,OAAO,YAAE,WAEXwjB,YAAY,EACZ9c,UAAW,aACX6c,KAAM,kDACN,gBACE,OAAO,YAAE,4BAGb,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,mDAER,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,UACX6c,KAAM,kDAER,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAEX0G,UAAW,WACX6c,KAAM,kDAER,CACEvjB,QAAS,OACT,YACE,OAAO,YAAE,SAEX0G,UAAW,UACX6c,KAAM,kDAcR,CACEvjB,QAAS,MACT,YACE,OAAO,YAAE,QAGX0G,UAAW,UACX6c,KAAM,mDAGJE,EAAc,GACdC,EAAa,GACb5W,EAAoB,GACpB4O,EAAyB,GAKzBiI,EAAiB,CAErBC,WAAY,WACZ3f,QAAS,UACTC,IAAK,CAAC,YAAa,WAAY,eAC/B2f,GAAI,CAAC,SAAU,UAAW,SAAU,SAAU,WAAY,UAAW,SAAU,gBAG1D,OAET1T,OAAOnJ,SAAQ,SAAC8c,G,MACxB,EAA2BA,EAAS/c,MAAM,KAAvCgd,EAAU,KAAEC,EAAQ,KAG3BD,EAAuC,QAA1B,EAAAJ,EAAeI,UAAW,QAAIA,EAG3C,GAAGhU,OAAOgU,GAAY/c,SAAQ,SAACrO,G,QAEvBqH,EAAUrH,EAAO0P,QAAQ,gBAAgB,SAACoM,EAAG5H,GAAM,OAAAA,EAAA,iBACnDoX,EAASjkB,EAAQkkB,cAGvB,GAAiB,kBAAbF,EAA8B,CAChC,IAAM,EAAM,OAAQ,UAAGF,IAAX,QAGZL,EAAY,UAAGQ,EAAM,eACnB,W,IAAY,sDACV,IAAMna,EAAS,IAAI,EAAG,WAAH,EAAG,aAAI2H,GAAM,IAAEzR,IAAO,KAGzC,OAFA8J,EAAO9J,QAAUA,EAEV8J,GASb,GAJiB,aAAbka,GACF,OAAQ,UAAGF,IAGI,iBAAbE,EAA6B,CAC/B,IAAM9X,EAAQ,UAAG+X,EAAM,qBACjBE,EAAY,UAAGF,EAAM,0BAErBna,EAAS,OAAQ,UAAGga,IAE1BJ,EAAW1jB,GAAW8J,EAAM,QAC5BgD,EAAkBZ,GAAsB,QAAb,EAAApC,EAAOoC,UAAM,QAAIpC,EAAM,kBAClD4R,EAAuByI,GAA8B,QAAjB,EAAAra,EAAOqa,UAAU,QAAIra,EAAM,+B,6BCttBrE,mkBAEMpD,EAAY,wBAGZ+V,EAAkB,uBAElB2H,EAAmC,CACvCC,KAAM,OACNC,OAAQ,UAIJC,EAAmC,CAAC,aAAc,gBAElDnX,EAAqB,CACzB/C,SAAU,aACVia,OAAQ,UAsBJE,EAA4D,CAChE,CACErqB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,WACtB,CAAE8T,KAAM,OAAQ9T,MAAO,iBACvB,CAAE8T,KAAM,MAAO9T,MAAO,WACtB,CAAE8T,KAAM,KAAM9T,MAAO,WACrB,CAAE8T,KAAM,MAAO9T,MAAO,YACtB,CAAE8T,KAAM,MAAO9T,MAAO,YACtB,CAAE8T,KAAM,MAAO9T,MAAO,aACtB,CAAE8T,KAAM,QAAS9T,MAAO,YACxB,CAAE8T,KAAM,MAAO9T,MAAO,iBAG1B,CACEM,IAAK,4BACLwgB,aAAc,4BACdC,aAAc,aACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,WACLwgB,aAAc,WACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,oDAChBlW,UAAS,EACTmW,gBAAiB2H,GAGbC,EAAwB,CAC5BtlB,OAAQ,eACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf2X,OAAQ,GACRxd,QA7JkC,CAClCwL,MAAO,GACPlH,OAAQ,EACR,YAAa,GACb,YAAa,GACb,cAAe,GACf,cAAe,GACf,gBAAiB,GACjB,aAAc,GACd,gBAAiB,GACjB,iBAAkB,GAClB,4BAA6B,GAC7B,kBAAmB,GACnB,WAAY,GACZ,SAAU,GACV,YAAa,KAkJT6Q,EAAe,CACnBqI,OAAQ,UAeJzY,EAAyB,CAC7B6Y,OAAQ,CACN/V,iBAAkBsN,EAAaqI,OAC/B1V,gBAAiB,SACjBC,aAAczB,EAAmBkX,SAIrC,SAAS5I,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAEhC,a,6BCjNf,+lBAEMJ,EAAY,iBAGZ+V,EAAkB,kBAElBkI,EAA8B,CAClCC,UAAW,YACXC,gBAAiB,kBACjBC,MAAO,QACPC,MAAO,SAIHC,EAA8B,CAAC,YAAa,eAE5C5X,EAAqB,CACzB/C,SAAU,YACVwa,gBAAiB,mBAIb5I,EAAe,CACnBgJ,gBAAiB,mBAebpZ,EAAyB,CAC7BqZ,gBAAiB,CACfvW,iBAAkBsN,EAAagJ,gBAC/BrW,gBAAiB,kBACjBC,aAAczB,EAAmByX,kBAc/BM,EAAuD,CAC3D,CACEhrB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,iBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiBsI,GAGbC,EAAmB,CACvBjmB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,YACfuY,gBAAiB,GACjBpe,QAjF6B,CAC7BwL,MAAO,GACPlH,OAAQ,EACRia,UAAW,GACXC,YAAa,GACbC,eAAgB,GAChBC,YAAa,GACbC,UAAW,KA6Eb,SAAS/J,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAG/C,IAAMsY,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,eACT,CAAEA,MAAO,aACT,CAAEA,MAAO,cACT,CAAEA,MAAO,eACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,YACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,cACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,eAEI,a,6BC3Jf,qYAEa6rB,EAA0B,CACrC,CACEvrB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,cACLwgB,aAAc,cACdC,aAAc,uCACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,UACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,aACvB,CAAE8T,KAAM,OAAQ9T,MAAO,WACvB,CAAE8T,KAAM,KAAM9T,MAAO,YAGzB,CACEM,IAAK,MACLwgB,aAAc,kBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,GACrB,CAAE8T,KAAM,KAAM9T,MAAO,KAGzB,CACEM,IAAK,YACLwgB,aAAc,YACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,eAER,CACExd,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,SAAU9T,MAAO,eACzB,CAAE8T,KAAM,UAAW9T,MAAO,oBAKhC,SAAS6hB,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAoBpB,OAnBK,IAAE/I,QAAQ5B,KACb2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAChB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAIF,IAAMkU,EAAoB,IAAI7J,MACnC,GACA,CACEriB,IAAG,SAACqQ,EAAQ8b,EAAGC,GACb,GAAiB,iBAAND,EAAgB,CACzB,GAAIA,EAAEE,WAAW,OAAQ,MAAO,YAChC,GAAIF,EAAEE,WAAW,SAAU,MAAO,KAEpC,OAAOC,QAAQtsB,IAAIqQ,EAAQ8b,EAAGC,IAEhCG,IAAG,SAAClc,EAAQmc,GACV,OAAO,KAKA7Y,EAAqB,CAChC/C,SAAU,YACVsY,KAAM,MAIF1G,EAAe,CACnB0G,KAAM,UAkBF9W,EAAyB,CAC7Bqa,GAAI,CACFvX,iBAAkBsN,EAAa0G,KAC/B/T,gBAAiB,SACjBC,aAAczB,EAAmBuV,OAK/B7V,EAAoB,CAAC,YAAa,eAIzB,WACb3N,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,YACfwZ,OAAQ,GACRrf,QAAS,CACPsE,OAAQ,EACRkH,MAAO,GACP8T,gBAAiB,GACjBpI,QAAS,GACTqI,MAAO,GACPvF,YAAa,GACbnD,WAAY,EACZ2I,WAAY,GACZC,IAAK,M,6BCrKT,mlBAGM7f,EAAY,YAGZ+V,EAAkB,YAElB+J,EAAwB,CAC5BjL,WAAY,kBAORkL,EAAwB,CAAC,iBAAkB,mBAAoB,oBAE/DrZ,EAAqB,CACzB/C,SAAU,kBAwBNqc,EAAiD,CACrD,CACEvsB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,wBACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,oBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SACN7C,KA3DiB,CACnB,CAAEnH,KAAM,UAAW9T,MAAO,GAC1B,CAAE8T,KAAM,UAAW9T,MAAO,KA2D1B,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,wCACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,mBACLwgB,aAAc,oBACdC,aAAc,iBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,oBACLwgB,aAAc,qBACdC,aAAc,oBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,oBACdC,aAAc,oBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,aACdC,aAAc,iBACdC,KAAM,GACNlD,KAAM,eAER,CACExd,IAAK,QACLwgB,aAAc,SACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,gBACLwgB,aAAc,iBACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,aACLwgB,aAAc,cACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,SACN7C,KA1GW,CACb,CAAEnH,KAAM,WAAY9T,MAAO,GAC3B,CAAE8T,KAAM,SAAU9T,MAAO,GACzB,CAAE8T,KAAM,OAAQ9T,OAAQ,KAyGxB,CACEM,IAAK,UACLwgB,aAAc,UACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KA9HY,CACd,CAAEnH,KAAM,mBAAoB9T,MAAO,oBACnC,CAAE8T,KAAM,aAAc9T,MAAO,cAC7B,CAAE8T,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,mBAAoB9T,MAAO,sBA4HnC,CACEM,IAAK,YACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KA/Hc,CAChB,CAAEnH,KAAM,KAAM9T,MAAO,GACrB,CAAE8T,KAAM,KAAM9T,MAAO,MAkIjB8iB,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiB6J,GAqBbC,EAAa,CACjBxnB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,iBACfoQ,KAAM,GACNC,SAAU,GACVC,SAAU,GAEVnW,QA/Be,CACfsW,gBAAiB,GACjBC,aAASxU,EACTyU,iBAAkB,GAClBC,OAAQ,GACRC,iBAAkB,GAClBC,iBAAkB,GAClBC,kBAAmB,GACnBpL,MAAO,GACPlH,OAAQ,EACRuS,eAAW9U,EACX+U,OAAQ,GACRC,MAAO,GACPC,cAAe,GACfC,WAAY,GACZC,QAAS,GACTC,UAAW,KAkBb,SAASvC,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAI/C,IAAMsY,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,eACT,CAAEA,MAAO,cACT,CAAEA,MAAO,aACT,CAAEA,MAAO,YACT,CAAEA,MAAO,cACT,CAAEA,MAAO,eACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,YACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,aACT,CAAEA,MAAO,cACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,eAEL+sB,EAAkB,CACtBC,OAAQ,gBACRC,QAAS,kBAEX,SAASzH,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,iBAEdkP,EAEM,a,6BCpPf,wmBAIM7Y,EAAY,oBAGZ+V,EAAkB,oBAYlBsK,EAAyD,CAC7D,CACE5sB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,cACLwgB,aAAc,cACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,cACvB,CAAE8T,KAAM,OAAQ9T,MAAO,mBAG3B,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,OACrB,CAAE8T,KAAM,KAAM9T,MAAO,UAGzB,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,QAAS9T,MAAO,SACxB,CAAE8T,KAAM,aAAc9T,MAAO,iBAY7BulB,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,cACT,CAAEA,MAAO,gBAEL8iB,EAAuC,CAC3CC,eAAgB,oDAChBlW,UAAS,EACTmW,gBAAiBkK,GAGbC,EAAgB,CACpB7nB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QAjG+B,CAC/BwL,MAAO,GACPlH,OAAQ,EACR4S,QAAS,GACTmD,YAAa,GACbL,YAAa,GACbmG,OAAQ,KA8FV,SAASvL,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAG/C,IAAMogB,EAAgC,CAAC,aAAc,gBAE/C9Z,EAAqB,CACzB/C,SAAU,cAGN8c,EAA2B,CAC/BxH,WAAY,aACZyH,WAAY,cAER1b,EAAY,CAAC,cACnB,SAAS2T,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,iBAEdkP,EAGM,a,6BCpIf,ifAEa8H,EAAqB,CAChC,CACEltB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,YACLwgB,aAAc,YACdC,aAAc,qBACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,cACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,UAAW9T,MAAO,WAC1B,CAAE8T,KAAM,UAAW9T,MAAO,WAC1B,CAAE8T,KAAM,eAAgB9T,MAAO,kBAGnC,CACEM,IAAK,QACLwgB,aAAc,kBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,OAAQ9T,MAAO,WAYvBytB,EAAY,CAChBnoB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,eACfxM,QAAS,GACT2G,QAAS,CACPsE,OAAQ,EACRkH,MAAO,GACP0L,QAAS,GACTqI,MAAO,GACPrF,UAAW,GACXhV,UAAW,GACXub,YAAa,KAKjB,SAAS7L,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAoBpB,OAnBK,IAAE/I,QAAQ5B,KACb2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAChB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAGT,IAAM+V,EAAuB,CAAC,aAAc,gBAGtCC,EAAuB,CAC3BC,aAAc,eACdhhB,UAAW,YACXvG,QAAS,WAGLiN,EAAqB,CACzB/C,SAAU,eACVlK,QAAS,WAELif,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,eACT,CAAEA,MAAO,aACT,CAAEA,MAAO,eACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,YACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,eAGLoiB,EAAe,CACnB9b,QAAS,WAeL0L,EAAyB,CAC7BnK,QAAS,CACPiN,iBAAkBsN,EAAa9b,QAC/ByO,gBAAiB,UACjBC,aAAczB,EAAmBjN,UAGtB,YAYR,IAAMwnB,EAA0B,CAAC,eAAgB,YAAa,Y,cCvLrEhvB,EAAOD,QAAUkvB,G,6BCEjB,+hBAGMlhB,EAAY,UACZ+V,EAAkB,WAElBoL,EAAuB,GAKvBC,EAAuB,CAAC,UAAW,aAEnC1a,EAAqB,CACzB/C,SAAU,WA8CN0d,EAAgD,CACpD,CACE5tB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,YACLwgB,aAAc,YACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,WACLwgB,aAAc,WACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,eACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,OACvB,CAAE8T,KAAM,OAAQ9T,MAAO,WAMvB8iB,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiBkL,GAGbC,EAAY,CAChB7oB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,UACfsb,IAAK,GACLnhB,QArGsB,CACtBwL,MAAO,GACPlH,OAAQ,EACR+P,UAAW,GACXD,QAAS,GACTgN,WAAY,GACZC,SAAU,GACVC,OAAQ,GACR,aAAc,GACdC,YAAa,KA+Ff,SAAS3M,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAG/C,IAAMsY,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,eACT,CAAEA,MAAO,cACT,CAAEA,MAAO,aACT,CAAEA,MAAO,YACT,CAAEA,MAAO,cACT,CAAEA,MAAO,eACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,YACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,aACT,CAAEA,MAAO,cACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,eAEX,SAASwlB,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAK9B,OAJAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAE5BA,EAAKoJ,WAAa,CAAC,MAAO,cAErBkP,EAEM,a,6BC1Lf,0jBAGM7Y,EAAY,gBAGZ+V,EAAkB,iBAElB6L,EAA6B,CACjCC,WAAY,cAGRC,EAA6B,CAAC,aAAc,QAE5Cpb,EAAqB,CACzB/C,SAAU,cAmBNoe,EAAyD,CAC7D,CACEtuB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,eAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,gBAAiB9T,MAAO,GAChC,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,QAAS9T,MAAO,GACxB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,QAAS9T,MAAO,GACxB,CAAE8T,KAAM,QAAS9T,MAAO,IACxB,CAAE8T,KAAM,KAAM9T,MAAO,IACrB,CAAE8T,KAAM,MAAO9T,MAAO,MAG1B,CACEM,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,OAAQ9T,MAAO,KAG3B,CACEM,IAAK,QACLwgB,aAAc,QACdC,aAAc,kBACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,WACLwgB,aAAc,WACdC,aAAc,iBACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,OACLwgB,aAAc,OACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,aAKJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiB4L,GAIbrJ,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,eACT,CAAEA,MAAO,cACT,CAAEA,MAAO,YACT,CAAEA,MAAO,eACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,YACT,CAAEA,MAAO,aACT,CAAEA,MAAO,qBAEL6uB,EAAkB,CACtBvpB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QA3J+B,CAC/BwL,MAAO,GACPlH,OAAQ,EACRuS,UAAW,KACXrC,OAAQ,GACRqN,cAAe,GACfC,QAAS,GACT/K,MAAO,GACPqD,SAAU,GACV2H,OAAQ,GACRC,gBAAiB,GACjBC,WAAY,GACZC,KAAM,KAkJR,SAAS3J,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,iBAEdkP,EAET,SAAS7D,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAEhC,a,6BC3Lf,qgBAGMJ,EAAY,kBAGZ+V,EAAkB,iBAElBwM,EAA6B,CACjC5K,IAAK,mBACL6K,MAAO,SAIHC,EAA6B,CAAC,iBAAkB,mBAAoB,oBAEpE/b,EAAqB,CACzB/C,SAAU,kBAYN+e,EAAsD,CAC1D,CACEjvB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,gBACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,oDAChBlW,UAAS,EACTmW,gBAAiBuM,GAGbC,EAAkB,CACtBlqB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,iBACf7F,QAhE4B,CAC5BwL,MAAO,GACPlH,OAAQ,EACRgS,gBAAiB,GACjBE,iBAAkB,GAClBE,iBAAkB,KA6Dd8L,EAAoB,CAAC,QAAS,SAAU,YAAa,aAAc,SAAU,OACnF,SAASC,EAAcjY,GACrB,IAAMkY,EAAe,IAAEjgB,IAAI+f,EAAmB,IAAEG,SAChD,OAAkE,IAA3D,IAAEpjB,QAAQmjB,EAAc,IAAEC,QAAQnY,EAAOvH,aAElD,SAAS2R,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAEhC,a,6BC/Ff,+eAGMJ,EAAY,YAGZ+V,EAAkB,YAElBiN,EAAuB,CAC3BrL,IAAK,oBAIDsL,EAAwB,CAAC,iBAAkB,mBAAoB,oBAE/Dvc,EAAqB,CACzB/C,SAAU,kBAYNuf,EAAgD,CACpD,CACEzvB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,gBACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,oDAChBlW,UAAS,EACTmW,gBAAiB+M,GAGbC,EAAY,CAChB1qB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,iBACf7F,QAhEsB,CACtBwL,MAAO,GACPlH,OAAQ,EACRgS,gBAAiB,GACjBE,iBAAkB,GAClBE,iBAAkB,KA8DpB,SAAS9B,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAE/C,IAAMwiB,EAAoB,CAAC,QAAS,SAAU,YAAa,aAAc,SAAU,OACnF,SAASC,EAAcjY,GACrB,IAAMkY,EAAe,IAAEjgB,IAAI+f,EAAmB,IAAEG,SAChD,OAAkE,IAA3D,IAAEpjB,QAAQmjB,EAAc,IAAEC,QAAQnY,EAAOvH,aAEnC,a,6BC/Ff,ufAGMrD,EAAY,aAGZ+V,EAAkB,aAElBqN,EAAyB,CAC7BC,oBAAqB,uBAIjBC,EAAyB,CAAC,sBAAuB,yBAEjD5c,EAAqB,CACzB/C,SAAU,uBAUN4f,EAAkD,CACtD,CACE9vB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,uBACLwgB,aAAc,uBACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,wDAChBlW,UAAS,EACTmW,gBAAiBoN,GAGbC,EAAc,CAClB/qB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,sBACf7F,QAhDwB,CACxBwL,MAAO,GACPlH,OAAQ,EACR+e,qBAAsB,KAgDxB,SAASzO,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAE/C,SAASuY,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,0BAEdkP,EAEM,a,6BCnFf,oeAIM7Y,EAAY,oBACZ+V,EAAkB,WAElB2N,EAAuB,CAC3B9F,OAAQ,SACR/I,WAAY,aACZ8O,SAAU,WACVC,aAAc,cAGVC,EAAuB,CAAC,SAAU,YAElCnd,EAAqB,CACzB/C,SAAU,UAaNmgB,EAAgD,CACpD,CACErwB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,UACLwgB,aAAc,UACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,QACLwgB,aAAc,QACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,OACvB,CAAE8T,KAAM,OAAQ9T,MAAO,UAG3B,CACEM,IAAK,aACLwgB,aAAc,aACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,YAAa9T,MAAO,eAC5B,CAAE8T,KAAM,YAAa9T,MAAO,cAGhC,CACEM,IAAK,+BACLwgB,aAAc,+BACdC,aAAc,qBACdC,KAAM,GACNlD,KAAM,WAKJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiB2N,GAGbC,EAAY,CAChBtrB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,SACf7F,QAhFsB,CACtBwL,MAAO,GACPlH,OAAQ,EACRsf,QAAS,GACTpE,WAAY,GACZD,MAAO,GACPsE,8BAA8B,IA6EhC,SAASjP,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAE/C,SAASyiB,EAAcqB,QAAA,IAAAA,MAAA,IACrB,IAAMC,EAAY,MAAMD,EAAW,4BAEnC,OAA4B,IAArBC,EAAUnhB,SAAoD,IAApC,UAAUmhB,EAAW,UAEzC,a,6BC9Gf,6ZAEMnkB,EAAY,mBAGZ+V,EAAkB,mBAElBqO,EAA+B,CACnCC,OAAQ,SAERC,UAAW,YACXC,SAAU,WACVC,MAAO,SAIHC,EAA+B,CAAC,SAAU,aAE1C/d,EAAqB,CACzB/C,SAAU,UAoBN+gB,EAAwD,CAC5D,CACEjxB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,SACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,KACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,UAAW9T,MAAO,WAC1B,CAAE8T,KAAM,aAAc9T,MAAO,gBAGjC,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,WAAY9T,MAAO,YAC3B,CAAE8T,KAAM,QAAS9T,MAAO,WAG5B,CACEM,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,oBAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,SACtB,CAAE8T,KAAM,QAAS9T,MAAO,SAG5B,CACEM,IAAK,eACLwgB,aAAc,eACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,MACrB,CAAE8T,KAAM,KAAM9T,MAAO,SAGzB,CACEM,IAAK,QACLwgB,aAAc,QACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,MACrB,CAAE8T,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,aAAc9T,MAAO,gBAGjC,CACEM,IAAK,qBACLwgB,aAAc,qBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,QAAS9T,MAAO,WAG5B,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,eAIJwH,EAAoB,CACxBhgB,OAAQ,eACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,SAEf0e,IAAK,GACLC,SAAU,GACVxkB,QAxJ8B,CAC9BwL,MAAO,GACPlH,OAAQ,EACRmgB,OAAQ,GACRR,OAAQ,GACRxC,WAAY,GACZ9U,OAAQ,GACR+X,YAAa,GACbC,UAAW,GACXC,WAAY,GACZC,aAAc,GACdC,MAAO,GACPC,mBAAoB,GACpBzD,OAAQ,KA8IV,SAAS1M,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAoBhC,a,6BCzMf,igBAIMJ,EAAY,mBAGZ+V,EAAkB,mBAElBqP,EAAwB,CAC5BzN,IAAK,YACL0N,IAAK,aAIDC,EAA+B,CAAC,YAAa,cAAe,aAE5D5e,EAAqB,CACzB/C,SAAU,aAkBN4hB,EAAiD,CACrD,CACE9xB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,aACLwgB,aAAc,aACdC,aAAc,cACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,eACLwgB,aAAc,eACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,cACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,WAAY9T,MAAO,YAC3B,CAAE8T,KAAM,UAAW9T,MAAO,WAC1B,CAAE8T,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,YAAa9T,MAAO,aAC5B,CAAE8T,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,YAAa9T,MAAO,aAC5B,CAAE8T,KAAM,WAAY9T,MAAO,cAG/B,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,qBACLwgB,aAAc,qBACdC,aAAc,gBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,uBACLwgB,aAAc,uBACdC,aAAc,kBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,SAAU9T,MAAO,WAG7B,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,OAAQ9T,MAAO,WAMvB8iB,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiBoP,GAGbC,EAAa,CACjB/sB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,YACf7F,QAtIuB,CACvBwL,MAAO,GACPlH,OAAQ,EACR,aAAc,GACd,eAAgB,GAChB,aAAc,GACd,iBAAkB,GAClB,aAAc,GACd,cAAe,GACf,cAAe,GACf,qBAAsB,GACtB,uBAAwB,KA8H1B,SAASsQ,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAE/C,SAASuY,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,UAEdkP,EAEM,a,6BCzKf,qYAGamG,EAA8C,CACzD,CACEvrB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,IAEP,CACE5gB,IAAK,YACLwgB,aAAc,YACdC,aAAc,gBACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,UAIV,SAAS+D,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAoBpB,OAnBK,IAAE/I,QAAQ5B,KACb2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAChB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAIF,IAAMkU,EAAoB,CAC/BzK,QAAS,WAIE9N,EAAqB,CAChC/C,SAAU,YACV8hB,aAAc,kBAIVlQ,EAAe,CACnBmQ,eAAgB,kBAeZvgB,EAAyB,CAC7BugB,eAAgB,CACdzd,iBAAkBsN,EAAamQ,eAC/Bxd,gBAAiB,iBACjBC,aAAczB,EAAmB+e,eAI/Brf,EAAoB,CAAC,YAAa,WAIzB,WACb3N,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,YACfyf,eAAgB,GAChBtlB,QAAS,CACPsE,OAAQ,EACRkH,MAAO,GACPgK,UAAW,GACXb,OAAQ,M,6BChHZ,+eAGM/U,EAAY,UAGZ+V,EAAkB,WAElBiN,EAAuB,CAC3BtC,WAAY,cAIRiF,EAAuB,CAAC,aAAc,QAEtCjf,EAAqB,CACzB/C,SAAU,cAoBNuf,EAAgD,CACpD,CACEzvB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,YAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,QACLwgB,aAAc,QACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,QAAS9T,MAAO,GACxB,CAAE8T,KAAM,OAAQ9T,MAAO,KAG3B,CACEM,IAAK,QACLwgB,aAAc,QACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,WACLwgB,aAAc,WACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,WACtB,CAAE8T,KAAM,MAAO9T,MAAO,YACtB,CAAE8T,KAAM,MAAO9T,MAAO,aAG1B,CACEM,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,UAAW9T,MAAO,GAC1B,CAAE8T,KAAM,UAAW9T,MAAO,MAM1B8iB,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiB+M,GAGbC,EAAY,CAChB1qB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QA7IsB,CACtBwL,MAAO,GACPlH,OAAQ,EACRkhB,gBAAiB,GACjBxL,YAAa,GACbyL,OAAQ,GACRC,OAAQ,GACRC,MAAO,GACPC,QAAS,GACTC,cAAe,GACf9O,MAAO,GACPqD,SAAU,GACV0L,WAAY,GACZC,cAAe,KAmIjB,SAASnR,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAG/C,SAASuY,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,iBAEdkP,EAEM,a,+sBC9KT7Y,EAAY,UACZ+V,EAAkB,YAElBqQ,EAAwB,CAAC,UAEzB1f,EAAqB,CACzB/C,SAAU,UAGN0iB,EAAwB,CAC5BhC,OAAQ,SACRC,UAAW,aAGPgC,EAAa,CACjB7tB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,SACf7F,QAAS,CACPwL,MAAO,IACPlH,OAAQ,EACRmgB,OAAQ,GACRR,OAAQ,GACRxC,WAAY,GACZ9U,OAAQ,GACRwZ,QAAS,GACTxB,UAAW,GACXE,aAAc,GACdC,MAAO,GACPC,mBAAoB,GACpBqB,KAAM,GACN9E,OAAQ,KAIN+E,EAAiD,CACrD,CACEhzB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,SACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,KACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,UAAW9T,MAAO,WAC1B,CAAE8T,KAAM,aAAc9T,MAAO,gBAGjC,CACEM,IAAK,UACLwgB,aAAc,UACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,aAAc9T,MAAO,gBAGjC,CACEM,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,eACLwgB,aAAc,eACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,MACrB,CAAE8T,KAAM,MAAO9T,MAAO,SAG1B,CACEM,IAAK,QACLwgB,aAAc,QACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,MACrB,CAAE8T,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,aAAc9T,MAAO,gBAGjC,CACEM,IAAK,qBACLwgB,aAAc,qBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,QAAS9T,MAAO,SACxB,CAAE8T,KAAM,SAAU9T,MAAO,YAG7B,CACEM,IAAK,OACLwgB,aAAc,OACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,WAAY9T,MAAO,YAC3B,CAAE8T,KAAM,WAAY9T,MAAO,YAC3B,CAAE8T,KAAM,SAAU9T,MAAO,YAG7B,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,eAIJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiBsQ,GAGnB,SAASzR,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GACpB,IAAK,kBAAQ3K,GAAU,CACrB2K,EAAOa,MAAQ,cAAIxL,EAAS,QAAS,KAAO,GAC5C2K,EAAOrG,OAAS,cAAItE,EAAS,SAAU,IAAM,EAC7C,IAAMsmB,EAAW,eAAKtmB,EAAS,CAAC,SAAU,UACpC,EAAiB,GAavB,GAZA,kBAAQsmB,GAAU,SAACnmB,EAAW9M,GACxB,kBAAQ8M,IACVA,EAAO,kBAAQA,IACNyC,OAAS,GAChB,EAAQZ,KAAK,CAAEC,KAAM5O,EAAKyO,MAAO,eAAK3B,GAAMiO,MAAM,EAAG,KAE9C,mBAASjO,KACb,kBAAQ,cAAIA,EAAM,QAAS,MAC9B,EAAQ6B,KAAK,CAAEC,KAAM5O,EAAKyO,MAAO,CAAC,cAAI3B,EAAM,QAAS,KAAKiO,MAAM,EAAG,SAIrE,EAAQxL,OAAS,EAOnB,OANA+H,EAAO0D,QAAU,EAAQ5L,KAAI,SAACtC,GAC5B,MAAkB,WAAdA,EAAK8B,KACP,OAAY9B,GAAI,CAAEomB,OAAO,IAEpBpmB,KAEFwK,EAGX,OAAOA,EAGT,SAAS4N,EAAgBC,GACvB,IAAMC,EAAY,oBAAUD,GAI5B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,SAAU,gBAExBkP,EAGM,a,6BCrNf,seAIM7Y,EAAY,UACZ+V,EAAkB,WAElB6Q,EAAuB,CAE3BjJ,KAAM,QAIFkJ,EAAuB,CAAC,aAAc,gBAEtCngB,EAAqB,CACzB/C,SAAU,cAuBNmjB,EAAgD,CACpD,CACErzB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,OACLwgB,aAAc,OACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,iBAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,WACtB,CAAE8T,KAAM,OAAQ9T,MAAO,iBACvB,CAAE8T,KAAM,MAAO9T,MAAO,WACtB,CAAE8T,KAAM,KAAM9T,MAAO,WACrB,CAAE8T,KAAM,MAAO9T,MAAO,YACtB,CAAE8T,KAAM,MAAO9T,MAAO,YACtB,CAAE8T,KAAM,MAAO9T,MAAO,aACtB,CAAE8T,KAAM,QAAS9T,MAAO,YACxB,CAAE8T,KAAM,MAAO9T,MAAO,iBAG1B,CACEM,IAAK,4BACLwgB,aAAc,4BACdC,aAAc,aACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,WACLwgB,aAAc,WACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,oDAChBlW,UAAS,EACTmW,gBAAiB2Q,GAGbC,EAAY,CAChBtuB,OAAQ,eACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QApKsB,CACtBwL,MAAO,GACPlH,OAAQ,EACRsiB,KAAM,GACN,YAAa,GACb,YAAa,GACb,cAAe,GACf,cAAe,GACf,gBAAiB,GACjB,aAAc,GACd,gBAAiB,GACjB,iBAAkB,GAClB,4BAA6B,GAC7B,kBAAmB,GACnB,WAAY,GACZ,SAAU,GACV,YAAa,KAuJf,SAAShS,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAQ/C,SAASuY,EAAgBC,GACvB,IAAMC,EAAY,YAAYD,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,WAEdkP,EAEM,a,wuBCxMT7Y,EAAY,eAGZ+V,EAAkB,gBAOlBkR,EAA+C,CACnD,CACExzB,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,aACNmD,IAAK,GAEP,CACE3gB,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiB8Q,GAEbC,EAA4B,CAAC,eAAgB,kBAE7CC,EAAiB,CACrB1uB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,eACf7F,QAAS,CACPwL,MAAO,GACPlH,OAAQ,EACR+J,QAAS,EAAF,GA1CY,CACrB,iBAAkB,GAClB,mBAAoB,OA4CtB,SAASuG,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAE/C,SAASuY,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,iBAEdkP,EAET,IAAMuO,EAA2B,CAC/BC,IAAK,eACLxF,WAAY,gBAERnb,EAAqB,CACzB/C,SAAU,gBAEG,a,6BCvEf,ugBAIM3D,EAAY,qBAGZ+V,EAAkB,oBAElBuR,EAA0B,CAC9BC,YAAa,cACbC,YAAa,eAGTC,EAAgC,CAAC,cAAe,iBAEhD/gB,EAAqB,CACzB/C,SAAU,eAaN+jB,EAAmD,CACvD,CACEj0B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,SACLwgB,aAAc,SACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiBuR,GAGbC,EAAe,CACnBlvB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,cACf7F,QAxEyB,CACzBwL,MAAO,GACPlH,OAAQ,EACR,SAAU,GACV,gBAAiB,GACjB,YAAa,GACb,kBAAmB,KAqErB,SAASsQ,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAE/C,SAASuY,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,kBAEdkP,EAEM,a,6BCxGf,+dAEM7Y,EAAY,UACZ+V,EAAkB,WAiBlB6R,EAAgD,CACpD,CACEn0B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,SACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,KACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,UAAW9T,MAAO,WAC1B,CAAE8T,KAAM,aAAc9T,MAAO,gBAGjC,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,WAAY9T,MAAO,YAC3B,CAAE8T,KAAM,QAAS9T,MAAO,WAG5B,CACEM,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,oBAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,SACtB,CAAE8T,KAAM,QAAS9T,MAAO,SAG5B,CACEM,IAAK,eACLwgB,aAAc,eACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,MACrB,CAAE8T,KAAM,KAAM9T,MAAO,SAGzB,CACEM,IAAK,QACLwgB,aAAc,QACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,MACrB,CAAE8T,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,aAAc9T,MAAO,gBAGjC,CACEM,IAAK,qBACLwgB,aAAc,qBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,QAAS9T,MAAO,WAG5B,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiByR,GAEbC,EAAY,CAChBpvB,OAAQ,eACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,SACf7F,QA3JsB,CACtBwL,MAAO,GACPlH,OAAQ,EACRmgB,OAAQ,GACRR,OAAQ,GACRxC,WAAY,GACZ9U,OAAQ,GACR+X,YAAa,GACbC,UAAW,GACXC,WAAY,GACZC,aAAc,GACdC,MAAO,GACPC,mBAAoB,GACpBzD,OAAQ,KAgJJhJ,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,eACT,CAAEA,MAAO,cACT,CAAEA,MAAO,eACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,YACT,CAAEA,MAAO,iBAEX,SAAS6hB,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAG/C,IAAM0nB,EAAuB,CAAC,SAAU,aAElCC,EAAuB,CAC3BhD,UAAW,YACXV,OAAQ,UAEJ3d,EAAqB,CACzB/C,SAAU,UAEG,a,gnBCjGTqkB,EAAsB,CAC1B,CACEv0B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,iBAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,OACdC,KAAM,GACNjT,UAAU,EACV+P,KAAM,SACN7C,KAvIkB,CACpB,CAAEnH,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,OAAQ9T,MAAO,KAsIvB,CACEM,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,YACdC,KAAM,GACNjT,UAAU,EACV+P,KAAM,SACN7C,KA1GmB,CACrB,CAAEnH,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,MAAO9T,MAAO,SAwGtB,CACEM,IAAK,aACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNjT,UAAU,EACV+P,KAAM,SACN7C,KAvIe,CACjB,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,QAAS9T,MAAO,GACxB,CAAE8T,KAAM,WAAY9T,MAAO,GAC3B,CAAE8T,KAAM,UAAW9T,MAAO,GAC1B,CAAE8T,KAAM,UAAW9T,MAAO,GAC1B,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,UAAW9T,MAAO,GAC1B,CAAE8T,KAAM,QAAS9T,MAAO,GACxB,CAAE8T,KAAM,SAAU9T,MAAO,GACzB,CAAE8T,KAAM,MAAO9T,MAAO,IACtB,CAAE8T,KAAM,QAAS9T,MAAO,IACxB,CAAE8T,KAAM,QAAS9T,MAAO,IACxB,CAAE8T,KAAM,YAAa9T,MAAO,IAC5B,CAAE8T,KAAM,QAAS9T,MAAO,IACxB,CAAE8T,KAAM,QAAS9T,MAAO,IACxB,CAAE8T,KAAM,SAAU9T,MAAO,MAwHzB,CACEM,IAAK,WACLwgB,aAAc,YACdC,aAAc,UACdC,KAAM,GACNjT,UAAU,EACV+P,KAAM,SACN7C,KAzGa,CACf,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,MAAO9T,MAAO,KAyGtB,CACEM,IAAK,WACLwgB,aAAc,WACdC,aAAc,OACdC,KAAM,GACNjT,UAAU,EACV+P,KAAM,SACN7C,KA9Ja,CACf,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,OAAQ9T,MAAO,KA8JvB,CACEM,IAAK,YACLwgB,aAAc,aACdC,aAAc,SACdC,KAAM,GACNjT,UAAU,EACV+P,KAAM,SACN7C,KAtHc,CAChB,CAAEnH,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,KAAM9T,MAAO,KAsHrB,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdC,KAAM,GACNjT,UAAU,EACV+P,KAAM,SACN7C,KAvLW,CACb,CAAEnH,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,KAqLtB,CACEM,IAAK,UACLwgB,aAAc,UACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAxJY,CACd,CAAEnH,KAAM,aAAc9T,MAAO,cAC7B,CAAE8T,KAAM,eAAgB9T,MAAO,gBAC/B,CAAE8T,KAAM,aAAc9T,MAAO,cAC7B,CAAE8T,KAAM,eAAgB9T,MAAO,kBAsJ/B,CACEM,IAAK,iBACLwgB,aAAc,kBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAzJmB,CACrB,CAAEnH,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,OAAQ9T,MAAO,UAyJvB,CACEM,IAAK,OACLwgB,aAAc,MACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,SACdC,KAAM,mDACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,mDACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,aACdC,aAAc,OACdC,KAAM,sDACNlD,KAAM,SAER,CACExd,IAAK,kBACLwgB,aAAc,oBACdC,aAAc,QACdC,KAAM,mDACNlD,KAAM,UAIJgX,EAAY,CAChBxvB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QAAS,EAAF,GAzLS,CAChB6W,UAAW,GACXiR,cAAe,GACfC,KAAM,GACNvT,OAAQ,GACRlQ,OAAQ,EACRkH,MAAO,GACPwc,gBAAiB,GACjBC,SAAU,GACVC,cAAe,GACfC,WAAY,GACZC,eAAgB,GAChBtN,OAAQ,GACRuN,QAAS,GACTtN,UAAW,GACXuN,UAAW,GACXpR,QAAS,GACTqR,eAAgB,GAChBvO,YAAa,GACbwO,SAAU,MAyKNC,EAAuB,CAAC,aAAc,eAAgB,OAE5D,SAAS7T,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAoBpB,OAnBK,IAAE/I,QAAQ5B,KACb2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAChB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAET,SAAS8X,EAAcqB,QAAA,IAAAA,MAAA,IACrB,IAAMC,EAAY,IAAEpxB,IAAImxB,EAAW,4BACnC,OACuB,IAArBC,EAAUnhB,UACgC,IAAxC,IAAErD,QAAQwkB,EAAW,gBAA8D,IAAtC,IAAExkB,QAAQwkB,EAAW,cACzB,IAAxC,IAAExkB,QAAQwkB,EAAW,gBAAkE,IAA1C,IAAExkB,QAAQwkB,EAAW,iBAGzE,SAASxL,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAapJ,EAAKoJ,WAAW9G,KAAI,SAAC3Q,GAAM,OAAA42B,EAAqB52B,IAArB,QAExC2mB,EAET,IAAMiQ,EAAuB,CAC3B7P,WAAY,aACZ8P,SAAU,eACVtwB,OAAQ,UAEJiO,EAAqB,CACzB/C,SAAU,cAEG,a,6BC/Sf,+aAEM3D,EAAY,UAGZ+V,EAAkB,WAElBiT,EAAuB,CAC3BC,YAAa,cAGTC,EAAuB,CAAC,aAAc,gBAEtCxiB,EAAqB,CACzB/C,SAAU,cAcNwlB,EAAgD,CACpD,CACE11B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,cACLwgB,aAAc,cACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,OAAQ9T,MAAO,KAG3B,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,GACrB,CAAE8T,KAAM,KAAM9T,MAAO,KAGzB,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiBgT,GAGbC,EAAY,CAChB3wB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QA1FsB,CACtBwL,MAAO,GACPlH,OAAQ,EACR0V,YAAa,GACbkO,cAAe,GACfe,WAAY,GACZ5O,YAAa,GACb6O,OAAQ,KAsFV,SAAStU,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAEhC,a,6BCpHf,2eAIMJ,EAAY,SACZ+V,EAAkB,UAQlBwT,EAA+C,CACnD,CACE91B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,eAIJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiBoT,GAGbC,EAAW,CACf/wB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,kBACf7F,QA/CqB,CACrBwL,MAAO,GACPlH,OAAQ,EACR+kB,iBAAkB,KA+CpB,SAASzU,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAG/C,IAAMspB,EAAsB,CAAC,kBAAmB,qBAE1ChjB,EAAqB,CACzB/C,SAAU,mBAGNgmB,EAAsB,CAC1BC,gBAAiB,kBACjBC,gBAAiB,mBAEnB,SAASlR,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,sBAEdkP,EAEM,a,6BC5Ef,+aAEM7Y,EAAY,UACZ+V,EAAkB,WAElB+T,EAAuB,CAC3BC,uBAAwB,0BAGpBC,EAAuB,CAAC,yBAA0B,4BAElDtjB,EAAqB,CACzB/C,SAAU,0BAgBNsmB,EAAgD,CACpD,CACEx2B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,4BACLwgB,aAAc,4BACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,8BACLwgB,aAAc,8BACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,4BACLwgB,aAAc,4BACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,eACLwgB,aAAc,eACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,UACtB,CAAE8T,KAAM,OAAQ9T,MAAO,SAG3B,CACEM,IAAK,eACLwgB,aAAc,eACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,SAAU9T,MAAO,OACzB,CAAE8T,KAAM,QAAS9T,MAAO,SAG5B,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,cACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiB8T,GAGbC,EAAY,CAChBzxB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,yBACf7F,QA1GsB,CACtBwL,MAAO,GACPlH,OAAQ,EACR,4BAA6B,GAC7B,8BAA+B,GAC/B,4BAA6B,GAC7B,eAAgB,GAChB,eAAgB,GAChB,SAAU,GACV,SAAU,KAoGZ,SAASsQ,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAEhC,a,2tBC9HTJ,EAAY,UACZ+V,EAAkB,WAQlBoU,EAAgD,CACpD,CACE12B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,6BACLwgB,aAAc,6BACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,2BACLwgB,aAAc,2BACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,oBACLwgB,aAAc,oBACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,eAIJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiBgU,GAGbC,EAAY,CAChB3xB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,wBACf7F,QAAS,EAAF,CACLwL,MAAO,GACPlH,OAAQ,GA/DY,CACtB,6BAA8B,GAC9B,2BAA4B,GAC5B,oBAAqB,MAiEvB,SAASsQ,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAG/C,IAAMiqB,EAAuB,CAAC,wBAAyB,2BAEjD3jB,EAAqB,CACzB/C,SAAU,yBAGN2mB,EAAuB,CAC3BC,oBAAqB,wBACrBC,oBAAqB,yBAEvB,SAAS7R,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,0BAEdkP,EAEM,a,6BChGf,8eAIM7Y,EAAY,aACZ+V,EAAkB,aAElB0U,EAAyB,CAC7B9S,IAAK,oBAGD+S,EAAyB,CAAC,iBAAkB,oBAE5ChkB,EAAqB,CACzB/C,SAAU,kBAcNgnB,EAAkD,CACtD,CACEl3B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,gBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,oBACLwgB,aAAc,oBACdC,aAAc,gBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,QACLwgB,aAAc,QACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,UAKJgF,EAAuC,CAC3CC,eAAgB,oDAChBlW,UAAS,EACTmW,gBAAiBwU,GAGb5D,EAAY,CAChBtuB,OAAQ,eACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,iBACf7F,QAhFwB,CACxBwL,MAAO,GACPlH,OAAQ,EACRgS,gBAAiB,GACjBE,iBAAkB,GAClBE,iBAAkB,GAClBE,kBAAmB,GACnBG,MAAO,KA4ET,SAASnC,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAQ/C,SAASuY,EAAgBC,GACvB,IAAMC,EAAY,YAAYD,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,OAGvBsY,EAEM,a,ylBChET+R,EAA0B,CAC9B,CACEn3B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,cACLwgB,aAAc,eACdC,aAAc,OACdjD,KAAM,cAER,CACExd,IAAK,eACLwgB,aAAc,eACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAlFkB,CACpB,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,aAAc9T,OAAQ,KA+E9B,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAlFiB,CACnB,CAAEnH,KAAM,QAAS9T,MAAO,GACxB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,OAAQ9T,OAAQ,KAiFxB,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdC,KAAM,GACNjT,UAAU,EACV+P,KAAM,SACN7C,KArFW,CACb,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,QAAS9T,MAAO,GACxB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,QAAS9T,OAAQ,KAmFzB,CACEM,IAAK,QACLwgB,aAAc,QACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,WACLwgB,aAAc,WACdC,aAAc,+CACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KApGY,CACd,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,WAAY9T,OAAQ,KAmG5B,CACEM,IAAK,UACLwgB,aAAc,UACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAtGY,CACd,CAAEnH,KAAM,YAAa9T,MAAO,aAC5B,CAAE8T,KAAM,eAAgB9T,MAAO,gBAC/B,CAAE8T,KAAM,aAAc9T,MAAO,gBAqG7B,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAxGgB,CAClB,CAAEnH,KAAM,KAAM9T,MAAO,OACrB,CAAE8T,KAAM,KAAM9T,MAAO,WA0GjB03B,EAAgB,CACpBpyB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QAAS,EAAF,GA/Ga,CACpBga,YAAa,GACb0Q,aAAc,GACdC,YAAa,GACbnW,OAAQ,GACRuC,MAAO,GACPqD,SAAU,GACV0H,QAAS,GACTtW,MAAO,GACPlH,OAAQ,EACR4S,QAAS,GACTmD,YAAa,MAuGf,SAASzF,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAqBpB,OApBK,IAAE/I,QAAQ5B,KACb2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAEhB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAGT,IAAMigB,EAA2B,CAAC,aAAc,gBAE1CC,EAA2B,CAC/B7nB,OAAQ,cAGJsD,EAAqB,CACzB/C,SAAU,aACVunB,QAAS,gBAGL/lB,EAAyB,CAC7BgmB,QAAS,CACPljB,iBAAkB,cAClBC,gBAAiB,UACjBC,aAAc,eACdC,aAAc,gBAEhBgjB,KAAM,CACJnjB,iBAAkB,kBAClBC,gBAAiB,OACjBC,aAAc,SACdC,aAAc,WAGH,a,6BC3Mf,mfAIMpI,EAAY,WAGZ+V,EAAkB,YAElBsV,EAAwB,CAC5BC,UAAW,cAGPC,EAAwB,CAAC,cAEzB7kB,EAAqB,CACzB/C,SAAU,cAaN6nB,EAAiD,CACrD,CACE/3B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,eACLwgB,aAAc,eACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiBqV,GAGbC,EAAa,CACjBhzB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QAxEuB,CACvBwL,MAAO,GACPlH,OAAQ,EACRuS,UAAW,GACXyU,aAAc,GACdC,iBAAkB,GAClBC,QAAS,KAqEX,SAAS5W,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAE/C,SAASuY,EAAgBC,GAKvB,OAJkB,IAAEjW,UAAUiW,GAMjB,a,6BCvGf,kfAEM5Y,EAAY,cAGZ+V,EAAkB,eAElB8V,EAA2B,GAM3BC,EAA2B,CAAC,kBAAmB,aAE/CplB,EAAqB,CACzB/C,SAAU,mBAyBNooB,EAAoD,CACxD,CACEt4B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,YACLwgB,aAAc,YACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,eACLwgB,aAAc,eACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,QAAS9T,MAAO,SACxB,CAAE8T,KAAM,MAAO9T,MAAO,SAG1B,CACEM,IAAK,YACLwgB,aAAc,YACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,UAAW9T,MAAO,WAC1B,CAAE8T,KAAM,OAAQ9T,MAAO,UAG3B,CACEM,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,eAER,CACExd,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,aACdC,KAAM,GACNlD,KAAM,eAER,CACExd,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,eAER,CACExd,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,eAER,CACExd,IAAK,OACLwgB,aAAc,OACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,WACLwgB,aAAc,WACdC,aAAc,gBACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,kBACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,WACLwgB,aAAc,WACdC,aAAc,iBACdC,KAAM,GACNlD,KAAM,eAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,iBACdC,KAAM,GACNlD,KAAM,UAKJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiB4V,GAGbC,EAAgB,CACpBvzB,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,kBACf7F,QAzK0B,CAC1BwL,MAAO,GACPlH,OAAQ,EACRunB,UAAW,GACXC,cAAe,GAEfC,UAAW,GACXC,gBAAiB,GACjBC,aAAc,GACdC,UAAW,GACXC,eAAgB,KAChBC,eAAgB,KAChBC,gBAAiB,KACjBC,iBAAkB,KAClBC,KAAM,GACNC,SAAU,GACVC,YAAa,GACbC,SAAU,KACVC,YAAa,KA0Jf,SAAS/X,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GACpBA,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/C2K,EAAOkhB,UAAY,IAAEl5B,IAAIqN,EAAS,YAAa,KAAO,GACtD2K,EAAOmhB,cAAgB,IAAEn5B,IAAIqN,EAAS,gBAAiB,KAAO,GAC9DA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,QAAS,gBAAiB,cAC/D,IAAM4sB,EAAwB,GAgB9B,OAfA,IAAE1sB,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChBgqB,EAAev5B,GAAO,IAAEqZ,KAAKvM,IAEtB,IAAEoG,SAASpG,IAChB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF6qB,EAAev5B,GAAO,IAAEV,IAAIwN,EAAM,WAE3B,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCysB,EAAev5B,GAAO8M,MAG1BwK,EAAOiiB,eAAiBA,EACjBjiB,EAGT,IAAMkiB,EAAY,CAChB,aAAc,WACd,eAAgB,WAChB,cAAe,cACf,WAAY,WACZ,cAAe,WACf,eAAgB,YAChB,WAAY,WACZ,eAAgB,aAChB,aAAc,aACd,mBAAoB,YAEP,a,6BCtOf,+aAEMjtB,EAAY,UAGZ+V,EAAkB,WAElBmX,EAAuB,GAKvBC,EAAuB,CAAC,QAAS,WAEjCzmB,EAAqB,CACzB/C,SAAU,SAaNypB,EAAgD,CACpD,CACE35B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,SACLwgB,aAAc,SACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,WACLwgB,aAAc,WACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,QACLwgB,aAAc,QACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,YACtB,CAAE8T,KAAM,MAAO9T,MAAO,gBAMtB8iB,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiBiX,GAGbC,EAAY,CAChB50B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,QACfqnB,QAAS,GACTC,QAAS,GACTntB,QA/EsB,CACtBwL,MAAO,GACPlH,OAAQ,EACR,SAAU,GACV,WAAY,GACZ,kBAAmB,GACnB8oB,MAAO,KA4ET,SAASxY,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAoBhC,a,6BC1Hf,ubAEMJ,EAAY,YACZ+V,EAAkB,aAElB0X,EAAyB,CAC7BC,QAAS,gBAGLC,EAAyB,CAAC,eAAgB,kBAE1CjnB,EAAqB,CACzB/C,SAAU,gBAgBNiqB,EAAkD,CACtD,CACEn6B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,SACLwgB,aAAc,SACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,OACLwgB,aAAc,OACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,QAAS9T,MAAO,SACxB,CAAE8T,KAAM,MAAO9T,MAAO,SAG1B,CACEM,IAAK,oBACLwgB,aAAc,oBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,2BACvB,CAAE8T,KAAM,OAAQ9T,MAAO,2BAG3B,CACEM,IAAK,OACLwgB,aAAc,OACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,kBAIJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiByX,GAGbC,EAAc,CAClBp1B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,eACf7F,QAzGwB,CACxBwL,MAAO,GACPlH,OAAQ,EACR,SAAU,GACV,iBAAkB,GAClB,mBAAoB,GACpBuM,KAAM,GACN,oBAAqB,GACrB,aAAc,GACd+V,KAAM,KAmGR,SAAShS,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAEhC,a,6BC/Hf,mbAEMJ,EAAY,WACZ+V,EAAkB,YAElB+X,EAAwB,CAC5BC,UAAW,mBAGPC,EAAwB,CAAC,kBAAmB,qBAE5CtnB,EAAqB,CACzB/C,SAAU,mBAcNsqB,EAAiD,CACrD,CACEx6B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,SACLwgB,aAAc,SACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,uBACLwgB,aAAc,uBACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,sBACLwgB,aAAc,sBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,oBACLwgB,aAAc,oBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,eAKJgF,EAAuC,CAC3CC,eAAgB,mDAChBlW,UAAS,EACTmW,gBAAiB8X,GAGbC,EAAa,CACjBz1B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,kBACf7F,QAhFuB,CACvBwL,MAAO,GACPlH,OAAQ,EACR,SAAU,GACV,iBAAkB,GAClB,sBAAuB,GACvB,sBAAuB,GACvB,oBAAqB,KA4EvB,SAASsQ,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAEhC,a,omBClFT+tB,EAAmC,CACvC,CACE16B,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,qBACLwgB,aAAc,qBACdC,aAAc,aACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,oBACLwgB,aAAc,oBACdC,aAAc,aACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,OACLwgB,aAAc,OACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,iBAER,CACExd,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAvDwB,CAC1B,CAAEnH,KAAM,MAAO9T,MAAO,WACtB,CAAE8T,KAAM,OAAQ9T,MAAO,iBACvB,CAAE8T,KAAM,MAAO9T,MAAO,WACtB,CAAE8T,KAAM,KAAM9T,MAAO,WACrB,CAAE8T,KAAM,MAAO9T,MAAO,YACtB,CAAE8T,KAAM,MAAO9T,MAAO,YACtB,CAAE8T,KAAM,MAAO9T,MAAO,aACtB,CAAE8T,KAAM,QAAS9T,MAAO,YACxB,CAAE8T,KAAM,MAAO9T,MAAO,kBAkDlBi7B,EAAmB,CACvB31B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QAAS,CACPwL,MAAO,GACPlH,OAAQ,EACR6X,oBAAoB,EACpBC,gBAAgB,EAChBpC,YAAa,CAAC,IACd3L,QAAS,EAAF,GA7DoB,CAC7BuY,KAAM,GACN,gBAAiB,GACjB,iBAAkB,GAClB,qBAAsB,GACtB,oBAAqB,OA4DvB,SAAShS,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GACpB,IAAK,IAAE/I,QAAQ5B,GAGb,GAFA2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC3CA,EAAQmc,oBACV,GAAI,IAAE1a,QAAQzB,EAAQga,aAAc,CAClC,IAAMA,EAAc,IAAEvN,QAAQzM,EAAQga,aAClC,IAAEtN,KAAKsN,GAAapX,OAAS,IAC/B+H,EAAOqP,YAAc,IAAEtN,KAAKsN,GAAa5L,MAAM,EAAG,YAGjD,GAAIpO,EAAQoc,eAAgB,CACjC,IAAM,EAAiB,GACvB,IAAElc,QAAQF,EAAQqO,SAAS,SAAClO,EAAW9M,GACjC,EAAQuP,OAAS,IAGjB,IAAEnB,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,GAChB,EAAQZ,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAEzB,KAAKvM,GAAMiO,MAAM,EAAG,KAEjD,IAAE7H,SAASpG,KACf,IAAEyB,QAAQ,IAAEjP,IAAIwN,EAAM,QAAS,MAClC,EAAQ6B,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAExb,IAAIwN,EAAM,QAAS,IAAIiO,MAAM,EAAG,UAItE,EAAQxL,OAAS,IACnB+H,EAAO0D,QAAU,GAIvB,OAAO1D,EAGT,IAAMsjB,EAA8B,CAAC,aAAc,eAAgB,qBAAsB,qBAEnFC,EAA8B,CAClCrV,WAAY,cAGRvS,EAAqB,CACzB/C,SAAU,cAGZ,SAASgV,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,iBAEdkP,EAGM,a,6BCtIf,qVAEa0V,EAAqB,CAChC,CACE96B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,eACLwgB,aAAc,iBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,QACLwgB,aAAc,QACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,WACLwgB,aAAc,WACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,UAIJud,EAAY,CAChB/1B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,eACfxM,QAAS,GACT2G,QAAS,CACPsE,OAAQ,EACRkH,MAAO,GACP6iB,aAAc,GACdtX,MAAO,GACPqD,SAAU,KAId,SAASxF,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAoBpB,OAnBK,IAAE/I,QAAQ5B,KACb2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAChB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAGT,IAAM2jB,EAAuB,CAAC,eAAgB,UAGxCC,EAAuB,GAKvBjW,EAAkB,CACtB,CAAEvlB,MAAO,cACT,CAAEA,MAAO,cACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,eACT,CAAEA,MAAO,aACT,CAAEA,MAAO,cACT,CAAEA,MAAO,YACT,CAAEA,MAAO,eACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,mBACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,YACT,CAAEA,MAAO,gBACT,CAAEA,MAAO,oBACT,CAAEA,MAAO,eAELuT,EAAqB,CACzB/C,SAAU,cAEG,a,6BClHf,iSAGaqb,EAA8C,CACzD,CACEvrB,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,IAEP,CACE5gB,IAAK,YACLwgB,aAAc,YACdC,aAAc,gBACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,UAIV,SAAS+D,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAoBpB,OAnBK,IAAE/I,QAAQ5B,KACb2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAChB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAIF,IAAMkU,EAAoB,CAC/B2P,QAAS,UACTC,UAAW,aAGAnoB,EAAqB,CAChC/C,SAAU,aAINyC,EAAoB,CAAC,YAAa,WAIzB,WACb3N,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,YACf7F,QAAS,CACPsE,OAAQ,EACRkH,MAAO,GACPkjB,UAAW,GACX/Z,OAAQ,M,ikBClENga,EAA4B,CAChC,CACEt7B,IAAK,OACLwgB,aAAc,OACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,iBAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,OACdC,KAAM,kDACNlD,KAAM,oBAER,CACExd,IAAK,UACLwgB,aAAc,SACdC,aAAc,SACdC,KAAM,uDACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,oBACLwgB,aAAc,oBACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,UACLwgB,aAAc,MACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,uBACLwgB,aAAc,uBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KA3FwB,CAC1B,CAAEnH,KAAM,MAAO9T,MAAO,WACtB,CAAE8T,KAAM,MAAO9T,MAAO,oBACtB,CAAE8T,KAAM,QAAS9T,MAAO,aA0FxB,CACEM,IAAK,qBACLwgB,aAAc,qBACdC,aAAc,aACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,oBACLwgB,aAAc,oBACdC,aAAc,2CACdC,KAAM,GACNlD,KAAM,eAIJ+d,EAAY,CAChBv2B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QAAS,CACPwL,MAAO,GACPlH,OAAQ,EACR6X,oBAAoB,EACpBC,gBAAgB,EAChBpC,YAAa,CAAC,IACd3L,QAAS,EAAF,GArHa,CACtBuY,KAAM,GACN,aAAc,GACd,UAAW,GACX,SAAU,GACV,YAAa,GACb,cAAe,GACf,oBAAqB,GACrB,gBAAiB,GACjB,uBAAwB,GACxB,qBAAsB,GACtB,oBAAqB,GACrB,UAAW,OA6Gb,SAAShS,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GACpB,IAAK,IAAE/I,QAAQ5B,GAGb,GAFA2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC3CA,EAAQmc,oBACV,GAAI,IAAE1a,QAAQzB,EAAQga,aAAc,CAClC,IAAMA,EAAc,IAAEvN,QAAQzM,EAAQga,aAClC,IAAEtN,KAAKsN,GAAapX,OAAS,IAC/B+H,EAAOqP,YAAc,IAAEtN,KAAKsN,GAAa5L,MAAM,EAAG,YAGjD,GAAIpO,EAAQoc,eAAgB,CACjC,IAAM,EAAiB,GACvB,IAAElc,QAAQF,EAAQqO,SAAS,SAAClO,EAAW9M,GACjC,EAAQuP,OAAS,IAGjB,IAAEnB,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,GAChB,EAAQZ,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAEzB,KAAKvM,GAAMiO,MAAM,EAAG,KAEjD,IAAE7H,SAASpG,KACf,IAAEyB,QAAQ,IAAEjP,IAAIwN,EAAM,QAAS,MAClC,EAAQ6B,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAExb,IAAIwN,EAAM,QAAS,IAAIiO,MAAM,EAAG,UAItE,EAAQxL,OAAS,IACnB+H,EAAO0D,QAAU,GAIvB,OAAO1D,EAGT,IAAMkkB,EAAuB,CAAC,aAAc,eAAgB,qBAAsB,qBAE5EC,EAAmB,CACvB,WACA,aACA,eACA,gBACA,eACA,cACA,cACA,aACA,aACA,cACA,cACA,UACA,UACA,gBACA,eACA,YACA,WACA,gBACA,eACA,YACA,WACA,gBACA,eACA,aACA,UACA,WACA,eACA,eACA,kBAOIxoB,EAAqB,CACzB/C,SAAU,cAEZ,SAASkf,EAAcjY,GACrB,IAAMukB,EAAkB,IAAEtsB,IAAIqsB,EAAkB,IAAEnM,SAClD,OAAqE,IAA9D,IAAEpjB,QAAQwvB,EAAiB,IAAEpM,QAAQnY,EAAOvH,aAErD,SAASsV,EAAgBC,GACvB,IAAMC,EAAY,IAAElW,UAAUiW,GAI9B,OAHAC,EAAUlP,WAAWrJ,SAAQ,SAACC,GAC5BA,EAAKoJ,WAAa,CAAC,iBAEdkP,EAEM,a,ugBCxNT7Y,EAAY,UAWZovB,EAAY,CAChB32B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,sBACf7F,QAAS,EAAF,GAjBS,CAChBivB,MAAO,GACPC,OAAQ,EACRjM,oBAAqB,GACrBkM,sBAAuB,GACvB/M,MAAO,GACPgL,WAAOrrB,KAsBHqtB,EAAsB,CAC1B,CACE/7B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,+BACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,IAEP,CACE5gB,IAAK,sBACLwgB,aAAc,uBACdC,aAAc,cACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,wBACLwgB,aAAc,yBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,QACLwgB,aAAc,QACdC,aAAc,eACdC,KAAM,kDACNlD,KAAM,YAER,CACExd,IAAK,QACLwgB,aAAc,QACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KArDe,CACjB,CAAEnH,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,QAAS9T,MAAO,GACxB,CAAE8T,KAAM,QAAS9T,MAAO,MAoDpBs8B,EAAuB,CAAC,sBAAuB,yBAE/C/oB,EAAqB,CACzB/C,SAAU,uBAEZ,SAASqR,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAoBpB,OAnBK,IAAE/I,QAAQ5B,KACb2K,EAAOskB,MAAQ,IAAEt8B,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOukB,OAAS,IAAEv8B,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAChB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAGM,a,wkBCxCT2kB,EAAwB,CAC5B,CACEj8B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,aACLwgB,aAAc,cACdC,aAAc,OACdjD,KAAM,SAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAzEY,CACd,CAAEnH,KAAM,YAAa9T,MAAO,aAC5B,CAAE8T,KAAM,eAAgB9T,MAAO,gBAC/B,CAAE8T,KAAM,aAAc9T,MAAO,cAC7B,CAAE8T,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,cAAe9T,MAAO,iBAsE9B,CACEM,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAzEc,CAChB,CAAEnH,KAAM,KAAM9T,MAAO,GACrB,CAAE8T,KAAM,KAAM9T,MAAO,KAyErB,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,0BACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,aACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,eACLwgB,aAAc,eACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,mDACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,gBACLwgB,aAAc,gBACdC,aAAc,sCACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdhT,UAAU,EACV+P,KAAM,SACN7C,KAxJW,CACb,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,QAAS9T,MAAO,GACxB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,OAAQ,GACvB,CAAE8T,KAAM,MAAO9T,OAAQ,KAqJvB,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAxJgB,CAClB,CAAEnH,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,GACtB,CAAE8T,KAAM,MAAO9T,MAAO,KAuJtB,CACEM,IAAK,aACLwgB,aAAc,aACdC,aAAc,+BACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdhT,UAAU,EACV+P,KAAM,SACN7C,KArLc,CAChB,CAAEnH,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,OAAQ9T,MAAO,GACvB,CAAE8T,KAAM,UAAW9T,MAAO,KAoL1B,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,kCACdC,KAAM,GACNlD,KAAM,SACN7C,KAlMgB,CAClB,CAAEnH,KAAM,OAAQ9T,MAAO,YACvB,CAAE8T,KAAM,OAAQ9T,MAAO,aAkMvB,CACEM,IAAK,OACLwgB,aAAc,OACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KArKS,CACX,CAAEnH,KAAM,YAAa9T,MAAO,GAC5B,CAAE8T,KAAM,eAAgB9T,MAAO,GAC/B,CAAE8T,KAAM,SAAU9T,MAAO,GACzB,CAAE8T,KAAM,SAAU9T,MAAO,GACzB,CAAE8T,KAAM,eAAgB9T,MAAO,GAC/B,CAAE8T,KAAM,eAAgB9T,MAAO,GAC/B,CAAE8T,KAAM,eAAgB9T,MAAO,GAC/B,CAAE8T,KAAM,cAAe9T,MAAO,GAC9B,CAAE8T,KAAM,cAAe9T,MAAO,MAgK1Bw8B,EAAc,CAClBl3B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QAAS,EAAF,GArKW,CAClByU,WAAY,GACZyC,QAAS,GACTC,UAAW,KACX2D,OAAQ,GACRC,UAAW,GACXZ,WAAY,GACZD,UAAW,GACXc,aAAc,GACdC,WAAY,GACZC,cAAe,GACf1G,OAAQ,GACR2G,YAAa,KACbC,WAAY,GACZC,UAAW,KACXC,YAAa,GACbC,KAAM,QAwJR,SAAS3G,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAqBpB,OApBK,IAAE/I,QAAQ5B,KACb2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAEhB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAGT,SAAS8X,EAAcqB,QAAA,IAAAA,MAAA,IACrB,IAAMC,EAAY,IAAEpxB,IAAImxB,EAAW,4BACnC,OAA4B,IAArBC,EAAUnhB,SAAwD,IAAxC,IAAErD,QAAQwkB,EAAW,cAGxD,IAAMyL,EAAyB,CAAC,aAAc,eAAgB,SAExDC,EAAyB,CAC7BC,WAAY,aACZ7W,WAAY,cAGRvS,EAAqB,CACzB/C,SAAU,cAEG,a,6BClQf,6RAqBMosB,EAAsB,CAC1B,CACEt8B,IAAK,SACLwgB,aAAc,SACdC,aAAc,0CACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,GAEP,CACE3gB,IAAK,QACLwgB,aAAc,QACdC,aAAc,gCACdC,KAAM,GACNlD,KAAM,cACNmD,IAAK,EACLC,IAAK,KAEP,CACE5gB,IAAK,aACLwgB,aAAc,aACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,oBACLwgB,aAAc,oBACdC,aAAc,aACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,kBACLwgB,aAAc,kBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAzDoB,CACtB,CAAEnH,KAAM,KAAM9T,MAAO,IACrB,CAAE8T,KAAM,OAAQ9T,MAAO,KACvB,CAAE8T,KAAM,aAAc9T,MAAO,OAwD7B,CACEM,IAAK,mBACLwgB,aAAc,mBACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SACN7C,KA3DqB,CACvB,CAAEnH,KAAM,KAAM9T,MAAO,IACrB,CAAE8T,KAAM,OAAQ9T,MAAO,KACvB,CAAE8T,KAAM,SAAU9T,MAAO,KACzB,CAAE8T,KAAM,UAAW9T,MAAO,KAC1B,CAAE8T,KAAM,OAAQ9T,MAAO,YAwDvB,CACEM,IAAK,8BACLwgB,aAAc,8BACdC,aAAc,WACdC,KAAM,GACNlD,KAAM,SACN/P,UAAU,EACVkN,KA5D4B,CAC9B,CAAEnH,KAAM,SAAU9T,MAAO,OACzB,CAAE8T,KAAM,UAAW9T,MAAO,SA8DtB68B,EAAY,CAChBv3B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,gBACf7F,QAAS,CACPwL,MAAO,GACPlH,OAAQ,EACRoQ,WAAY,GACZwC,QAAS,GACTC,UAAW,KACX0Y,gBAAiB,GACjBC,iBAAkB,GAClBC,4BAA6B,GAC7BC,kBAAmB,KAIvB,SAASpb,EAAuB5U,GAC9B,YAD8B,IAAAA,MAAA,IACvB,YAA6BA,GAAS,GAG/C,IAAMiwB,EAAuB,CAAC,gBAAiB,mBAEzCC,EAAuB,CAC3BC,cAAe,iBAGX7pB,EAAqB,CACzB/C,SAAU,iBAGG,a,whBCjGT6sB,EAA4B,CAChC,CACE/8B,IAAK,uBACLwgB,aAAc,sBACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,yBACLwgB,aAAc,wBACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,eACLwgB,aAAc,eACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SACN7C,KAtCiB,CACnB,CAAEnH,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,YAAa9T,MAAO,aAC5B,CAAE8T,KAAM,UAAW9T,MAAO,aAqC1B,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SACN7C,KAxCgB,CAClB,CAAEnH,KAAM,SAAU9T,MAAO,0BACzB,CAAE8T,KAAM,QAAS9T,MAAO,kCA0CpBs9B,EAAY,CAChBh4B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,qBACf7F,QAAS,CACPwL,MAAO,GACPlH,OAAQ,EACR6X,oBAAoB,EACpBC,gBAAgB,EAChBkU,oBAAqB,CAAC,IACtBjiB,QAAS,EAAF,GAtDa,CACtB,uBAAwB,GACxB,yBAA0B,GAC1B,eAAgB,GAChB,cAAe,OAsDjB,SAASuG,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GACpB,IAAK,IAAE/I,QAAQ5B,GAGb,GAFA2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC3CA,EAAQmc,oBACV,GAAI,IAAE1a,QAAQzB,EAAQswB,qBAAsB,CAC1C,IAAMA,EAAsB,IAAE7jB,QAAQzM,EAAQswB,qBAC1C,IAAE5jB,KAAK4jB,GAAqB1tB,OAAS,IACvC+H,EAAO2lB,oBAAsB,IAAE5jB,KAAK4jB,GAAqBliB,MAAM,EAAG,YAGjE,GAAIpO,EAAQoc,eAAgB,CACjC,IAAM,EAAiB,GACvB,IAAElc,QAAQF,EAAQqO,SAAS,SAAClO,EAAW9M,GACjC,EAAQuP,OAAS,IAGjB,IAAEnB,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,GAChB,EAAQZ,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAEzB,KAAKvM,GAAMiO,MAAM,EAAG,KAEjD,IAAE7H,SAASpG,KACf,IAAEyB,QAAQ,IAAEjP,IAAIwN,EAAM,QAAS,MAClC,EAAQ6B,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAExb,IAAIwN,EAAM,QAAS,IAAIiO,MAAM,EAAG,UAItE,EAAQxL,OAAS,IACnB+H,EAAO0D,QAAU,GAIvB,OAAO1D,EAGT,IAAM4lB,EAAuB,CAAC,qBAAsB,wBAE9CjqB,EAAqB,CACzB/C,SAAU,sBAGNitB,EAAuB,CAC3BC,mBAAoB,sBAEP,a,whBCpGTC,EAA4B,CAChC,CACEr9B,IAAK,SACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,KACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,UAAW9T,MAAO,WAC1B,CAAE8T,KAAM,aAAc9T,MAAO,gBAGjC,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,WAAY9T,MAAO,YAC3B,CAAE8T,KAAM,QAAS9T,MAAO,WAG5B,CACEM,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,oBAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,SACtB,CAAE8T,KAAM,QAAS9T,MAAO,SAG5B,CACEM,IAAK,eACLwgB,aAAc,eACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,MACrB,CAAE8T,KAAM,KAAM9T,MAAO,SAGzB,CACEM,IAAK,QACLwgB,aAAc,QACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,MACrB,CAAE8T,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,aAAc9T,MAAO,gBAGjC,CACEM,IAAK,qBACLwgB,aAAc,qBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,QAAS9T,MAAO,WAG5B,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,eAIJ8f,EAAY,CAChBt4B,OAAQ,eACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,SACf7F,QAAS,CACPwL,MAAO,GACPlH,OAAQ,EACR+J,QAAS,EAAF,GArIa,CACtBoW,OAAQ,GACRR,OAAQ,GACRxC,WAAY,GACZ9U,OAAQ,GACR+X,YAAa,GACbC,UAAW,GACXC,WAAY,GACZC,aAAc,GACdC,MAAO,GACPC,mBAAoB,GACpBzD,OAAQ,OA8HV,SAAS1M,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GACpB,IAAK,IAAE/I,QAAQ5B,GAAU,CACvB2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/C,IAAM,EAAiB,GACvB,IAAEE,QAAQF,EAAQqO,SAAS,SAAClO,EAAW9M,GAEjC,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,GAChB,EAAQZ,KAAK,CAAEC,KAAM5O,EAAKyO,MAAO,IAAE4K,KAAKvM,GAAMiO,MAAM,EAAG,KAEhD,IAAE7H,SAASpG,KACf,IAAEyB,QAAQ,IAAEjP,IAAIwN,EAAM,QAAS,MAClC,EAAQ6B,KAAK,CAAEC,KAAM5O,EAAKyO,MAAO,IAAEnP,IAAIwN,EAAM,QAAS,IAAIiO,MAAM,EAAG,SAIrE,EAAQxL,OAAS,IACnB+H,EAAO0D,QAAU,GAGrB,OAAO1D,EAGT,IAAMimB,EAAuB,CAAC,SAAU,aAElCC,EAAuB,CAC3BlM,UAAW,YACXV,OAAQ,UAEJ3d,EAAqB,CACzB/C,SAAU,UAEG,a,iUCjJFutB,EAAqB,CAChC,CACEz9B,IAAK,aACLwgB,aAAc,aACdC,aAAc,cACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,eACLwgB,aAAc,eACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,iBACLwgB,aAAc,iBACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEjb,MAAO,WAAY8T,KAAM,YAC3B,CAAE9T,MAAO,UAAW8T,KAAM,WAC1B,CAAE9T,MAAO,OAAQ8T,KAAM,QACvB,CAAE9T,MAAO,YAAa8T,KAAM,aAC5B,CAAE9T,MAAO,SAAU8T,KAAM,UACzB,CAAE9T,MAAO,YAAa8T,KAAM,aAC5B,CAAE9T,MAAO,WAAY8T,KAAM,cAG/B,CACExT,IAAK,cACLwgB,aAAc,cACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,qBACLwgB,aAAc,qBACdC,aAAc,eACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,uBACLwgB,aAAc,uBACdC,aAAc,iBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,UACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,SACrB,CAAE8T,KAAM,KAAM9T,MAAO,WAiBrBg+B,EAAW,CACf14B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,YACfxM,QAAS,GACT2G,SAAO,GACLsE,OAAQ,EACRkH,MAAO,IACP,aAAe,CAAC,IAChB,EAAA6C,QAAS,CACP,aAAc,GACd,eAAgB,GAChB,aAAc,GACd,kBAAmB,GACnB,eAAgB,GAChB,qBAAsB,GACtB,wBAAyB,GACzB,cAAe,IAElB,IAGH,SAASuG,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GACpB,IAAK,IAAE/I,QAAQ5B,GAGb,GAFA2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC3CA,EAAQmc,oBACV,GAAI,IAAE1a,QAAQzB,EAAO,YAAgB,CACnC,IAAMga,EAAc,IAAEvN,QAAQzM,EAAO,YACjC,IAAE0M,KAAKsN,GAAapX,OAAS,IAC/B+H,EAAM,WAAgB,IAAE+B,KAAKsN,GAAa5L,MAAM,EAAG,YAGlD,GAAIpO,EAAQoc,eAAgB,CACjC,IAAM,EAAiB,GACvB,IAAElc,QAAQF,EAAQqO,SAAS,SAAClO,EAAW9M,GACjC,EAAQuP,OAAS,IAGjB,IAAEnB,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,GAChB,EAAQZ,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAEzB,KAAKvM,GAAMiO,MAAM,EAAG,KAEjD,IAAE7H,SAASpG,KACf,IAAEyB,QAAQ,IAAEjP,IAAIwN,EAAM,QAAS,MAClC,EAAQ6B,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAExb,IAAIwN,EAAM,QAAS,IAAIiO,MAAM,EAAG,UAItE,EAAQxL,OAAS,IACnB+H,EAAO0D,QAAU,GAIvB,OAAO1D,EAGT,IAAMqmB,EAAsB,CAAC,YAAa,cAAe,aAGnDC,EAAsB,CAC1BhM,IAAK,aAGD3e,EAAqB,CACzB/C,SAAU,aAQG,a,6iBC7LT2tB,EAA8B,CAAC,eAAgB,kBAQ/CC,EAAmC,CACvC,CACE99B,IAAK,iBACLwgB,aAAc,gBACdC,aAAc,aACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,mBACLwgB,aAAc,kBACdC,aAAc,kBACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,UACdC,KAAM,GACNlD,KAAM,eAIJugB,EAAmB,CACvB/4B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,eACf7F,QAAS,CACPwL,MAAO,GACPlH,OAAQ,EACR6X,oBAAoB,EACpBC,gBAAgB,EAChBiV,cAAe,CAAC,IAChBhjB,QAAS,EAAF,GA5CoB,CAC7B,iBAAkB,GAClB,mBAAoB,GACpB,SAAU,OA6CZ,SAASuG,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GACpB,IAAK,IAAE/I,QAAQ5B,GAGb,GAFA2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC3CA,EAAQmc,oBACV,GAAI,IAAE1a,QAAQzB,EAAQqxB,eAAgB,CACpC,IAAMA,EAAgB,IAAE5kB,QAAQzM,EAAQqxB,eACpC,IAAE3kB,KAAK2kB,GAAezuB,OAAS,IACjC+H,EAAOqP,YAAc,IAAEtN,KAAK2kB,GAAejjB,MAAM,EAAG,YAGnD,GAAIpO,EAAQoc,eAAgB,CACjC,IAAM,EAAiB,GACvB,IAAElc,QAAQF,EAAQqO,SAAS,SAAClO,EAAW9M,GACjC,EAAQuP,OAAS,IAGjB,IAAEnB,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,GAChB,EAAQZ,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAEzB,KAAKvM,GAAMiO,MAAM,EAAG,KAEjD,IAAE7H,SAASpG,KACf,IAAEyB,QAAQ,IAAEjP,IAAIwN,EAAM,QAAS,MAClC,EAAQ6B,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAExb,IAAIwN,EAAM,QAAS,IAAIiO,MAAM,EAAG,UAItE,EAAQxL,OAAS,IACnB+H,EAAO0D,QAAU,GAIvB,OAAO1D,EAGT,IAAMrE,EAAqB,CACzB/C,SAAU,gBAGN+tB,EAAuB,CAC3BC,MAAO,gBAGM,a,giBClFTC,EAA8B,CAClC,CACEn+B,IAAK,SACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,KACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,SACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,UAAW9T,MAAO,WAC1B,CAAE8T,KAAM,aAAc9T,MAAO,gBAGjC,CACEM,IAAK,cACLwgB,aAAc,cACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,WAAY9T,MAAO,YAC3B,CAAE8T,KAAM,QAAS9T,MAAO,WAG5B,CACEM,IAAK,YACLwgB,aAAc,YACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,oBAER,CACExd,IAAK,aACLwgB,aAAc,aACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,MAAO9T,MAAO,SACtB,CAAE8T,KAAM,QAAS9T,MAAO,SAG5B,CACEM,IAAK,eACLwgB,aAAc,eACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,MACrB,CAAE8T,KAAM,KAAM9T,MAAO,SAGzB,CACEM,IAAK,QACLwgB,aAAc,QACdC,aAAc,YACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,KAAM9T,MAAO,MACrB,CAAE8T,KAAM,MAAO9T,MAAO,OACtB,CAAE8T,KAAM,aAAc9T,MAAO,gBAGjC,CACEM,IAAK,qBACLwgB,aAAc,qBACdC,aAAc,SACdC,KAAM,GACNlD,KAAM,SACN7C,KAAM,CACJ,CAAEnH,KAAM,OAAQ9T,MAAO,QACvB,CAAE8T,KAAM,SAAU9T,MAAO,UACzB,CAAE8T,KAAM,QAAS9T,MAAO,WAG5B,CACEM,IAAK,SACLwgB,aAAc,SACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,eAIJ4gB,EAAc,CAClBp5B,OAAQ,eACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,SACf7F,QAAS,CACPwL,MAAO,GACPlH,OAAQ,EACR+J,QAAS,EAAF,GArIa,CACtBoW,OAAQ,GACRR,OAAQ,GACRxC,WAAY,GACZ9U,OAAQ,GACR+X,YAAa,GACbC,UAAW,GACXC,WAAY,GACZC,aAAc,GACdC,MAAO,GACPC,mBAAoB,GACpBzD,OAAQ,OA8HV,SAAS1M,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GACpB,IAAK,IAAE/I,QAAQ5B,GAAU,CACvB2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/C,IAAM,EAAiB,GACvB,IAAEE,QAAQF,EAAQqO,SAAS,SAAClO,EAAW9M,GACjC,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,GAChB,EAAQZ,KAAK,CAAEC,KAAM5O,EAAKyO,MAAO,IAAE4K,KAAKvM,GAAMiO,MAAM,EAAG,KAEhD,IAAE7H,SAASpG,KACf,IAAEyB,QAAQ,IAAEjP,IAAIwN,EAAM,QAAS,MAClC,EAAQ6B,KAAK,CAAEC,KAAM5O,EAAKyO,MAAO,IAAEnP,IAAIwN,EAAM,QAAS,IAAIiO,MAAM,EAAG,SAIrE,EAAQxL,OAAS,IACnB+H,EAAO0D,QAAU,GAGrB,OAAO1D,EAGT,IAAM+mB,EAAyB,CAAC,SAAU,cAEpCC,EAAyB,CAC7BhN,UAAW,YACXV,OAAQ,UAEJ3d,EAAqB,CACzB/C,SAAU,UAEG,a,eC5Kf1R,EAAOD,QAAUggC,G,8BCAjB,oMAEMC,EAAY,CAChBx5B,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,YACfisB,WAAY,GACZC,SAAU,GACV/xB,QAAS,CACPwL,MAAO,GACPlH,OAAQ,EACR6X,oBAAoB,EACpBC,gBAAgB,EAChB4V,WAAY,CAAC,IACb3jB,QAAS,CACP4jB,YAAa,GACbtH,YAAa,GACbuH,cAAe,GACf,UAAW,MAKXC,EAA4B,CAChC,CACE9+B,IAAK,cACLwgB,aAAc,eACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,cACLwgB,aAAc,eACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,gBACLwgB,aAAc,iBACdC,aAAc,OACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,OACLwgB,aAAc,OACdC,aAAc,QACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,SACLwgB,aAAc,MACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,SAER,CACExd,IAAK,UACLwgB,aAAc,UACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,cAER,CACExd,IAAK,YACLwgB,aAAc,YACdC,aAAc,MACdC,KAAM,GACNlD,KAAM,eAIJuhB,EAAuB,CAAC,YAAa,eAE3C,SAASxd,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GACpB,IAAK,IAAE/I,QAAQ5B,GAGb,GAFA2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC3CA,EAAQmc,oBACV,GAAI,IAAE1a,QAAQzB,EAAQga,aAAc,CAClC,IAAMA,EAAc,IAAEvN,QAAQzM,EAAQga,aAClC,IAAEtN,KAAKsN,GAAapX,OAAS,IAC/B+H,EAAOqP,YAAc,IAAEtN,KAAKsN,GAAa5L,MAAM,EAAG,YAGjD,GAAIpO,EAAQoc,eAAgB,CACjC,IAAM,EAAiB,GACvB,IAAElc,QAAQF,EAAQqO,SAAS,SAAClO,EAAW9M,GACjC,EAAQuP,OAAS,IAGjB,IAAEnB,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,GAChB,EAAQZ,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAEzB,KAAKvM,GAAMiO,MAAM,EAAG,KAEjD,IAAE7H,SAASpG,KACf,IAAEyB,QAAQ,IAAEjP,IAAIwN,EAAM,QAAS,MAClC,EAAQ6B,KAAK,CAAEC,KAAM5O,EAAK8a,OAAQ,IAAExb,IAAIwN,EAAM,QAAS,IAAIiO,MAAM,EAAG,UAItE,EAAQxL,OAAS,IACnB+H,EAAO0D,QAAU,GAIvB,OAAO1D,EAGM,a,o2DCtGf,cAeE,WAAYlG,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAflD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,8BACpB,EAAA0B,kBAAoB,8BACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,aACTC,OAAQ,yBACRk5B,cAAe,cAGjB,EAAAld,aAAe,eACf,EAAApQ,uBAAyB,yB,EAmD3B,OAhE0C,OAqBxC,YAAA0B,WAAA,WACE,OAAOS,QAAQC,QAAQ,kBAAgB1E,KAAI,SAAC,G,IAAE1P,EAAK,QAAO,MAAC,CAAEA,MAAK,EAAE8T,KAAM,YAAE9T,SAExE,YAAAu/B,uBAAN,SAA6B3nB,G,6GAKf,OAJJtS,EAAuBsS,EAAjB,OAAE2V,EAAe3V,EAAL,WACpBC,EAAc,YAAkBvS,EAAQoB,KAAKP,SAGvC,GAAM,aAChB,SAACuB,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,qCAGtB,CACEolB,UAAW+B,GAEb,oB,OAGF,OAjBMlmB,EAAM,SAiBZ,GADaA,EAAJ,YAGL,YAAA6M,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,G,+GAErC,mCAAXpK,EAAA,MACS,GAAMM,KAAK64B,uBAAuB,CAAEj6B,OAAM,EAAEioB,WAAY/c,EAAS9J,KAAK6M,mBAAmB/C,a,OAQpG,OARMkH,EAAK,SACL1K,EAAS0K,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,EAAK+T,mBAAmByX,iBAC3C,CACLlX,KAAMtU,EAAE,EAAK+T,mBAAmByX,iBAChChrB,MAAOR,EAAE,EAAK+T,mBAAmByX,qBAGrC,GAAM,IAAgBxK,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAagJ,gBAAiB1T,I,OACvF,OADA,SACA,GAAO1K,G,OAET,SAAO,YAEX,EAhEA,CAA0C,kB,2jECL1C,cAkBE,WAAY0E,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAlBlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,6BACpB,EAAA0B,kBAAoB,6BACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,OACTC,OAAQ,wBACRk5B,cAAe,kBACf9mB,YAAa,CACXE,QAAS,SAACd,GAAW,cAChBA,GAAM,CACT4nB,iBAFmB,gBAMzB,EAAAC,UAAY,G,EAkCd,OAnD0C,OAsBxC,YAAA/rB,WAAA,sBACE,OAAOhN,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAM,OAElB,KACA,CAAEnB,OAAQ,kBAAmBd,OAAQ,iBACrC8R,MAAK,SAAChI,GAGN,OADA,EAAKqwB,UAAY,IAAEC,MAAMtwB,EAASuwB,cAAe,UAC1C,IAAEjwB,IAAIN,EAASuwB,eAAiB,IAAI,SAACvyB,GAC1C,MAAO,CACL0G,KAAM,YAAE1G,EAAKrF,QACb/H,MAAOoN,EAAKrF,eAKd,YAAAmQ,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,OADMs6B,EAAS,SACf,GAAO,IAAElmB,QACPkmB,EAAOlwB,KAAI,SAACtC,GACV,OAAI,wBAAcA,GACTA,EAEF,kBAIf,EAnDA,CAA0C,kB,2jECN1C,cAkBE,WAAYsE,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAlBlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,wBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,OACTC,OAAQ,wBACRk5B,cAAe,kBACf9mB,YAAa,CACXE,QAAS,SAACd,GAAW,cAChBA,GAAM,CACT4nB,iBAFmB,YAMzB,EAAAC,UAAY,G,EAkCd,OAnD0C,OAqBlC,YAAAvnB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,OADMs6B,EAAS,SACf,GAAO,IAAElmB,QACPkmB,EAAOlwB,KAAI,SAACtC,GACV,OAAI,wBAAcA,GACTA,EAEF,kBAKb,YAAAsG,WAAA,sBACE,OAAOhN,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAM,OAElB,KACA,CAAEnB,OAAQ,kBAAmBd,OAAQ,iBACrC8R,MAAK,SAAChI,GAGN,OADA,EAAKqwB,UAAY,IAAEC,MAAMtwB,EAASuwB,cAAe,UAC1C,IAAEjwB,IAAIN,EAASuwB,eAAiB,IAAI,SAACvyB,GAC1C,MAAO,CACL0G,KAAM,YAAE1G,EAAKrF,QACb/H,MAAOoN,EAAKrF,eAKtB,EAnDA,CAA0C,kB,+hBCM1C,cAeE,WAAY2J,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAflD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,yBACpB,EAAA0B,kBAAoB,yBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,QACTC,OAAQ,6BACRk5B,cAAe,wBAEjB,EAAAxtB,gBAAkB,CAChBuG,aAAc,mBAEhB,EAAAonB,UAAY,G,EAuBd,OArC0C,OAmBxC,YAAA/rB,WAAA,sBACE,OAAOhN,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAM,OAElB,KACA,CAAEnB,OAAQ,kBAAmBd,OAAQ,iBACrC8R,MAAK,SAAChI,GAGN,OADA,EAAKqwB,UAAY,IAAEC,MAAMtwB,EAASuwB,cAAe,UAC1C,IAAEjwB,IAAIN,EAASuwB,eAAiB,IAAI,SAACvyB,GAC1C,MAAO,CACL0G,KAAM,YAAE1G,EAAKrF,QACb/H,MAAOoN,EAAKrF,eAKtB,EArCA,CAA0C,kB,wgBCR1C,cAYE,WAAY2J,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,UACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,CACnB/C,SAAU,sBAEZ,EAAA+H,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,4BACRk5B,cAAe,uB,EAKnB,OAf2C,OAe3C,EAfA,CAA2C,kB,q2DCC3C,cAWE,WAAY5tB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAXlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,gBACRk5B,cAAe,W,EASnB,OAlB0C,OAclC,YAAApnB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,OADMs6B,EAAS,SACf,GAAO,IAAEjqB,OAAOiqB,EAAQ,0BAE5B,EAlBA,CAA0C,kB,42DCC1C,cAYE,WAAYluB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,UACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,CACnB/C,SAAU,cAEZ,EAAA+H,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,sBACRk5B,cAAe,S,EA4CnB,OAtD2C,OAenC,YAAApnB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,OADMs6B,EAAS,SACf,GAAO,IAAElmB,QACPkmB,EAAOlwB,KAAI,SAACtC,GACV,OAAI,wBAAcA,GACT,0BAAgBA,GAElB,kBAQb,YAAAyyB,SAAA,SAASv6B,GACP,IAAMuS,EAAc,YAAkBvS,EAAQ,OAC9C,OAAOoB,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,MAE9B2O,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,kBAClBgR,MAAK,SAAChI,GACN,OAAO,IAAEuG,OACP,IAAEjG,IAAIN,EAAS0wB,SAAW,IAAI,SAAC1yB,GAC7B,MAAO,CAAE0G,KAAM1G,EAAK2yB,SAAU//B,MAAOoN,EAAK4yB,OAAQC,UAAW7yB,EAAK6yB,UAAW9Q,KAAM/hB,EAAK+hB,UAE1F,SAAC/hB,GAAS,oBAAAA,EAAK6yB,iBAKrB,YAAA7pB,iBAAA,SAAiB7B,G,MACf,aACG,qBAAmB/D,UAAW+D,EAC/B,EAAAojB,aAAc,EACf,GAEL,EAtDA,CAA2C,kB,oiECD3C,cAYE,WAAYjmB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,UACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,CACnB/C,SAAU,UAEZ,EAAA+H,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,kBACRk5B,cAAe,W,EAQnB,OAlB2C,OAenC,YAAAnsB,gBAAN,SAAsBpG,EAAYqG,G,mEAChC,SAAO,YAAMD,gBAAe,iBAAMpG,GAAU,CAAEzH,OAAQ,iBAAoB8N,WAE9E,EAlBA,CAA2C,kB,2iECC3C,cAYE,WAAY1B,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,+BACpB,EAAA0B,kBAAoB,+BACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,kBACRk5B,cAAe,WAEjB,EAAAvtB,YAAc,CAAC,MAAO,Y,EAwCxB,OAnD0C,OAkBlC,YAAAoB,gBAAN,SAAsBpG,EAAYqG,G,mEAChC,SAAO,YAAMD,gBAAe,iBAAMpG,GAAU,CAAEzH,OAAQ,iBAAoB8N,WAEtE,YAAA8sB,gBAAN,SAAsBtoB,G,oGAKT,OAJHtS,EAAkBsS,EAAZ,OAAE9J,EAAU8J,EAAL,MACfC,EAAc,YAAkBvS,EAAQ,OAGnC,GAAMoB,KAAKoR,UACpB,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAM,CACJwH,KAAMpB,IAGV+J,EAAY1R,QACZ,CAAEC,OAAQ,qB,OAEZ,UAVW,SAUA+5B,aAAe,IAAIzwB,KAAI,SAAClQ,GACjC,MAAO,CACLsU,KAAMtU,EAAE0P,KACRlP,MAAOR,EAAE0P,kBAIT,YAAAgF,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,EAAezD,G,sGACpD,oBAAX3G,EAAA,OACY0H,EAAUf,EAAL,KACR,GAAMrG,KAAKw5B,gBAAgB,CAAE56B,OAAM,EAAEwI,MAAK,M,OACrD,SADW,U,OAGb,SAAO,YAEX,EAnDA,CAA0C,kB,wgBCI1C,cAiCE,WAAY4D,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAjClD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,+BACpB,EAAA0B,kBAAoB,wBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,oBACRk5B,cAAe,aACf9mB,YAAa,CACXE,QAAS,SAACd,GASR,OARoBA,EAAL,UAEbA,EAAO0D,QAAU,IAEnB1D,EAAO0D,QAAQrM,KAAK,CAClBC,KAAM,eACNkM,OAAQ,CAAC,gBAEJxD,KAUb,EAAA9F,gBAAkB,CAChBuG,aAAc,mB,EAelB,OA9C0C,OA8C1C,EA9CA,CAA0C,kB,wgBCN1C,cAWE,WAAY3G,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAXlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,KACTC,OAAQ,oBACRk5B,cAAe,gB,EAKnB,OAd0C,OAc1C,EAdA,CAA0C,kB,+gBCC1C,cAWE,WAAY5tB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAPlD,EAAA2F,mBAAqB,CACnB/C,SAAU,gBAEZ,EAAAuB,YAAc,CAAC,WAMb,EAAKI,UAAY,UACjB,EAAKc,kBAAoB,uBACzB,EAAK0B,kBAAoB,uBACzB,EAAK4D,kBAAoB,CACvBpS,QAAS,MACTC,OAAQ,yBACRk5B,cAAe,e,EAMrB,OA1B2C,OAuBzC,YAAA5rB,WAAA,WACE,OAAOS,QAAQC,QAAQ,kBAAgB1E,KAAI,SAAC,G,IAAE1P,EAAK,QAAO,MAAC,CAAEA,MAAK,EAAE8T,KAAM,YAAE9T,SAEhF,EA1BA,CAA2C,kB,03DCW3C,cAgBE,WAAY0R,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAhBlD,EAAAuE,UAAY,aACZ,EAAAc,kBAAoB,0BACpB,EAAAmtB,eAAiB,uBACjB,EAAAzrB,kBAAoB,0BACpB,EAAApB,mBAAqB,qBACrB,EAAAgF,kBAAoB,CAClBpS,QAAS,SACTC,OAAQ,oBACRk5B,cAAe,gBAEjB,EAAA1tB,gBAAkB,CAAC,WAEnB,EAAAwQ,aAAe,eACf,EAAApQ,uBAAyB,yBACzB,EAAAquB,mBAAqB,G,EAqIvB,OApJ6C,OAoBrC,YAAAC,kBAAN,SAAwBh7B,EAAQsS,G,yIACxBC,EAAc,YAAkBvS,EAAQ,UACxCoc,EAA6C9J,EAAnC,WAAE,EAAiCA,EAAnB,UAAd2oB,OAAS,IAAG,KAAE,EAAE,EAAiB3oB,EAAL,QAAZ4oB,OAAO,IAAG,KAAE,EAC9CD,EAAY75B,KAAK8L,YAAY+tB,GAC7BC,EAAU95B,KAAK8L,YAAYguB,GAC3B,IACED,EAAY55B,KAAK6G,MAAM+yB,GAAW,qBAAmB3kB,WACrD4kB,EAAU75B,KAAK6G,MAAMgzB,GAAS,qBAAmBnf,SACjD,MAAO5T,I,OACLgzB,EAAe/5B,KAAK25B,mBAAmB3e,IACvC,MAEa,GAAM,aACnB,SAACha,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,4BAGtB,IAAEyK,KAAK+G,EAAQ,cACf,CAAC,sBAAuB,sBAAuB,0BAA2B,e,OAZ5E6oB,EAAe,SAcf/5B,KAAK25B,mBAAmB3e,GAAc+e,E,iBAgBxC,OAbKne,EAAwDme,EAA/C,GAAEpe,EAA6Coe,EAApC,GAAEle,EAAkCke,EAArB,GAAEC,EAAmBD,EAAJ,GAEzDpe,EAAY,IAAEse,OAAOte,GAAW,SAACjV,GAAS,OAACA,EAAD,WAC1CkV,EAAY,IAAEqe,OAAOre,GAAW,SAAClV,GAAS,OAACA,EAAD,aAC1CmV,EAAgB,IAAEoe,OAAOpe,GAAe,SAACnV,GAAS,OAACA,EAAD,eAClDszB,EAAkB,IAAEC,OAAOD,GAAiB,SAACtzB,GAAS,OAACA,EAAD,qBAEhDwzB,GAAgF,QAA9D,EAAAF,EAAgBj0B,MAAK,SAACpN,GAAM,OAAAA,EAAEwhC,oBAAF,YAAkC,eAAEC,iBAAkB,GAEpGC,GAC6D,QAAjE,EAAsD,QAAtD,EAAAH,EAAgBn0B,MAAK,SAACu0B,GAAQ,OAAAA,EAAIxe,UAAJ,YAAwB,eAAEye,iBAAS,eAAEvxB,KAAI,SAAC7O,G,MAAM,aAC3E,qBAAmB2gB,WAAY3gB,EAChC,OAAK,GACT,GAAO,CACLyhB,UAAS,EACTD,UACEue,EAAgB/wB,OAAS,EACrB+wB,EAAgBlxB,KAAI,SAAC,GAA2B,MAAC,CAAE8S,QAArB,UAA8BC,UAAnB,gBACzCJ,EACNE,cAAewe,EAAWlxB,OAAS,EAAIkxB,EAAaxe,YAGxD,YAAA2e,sBAAA,SAAsBC,EAA4BtuB,EAAgCuuB,GAAlF,WACE,OAAIvuB,EACKA,EAAWrE,QAAQ,gBAAgB,SAACuE,EAAGC,GAC5C,OAAKA,GAAM,EAAKotB,eAAeltB,SAASF,GAGjC,EAAKP,cAAc0uB,EAAOnuB,GAFxB,MAKNtM,KAAK+L,cAAc0uB,EAAOC,IAG7B,YAAAltB,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,EAAezD,G,uHAEpD,OADTs0B,EAAmCt0B,EAAzB,WAAEwzB,EAAuBxzB,EAAd,UAAEyzB,EAAYzzB,EAAL,QACrB,GAAMrG,KAAK45B,kBAAkBh7B,EAAQ,CAClDoc,WAAYlR,EAASkR,WACrB6e,UAAS,EACTC,QAAO,K,OA+BT,OAlCMxzB,EAAS,SAKTqG,EAAYtG,EAAL,QACLsV,EAAwCrV,EAA/B,UAAEsV,EAA6BtV,EAApB,UAAEuV,EAAkBvV,EAAL,cAC3Cq0B,EAAa36B,KAAK05B,eAAeltB,SAASmuB,GAAcA,EAAa36B,KAAK6M,mBAAmB8N,QAEvF3J,EAAK,CACT4K,UAAWA,EAAU5S,KAAI,SAACwZ,GAExB,OADAA,EAAMnZ,oBAAsBmZ,EAAMxG,UAC3B,CACL5O,KAAMoV,EAAMxG,UACZ1iB,MAAOkpB,EAAM,qBAAmBtN,eAGpCyG,UAAWA,EAAU3S,KAAI,SAACyxB,GACxB,IAAMC,EAAa,EAAKF,sBAAsBC,EAAO9tB,EAASguB,GAE9D,OADAF,EAAMpxB,oBAAsBqxB,GAAcD,EAAM,qBAAmB9f,SAC5D,CACLvN,KAAMstB,GAAcD,EAAM,qBAAmB9f,SAC7CrhB,MAAOmhC,EAAM,qBAAmB9f,SAChCoB,UAAW0e,EAAM1e,cAGrBF,cAAeA,EAAc7S,KAAI,SAAC4xB,GAEhC,OADAA,EAAIvxB,oBAAsBuxB,EAAI,qBAAmB9f,WAC1C,CACL1N,KAAMwtB,EAAI,qBAAmB9f,WAC7BxhB,MAAOshC,EAAI,qBAAmB9f,gBAIpC,GAAM,IAAgBhB,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAaC,UAAWA,I,OACjF,OADA,SACA,GAAM,IAAgB7B,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAaE,UAAWA,I,OACjF,OADA,SACA,GAAM,IAAgB9B,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAaG,cAAeA,I,OAIrF,OAJA,SAIQnc,GACN,IAAK,oBACH,SAAOsR,EAAG2K,WACZ,IAAK,gBACH,SAAO3K,EAAG4K,WACZ,IAAK,kBACH,SAAO5K,EAAG6K,eACZ,QACE,SAAO,I,kBAef,EApJA,CAA6C,kB,ykECC7C,cAgBE,WAAY7Q,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAflD,EAAAqF,kBAAoB,oBACpB,EAAAsuB,kBAAoB,+BACpB,EAAAC,gBAAkB,6BAClB,EAAAvvB,mBAAqB,qBAErB,EAAAsB,mBAAqB,qBAOrB,EAAA6O,aAAe,eACf,EAAApQ,uBAAyB,yB,EAqJ3B,OApK0C,OAsBxC,YAAA4C,qBAAA,SAAqB4C,EAAciqB,GACjC,MAAwB,cAApBjqB,EAAQrR,SAAgD,aAApBqR,EAAQrR,SAA0Bs7B,EAAOpe,QACxE,EAAP,KAAY,8BAA0B,CAAEgM,MAAO,mBAC1C,8BAET,YAAA9X,qBAAA,SAAqBC,GACnB,IAAMnQ,EAAW,CACflB,QAAS,MACTC,OAAQ,wBACRk5B,cAAe,mBAYjB,MAVwB,cAApB9nB,EAAQrR,SAA+C,gBAApBqR,EAAQrR,UAC7CkB,EAAImR,YAAc,CAChBE,QAAS,SAACK,GAAU,cAAMA,GAAK,CAAEymB,iBAAb,gBAGA,aAApBhoB,EAAQrR,UACVkB,EAAImR,YAAc,CAChBE,QAAS,SAACK,GAAU,cAAMA,GAAK,CAAEymB,iBAAb,YAGjBn4B,GAEH,YAAAq6B,gBAAN,SAAsB9pB,G,6GAKR,OAJJtS,EAAuBsS,EAAjB,OAAE2V,EAAe3V,EAAL,WACpBC,EAAc,YAAkBvS,EAAQ,OAGlC,GAAM,aAChB,SAACoC,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,wBAGtB,CACEu7B,eAAgBpU,GAElB,c,OAGF,OAjBMlmB,EAAM,SAiBZ,GADaA,EAAJ,YAGX,YAAAu6B,sBAAA,SAAsBl6B,EAA2BmL,EAAgCR,EAAewvB,GAAhG,WACE,OAAIhvB,EACKA,EAAWrE,QAAQ,gBAAgB,SAACuE,EAAGC,GAC5C,OAAKA,GAAM6uB,EAAU3uB,SAASF,GAGvB,EAAKP,cAAc/K,EAAMsL,GAFvB,MAKNtM,KAAK+L,cAAc/K,EAAM2K,IAE5B,YAAAyvB,cAAN,SAAoBlqB,G,0GAIN,OAHJtS,EAAmCsS,EAA7B,OAAE2V,EAA2B3V,EAAjB,WAAEmqB,EAAenqB,EAAL,WAChCC,EAAc,YAAkBvS,EAAQ,OAElC,GAAMoB,KAAKoR,UACrB,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAM,CAAEi6B,eAAgBpU,EAAYyU,YAAa,CAACD,KAEpDlqB,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,qB,OAiBpB,OAvBMiB,EAAM,SAQJ46B,EAAc56B,EAAL,UAejB,GAdoB,IAAE0O,OACpBksB,GACA,SAACjsB,EAAM5I,GACG,IAAA80B,EAAmB90B,EAAd,MAAE+0B,EAAY/0B,EAAL,QACtB,OAAK,IAAEyB,QAAQqzB,GAGV,IAAErzB,QAAQszB,GAGRnsB,EAFE,IAAEE,OAAOF,EAAMmsB,GAHf,IAAEjsB,OAAOF,EAAM,IAAEsB,QAAQ,IAAE5H,IAAIwyB,GAAO,SAACE,GAAS,OAAC,IAAEvzB,QAAQuzB,EAAKD,SAAW,GAAKC,EAAhC,eAO3D,aAIE,YAAAluB,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,EAAezD,G,gIAC3DsG,EAAYtG,EAAL,QACA,sBAAX3G,EAAA,MACS,GAAMM,KAAKg7B,gBAAgB,CAAEp8B,OAAM,EAAEioB,WAAY/c,EAAS9J,KAAK6M,mBAAmB/C,a,OAa7F,OAbMkH,EAAK,SACL,EAAkB3K,EAAL,cACnB,EAAgBrG,KAAK66B,kBAAkBruB,SAAS,GAAiB,EAAgBxM,KAAK6M,mBAAmB6P,SACnGpW,EAAS0K,EAAG9D,SAAQ,SAACpU,GACzB,IAAM6iC,EAAc,EAAKT,sBAAsBpiC,EAAG6T,EAAS,EAAe,EAAKkuB,mBACzEe,EAAQ9iC,EAAE,EAAK+T,mBAAmB6P,UAGxC,OAFA5jB,EAAEuQ,oBAAsBsyB,GAAeC,EAEhC,CACLxuB,KAAMuuB,GAAeC,EACrBtiC,MAAOsiC,MAGX,GAAM,IAAgB9hB,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAagB,SAAU1L,I,OAChF,OADA,SACA,GAAO1K,G,aAEM,mBAAX5G,GAA0C,uBAAXA,EAA/B,OACMm8B,EAA6Cx1B,EAAnC,WAAEy1B,EAAiCz1B,EAAlB,gBAAE01B,EAAgB11B,EAAL,YAC1C,EAAkBrG,KAAK8L,YAAYgwB,GACrB,GAAM97B,KAAKo7B,cAAc,CAC3Cx8B,OAAM,EACNioB,WAAY/c,EAAS9J,KAAK6M,mBAAmB/C,UAC7CuxB,WAAYr7B,KAAK8L,YAAY+vB,O,OAyB/B,OA5BMG,EAAc,SAKd,EAAch8B,KAAK86B,gBAAgBtuB,SAASuvB,GAAeA,EAAc/7B,KAAK6M,mBAAmB8P,QACjGrW,EAAS,IAAE21B,MAAMD,GACpB/sB,QAAO,SAACvI,GACP,MAAe,mBAAXhH,GAGG,IAAoB,IAAExG,IAAIwN,EAAM,2BAExCsC,KAAI,SAACtC,GACJ,IAAMiF,EAAQ,EAAKuvB,sBAAsBx0B,EAAMiG,EAAS,EAAa,EAAKmuB,iBACpE93B,EAAK0D,EAAK,EAAKmG,mBAAmB8P,SAAS,GAEjD,OADAjW,EAAK2C,oBAAsBsC,GAAS3I,EAClB,mBAAXtD,EACH,CACE0N,KAAMzB,GAAS3I,EACf1J,MAAO0J,GAET,CACEoK,KAAM,UAAG,IAAElU,IAAIwN,EAAM,SACrBpN,MAAO,IAAEJ,IAAIwN,EAAM,YAG1BpN,QACH,GAAM,IAAgBwgB,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAaiB,QAASqf,I,OAC/E,OADA,SACA,GAAkB,mBAAXt8B,EAA8B4G,EAAS,IAAE2zB,OAAO3zB,EAAQ,S,OAEjE,SAAO,YAEX,EApKA,CAA0C,kB,42DCJ1C,cAYE,WAAY0E,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,iBACRk5B,cAAe,U,EAwBnB,OAjC0C,OAkBxC,YAAA5rB,WAAA,WACE,OAAOS,QAAQC,QAAQ,kBAAgB1E,KAAI,SAAC,G,IAAE1P,EAAK,QAAO,MAAC,CAAEA,MAAK,EAAE8T,KAAM,YAAE9T,SAMxE,YAAAkY,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,OADMs6B,EAAS,SACf,GAAO,IAAElmB,QACPkmB,EAAOlwB,KAAI,SAACtC,GACV,OAAO,0BAAgBA,gBAI/B,EAjCA,CAA0C,kB,uhECT1C,yE,OACE,EAAAuH,kBAA4C,oBAC5C,EAAA1B,kBAA8B,oBAC9B,EAAAM,mBAAqB,qBACrB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,sBACRk5B,cAAe,Y,EAYnB,OAnB2C,OAUnC,YAAApnB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACG,SAAM,YAAM4S,WAAU,UAAC5S,I,OACzC,SADkB,SACDoK,KAAI,SAAC+H,GACpB,IAAImrB,EAAOnrB,EAAOjB,WAAW,GAAGA,WAGhC,OAFAosB,EAAOlwB,MAAMiE,KAAK,IAAIksB,IAAG,OAAKD,GAAI,IAAE,UAAW,cAAW,KAC1DnrB,EAAOjB,WAAW,GAAGA,WAAaosB,EAC3BnrB,cAGb,EAnBA,CAA2C,kB,02DCS3C,yE,OACE,EAAAtF,UAAY,eACZ,EAAAwC,kBAA4C,oBAC5C,EAAA1B,kBAA8B,oBAC9B,EAAAM,mBAAqB,qBACrB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,sBACRk5B,cAAe,YAEjB,EAAAld,aAAe,eACf,EAAApQ,uBAAyB,yBACzB,EAAAJ,gBAAkB,CAAC,kB,EAwDrB,OApEgD,OAcxC,YAAAkxB,qBAAN,SAA2Bx9B,EAAgBsS,G,uGAK9B,OAJLC,EAAc,YAAkBvS,EAAQ,OAInC,GAAM,aACf,SAACoC,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,iCAGtBwR,EACA,oB,OAGF,SAfW,SAeD,YAGN,YAAA1D,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,G,yGAE5CpK,G,IACD,yC,mBACM,SAAMM,KAAKo8B,qBAAqBx9B,EAAQ,CAAEmd,UAAWjS,EAASiS,a,OAMvE,OANAzV,EAAS,SAEH0K,EAAK1K,EAAO0C,KAAI,SAACtC,GAErB,OADAA,EAAK2C,oBAAsB3C,EAAK21B,eACzB,CAAEjvB,KAAM1G,EAAK21B,eAAgB/iC,MAAOoN,EAAK,qBAAmBklB,kBAErE,GAAM,IAAgB9R,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAamQ,eAAgBvlB,I,OACtF,OADA,SACA,GAAO0K,G,OAEP,SAAO,YAIP,YAAAQ,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACG,SAAM,YAAM4S,WAAU,UAAC5S,I,OACzC,SADkB,SACDoK,KAAI,SAAC+H,GACpB,IAAImrB,EAAOnrB,EAAOjB,WAAW,GAAGA,WAQhC,OAPAosB,EAAK3zB,KAAK,WACN,CAAC,cAAe,mBAAmBiE,SAASuE,EAAOvH,aACrD0yB,EAAK3zB,KAAK,kBAGZ2zB,EAAOlwB,MAAMiE,KAAK,IAAIksB,IAAID,IAC1BnrB,EAAOjB,WAAW,GAAGA,WAAaosB,EAC3BnrB,cAGb,EApEA,CAAgD,kB,4hECLhD,cASE,WAAY/F,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OATlD,EAAA+G,kBAA4C,GAC5C,EAAA1B,kBAA8B,CAAC,cAC/B,EAAAM,mBAAqB,CACnB/C,SAAU,cAEZ,EAAA+H,kBAAoB,GAKlB,EAAKyqB,OAAS,2BAAoB,EAAKtxB,iBAAiBhI,GAAE,0B,EA6B9D,OAxC2C,OAanC,YAAA4O,aAAN,SAAmBhT,G,mEACjB,SAAOoB,KAAKF,WACTc,kBAAkB,CACjBC,IAAKb,KAAKs8B,OACVx7B,OAAQ,MACRoQ,OAAQ,CAAEtS,OAAM,GAChBmC,QAAS,CAAE,eAAgB,sBAE5B2P,MAAK,SAAC/P,GACC,IAAAK,EAAqCL,EAAjC,KAEJ47B,GADNv7B,EAAOA,GAAS,IACH,QAIb,OAHAu7B,EAAUA,GAAW,IAGNvzB,KAAI,SAACtC,GAAS,cACxBA,GAAI,CACP81B,WAAY91B,EAAK8B,KACjBi0B,OAAQ/1B,EAAK8B,KACbmiB,MAAOjkB,EAAK8B,KAAKhC,MAAM,KAAKmO,OAAO,GAJR,mBAS7B,YAAA1H,qBAAN,SAA2BrO,G,mEACzB,SAAOoB,KAAK4R,aAAahT,WAE7B,EAxCA,CAA2C,kB,m3DCK3C,cAYE,WAAYoM,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,KACTC,OAAQ,kBACRk5B,cAAe,iBAEjB,EAAAG,UAAY,G,EA8Cd,OAzD0C,OAgBxC,YAAA/rB,WAAA,sBACE,OAAOhN,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAM,OAElB,KACA,CAAEnB,OAAQ,kBAAmBd,OAAQ,iBACrC8R,MAAK,SAAChI,GAGN,OADA,EAAKqwB,UAAY,IAAEC,MAAMtwB,EAASuwB,cAAe,UAC1C,IAAEjwB,IAAIN,EAASuwB,eAAiB,IAAI,SAACvyB,GAC1C,MAAO,CACL0G,KAAM,YAAE1G,EAAKrF,QACb/H,MAAOoN,EAAKrF,eAMd,YAAAmQ,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,SADe,SACDoK,KAAI,SAACtC,GAAS,gDAG9B,YAAA+P,kBAAA,SAAkB,G,IAAErP,EAAK,QAAExI,EAAM,SAC/B,GAAc,oBAAVwI,EAA6B,CAC/B,IAAM+J,EAAc,YAAkBvS,EAAQ,MAC9C,OAAOoB,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,MAE9B,KACA,CAAE5D,OAAM,EAAEc,OAAQ,wBAClBgR,MAAK,SAAChI,GACN,OAAO,IAAEM,IAAIN,EAASg0B,gBAAkB,IAAI,SAACh2B,GAC3C,MAAO,CAAE0G,KAAM1G,EAAKqlB,gBAAiBzyB,MAAOoN,EAAKqlB,uBAIvD,MAAO,IAEX,EAzDA,CAA0C,kB,42DCP1C,cAYE,WAAY/gB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,UACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,GACpB,EAAApB,mBAAqB,CACnB/C,SAAU,cAEZ,EAAA+H,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,oBACRk5B,cAAe,e,EA0DnB,OApE2C,OAgBnC,YAAApnB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,OADMs6B,EAAS,SACf,GAAO,IAAElmB,QACPkmB,EAAOlwB,KAAI,SAACtC,GACV,OAAI,wBAAcA,GACT,0BAAgBA,GAElB,kBAKb,YAAAsG,WAAA,WACE,OAAOhN,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAM,OAChBG,KAAM,CAAE27B,QAAS,QAEnB,MACA,CAAEj9B,OAAQ,oBACVgR,MAAK,SAAChI,GACN,OAAO,IAAEuG,OACP,IAAEjG,IAAIN,EAAS2I,WAAa,IAAI,SAAC3K,GAC/B,MAAO,CACL0G,KAAM1G,EAAK4K,WACXhY,MAAOoN,EAAKrF,OACZkQ,YAAa7K,EAAK6K,iBAGtB,SAAC7K,GAAS,oBAAAA,EAAK6K,mBAKrB,YAAA4nB,SAAA,SAASv6B,GACP,IAAMuS,EAAc,YAAkBvS,EAAQ,OAC9C,OAAOoB,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAM,CAAE27B,QAAS,QAEnBxrB,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,kBAClBgR,MAAK,SAAChI,GACN,OAAO,IAAEuG,OACP,IAAEjG,IAAIN,EAAS0wB,SAAW,IAAI,SAAC1yB,GAC7B,MAAO,CAAE0G,KAAM1G,EAAK2yB,SAAU//B,MAAOoN,EAAK+hB,KAAM8Q,UAAW7yB,EAAK6yB,UAAW9Q,KAAM/hB,EAAK+hB,UAExF,SAAC/hB,GAAS,oBAAAA,EAAK6yB,iBAIvB,EApEA,CAA2C,kB,q2DCO3C,cAYE,WAAYvuB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,gCACpB,EAAA0B,kBAAoB,2BACpB,EAAApB,mBAAqB,qBACrB,EAAA1B,UAAY,YAEZ,EAAA0G,kBAAoB,CAClBpS,QAAS,UACTC,OAAQ,oBACRk5B,cAAe,e,EAuCnB,OAjDoD,OAe5C,YAAApnB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,SADe,SACDoK,KAAI,SAACtC,GAAS,gDAK9B,YAAAsG,WAAA,WACE,OAAOhN,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAM,OAChBG,KAAM,CAAE27B,QAAS,iBAEnB,MACA,CAAEj9B,OAAQ,oBACVgR,MAAK,SAAChI,GACN,OAAO,IAAEuG,OACP,IAAEjG,IAAIN,EAAS2I,WAAa,IAAI,SAAC3K,GAC/B,MAAO,CACL0G,KAAM1G,EAAK4K,WACXhY,MAAOoN,EAAKrF,OACZkQ,YAAa7K,EAAK6K,iBAGtB,SAAC7K,GAAS,oBAAAA,EAAK6K,mBAKrB,YAAA7B,iBAAA,SAAiB7B,G,MACf,aACG,qBAAmB/D,UAAW+D,EAChC,GAEL,EAjDA,CAAoD,kB,q1DCTpD,cAYE,WAAY7C,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,sBACpB,EAAA0B,kBAAoB,sBACpB,EAAApB,mBAAqB,CACnB/C,SAAU,mBAEZ,EAAA+H,kBAAoB,CAClBpS,QAAS,KACTC,OAAQ,yBACRk5B,cAAe,oB,EASnB,OAnB0C,OAelC,YAAApnB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,SADe,SACDoK,KAAI,SAACtC,GAAS,gDAEhC,EAnBA,CAA0C,kB,i4DCa1C,cA2BE,WAAYsE,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OA3BlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,wBACpB,EAAA0B,kBAAoB,wBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,OACTC,OAAQ,wBACRk5B,cAAe,aAEjB,EAAAld,aAAe,eACf,EAAApQ,uBAAyB,yBACzB,EAAAsxB,eAAiB,CACfC,mBAAoB,CAClBp9B,QAAS,OACTC,OAAQ,qBACRk5B,cAAe,SACfkE,QAAS,mBAEXC,6BAA8B,CAC5Bt9B,QAAS,OACTC,OAAQ,+BACRk5B,cAAe,YACfkE,QAAS,W,EA4Ef,OApG0C,OA+BxC,YAAA9vB,WAAA,WACE,OAAOhN,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAM,SAElB,OACA,CAAEnB,OAAQ,uBAAwBd,OAAQ,iBAC1C8R,MAAK,SAAChI,GACN,OAAO,IAAEM,IAAIN,EAASs0B,YAAc,IAAI,SAACt2B,GACvC,MAAO,CACL0G,KAAM,YAAE1G,EAAKrF,QACb/H,MAAOoN,EAAKrF,OACZkQ,YAAa7K,EAAK6K,oBAMpB,YAAAC,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,OADMs6B,EAAS,SACf,GAAO,IAAElmB,QACPkmB,EAAOlwB,KAAI,SAACtC,GACV,OAAO,0BAAgBA,gBAIvB,YAAA8yB,gBAAN,SAAsBtoB,G,qHAOT,OANHtS,EAAiCsS,EAA3B,OAAU+rB,EAAiB/rB,EAAd,OAAErR,EAAYqR,EAAL,QAC9B,EAAqClR,KAAK48B,eAAeK,GAAvDx9B,EAAO,UAAEC,EAAM,SAAEk5B,EAAa,gBAEhCznB,EAAc,YAAkBvS,EAAQa,GAGnC,GAAM,aACf,SAACuB,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAM,MAGpBG,EACA+4B,I,OAEF,SAdW,SAcD,YAEN,YAAAprB,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,EAAezD,G,oHAC7DxG,EAAe,CACnBmb,WAAYlR,EAAS9J,KAAK6M,mBAAmB/C,UAC7CiI,MAAO,MAEiD,IAAtDhZ,OAAO6W,KAAK5P,KAAK48B,gBAAgB92B,QAAQpG,GAAzC,MACS,GAAMM,KAAKw5B,gBAAgB,CAAE56B,OAAM,EAAEc,OAAM,EAAEG,QAAO,K,OAS/D,OATMmR,EAAK,SACH,EAAYhR,KAAK48B,eAAel9B,GAAzB,QACT4G,EAAS0K,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,EAAK+T,mBAAmB,IAC3C,CACLO,KAAMtU,EAAE,EAAK+T,mBAAmB,IAChCvT,MAAOR,EAAE,EAAK+T,mBAAmB,QAGrC,GAAM,IAAgBiN,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAa,GAAU1K,I,OAChF,OADA,SACA,GAAO1K,G,OAET,SAAO,YAEX,EApGA,CAA0C,kB,wgBCb1C,cAWE,WAAY0E,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAXlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,gCACRk5B,cAAe,2B,EAKnB,OAd0C,OAc1C,EAdA,CAA0C,kB,q1DCA1C,cAYE,WAAY5tB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,CACnB/C,SAAU,yBAEZ,EAAA+H,kBAAoB,CAClBpS,QAAS,KACTC,OAAQ,+BACRk5B,cAAe,0B,EAUnB,OApB2C,OAgBnC,YAAApnB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,SADe,SACDoK,KAAI,SAACtC,GAAS,gDAEhC,EApBA,CAA2C,kB,q1DCM3C,cAUE,WAAYsE,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAVlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,wBACpB,EAAA0B,kBAAoB,wBACpB,EAAApB,mBAAqB,qBACrB,EAAAgF,kBAAoB,CAClBpS,QAAS,OACTC,OAAQ,kBACRk5B,cAAe,W,EAUnB,OAlB4C,OAcpC,YAAApnB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,SADe,SACDoK,KAAI,SAACtC,GAAS,gDAEhC,EAlBA,CAA4C,kB,oiECC5C,cAcE,WAAYsE,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAdlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,oBACRk5B,cAAe,eAEjB,EAAAxtB,gBAAkB,CAChBuG,aAAc,mB,EAQlB,OApB0C,OAiBlC,YAAAlF,gBAAN,SAAsBpG,EAAYqG,G,mEAChC,SAAO,YAAMD,gBAAe,iBAAMpG,GAAU,CAAEzH,OAAQ,iBAAoB8N,WAE9E,EApBA,CAA0C,kB,42DCE1C,cAaE,WAAY1B,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAblD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,mCACpB,EAAA0B,kBAAoB,mCACpB,EAAA3C,uBAAyB,yBACzB,EAAAuB,mBAAqB,qBACrB,EAAA6O,aAAe,eAEf,EAAA7J,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,oBACRk5B,cAAe,e,EA8BnB,OAzC0C,OAgBlC,YAAAsE,YAAN,SAAkBhsB,G,mHAGM,OAFdrR,EAAYqR,EAAL,QACP8J,EAAenb,EAAL,WACI,GAAM,IAAgByN,YAAYtN,KAAKP,U,OAI7D,OAJM8N,EAAgB,SAChB4vB,EAC4F,QAAhG,MAAEr0B,UAAUyE,EAAcxH,MAAK,SAACW,GAAS,OAAAA,EAAK,EAAKmG,mBAAmB/C,YAA7B,aAAuD,QAAI,GAEtG,GADiCqzB,EAAL,mBAGxB,YAAA3vB,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,EAAezD,G,2GAKxD,OAJLxG,EAAe,CACnBmb,WAAYlR,EACZiI,MAAO,KAEE,GAAM/R,KAAKk9B,YAAY,CAAEt+B,OAAM,EAAEc,OAAM,EAAEG,QAAO,K,OAQ3D,OARMmR,EAAK,SACL1K,EAAS0K,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,EAAK+T,mBAAmBkX,QAC3C,CACL3W,KAAMtU,EAAE,EAAK+T,mBAAmBkX,QAChCzqB,MAAOR,EAAE,EAAK+T,mBAAmBkX,YAGrC,GAAM,IAAgBjK,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAaqI,OAAQ/S,I,OAC9E,OADA,SACA,GAAO1K,WAEX,EAzCA,CAA0C,kB,oiECR1C,cAWE,WAAY0E,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAXlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,yBACpB,EAAA0B,kBAAoB,yBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,wBACRk5B,cAAe,mB,EAQnB,OAjB0C,OAclC,YAAAnsB,gBAAN,SAAsBpG,EAAYqG,G,mEAChC,SAAO,YAAMD,gBAAe,iBAAMpG,GAAU,CAAEzH,OAAQ,iBAAoB8N,WAE9E,EAjBA,CAA0C,kB,i4DCa1C,cAeE,WAAY1B,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAflD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,qBACrB,EAAAvB,uBAAyB,yBAEzB,EAAAuG,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,oBACRk5B,cAAe,aAGjB,EAAAld,aAAe,e,EA4FjB,OAzG0C,OAqBxC,YAAA1O,WAAA,WACE,OAAOS,QAAQC,QAAQ,kBAAgB1E,KAAI,SAAC,G,IAAE1P,EAAK,QAAO,MAAC,CAAEA,MAAK,EAAE8T,KAAM,YAAE9T,SAGxE,YAAAkY,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,OADMs6B,EAAS,SACf,GAAO,IAAElmB,QACPkmB,EAAOlwB,KAAI,SAACtC,GACV,OAAO,0BAAgBA,gBAIvB,YAAA02B,iBAAN,SAAuBlsB,G,2GAKT,OAJJtS,EAAWsS,EAAL,OACRC,EAAc,YAAkBvS,EAAQoB,KAAKP,SAGvC,GAAM,aAChB,SAACuB,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,sCAGtB,GACA,4B,OAGF,OAfMiB,EAAM,SAeZ,GADaA,EAAJ,YAGL,YAAA08B,aAAN,SAAmBnsB,G,2GAKL,OAJJtS,EAAWsS,EAAL,OACRC,EAAc,YAAkBvS,EAAQoB,KAAKP,SAGvC,GAAM,aAChB,SAACuB,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,iBAGtB,GACA,a,OAGF,OAfMiB,EAAM,SAeZ,GADaA,EAAJ,GACCqI,KAAI,SAAC7P,G,MAAM,aAAI,EAAK0T,mBAAmB2S,SAAUrmB,EAAC,cAExD,YAAAqU,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,G,+GAErC,oCAAXpK,EAAA,MACS,GAAMM,KAAKo9B,iBAAiB,CAAEx+B,OAAM,EAAEioB,WAAY/c,EAAS9J,KAAK6M,mBAAmB/C,a,OAQ9F,OARMkH,EAAK,SACL1K,EAAS0K,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,EAAK+T,mBAAmBrE,MAC3C,CACL4E,KAAMtU,EAAE,EAAK+T,mBAAmBrE,MAChClP,MAAOR,EAAE,EAAK+T,mBAAmBrE,UAGrC,GAAM,IAAgBsR,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAagE,MAAO1O,I,OAC7E,OADA,SACA,GAAO1K,G,aAEM,eAAX5G,EAAA,MACS,GAAMM,KAAKq9B,aAAa,CAAEz+B,OAAM,EAAEioB,WAAY/c,EAAS9J,KAAK6M,mBAAmB/C,a,OAQ1F,OARMkH,EAAK,SACL1K,EAAS0K,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,EAAK+T,mBAAmB2S,SAC3C,CACLpS,KAAMtU,EAAE,EAAK+T,mBAAmB2S,SAChClmB,MAAOR,EAAE,EAAK+T,mBAAmB2S,aAGrC,GAAM,IAAgB1F,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAa+D,MAAOzO,I,OAC7E,OADA,SACA,GAAO1K,G,OAET,SAAO,YAEX,EAzGA,CAA0C,kB,q1DCb1C,cA0BE,WAAY0E,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OA1BlD,EAAAuE,UAAY,SACZ,EAAAc,kBAAoB,sBACpB,EAAA0B,kBAAoB,sBACpB,EAAApB,mBAAqB,CACnB/C,SAAU,aAEZ,EAAA+H,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,oBACRk5B,cAAe,aACf9mB,YAAa,CACXE,QAAS,SAACd,GASR,OARoBA,EAAL,UAEbA,EAAO0D,QAAU,IAEnB1D,EAAO0D,QAAQrM,KAAK,CAClBC,KAAM,eACNkM,OAAQ,CAAC,SAEJxD,K,EA2Bf,OAhD2C,OA8BnC,YAAAM,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,SADe,SACDqQ,QAAO,SAACvI,GAAI,UAExB,OAAgC,QAAhC,EAAoB,QAApB,EAAe,QAAf,EAAAA,EAAKoJ,kBAAU,eAAG,UAAE,eAAEA,kBAAU,eAAEtD,SAAS,mBAcjD,EAhDA,CAA2C,kB,42DCM3C,cAUE,WAAYxB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAVlD,EAAAuE,UAAY,iBACZ,EAAAc,kBAAoB,8BACpB,EAAA0B,kBAAoB,8BACpB,EAAApB,mBAAqB,qBACrB,EAAAgF,kBAAoB,CAClBpS,QAAS,aACTC,OAAQ,oBACRk5B,cAAe,e,EAuDnB,OA/DkD,OAchD,YAAA5rB,WAAA,WACE,OAAOhN,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAM,OAChBG,KAAM,CAAE27B,QAAS,eAEnB,MACA,CAAEj9B,OAAQ,oBACVgR,MAAK,SAAChI,GACN,OAAO,IAAEuG,OACP,IAAEjG,IAAIN,EAAS2I,WAAa,IAAI,SAAC3K,GAC/B,MAAO,CACL0G,KAAM1G,EAAK4K,WACXhY,MAAOoN,EAAKrF,OACZkQ,YAAa7K,EAAK6K,iBAGtB,SAAC7K,GAAS,oBAAAA,EAAK6K,mBAKrB,YAAA4nB,SAAA,SAASv6B,GACP,IAAMuS,EAAc,YAAkBvS,EAAQ,OAC9C,OAAOoB,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAM,CAAE27B,QAAS,eAEnBxrB,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,kBAClBgR,MAAK,SAAChI,GACN,OAAO,IAAEuG,OACP,IAAEjG,IAAIN,EAAS0wB,SAAW,IAAI,SAAC1yB,GAC7B,MAAO,CAAE0G,KAAM1G,EAAK2yB,SAAU//B,MAAOoN,EAAK+hB,KAAM8Q,UAAW7yB,EAAK6yB,UAAW9Q,KAAM/hB,EAAK+hB,UAExF,SAAC/hB,GAAS,oBAAAA,EAAK6yB,iBAKf,YAAA/nB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,OADMs6B,EAAS,SACf,GAAO,IAAElmB,QACPkmB,EAAOlwB,KAAI,SAACtC,GACV,OAAO,0BAAgBA,gBAI/B,EA/DA,CAAkD,kB,8iECAlD,cAaE,WAAYsE,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAblD,EAAAuE,UAAY,aACZ,EAAAc,kBAAoB,2BACpB,EAAA+wB,iBAAmB,CAAC,eAAgB,kBACpC,EAAAzwB,mBAAqB,qBACrB,EAAAvB,uBAAyB,yBAEzB,EAAAuG,kBAAoB,CAClBpS,QAAS,UACTC,OAAQ,sBACRk5B,cAAe,mB,EAoEnB,OA9E+C,OAgB7C,YAAA1qB,qBAAA,SAAqB4C,EAAcvH,GACjC,OAAIA,EAAO6Y,MAAwB,KAAhB7Y,EAAO6Y,KACjB,CAAE7Y,OAAQ,QAEfA,EAAO8nB,SAA8B,KAAnB9nB,EAAO8nB,QACpB,CAAE9nB,OAAQ,WAEZ,4BAET,YAAA2xB,sBAAA,SAAsBl6B,EAA2BmL,EAAgCR,EAAewvB,GAAhG,WACE,OAAIhvB,EACKA,EAAWrE,QAAQ,gBAAgB,SAACuE,EAAGC,GAC5C,OAAKA,GAAM6uB,EAAU3uB,SAASF,GAGvB,EAAKP,cAAc/K,EAAMsL,GAFvB,MAKNtM,KAAK+L,cAAc/K,EAAM2K,IAE5B,YAAA6B,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,EAAezD,G,wHAC3DsG,EAAYtG,EAAL,QACA,qBAAX3G,EAAA,MACY,GAAMM,KAAK4R,aAAahT,EAAQ,CAAE2hB,YAAa,CAACzW,EAAS9J,KAAK6M,mBAAmB/C,c,OAQ/F,OAROnJ,EAAO,SAAJ,GACJ,EAAiB0F,EAAL,aAClB,EAAerG,KAAKs9B,iBAAiB9wB,SAAS,GAAgB,EAAexM,KAAK6M,mBAAmBwkB,QAC/F/qB,EAAS,IAAE0C,IAAI,IAAE9P,IAAIyH,EAAK,cAAe,KAAK,SAAC+F,GACnD,IAAM62B,EAAe,EAAKrC,sBAAsBx0B,EAAMiG,EAAS,EAAc,EAAK2wB,kBAElF,OADA52B,EAAK2C,oBAAsBk0B,GAAgB72B,EAAK,EAAKmG,mBAAmBwkB,SACjE,CAAEjkB,KAAM1G,EAAK82B,aAAclkC,MAAOoN,EAAK82B,iBAEhD,GAAM,IAAgB1jB,gBACpB9Z,KAAKP,QACLO,KAAKsL,uBAAuBgmB,QAAQljB,iBACpC,IAAElV,IAAIyH,EAAK,cAAe,M,OAE5B,OALA,SAKA,GAAO2F,G,aAEM,yBAAX5G,EAAA,MACY,GAAMM,KAAK4R,aAAahT,EAAQ,CAAE2hB,YAAa,CAACzW,EAAS9J,KAAK6M,mBAAmB/C,c,OAa/F,OAbOnJ,EAAO,SAAJ,GACF88B,EAAiBp3B,EAAL,aACd,EAAgB,IAAEN,KAAK,IAAE7M,IAAIyH,EAAK,cAAe,IAAK,CAAE68B,aAAcx9B,KAAK8L,YAAY2xB,KACzFn3B,EAAS,IAAEo3B,MAAM,EAAcC,cAAc,SAAC9zB,GAChD,IAAM+zB,EAAS,UAAG,EAAcJ,aAAY,sBAAc3zB,GAC1D,MAAO,CAAEuD,KAAMwwB,EAAQtkC,MAAOskC,MAE5B,IACFt3B,EAAS,EAAH,CACJ,CAAE8G,KAAM,UAAG,EAAcowB,aAAY,iBAAiBlkC,MAAO,UAAG,EAAckkC,aAAY,mBACvFl3B,GAAM,IAGb,GAAM,IAAgBwT,gBACpB9Z,KAAKP,QACLO,KAAKsL,uBAAuBimB,KAAKnjB,iBACjC9H,EAAO0C,KAAI,SAACtC,GAAS,MAAC,CAAEyZ,OAAQzZ,EAAKpN,MAAO+P,oBAAqB3C,EAA5C,Y,OAEvB,OALA,SAKA,GAAOJ,G,OAGT,SAAO,YAEX,EA9EA,CAA+C,kB,yjECE/C,yE,OACE,EAAA2H,kBAA4C,oBAC5C,EAAA1B,kBAA8B,oBAC9B,EAAAM,mBAAqB,qBACrB,EAAAxB,YAAc,GACd,EAAAqQ,aAAe,eACf,EAAApQ,uBAAyB,yBACzB,EAAAuG,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,oBACRk5B,cAAe,cACf9mB,YAAa,CACXE,QAAS,SAACd,GAAW,cAChBA,GAAM,CACT2U,gBAAiB3U,EAAO2U,iBAAmB,gBAC3CzI,UAAWlM,EAAOkM,YAHC,KAKrB1U,SAAU,SAAC1H,GAAgB,OAAAA,EAAKgI,KAAI,SAAC,GAA+B,MAAC,CAAEopB,UAAvB,YAAkCoG,YAArB,qB,EA4CnE,OA7D8C,OAqBtC,YAAAqF,cAAN,SAAoBj/B,EAAgBsS,G,uGAIvB,OAHLC,EAAc,YAAkBvS,EAAQ,OAGnC,GAAM,aACf,SAACoC,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,2BAErB,OACIwR,GAAM,CAAEiD,cAAc,IAC3B,a,OAIF,SAhBW,SAgBD,YAGN,YAAA3G,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,G,yGAE5CpK,G,IACD,mC,mBACa,SAAMM,KAAK69B,cAAcj/B,EAAQ,CAAEoc,WAAYlR,EAASsoB,UAAW0L,SAAU,S,OAK7F,OALMC,EAAU,SAChBz3B,EAASy3B,EAAQ/0B,KAAI,SAACtC,GAEpB,OADAA,EAAK2C,oBAAsB3C,EAAK,qBAAmB0b,MAC5C,CAAEhV,KAAM1G,EAAK,qBAAmB0b,MAAO9oB,MAAOoN,EAAK,qBAAmB0b,UAE/E,GAAM,IAAgBtI,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAa0G,KAAM2b,I,OAE5E,OAFA,SAEA,GAAOz3B,G,OAGP,SAAO,YAGf,EA7DA,CAA8C,kB,wgBCR9C,cAYE,WAAY0E,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,kBACZ,EAAAc,kBAAoB,8BACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,CACnB/C,SAAU,gBAEZ,EAAA+H,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,sBACRk5B,cAAe,iB,EAKnB,OAfkD,OAelD,EAfA,CAAkD,kB,oiECAlD,cAYE,WAAY5tB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,aACZ,EAAAc,kBAAoB,yBACpB,EAAA0B,kBAAoB,yBACpB,EAAApB,mBAAqB,CACnB/C,SAAU,UAEZ,EAAA+H,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,kBACRk5B,cAAe,W,EASnB,OAnB6C,OAgBrC,YAAAnsB,gBAAN,SAAsBpG,EAAYqG,G,mEAChC,SAAO,YAAMD,gBAAe,iBAAMpG,GAAU,CAAEzH,OAAQ,iBAAoB8N,WAE9E,EAnBA,CAA6C,kB,2jECC7C,cAYE,WAAY1B,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAZlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,GACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,KACTC,OAAQ,KACRk5B,cAAe,M,EA+InB,OAxJ0C,OAgBxC,YAAAhnB,aAAA,SAAahT,EAAyBsS,QAAzB,IAAAtS,MAAA,qBAAyB,IAAAsS,MAAA,IACpCA,EAAS,EAAH,CAAKukB,OAAQ,EAAGD,MAAO,IAAOtkB,GACpC,IAAMC,EAAc,YAAkBvS,EAAQ,OAC9C,OAAOoB,KAAKg+B,YACV,CACEn9B,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAMkQ,GAERC,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,kCAClBgR,MAAK,SAAChI,GACN,OAAOA,EAAS1H,MAAQ,OAQ5B,YAAAiM,qBAAA,SAAqBrO,EAAQyH,GAA7B,WACMC,EAAgB,GACd4K,EAAS,EAAH,CAAKrG,OAAQ,EAAGkH,MAAO,IAAO1L,GACpC8K,EAAc,YAAkBvS,EAAQ,OAC9C,OAAOoB,KAAKg+B,YACV,CACEn9B,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAMkQ,GAERC,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,kCAClBgR,MAAK,SAAChI,GACNpC,EAASoC,EAAS1H,MAAQ,GAC1B,IAAMwJ,EAAQ9B,EAASu1B,YAAc,EACrC,GAAI33B,EAAO6C,QAAUqB,EACnB,OAAOlE,EAEP,IAAM+L,EAAQ,YAAY7H,EAAO,IAC3B,EAAkB,GAIxB,OAHA,IAAE/D,QAAQ4L,GAAO,SAAC3L,GAChB,EAAS6B,KAAK,EAAKqJ,aAAahT,EAAQ8H,OAEnC+G,QAAQgD,IAAI,GAChBC,MAAK,SAACC,GAIL,OAHA,IAAElK,QAAQkK,GAAW,SAACjK,GACpBJ,EAAS,IAAEkJ,OAAOlJ,EAAQI,MAErBJ,KALJ,OAOE,SAACyB,GACN,OAAOzB,SAMjB,YAAA43B,SAAA,SAASt/B,EAAQsS,QAAA,IAAAA,MAAA,KACfA,EAAS,EAAH,CAAKrG,OAAQ,EAAGkH,MAAO,IAAOb,IAE7BrG,OAASpD,OAAOyJ,EAAOrG,QAC9BqG,EAAOa,MAAQtK,OAAOyJ,EAAOa,OAC7B,IAAMZ,EAAc,YAAkBvS,EAAQ,OAC9C,OAAOoB,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAMkQ,GAERC,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,iBAClBgR,MAAK,SAAChI,GACN,OAAO,IAAEM,IAAIN,EAASy1B,QAAU,IAAI,SAACz3B,GAAS,MAAC,CAAE0G,KAAM1G,EAAK4W,MAAOhkB,MAAOoN,EAA5B,cAIlD,YAAA03B,UAAA,SAAUx/B,GAAV,WACM0H,EAAgB,GACd4K,EAAc,CAAErG,OAAQ,EAAGkH,MAAO,KAExCb,EAAOrG,OAASpD,OAAOyJ,EAAOrG,QAC9BqG,EAAOa,MAAQtK,OAAOyJ,EAAOa,OAC7B,IAAMZ,EAAc,YAAkBvS,EAAQ,OAC9C,OAAOoB,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAMkQ,GAERC,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,iBAClBgR,MAAK,SAAChI,GACNpC,EAAS,IAAE0C,IAAIN,EAASy1B,QAAU,IAAI,SAACz3B,GAAS,MAAC,CAAE0G,KAAM1G,EAAK4W,MAAOhkB,MAAOoN,EAA5B,UAChD,IAAM8D,EAAQ9B,EAASwJ,YAAc,EACrC,GAAI5L,EAAO6C,QAAUqB,EACnB,OAAOlE,EAEP,IAAM+L,EAAQ,YAAY7H,EAAO,KAC3B,EAAkB,GAIxB,OAHA,IAAE/D,QAAQ4L,GAAO,SAAC3L,GAChB,EAAS6B,KAAK,EAAK21B,SAASt/B,EAAQ8H,OAE/B+G,QAAQgD,IAAI,GAChBC,MAAK,SAACC,GAIL,OAHA,IAAElK,QAAQkK,GAAW,SAACjK,GACpBJ,EAAS,IAAEkJ,OAAOlJ,EAAQI,MAErBJ,KALJ,OAOE,SAACyB,GACN,OAAOzB,SAYX,YAAA03B,YAAN,SAAkBz+B,EAASE,EAASwK,G,YAAA,IAAAA,MAAA,I,mFACxB,SAAM,YACd1K,EACAE,EACAwK,EACAjK,KAAKR,SACLQ,KAAKgL,iBAAiBhI,GACtBhD,KAAKF,a,OAEP,OARAP,EAAU,SAQV,GAAOS,KAAKF,WACTc,kBAAkBrB,GAClBmR,MAAK,SAAChI,GACL,OAAO,IAAExP,IAAIwP,EAAU,OAAQ,OAH5B,OAKE,SAACX,GACN,MAAMA,cAGd,EAxJA,CAA0C,kB,wgBCK1C,cAcE,WAAYiD,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAdlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,4BACpB,EAAA0B,kBAAoB,2BACpB,EAAApB,mBAAqB,qBACrB,EAAAgF,kBAAoB,CAClBpS,QAAS,WACTC,OAAQ,sBACRk5B,cAAe,iBAGjB,EAAAxtB,gBAAkB,CAChBuG,aAAc,mB,EAKlB,OAjB2C,OAiB3C,EAjBA,CAA2C,kB,41DCN3C,cAqBE,WAAY3G,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OArBlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,wBACpB,EAAA0B,kBAAoB,wBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,OACTC,OAAQ,kBACRk5B,cAAe,WACf9mB,YAAa,I,EAwBjB,OAlC4C,OAyBpC,YAAAN,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,SADe,SACDqQ,QACZ,SAACvI,GACC,OAAmC,IAAnC,cAAIA,EAAM,sBACuC,IAAjD,cAAIA,EAAM,oCACmC,cAA7C,cAAIA,EAAM,2CAGlB,EAlCA,CAA4C,kB,oiECA5C,cAeE,WAAYsE,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAflD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,yBACpB,EAAA0B,kBAAoB,yBACpB,EAAApB,mBAAqB,CACnB/C,SAAU,cAEZ,EAAA+H,kBAAoB,CAClBpS,QAAS,QACTC,OAAQ,oBACRk5B,cAAe,cACf9mB,YAAa,CACXE,QAAS,SAACd,GAAW,cAAMA,GAAM,CAAEmtB,eAAd,U,EAW3B,OAvB6C,OAmBrC,YAAA7sB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,SADe,SACDqQ,QAAO,SAACvI,GAAS,8CAEnC,EAvBA,CAA6C,kB,kkECQ7C,cAcE,WAAYsE,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAdlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,4BACpB,EAAA0B,kBAAoB,4BACpB,EAAApB,mBAAqB,qBACrB,EAAAxB,YAAc,CAAC,4BAA0B2W,QAAS,4BAA0BD,SAC5E,EAAAlQ,kBAAoB,CAClBpS,QAAS,QACTC,OAAQ,oBACRk5B,cAAe,cACf9mB,YAAa,CACXE,QAAS,SAACd,GAAW,cAAMA,GAAM,CAAEmtB,eAAd,U,EAyC3B,OApD6C,OAkBrC,YAAAC,oBAAN,SAA0BptB,G,2GAIZ,OAHJtS,EAAuBsS,EAAjB,OAAE2V,EAAe3V,EAAL,WACpBC,EAAc,YAAkBvS,EAAQ,SAElC,GAAM,aAChB,SAACoC,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,+BAGtB,CACEsb,WAAY6L,GAEd,a,OAGF,SAjBY,kBAmBR,YAAArZ,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,EAAezD,G,0GACpD,6BAAX3G,EAAA,MACS,GAAMM,KAAKs+B,oBAAoB,CAAE1/B,OAAM,EAAEioB,WAAY/c,EAAS9J,KAAK6M,mBAAmB/C,a,OAGjG,OAHMkH,EAAK,SACHutB,EAAal4B,EAAL,SAEhB,IAA0B,KADpBm4B,EAAgB,WAAS14B,QAAQy4B,IAEnC,GACA,IAAEv1B,IAAIgI,EAAGwtB,IAAgB,SAAC93B,GAAS,MAAC,CAAE0G,KAAM1G,EAAKyZ,OAAQ7mB,MAAOoN,EAA7B,Y,OAEzC,SAAO,YAEX,EApDA,CAA6C,kB,02DCE7C,cAUE,WAAYsE,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OANlD,EAAA2F,mBAAqB,qBACrB,EAAAvB,uBAAyB,yBACzB,EAAAoQ,aAAe,eAMb,EAAKjQ,UAAY,aACjB,EAAKc,kBAAoB,uBACzB,EAAK0B,kBAAoB,uBACzB,EAAK4D,kBAAoB,CACvBpS,QAAS,MACTC,OAAQ,gBACRk5B,cAAe,a,EAiDrB,OApE2C,OAuBzC,YAAA5rB,WAAA,WACE,OAAOS,QAAQC,QAAQ,kBAAgB1E,KAAI,SAAC,G,IAAE1P,EAAK,QAAO,MAAC,CAAEA,MAAK,EAAE8T,KAAM,YAAE9T,SAGxE,YAAAkY,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,SADe,SACDqQ,QACZ,SAACvI,G,gBAEC,OAAgC,QAAhC,EAAoB,QAApB,EAAe,QAAf,EAAAA,EAAKoJ,kBAAU,eAAG,UAAE,eAAEA,kBAAU,eAAEtD,SAAS,mBACX,QAAhC,EAAoB,QAApB,EAAe,QAAf,EAAA9F,EAAKoJ,kBAAU,eAAG,UAAE,eAAEA,kBAAU,eAAEtD,SAAS,gBAC1C9F,EAAK8C,WAAW+b,WAAW,oBAIlC,YAAAkZ,YAAA,SAAY7/B,EAAQsS,GAClB,IAAMC,EAAc,YAAkBvS,EAAQ,OAC9C,OAAOoB,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAMkQ,GAERC,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,0BAClBgR,MAAK,SAAChI,GACN,OAAOA,EAASg2B,aAId,YAAAlxB,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,G,+GAErC,0BAAXpK,EAAA,MACS,GAAMM,KAAKy+B,YAAY7/B,EAAQ,CAAE+/B,aAAc70B,EAAS9J,KAAK6M,mBAAmB/C,a,OAQ3F,OARMkH,EAAK,SACL1K,EAAS0K,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,EAAK+T,mBAAmBjN,SAC3C,CACLwN,KAAMtU,EAAE,EAAK+T,mBAAmBjN,SAChCtG,MAAOR,EAAE,EAAK+T,mBAAmBjN,aAGrC,GAAM,IAAgBka,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAa9b,QAASoR,I,OAC/E,OADA,SACA,GAAO1K,G,OAET,SAAO,YAEX,EApEA,CAA2C,kB,m3DCD3C,cAWE,WAAY0E,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAXlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,6BACpB,EAAA0B,kBAAoB,6BACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,YACTC,OAAQ,sBACRk5B,cAAe,e,EAiCnB,OA1C0C,OAelC,YAAApnB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,OADMs6B,EAAS,SACf,GAAO,IAAElmB,QAAQkmB,EAAOlwB,KAAI,SAACtC,GAAS,iDAExC,YAAAsG,WAAA,WACE,OAAOS,QAAQC,QAAQ,kBAAgB1E,KAAI,SAAC,G,IAAE1P,EAAK,QAAO,MAAC,CAAEA,MAAK,EAAE8T,KAAM,YAAE9T,SAE9E,YAAAmd,kBAAA,SAAkB,G,IAAErP,EAAK,QAAExI,EAAM,SAC/B,GAAc,SAAVwI,EAAkB,CACpB,IAAM+J,EAAc,YAAkBvS,EAAQ,OAC9C,OAAOoB,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,MAE9B2O,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,kBAClBgR,MAAK,SAAChI,GACN,OAAO,IAAEuG,OACP,IAAEjG,IAAIN,EAAS0wB,SAAW,IAAI,SAAC1yB,GAC7B,MAAO,CAAE0G,KAAM1G,EAAK2yB,SAAU//B,MAAOoN,EAAK+hB,KAAM8Q,UAAW7yB,EAAK6yB,UAAW9Q,KAAM/hB,EAAK+hB,UAExF,SAAC/hB,GAAS,oBAAAA,EAAK6yB,gBAIrB,MAAO,IAEX,EA1CA,CAA0C,kB,+hBCH1C,cAWE,WAAYvuB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAXlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,2BACpB,EAAA0B,kBAAoB,2BACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,YACTC,OAAQ,iBACRk5B,cAAe,c,EAsBnB,OA/B0C,OAexC,YAAA5rB,WAAA,WACE,OAAOhN,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAM,cAElB,YACA,CAAEnB,OAAQ,kBAAmBd,OAAQ,iBACrC8R,MAAK,SAAChI,GACN,OAAO,IAAEM,IAAIN,EAASk2B,aAAe,IAAI,SAACl4B,GACxC,MAAO,CACL0G,KAAM,YAAE1G,EAAK4K,YACbhY,MAAOoN,EAAK4K,mBAKtB,EA/BA,CAA0C,kB,i4DCO1C,cA2BE,WAAYtG,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OA3BlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,wBACpB,EAAA0B,kBAAoB,wBACpB,EAAApB,mBAAqB,qBACrB,EAAAvB,uBAAyB,yBACzB,EAAAoQ,aAAe,eAEf,EAAA7J,kBAAoB,CAClBpS,QAAS,OACTC,OAAQ,mBACRk5B,cAAe,cAEjB,EAAAgE,eAAiB,CACfiC,eAAgB,CACdp/B,QAAS,OACTC,OAAQ,iBACRk5B,cAAe,YACfkE,QAAS,aAEXgC,qBAAsB,CACpBr/B,QAAS,OACTC,OAAQ,uBACRk5B,cAAe,iBACfkE,QAAS,kB,EAiEf,OAzF4C,OAiC1C,YAAA9vB,WAAA,WACE,OAAOS,QAAQC,QAAQ,kBAAgB1E,KAAI,SAAC,G,IAAE1P,EAAK,QAAO,MAAC,CAAEA,MAAK,EAAE8T,KAAM,YAAE9T,SAGxE,YAAAkY,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,OADMs6B,EAAS,SACf,GAAO,IAAElmB,QAAQkmB,EAAOlwB,KAAI,SAACtC,GAAS,iDAGlC,YAAA8yB,gBAAN,SAAsBtoB,G,qHAOT,OANHtS,EAAiCsS,EAA3B,OAAU+rB,EAAiB/rB,EAAd,OAAErR,EAAYqR,EAAL,QAC9B,EAAqClR,KAAK48B,eAAeK,GAAvDx9B,EAAO,UAAEC,EAAM,SAAEk5B,EAAa,gBAEhCznB,EAAc,YAAkBvS,EAAQa,GAGnC,GAAM,aACf,SAACuB,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAM,MAGpBG,EACA+4B,I,OAGF,SAfW,SAeD,YAEN,YAAAprB,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,EAAezD,G,oHAC7DxG,EAAe,CACnBkS,MAAO,IACPqgB,UAAWtoB,EAAS9J,KAAK6M,mBAAmB/C,YAEY,IAAtD/Q,OAAO6W,KAAK5P,KAAK48B,gBAAgB92B,QAAQpG,GAAzC,OACa,mBAAXA,IACFG,EAAQof,cAAgBjf,KAAK8L,YAAYzF,EAAK,gBAErC,GAAMrG,KAAKw5B,gBAAgB,CAAE56B,OAAM,EAAEc,OAAM,EAAEG,QAAO,M,OAS/D,OATMmR,EAAK,SACH,EAAYhR,KAAK48B,eAAel9B,GAAzB,QACT4G,EAAS0K,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,EAAK+T,mBAAmB,IAC3C,CACLO,KAAMtU,EAAE,EAAK+T,mBAAmB,IAChCvT,MAAOR,EAAE,EAAK+T,mBAAmB,QAGrC,GAAM,IAAgBiN,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAa,GAAU1K,I,OAChF,OADA,SACA,GAAO1K,G,OAET,SAAO,YAEX,EAzFA,CAA4C,kB,i3DCD5C,cAqBE,WAAY0E,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OArBlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,gCACpB,EAAA0B,kBAAoB,wBACpB,EAAApB,mBAAqB,qBACrB,EAAAvB,uBAAyB,yBACzB,EAAAoQ,aAAe,eAEf,EAAA7J,kBAAoB,CAClBpS,QAAS,OACTC,OAAQ,+BACRk5B,cAAe,aAEjB,EAAAgE,eAAiB,CACfmC,yBAA0B,CACxBt/B,QAAS,OACTC,OAAQ,2BACRk5B,cAAe,WACfkE,QAAS,S,EAsDf,OAxE4C,OAyB1C,YAAA9vB,WAAA,WACE,OAAOS,QAAQC,QAAQ,kBAAgB1E,KAAI,SAAC,G,IAAE1P,EAAK,QAAO,MAAC,CAAEA,MAAK,EAAE8T,KAAM,YAAE9T,SAGxE,YAAAkgC,gBAAN,SAAsBtoB,G,qHAOT,OANHtS,EAAiCsS,EAA3B,OAAU+rB,EAAiB/rB,EAAd,OAAErR,EAAYqR,EAAL,QAC9B,EAAqClR,KAAK48B,eAAeK,GAAvDx9B,EAAO,UAAEC,EAAM,SAAEk5B,EAAa,gBAEhCznB,EAAc,YAAkBvS,EAAQa,GAGnC,GAAM,aACf,SAACuB,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAM,MAGpBG,EACA+4B,I,OAEF,SAdW,SAcD,YAEN,YAAAprB,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,EAAezD,G,oHAC7DxG,EAAe,CACnBkS,MAAO,IACPiJ,WAAYlR,EAAS9J,KAAK6M,mBAAmB/C,YAEW,IAAtD/Q,OAAO6W,KAAK5P,KAAK48B,gBAAgB92B,QAAQpG,GAAzC,MACS,GAAMM,KAAKw5B,gBAAgB,CAAE56B,OAAM,EAAEc,OAAM,EAAEG,QAAO,K,OAS/D,OATMmR,EAAK,SACH,EAAYhR,KAAK48B,eAAel9B,GAAzB,QACT4G,EAAS0K,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,EAAK+T,mBAAmB,IAC3C,CACLO,KAAMtU,EAAE,EAAK+T,mBAAmB,IAChCvT,MAAOR,EAAE,EAAK+T,mBAAmB,QAGrC,GAAM,IAAgBiN,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAa,GAAU1K,I,OAChF,OADA,SACA,GAAO1K,G,OAET,SAAO,YAEX,EAxEA,CAA4C,kB,glECA5C,cAmCE,WAAY0E,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAnClD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,gCACpB,EAAA0B,kBAAoB,wBACpB,EAAApB,mBAAqB,qBACrB,EAAAvB,uBAAyB,yBACzB,EAAAoQ,aAAe,eAEf,EAAA7J,kBAAoB,CAClBpS,QAAS,OACTC,OAAQ,2BACRk5B,cAAe,cACf9mB,YAAa,CACXpJ,SAAU,SAACpC,GACT,WAAE0C,IAAI1C,GAAQ,SAACI,GAAS,cACnBA,GAAI,CACP0rB,UAAW,IAAEl5B,IAAIwN,EAAM,iBAAkB,IACzC8xB,YAAa,IAAEt/B,IAAIwN,EAAM,mBAHH,YAO9B,EAAAk2B,eAAiB,CACfoC,2BAA4B,CAC1Bv/B,QAAS,OACTC,OAAQ,6BACRk5B,cAAe,aACfkE,QAAS,aAEXmC,uBAAwB,CACtBx/B,QAAS,OACTC,OAAQ,yBACRk5B,cAAe,SACfkE,QAAS,U,EA8Df,OA9F4C,OAuCpC,YAAAtrB,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,mFACA,SAAM,YAAM4S,WAAU,UAAC5S,I,OACtC,SADe,SACDqQ,QAAO,SAACvI,GAAI,UAAK,QAAiC,QAAhC,EAAoB,QAApB,EAAe,QAAf,EAAAA,EAAKoJ,kBAAU,eAAG,UAAE,eAAEA,kBAAU,eAAEtD,SAAS,2BAG7E,YAAAQ,WAAA,WACE,OAAOS,QAAQC,QAAQ,kBAAgB1E,KAAI,SAAC,G,IAAE1P,EAAK,QAAO,MAAC,CAAEA,MAAK,EAAE8T,KAAM,YAAE9T,SAGxE,YAAAkgC,gBAAN,SAAsBtoB,G,qHAOT,OANHtS,EAAiCsS,EAA3B,OAAU+rB,EAAiB/rB,EAAd,OAAErR,EAAYqR,EAAL,QAC9B,EAAqClR,KAAK48B,eAAeK,GAAvDx9B,EAAO,UAAEC,EAAM,SAAEk5B,EAAa,gBAEhCznB,EAAc,YAAkBvS,EAAQa,GAGnC,GAAM,aACf,SAACuB,GACC,OAAO,EAAKoQ,UACV,CACEvQ,IAAK,EAAKA,IAAMsQ,EAAY3O,KAC5BxB,KAAI,GAENmQ,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAM,MAGpBG,EACA+4B,I,OAEF,SAdW,SAcD,YAEN,YAAAprB,gBAAN,SAAsB9N,EAAgBd,EAAgBkL,EAAezD,G,oHAC7DxG,EAAe,CACnBkS,MAAO,IACPqgB,UAAWtoB,EAAS9J,KAAK6M,mBAAmB/C,YAEY,IAAtD/Q,OAAO6W,KAAK5P,KAAK48B,gBAAgB92B,QAAQpG,GAAzC,OACa,2BAAXA,IACFG,EAAQijB,YAAc9iB,KAAK8L,YAAYzF,EAAK,mBAEnC,GAAMrG,KAAKw5B,gBAAgB,CAAE56B,OAAM,EAAEc,OAAM,EAAEG,QAAO,M,OAS/D,OATMmR,EAAK,SACH,EAAYhR,KAAK48B,eAAel9B,GAAzB,QACT4G,EAAS0K,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,EAAK+T,mBAAmB,IAC3C,CACLO,KAAMtU,EAAE,EAAK+T,mBAAmB,IAChCvT,MAAOR,EAAE,EAAK+T,mBAAmB,QAGrC,GAAM,IAAgBiN,gBAAgB9Z,KAAKP,QAASO,KAAK0b,aAAa,GAAU1K,I,OAChF,OADA,SACA,GAAO1K,G,OAET,SAAO,YAEX,EA9FA,CAA4C,kB,utBCXtC44B,EAAkB,SAACC,GACvB,OAAI,kBAAQA,GACH,GAEL,kBAAQA,GACHA,EAEL,mBAASA,GACJ,gBAAMA,EAAU,KAAKn2B,KAAI,SAACtC,GAAS,4BAErC,IAGT,cAaE,WAAYsE,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAblD,EAAAqF,kBAAoB,CAAC,YAAa,eAClC,EAAAM,mBAAqB,CACnB/C,SAAU,aAEZ,EAAAmE,kBAAoB,CAClBmxB,wBAAyB,aAE3B,EAAAvtB,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,mBACRk5B,cAAe,Y,EAgEnB,OA3E2C,OAiBzC,YAAApoB,eAAA,SAAeU,EAAatS,EAAa+J,EAAgBY,EAAahK,GAAtE,WACQ4R,EAAc,YAAkBvS,EAAQ,WACxCgK,EAAY,YAAiBW,EAAOX,WACpCyvB,EAAa,iBACjB9uB,EAAO8uB,YACP,SAAC/oB,EAAM5I,GACL,OAAI,kBAAQA,EAAK24B,MAAQ,kBAAQ34B,EAAK44B,WAAa,kBAAQ54B,EAAK2B,OACvDiH,EAET,OACK,iBAAOA,GAAM,SAACvI,GAAM,OAAAA,EAAEs4B,MAAQ34B,EAAV,QAAmB,IAC1C,CACE24B,IAAK,YAAgB,EAAKn4B,YAAa3H,EAAQ4H,WAAYT,EAAK24B,KAAK,GACrEC,SAAU,YAAgB,EAAKp4B,YAAa3H,EAAQ4H,WAAYT,EAAK44B,UAAU,GAC/Ej3B,MAAO62B,EAAgB,YAAgB,EAAKh4B,YAAa3H,EAAQ4H,WAAYT,EAAK2B,OAAO,OAE3F,KAEJ,CAAC,CAAEg3B,IAAK,0BAA2BC,SAAU,IAAKj3B,MAAOM,EAAUK,KAAI,SAACtC,GAAS,OAAAA,EAAI,gBAGvF,OAAO1G,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAM,CACJqP,OAAQa,EAAOb,OACfkvB,YAAa,CAACruB,EAAO1H,YACrBg2B,OAAQ,UACR/zB,UAAW,UACX0E,QAASe,EAAOf,QAChBJ,UAAWmB,EAAOnB,UAClB0vB,WAAYpH,EACZqH,SAAUR,EAAgB,YAAgBl/B,KAAKkH,YAAa3H,EAAQ4H,WAAYoC,EAAO+uB,UAAU,MAGrGnnB,EAAY1R,QACZ,CAAEC,OAAQ,wBAAyBd,OAAM,IACzC8R,MAAK,SAAChI,GACN,OAAO,kBACL,cAAIA,EAASi3B,MAAM,SAAC3+B,GAClB,OAAO,cAAIA,EAAK4+B,QAAQ,SAACC,GACvB,IAAMC,EAAgB,iBAAOD,EAAM/vB,WAAY,CAAC,SAC1CiwB,EAAkB,OACnBD,EAAcx2B,OAAO,oBAAUw2B,EAAe,CAAEt3B,KAAM,4BAA8B,IAAE,GACtFs3B,GAAa,GAEf92B,KAAI,SAACshB,GAAc,OAAAA,EAAA,SACnBre,KAAK,OACF+zB,EAAkBp3B,EAAY,EAAI,WAAIW,EAAOX,WAAc,GACjE,MAAO,CACLW,OAAQ,UAAGvI,EAAKwI,WAAU,cAAMu2B,GAAe,OAAGC,GAClDv2B,WAAY,cAAIo2B,EAAMnrB,QAAQ,SAACpb,GAAU,OAACA,EAAM+O,MAAyB,IAAlB/O,EAAMgI,UAApB,kBAOvD,EA3EA,CAA2C,kB,wgBCd3C,cAUE,WAAY0J,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAVlD,EAAAuE,UAAY,UACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,qBACrB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,uBACRk5B,cAAe,W,EAKnB,OAb2C,OAa3C,EAbA,CAA2C,kB,m3DCU3C,cAWE,WAAY5tB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAXlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,wBACpB,EAAA0B,kBAAoB,wBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,wBACRk5B,cAAe,mB,EAsCnB,OA/C0C,OAexC,YAAA5rB,WAAA,WACE,OAAOS,QAAQC,QAAQ,kBAAgB1E,KAAI,SAAC,G,IAAE1P,EAAK,QAAO,MAAC,CAAEA,MAAK,EAAE8T,KAAM,YAAE9T,SAExE,YAAA2mC,cAAN,SAAoBrhC,G,oGAEoB,OADhCuS,EAAc,YAAkBvS,EAAQ,WACR,GAAMoB,KAAKoR,UAC/C,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAM,CACJyK,UAAW,kBAAe,SAG9B0F,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,yB,OAEmB,OAVpBwgC,EAAmB,SAAL,UAUM,GAAMlgC,KAAKoR,UAChD,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,KAC5BxB,KAAM,CACJyK,UAAW,kBAAe,UAG9B0F,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,yB,OAGpB,OAXmBygC,EAAoB,SAAL,UAWlC,GADYpnC,OAAO6Q,OAAO,IAAEovB,MAAM,IAAExpB,OAAO2wB,EAAiBD,GAAiB,eAClEl3B,KAAI,SAACzP,GAAM,gDAElB,YAAAiY,WAAN,SAAiB5S,G,YAAA,IAAAA,MAAA,gB,yFACA,SAAMoB,KAAKigC,cAAcrhC,I,OACxC,OADMs6B,EAAS,SACf,GAAO,IAAElmB,QAAQkmB,YAErB,EA/CA,CAA0C,kB,wgBCV1C,cAWE,WAAYluB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAXlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,eACRk5B,cAAe,U,EAQnB,OAjB0C,OAcxC,YAAAniB,kBAAA,SAAkB,GAAO,QACvB,OAAO,YAAMzJ,WAAU,YAE3B,EAjBA,CAA0C,kB,wgBCK1C,cAqBE,WAAYhC,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OArBlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,gCACpB,EAAA0B,kBAAoB,0BACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,qBACRk5B,cAAe,eACf9mB,YAAa,IAQf,EAAA1G,gBAAkB,CAChBuG,aAAc,mB,EAKlB,OAxB0C,OAwB1C,EAxBA,CAA0C,kB,+hBCJ1C,cAWE,WAAY3G,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAXlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,yBACpB,EAAA0B,kBAAoB,yBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,sBACRk5B,cAAe,iB,EA0BnB,OAnC0C,OAexC,YAAAniB,kBAAA,SAAkB,G,IAAErP,EAAK,QAAExI,EAAM,SAC/B,GAAc,SAAVwI,EAAkB,CACpB,IAAM+J,EAAc,YAAkBvS,EAAQ,OAC9C,OAAOoB,KAAKoR,UACV,CACEvQ,IAAKb,KAAKa,IAAMsQ,EAAY3O,MAE9B2O,EAAY1R,QACZ,CAAEb,OAAM,EAAEc,OAAQ,kBAClBgR,MAAK,SAAChI,GACN,OAAO,IAAEuG,OACP,IAAEjG,IAAIN,EAAS0wB,SAAW,IAAI,SAAC1yB,GAC7B,MAAO,CAAE0G,KAAM1G,EAAK2yB,SAAU//B,MAAOoN,EAAK+hB,KAAM8Q,UAAW7yB,EAAK6yB,UAAW9Q,KAAM/hB,EAAK+hB,UAExF,SAAC/hB,GAAS,oBAAAA,EAAK6yB,gBAIrB,MAAO,IAEX,EAnCA,CAA0C,kB,wgBCF1C,cAWE,WAAYvuB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAXlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,wBACpB,EAAA0B,kBAAoB,wBACpB,EAAApB,mBAAqB,qBAErB,EAAAgF,kBAAoB,CAClBpS,QAAS,MACTC,OAAQ,yBACRk5B,cAAe,oB,EAKnB,OAd0C,OAc1C,EAdA,CAA0C,kB,2iECQ1C,cAUE,WAAY5tB,EAAkBlL,EAAYoH,GAA1C,MACE,YAAM8D,EAAkBlL,EAAYoH,IAAY,K,OAVlD,EAAAuE,UAAY,YACZ,EAAAc,kBAAoB,uBACpB,EAAA0B,kBAAoB,uBACpB,EAAApB,mBAAqB,qBACrB,EAAAgF,kBAAoB,CAElBnS,OAAQ,kBACRk5B,cAAe,W,EAWnB,OAnB2C,OAazC,YAAA5rB,WAAA,WACE,OAAOS,QAAQC,QAAQ,kBAAgB1E,KAAI,SAAC,G,IAAE1P,EAAK,QAAO,MAAC,CAAEA,MAAK,EAAE8T,KAAM,YAAE9T,SAExE,YAAAmT,gBAAN,SAAsBpG,EAAYqG,G,mEAChC,SAAO,YAAMD,gBAAe,iBAAMpG,GAAU,CAAEzH,OAAQ,iBAAoB8N,WAE9E,EAnBA,CAA2C,kB,m/CCP3C,aAEE,WAAY2J,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAOuO,iCAAmC,mCAC1CvO,EAAOlQ,UAAY,aAErBkQ,EAAOgqB,cAAgB,WACf,IAAAv2B,EAAauM,EAAO9M,OAAZ,SACR9J,EAAU,YAAwB4W,EAAOlQ,WAG/C,KADA2D,EAAWuM,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuDvM,IAEhE,MAAO,GAET,IACEA,EAAW7J,KAAK6G,MAAMgD,GAAU,qBAAmBA,UACnD,MAAO/B,IAGT,OAAO+B,GAETuM,EAAOkqB,iBAAmB,SAAOh3B,GAAM,qC,8DAI1B,OAHL9J,EAAU,YAAwB4W,EAAOlQ,WACzC0gB,EAAaxQ,EAAOgqB,gBACpBzhC,EAASyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD9M,EAAO3K,QAClE,GAAMyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,yBAAxC4W,CAAkE,CAAEzX,OAAM,EAAEioB,WAAU,K,OAQvG,OARM7V,EAAK,SAQX,GANeA,EAAGhI,KAAI,SAAClQ,GACrB,MAAO,CACLsU,KAAMtU,EAAE6rB,gBACRrrB,MAAO2G,KAAKC,UAAUpH,gBAM5Bud,EAAO+pB,OAEX,OAvCA,kCAuCA,EAvCA,GAqHM,SAAUI,IACd,MAAO,CACL7pB,SA9Ea,0lFA+EbC,WAAYT,EACZU,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,MAIZ,IAAWxlB,UAAU,kBAAiB8pB,I,6BC1ItC,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,yHAGA,aAEE,WAAYnqB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAOsgB,0BAA4B,6BAGrCtgB,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOE,YAAc,SAACnP,GACpB,OAAQA,GACN,IAAK,OACH,OAAOiP,EAAO8iB,WAChB,QACE,MAAO,KAIb9iB,EAAO8iB,SAAW,WAChB,OAAK9iB,EAAOzX,OAGLyX,EAAOG,WAAW2iB,SAAS,MAAO9iB,EAAOzX,QAFvC,IAKXyX,EAAO+pB,OAEX,OAhCA,kCAgCA,EAhCA,GAwIM,SAAUS,IACd,MAAO,CACLlqB,SAxGa,mvHAyGbC,WAAYkqB,EACZjqB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,MAKhB,IAAWP,UAAU,WAAYmqB,I,6BC3JjC,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,yHAGA,aAEE,WAAYxqB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAO8X,oBAAsB,uBAG/B9X,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOE,YAAc,SAACnP,GACpB,OAAQA,GACN,IAAK,UACH,OAAOiP,EAAO8iB,WAChB,QACE,MAAO,KAIb9iB,EAAO8iB,SAAW,WAChB,OAAK9iB,EAAOzX,OAGLyX,EAAOG,WAAW2iB,SAAS,MAAO9iB,EAAOzX,QAFvC,IAKXyX,EAAO+pB,OAEX,OAhCA,kCAgCA,EAhCA,GA4FM,SAAUW,IACd,MAAO,CACLpqB,SA5Da,+9DA6DbC,WAAYoqB,EACZnqB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,MAKhB,IAAWP,UAAU,WAAYqqB,I,6BC/GjC,yHAGA,aAEE,WAAY1qB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAO4gB,0BAA4B,6BA0BrC5gB,EAAO+pB,OAEX,OAhCA,kCAgCA,EAhCA,GAkGM,SAAUa,IACd,MAAO,CACLtqB,SAlEa,oiEAmEbC,WAAYsqB,EACZrqB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,MAKhB,IAAWP,UAAU,WAAYuqB,I,q+CCjH3BE,EAAc,CAClB,CACElsB,MAAO,MACP7N,MAAO,OAET,CACE6N,MAAO,WACP7N,MAAO,aAGX,aAEE,WAAYiP,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAOwU,kCAAoC,oCAC3CxU,EAAO8qB,YAAcA,EACrB9qB,EAAOlQ,UAAY,aAGrBkQ,EAAOkqB,iBAAmB,SAAOh3B,EAAQnC,GAAK,qC,0DAGjC,OAFL3H,EAAU,YAAwB4W,EAAOlQ,WACzCvH,EAASyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD9M,EAAO3K,QAClE,GAAMyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,kBAAxC4W,CAA2D,CAAEzX,OAAM,EAAEwI,MAAK,K,OAC3F,SADW,kBAIbiP,EAAO+pB,OAEX,OAlBA,kCAkBA,EAlBA,GAgGM,SAAUI,IACd,MAAO,CACL7pB,SA9Ea,+tFA+EbC,WAAYT,EACZU,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,MAIZ,IAAWxlB,UAAU,kBAAiB8pB,I,6BC/HtC,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,m+CCC9B,aAEE,WAAYnqB,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAOqe,mBAAqB,sBAG9Bre,EAAOooB,YAAc,SAAOl1B,GAAM,qC,qCAOhC,OAFQO,EAAqBP,EAAb,SAAE3K,EAAW2K,EAAL,OAClBkK,EAAU4C,EAAOG,WAAW8pB,aAAa,MAAO,eACjDx2B,GAAalL,EAElB,GAAO6U,EAAQ7U,EAAQ,CAAE+/B,aAAc1+B,KAAK6G,MAAMgD,GAAU60B,eAAgBjuB,MAAK,SAAC/P,GAGhF,OAAOA,MALwB,CAAC,EAAD,WA+BnC0V,EAAO+pB,OAEX,OA/CA,kCA+CA,EA/CA,GA6GM,SAAUgB,IACd,MAAO,CACLzqB,SA9Da,++DA+DbC,WAAYyqB,EACZxqB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,MAIhB,IAAWP,UAAU,WAAY0qB,I,6+CC3H3BD,EAAc,CAClB,CACElsB,MAAO,gBACP7N,MAAO,iBAET,CACE6N,MAAO,UACP7N,MAAO,WAET,CACE6N,MAAO,YACP7N,MAAO,cAIX,aAEE,WAAYiP,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAO8D,sBAAwB,yBAGjC9D,EAAOE,YAAc,SAACnP,GAGhB,MAAO,IAGbiP,EAAOirB,iBAAmB,SAACxnC,EAAGhB,GACzB,YAAcgB,EAAEhB,EAAE,oBACrBud,EAAO9M,OAAOsR,cAAgB,GAC9BxE,EAAO9M,OAAOoR,QAAU,GACxBtE,EAAO9M,OAAOqR,UAAY,GAC1BvE,EAAO9M,OAAOuR,UAAY,KAE5BzE,EAAOkrB,eAAiB,WACtB,OAAOJ,EAAYlyB,QAAO,SAACvI,GAAI,MAAK,OAAAA,EAAKU,SAAqB,QAAX,EAAAiP,EAAO6lB,YAAI,QAAI,QAGpE7lB,EAAOgqB,cAAgB,WACf,IAAAv2B,EAAauM,EAAO9M,OAAZ,SAGd,GAFAO,EAAWuM,EAAOG,WAAW8pB,aAAa,SAAU,cAAzCjqB,CAAwDvM,GAC/DkC,MAAMhE,QAAQ8B,KAAWA,EAAWA,EAAS,KAC5CA,EACH,MAAO,GAET,IACEA,EAAW7J,KAAK6G,MAAMgD,GAAUkR,WAChC,MAAOjT,IAGT,OAAO+B,GAGTuM,EAAOkqB,iBAAmB,SAAOh3B,EAAQnC,GAAK,qC,sEAIhC,OAHN4T,EAAa3E,EAAOgqB,gBACpB5sB,EAAU4C,EAAOG,WAAW8pB,aAAa,SAAU,qBACnD1hC,EAASyX,EAAOG,WAAW8pB,aAAa,SAAU,cAAzCjqB,CAAwD9M,EAAO3K,QAClE,GAAM6U,EAAQ7U,EAAQ,CAAEoc,WAAU,EAAE6e,UAAWtwB,EAAOsR,cAAeif,QAASvwB,EAAOoR,W,OA2BjG,OA3BMha,EAAM,SAEJgb,EAAwChb,EAA/B,UAAEib,EAA6Bjb,EAApB,UAAEkb,EAAkBlb,EAAL,cACrCK,EAAO,CACX4a,UAAWA,EAAU5S,KAAI,SAACwZ,GAExB,OADAA,EAAMnZ,oBAAsBmZ,EAAMxG,UAC3B,CACL5O,KAAMoV,EAAMxG,UACZ1iB,MAAO2G,KAAKC,UAAUsiB,OAG1B7G,UAAWA,EAAU3S,KAAI,SAACyxB,GAExB,OADAA,EAAMpxB,oBAAsBoxB,EAAM,qBAAmB9f,SAC9C,CACLvN,KAAMqtB,EAAM,qBAAmB9f,SAC/BrhB,MAAO2G,KAAKC,UAAUu6B,OAG1B5e,cAAeA,EAAc7S,KAAI,SAAC4xB,GAEhC,OADAA,EAAIvxB,oBAAsBuxB,EAAI,qBAAmB9f,WAC1C,CACL1N,KAAM3F,OAAOmzB,EAAI,qBAAmB9f,YACpCxhB,MAAO2G,KAAKC,UAAU06B,QAKpBxzB,GACN,IAAK,gBACH,SAAOpG,EAAK4a,WACd,IAAK,UACH,SAAO5a,EAAK2a,WACd,IAAK,YACH,SAAO3a,EAAK6a,e,kBAIlBxF,EAAO+pB,OAEX,OAlFA,kCAkFA,EAlFA,GA+JM,SAAUgB,IACd,MAAO,CACLzqB,SA7Ea,omFA8EbC,WAAY4qB,EACZ3qB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,IACNpyB,SAAU,KAEZwQ,KAAM,SAACxD,EAAO2qB,EAASC,GACrB5qB,EAAM6qB,OAAO,mBAAmB,SAACC,EAAUC,G,MACnB,QAAtB,EAAA/qB,EAAMwqB,wBAAgB,cAAtBxqB,EAAyB8qB,EAAUC,QAK3C,IAAWnrB,UAAU,cAAe0qB,I,m/CCnMpC,aAEE,WAAY/qB,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAO8F,4BAA8B,8BACrC9F,EAAO2lB,YAAc,IAEvB3lB,EAAOyrB,cAAgB,SAAC16B,GACtBiP,EAAOoqB,aAETpqB,EAAOirB,iBAAmB,SAACxnC,EAAGhB,GACzB,YAAcgB,EAAEhB,EAAE,gBACrBud,EAAO9M,OAAOmT,SAAW,GACzBrG,EAAO9M,OAAOoT,QAAU,GACxBtG,EAAO9M,OAAOqT,WAAa,KAE7BvG,EAAO0rB,cAAgB,SAAC/gC,EAAMoW,GAC5B,IAAI4qB,EAAehhC,EACbvB,EAAU,YAAwB,aAGxC,KADAuiC,EAAe3rB,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD2rB,IAEpE,MAAO,GAET,IACEA,EAAe/hC,KAAK6G,MAAMk7B,GAAc,qBAAmB5qB,IAC3D,MAAOrP,IAGT,OAAOi6B,GAET3rB,EAAOkqB,iBAAmB,SAAOh3B,GAAM,qC,gEAK1B,OAJHO,EAAauM,EAAO9M,OAAZ,SACV9J,EAAU,YAAwB,aAClConB,EAAaxQ,EAAO0rB,cAAcj4B,EAAU,YAC5ClL,EAASyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD9M,EAAO3K,QAClE,GAAMyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,kBAAxC4W,CAA2D,CAAEzX,OAAM,EAAEioB,WAAU,K,OAQhG,OARM7V,EAAK,SAQX,GAPeA,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,qBAAmB4jB,UACtC,CACLtP,KAAMtU,EAAE,qBAAmB4jB,UAC3BpjB,MAAO2G,KAAKC,UAAUpH,gBAK5Bud,EAAO4rB,mBAAqB,SAAO14B,GAAM,qC,sEAMnB,OALd,EAAyB8M,EAAO9M,OAA9BO,EAAQ,WAAE4S,EAAQ,WACpBjd,EAAU,YAAwB,aAClConB,EAAaxQ,EAAO0rB,cAAcj4B,EAAU,YAC5CuxB,EAAahlB,EAAO0rB,cAAcrlB,EAAU,YAC5C9d,EAASyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD9M,EAAO3K,QACzD,GAAMyX,EAAOG,WAAW8pB,aAC1C7gC,EACA,gBAFwB4W,CAGxB,CAAEzX,OAAM,EAAEioB,WAAU,EAAEwU,WAAU,K,OAYlC,OAfMW,EAAc,SAIpB3lB,EAAO2lB,YAAcA,EAWrB,GAVY,gBAAMA,GACfhzB,KAAI,SAACtC,GAEJ,OADAA,EAAK2C,oBAAsB,cAAI3C,EAAM,wBAC9B,CACL0G,KAAM,cAAI1G,EAAM,wBAChBpN,MAAO2G,KAAKC,UAAUwG,OAGzBuzB,OAAO,QACP3gC,iBAGL+c,EAAO6rB,sBAAwB,SAAO34B,GAAM,qC,qCAClCoT,EAAYtG,EAAO9M,OAAZ,QACX44B,EAAwB,GAC5B,IACQ,EAAgBliC,KAAK6G,MAAM6V,GACjCwlB,EAAiB,gBAAM9rB,EAAO2lB,aAC3B/sB,QAAO,SAACvI,GAAS,qBAAI,EAAe,0BAA4B,cAAIA,EAAnD,2BACjBsC,KAAI,SAACtC,GAEJ,OADAA,EAAK2C,oBAAsB,cAAI3C,EAAM,QAC9B,CACL0G,KAAM,UAAG,cAAI1G,EAAM,SACnBpN,MAAO2G,KAAKC,UAAUwG,OAGzBpN,QACH,MAAOyO,IACT,SAAOo6B,UAGT9rB,EAAO+pB,OAEX,OA1FA,kCA0FA,EA1FA,GA4FMzpB,EAAW,00FA6EsD,YAAS,0fAUV,YAAS,ubAYzE,SAAU6pB,IACd,MAAO,CACL7pB,SAAUA,EACVC,WAAYT,EACZU,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRpD,UAAW,IACX4Q,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,KAER5hB,KAAM,SAACxD,EAAO2qB,EAASC,GACrB5qB,EAAM6qB,OAAO,mBAAmB,SAACC,EAAUC,G,MACnB,QAAtB,EAAA/qB,EAAMwqB,wBAAgB,cAAtBxqB,EAAyB8qB,EAAUC,QAK3C,IAAWnrB,UAAU,WAAY8pB,I,6BC5NjC,oHAGA,aAEE,WAAYnqB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAOsJ,0BAA4B,6BAGrCtJ,EAAO+pB,OAEX,OATA,kCASA,EATA,GAyFM,SAAUI,IACd,MAAO,CACL7pB,SAhFa,w6EAiFbC,WAAYT,EACZU,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,MAIZ,IAAWxlB,UAAU,kBAAiB8pB,I,6BC7GtC,0BAGA,kBAAY,WAAY,CACtBlkB,gBAAiB,0BACjBD,eAAgB,mDAChBlW,UAAW,a,w+CCHPg7B,EAAc,CAClB,CACElsB,MAAO,mBACP7N,MAAO,mBAIX,aAEE,WAAYiP,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAO8O,wBAA0B,2BAGnC9O,EAAOE,YAAc,SAACnP,GAGhB,MAAO,IAKbiP,EAAO+rB,SAAW,GAElB/rB,EAAOkrB,eAAiB,WACtB,OAAOJ,EAAYlyB,QAAO,SAACvI,GAAI,MAAK,OAAAA,EAAKU,SAAqB,QAAX,EAAAiP,EAAO6lB,YAAI,QAAI,QAGpE7lB,EAAOgsB,aAAe,WACd,IAAAv4B,EAAauM,EAAO9M,OAAZ,SAEd,KADAO,EAAWuM,EAAOG,WAAW8pB,aAAa,WAAY,cAA3CjqB,CAA0DvM,IAEnE,MAAO,GAET,IACEA,EAAW7J,KAAK6G,MAAMgD,GAAUiS,UAChC,MAAOhU,IAGT,OAAO+B,GAGTuM,EAAOisB,mBAAqB,SAACl7B,GAC3BiP,EAAOoqB,aAGTpqB,EAAOkqB,iBAAmB,SAAOh3B,EAAQnC,GAAK,qC,oEAC9B,mBAAVA,EAAA,OACI2U,EAAY1F,EAAOgsB,gBACrBrhC,EAAOqV,EAAO+rB,SAASrmB,IAEvB,OACInd,EAASyX,EAAOG,WAAW8pB,aAAa,WAAY,cAA3CjqB,CAA0D9M,EAAO3K,QAElE,GADEyX,EAAOG,WAAW8pB,aAAa,WAAY,uBACvC7sB,CAAQ7U,EAAQ,CAAEmd,UAAS,O,OAAzCwmB,EAAQ,SACdvhC,EAAOuhC,EAAMv5B,KAAI,SAACtC,GAEhB,OADAA,EAAK2C,oBAAsB3C,EAAK21B,eACzB,CAAEjvB,KAAM1G,EAAK21B,eAAgB/iC,MAAO2G,KAAKC,UAAUwG,O,iBAM9D,OADA2P,EAAO+rB,SAASrmB,GAAa/a,EAC7B,GAAOA,G,OAET,SAAO,YAGTqV,EAAO+pB,OAEX,OA/DA,kCA+DA,EA/DA,GA4IM,SAAUgB,IACd,MAAO,CACLzqB,SA7Ea,kmFA8EbC,WAAY4rB,EACZ3rB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,MAIZ,IAAWxlB,UAAU,gBAAiB0qB,I,6BCvKtC,oIAEA,SAASjmB,EAAuB5U,QAAA,IAAAA,MAAA,IAC9B,IAAM2K,EAAc,GAoBpB,OAnBK,IAAE/I,QAAQ5B,KACb2K,EAAOa,MAAQ,IAAE7Y,IAAIqN,EAAS,QAAS,KAAO,GAC9C2K,EAAOrG,OAAS,IAAE3R,IAAIqN,EAAS,SAAU,IAAM,EAC/CA,EAAU,IAAEoN,KAAKpN,EAAS,CAAC,SAAU,UACrC,IAAEE,QAAQF,GAAS,SAACG,EAAW9M,GACzB,IAAEoO,QAAQtB,IACZA,EAAO,IAAEsM,QAAQtM,IACRyC,OAAS,IAChB+H,EAAOtX,GAAO,IAAEqZ,KAAKvM,IAEd,IAAEoG,SAASpG,IAChB,IAAEkI,SAAS,IAAE1V,IAAIwN,EAAM,aAAS4B,KAAgB,IAAEH,QAAQ,IAAEjP,IAAIwN,EAAM,aAAS4B,MACjF4I,EAAOtX,GAAO,IAAEV,IAAIwN,EAAM,WAEnB,IAAEkI,SAASlI,IAAU,IAAEyB,QAAQzB,KACxCwK,EAAOtX,GAAO8M,OAIbwK,EAIT,IAAM3E,EAAoB,CAAC,cAIZ,WACb3N,OAAQ,GACRwQ,WAAY,GACZsL,WAAY,GACZpK,YAAQhI,EACRwF,gBAAiB,KACjBhE,SAAU,GACVsC,cAAe,aACf7F,QAAS,K,6BCvCX,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,yHAGA,aAEE,WAAY8P,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAO6e,0BAA4B,6BAGrC7e,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOE,YAAc,SAACnP,GACpB,OAAQA,GACN,IAAK,OACH,OAAOiP,EAAO8iB,WAChB,QACE,MAAO,KAIb9iB,EAAO8iB,SAAW,WAChB,OAAK9iB,EAAOzX,OAGLyX,EAAOG,WAAW2iB,SAAS,MAAO9iB,EAAOzX,QAFvC,IAKXyX,EAAO+pB,OAEX,OAhCA,kCAgCA,EAhCA,GAwIM,SAAUqC,IACd,MAAO,CACL9rB,SAxGa,6tHAyGbC,WAAY8rB,EACZ7rB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,MAKhB,IAAWP,UAAU,WAAY+rB,I,6BC3JjC,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,q+CCExBtB,EAAc,CAClB,CACElsB,MAAO,SACP7N,MAAO,SACP1H,OAAQ,gCAEV,CACEuV,MAAO,UACP7N,MAAO,UACP1H,OAAQ,uBAGNijC,EAAqB,CACzB5F,6BAA8B,SAC9BF,mBAAoB,mBAEtB,aAEE,WAAYxmB,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAOgK,2BAA6B,6BACpChK,EAAO8qB,YAAcA,EACrB9qB,EAAOlQ,UAAY,aAGrBkQ,EAAOgqB,cAAgB,WACf,IAAAv2B,EAAauM,EAAO9M,OAAZ,SACR9J,EAAU,YAAwB4W,EAAOlQ,WAE/C,KADA2D,EAAWuM,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuDvM,IAEhE,MAAO,GAET,IACEA,EAAW7J,KAAK6G,MAAMgD,GAAU,qBAAmBA,UACnD,MAAO/B,IAGT,OAAO+B,GAETuM,EAAOkrB,eAAiB,WACtB,OAAOJ,EAAYlyB,QAAO,SAACvI,GAAI,QAAK,OAAAA,EAAKU,SAAqB,QAAX,EAAAiP,EAAO6lB,YAAI,QAAI,KAAOx1B,EAAKuO,SAAqB,QAAX,EAAAoB,EAAO6lB,YAAI,QAAI,QAEzG7lB,EAAOkqB,iBAAmB,SAAOh3B,EAAQ7J,GAAM,qC,gEAQlC,OAPLD,EAAU,YAAwB4W,EAAOlQ,WACzCvH,EAASyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD9M,EAAO3K,QACvEioB,EAAaxQ,EAAOgqB,gBACpBxgC,EAAe,CACnBmb,WAAY6L,EACZ9U,MAAO,KAEE,GAAMsE,EAAOG,WAAW8pB,aAAa7gC,EAAS,kBAAxC4W,CAA2D,CAAEzX,OAAM,EAAEc,OAAM,EAAEG,QAAO,K,OASrG,OATMmR,EAAK,SASX,GAPeA,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,qBAAmB6pC,EAAmBjjC,KACzD,CACL0N,KAAMtU,EAAE,qBAAmB6pC,EAAmBjjC,KAC9CpG,MAAO2G,KAAKC,UAAUpH,gBAM5Bud,EAAO+pB,OAEX,OAhDA,kCAgDA,EAhDA,GA8HM,SAAUI,IACd,MAAO,CACL7pB,SA9Ea,ouFA+EbC,WAAYT,EACZU,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,MAIZ,IAAWxlB,UAAU,kBAAiB8pB,I,6BCnKtC,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,2HAIMW,EAAc,CAMlB,CACElsB,MAAO,SACP7N,MAAO,WAGX,aAEE,WAAYiP,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAO4N,sCAAwC,wCAC/C5N,EAAO8qB,YAAcA,EACrB9qB,EAAOlQ,UAAY,aAiBrBkQ,EAAOkrB,eAAiB,WACtB,OAAOJ,EAAYlyB,QAAO,SAACvI,GAAI,QAAK,OAAAA,EAAKU,SAAqB,QAAX,EAAAiP,EAAO6lB,YAAI,QAAI,KAAOx1B,EAAKuO,SAAqB,QAAX,EAAAoB,EAAO6lB,YAAI,QAAI,QAEzG7lB,EAAOkqB,iBAAmB,SAACh3B,EAAQ7J,GAC3B,IAAAoK,EAAaP,EAAL,SACR9J,EAAU,YAAwB4W,EAAOlQ,WAC/C2D,EAAWuM,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuDvM,GAClE,IAGE,OAFAA,EAAW7J,KAAK6G,MAAMgD,IACM,UACXd,KAAI,SAAClQ,GAEpB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,qBAAmBirB,QACtC,CACL3W,KAAMtU,EAAE,qBAAmBirB,QAC3BzqB,MAAO2G,KAAKC,UAAUpH,OAG1B,MAAOiP,GAEP,IAAMlI,EAAe,CACnBmb,WAAYlR,GASd,OAPWuM,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD,CAAExW,QAAO,IACzDmJ,KAAI,SAAClQ,GACrB,MAAO,CACLsU,KAAMtU,EAAE,qBAAmBirB,QAC3BzqB,MAAO2G,KAAKC,UAAUpH,SAO9Bud,EAAO+pB,OAEX,OA1DA,kCA0DA,EA1DA,GAwIM,SAAUI,IACd,MAAO,CACL7pB,SA9Ea,iuFA+EbC,WAAYT,EACZU,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,MAIZ,IAAWxlB,UAAU,kBAAiB8pB,I,6BCxKtC,0BAEA,kBAAa,kBAAiB,sB,q+CCExBW,EAAc,CAClB,CACElsB,MAAO,UACP7N,MAAO,WAET,CACE6N,MAAO,YACP7N,MAAO,SAGLw7B,EAAa,CACjBpjB,QAAS,eACThX,KAAM,oBAER,aAEE,WAAY6N,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAOsJ,0BAA4B,4BACnCtJ,EAAOlQ,UAAY,aAGrBkQ,EAAOkrB,eAAiB,WACtB,OAAOJ,EAAYlyB,QAAO,SAACvI,GAAI,MAAK,OAAAA,EAAKU,SAAqB,QAAX,EAAAiP,EAAO6lB,YAAI,QAAI,QAGpE7lB,EAAOgqB,cAAgB,WACf,IAAAv2B,EAAauM,EAAO9M,OAAZ,SACR9J,EAAU,YAAwB4W,EAAOlQ,WAG/C,KADA2D,EAAWuM,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuDvM,IAEhE,MAAO,GAET,IACEA,EAAW7J,KAAK6G,MAAMgD,GAAU,qBAAmBA,UACnD,MAAO/B,IAGT,OAAO+B,GAETuM,EAAOkqB,iBAAmB,SAAOh3B,EAAQnC,GAAK,qC,8DAKnC,OAJH3H,EAAU,YAAwB4W,EAAOlQ,WACzC0gB,EAAaxQ,EAAOgqB,gBACpBzhC,EAASyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD9M,EAAO3K,QAEpE,GAAMyX,EAAOG,WAAW8pB,aAAa7gC,EAASmjC,EAAWx7B,GAAnDiP,CAA2D,CAAEzX,OAAM,EAAEioB,WAAU,K,OAQ9F,OARI7V,EAAK,SAQT,GAPeA,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,qBAAmBsO,IACtC,CACLgG,KAAMtU,EAAE,qBAAmBsO,IAC3B9N,MAAO2G,KAAKC,UAAUpH,gBAM5Bud,EAAO+pB,OAEX,OA7CA,kCA6CA,EA7CA,GA2HM,SAAUI,IACd,MAAO,CACL7pB,SA9Ea,0mFA+EbC,WAAYT,EACZU,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,MAIZ,IAAWxlB,UAAU,kBAAiB8pB,I,6BC9JtC,uHAGA,aAEE,WAAYnqB,EAAQC,GAClBD,EAAO+pB,KAAO,WAEZ/pB,EAAOghB,mBAAqB,sBAG9BhhB,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOE,YAAc,SAACnP,GACpB,OAAQA,GACN,IAAK,OACH,OAAOiP,EAAO8iB,WAChB,QACE,MAAO,KAIb9iB,EAAO8iB,SAAW,WAChB,OAAK9iB,EAAOzX,OAGLyX,EAAOG,WAAW2iB,SAAS,MAAO9iB,EAAOzX,QAFvC,IAKXyX,EAAO+pB,OAEX,OAjCA,kCAiCA,EAjCA,GA4IM,SAAUyC,IACd,MAAO,CACLlsB,SA3Ga,8uHA4GbC,WAAYksB,EACZjsB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,MAKhB,IAAWP,UAAU,UAAWmsB,I,6BC/JhC,uIAGA,aAEE,WAAYxsB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAOie,iCAAmC,oCAG5Cje,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOE,YAAc,SAACnP,GACpB,OAAQA,GACN,IAAK,OACH,OAAOiP,EAAO8iB,WAChB,QACE,MAAO,KAIb9iB,EAAO8iB,SAAW,WAChB,OAAK9iB,EAAOzX,OAGLyX,EAAOG,WAAW2iB,SAAS,aAAc9iB,EAAOzX,QAF9C,IAKXyX,EAAO+pB,OAEX,OAhCA,kCAgCA,EAhCA,GAuIM,SAAU2C,IACd,MAAO,CACLpsB,SAvGa,m6HAwGbC,WAAYosB,EACZnsB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,MAKhB,IAAWP,UAAU,kBAAmBqsB,I,2rDCrJxC,aAEE,WAAY1sB,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAO0a,wBAA0B,2BAGnC1a,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOE,YAAc,SAACnP,GAGhB,MAAO,IAIbiP,EAAOirB,iBAAmB,SAACxnC,EAAGhB,GACxBgB,IAAMhB,IAGVud,EAAO9M,OAAO8nB,QAAU,GACxBhb,EAAO9M,OAAO6Y,KAAO,KAGvB/L,EAAO0rB,cAAgB,SAAC/gC,EAAMoW,GAC5B,IAAI4qB,EAAehhC,EACbvB,EAAU,YAAwB,cAGxC,KADAuiC,EAAe3rB,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD2rB,IAEpE,MAAO,GAET,IACEA,EAAe/hC,KAAK6G,MAAMk7B,GAAc,qBAAmB5qB,IAC3D,MAAOrP,IAGT,OAAOi6B,GAGT3rB,EAAOkqB,iBAAmB,SAAOh3B,EAAQ6N,GAAI,qC,0EAK7B,OAJR,EAAwBf,EAAO9M,OAA7BO,EAAQ,WAAEunB,EAAO,UACnB5xB,EAAU,YAAwB,cAClConB,EAAaxQ,EAAO0rB,cAAcj4B,EAAU,YAC5ClL,EAASyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD9M,EAAO3K,QAC/D,GAAMyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,eAAxC4W,CAAwDzX,EAAQ,CAClF2hB,YAAa,CAACsG,M,OAEhB,OAHOlmB,EAAO,SAAJ,GAGG,YAATyW,EACF,GAAO,cAAI,cAAIzW,EAAK,cAAe,KAAK,SAAC+F,GAEvC,OADAA,EAAK2C,oBAAsB3C,EAAK82B,aACzB,CAAEpwB,KAAM1G,EAAK82B,aAAclkC,MAAO2G,KAAKC,UAAUwG,QAG/C,SAAT0Q,GAA+B,KAAZia,GACf4R,EAAY5sB,EAAO0rB,cAAc1Q,EAAS,WAC1C,EAAgB,eAAK,cAAI1wB,EAAK,cAAe,IAAK,CAAE68B,aAAcyF,IAClE1jC,EAAU,gBAAM,EAAco+B,cAAc,SAAC9zB,GACjD,IAAM+zB,EAAS,UAAG,EAAcJ,aAAY,sBAAc3zB,GAC1D,MAAO,CACLuD,KAAMwwB,EACNtkC,MAAO2G,KAAKC,UAAU,CAAEigB,OAAQyd,EAAQv0B,oBAAqB,UAAG,EAAcm0B,aAAY,cAAMI,SAGpG,MACE,CACExwB,KAAM,UAAG,EAAcowB,aAAY,iBACnClkC,MAAO2G,KAAKC,UAAU,CACpBigB,OAAQ,UAAG,EAAcqd,aAAY,iBACrCn0B,oBAAqB,UAAG,EAAcm0B,aAAY,cAAM,UAAG,EAAcA,aAAY,sBAGtFj+B,GAAO,KAGd,GAAO,YAGT8W,EAAO+pB,OAEX,OArFA,kCAqFA,EArFA,GAoLM,SAAU8C,IACd,MAAO,CACLvsB,SA/Fa,yvGAgGbC,WAAYusB,EACZtsB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZiqB,UAAW,IACXxpB,SAAU,KAEZqD,KAAM,SAACxD,EAAO2qB,EAASC,GACrB5qB,EAAM6qB,OAAO,mBAAmB,SAACC,EAAUC,G,MACnB,QAAtB,EAAA/qB,EAAMwqB,wBAAgB,cAAtBxqB,EAAyB8qB,EAAUC,QAM3C,IAAWnrB,UAAU,eAAgBwsB,I,i+CC3M/B/B,EAAc,CAClB,CACElsB,MAAO,SACP7N,MAAO,WAIX,aAEE,WAAYiP,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAO8O,wBAA0B,2BAGnC9O,EAAOE,YAAc,SAACnP,GAGhB,MAAO,IAKbiP,EAAO+rB,SAAW,GAElB/rB,EAAOkrB,eAAiB,W,MACtB,OAAOxoC,OAAO6W,KAAgB,QAAX,EAAAyG,EAAO6lB,YAAI,QAAI,IAAIkH,MAAK,SAAC18B,GAAiB,OAAAA,EAAK6e,WAAL,YAA4B4b,EAAc,IAIzG9qB,EAAOgqB,cAAgB,WACf,IAAAv2B,EAAauM,EAAO9M,OAAZ,SAEd,KADAO,EAAWuM,EAAOG,WAAW8pB,aAAa,SAAU,cAAzCjqB,CAAwDvM,IAEjE,MAAO,GAET,IACEA,EAAW7J,KAAK6G,MAAMgD,GAAUsoB,UAChC,MAAOrqB,IAGT,OAAO+B,GAGTuM,EAAOisB,mBAAqB,SAACl7B,GAC3BiP,EAAOoqB,aAGTpqB,EAAOkqB,iBAAmB,SAAOh3B,EAAQnC,GAAK,qC,oEAC9B,WAAVA,EAAA,OACI4T,EAAa3E,EAAOgqB,iBACtBr/B,EAAOqV,EAAO+rB,SAASpnB,IAEvB,OACIpc,EAASyX,EAAOG,WAAW8pB,aAAa,SAAU,cAAzCjqB,CAAwD9M,EAAO3K,QAEhE,GADEyX,EAAOG,WAAW8pB,aAAa,SAAU,gBACrC7sB,CAAQ7U,EAAQ,CAAEoc,WAAU,EAAE8iB,SAAU,W,OAAtDuF,EAAQ,SACdriC,EAAOqiC,EAAMr6B,KAAI,SAACtC,GAEhB,OADAA,EAAK2C,oBAAsB3C,EAAK,qBAAmB0b,MAC5C,CACLhV,KAAM1G,EAAK,qBAAmB0b,MAC9B9oB,MAAO2G,KAAKC,UAAUwG,O,iBAO5B,OADA2P,EAAO+rB,SAASpnB,GAAcha,EAC9B,GAAOA,G,OAET,SAAO,YAGTqV,EAAO+pB,OAEX,OAnEA,kCAmEA,EAnEA,GAgJM,SAAUkD,IACd,MAAO,CACL3sB,SA7Ea,mmFA8EbC,WAAY2sB,EACZ1sB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,MAIZ,IAAWxlB,UAAU,UAAW4sB,I,6BC3KhC,uIAGA,aAEE,WAAYjtB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAOqhB,iCAAmC,oCAG5CrhB,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOE,YAAc,SAACnP,GAGhB,MAAO,IAIbiP,EAAO+pB,OAEX,OAvBA,kCAuBA,EAvBA,GA4HM,SAAUoD,IACd,MAAO,CACL7sB,SArGa,6mHAsGbC,WAAY6sB,EACZ5sB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,MAKhB,IAAWP,UAAU,kBAAmB8sB,I,6BC/IxC,6HAGA,aAEE,WAAYntB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAO0hB,4BAA8B,+BA0BvC1hB,EAAO+pB,OAEX,OAhCA,kCAgCA,EAhCA,GAkGM,SAAUsD,IACd,MAAO,CACL/sB,SAlEa,siEAmEbC,WAAY+sB,EACZ9sB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,MAKhB,IAAWP,UAAU,aAAcgtB,I,6BCrHnC,yHAGA,aAEE,WAAYrtB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAOsf,oBAAsB,uBAG/Btf,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOE,YAAc,SAACnP,GACpB,OAAQA,GACN,IAAK,QACH,OAAOiP,EAAO+nB,YAChB,QACE,MAAO,KAIb/nB,EAAO+nB,UAAY,WACjB,OAAK/nB,EAAOzX,OAGLyX,EAAOG,WAAW4nB,UAAU,MAAO/nB,EAAOzX,QAFxC,IAKXyX,EAAO+pB,OAEX,OAhCA,kCAgCA,EAhCA,GAsGM,SAAUwD,IACd,MAAO,CACLjtB,SAtEa,sxEAuEbC,WAAYitB,EACZhtB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZS,SAAU,MAKhB,IAAWP,UAAU,WAAYktB,I,6BCxHjC,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,6HAGA,aAEE,WAAYvtB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAOwf,sBAAwB,yBAGjCxf,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOE,YAAc,SAACnP,GAGhB,MAAO,IAIbiP,EAAO+pB,OAEX,OAvBA,kCAuBA,EAvBA,GA6FM,SAAU0D,IACd,MAAO,CACLntB,SAtEa,yxEAuEbC,WAAYmtB,EACZltB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZS,SAAU,MAKhB,IAAWP,UAAU,aAAcotB,I,2/CC1GnC,aAEE,WAAYztB,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAO8K,yBAA2B,4BAGpC9K,EAAO2tB,iBAAmB,WACxB3tB,EAAO9M,OAAOwY,QAAU,GACxB1L,EAAO9M,OAAOyY,QAAU,IAG1B3L,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOE,YAAc,SAACnP,GAGhB,MAAO,IAIbiP,EAAO0rB,cAAgB,SAAC/gC,EAAMoW,GAC5B,IAAI4qB,EAAehhC,EACbvB,EAAU,YAAwB,aAGxC,KADAuiC,EAAe3rB,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD2rB,IAEpE,MAAO,GAET,IACEA,EAAe/hC,KAAK6G,MAAMk7B,GAAc,qBAAmB5qB,IAC3D,MAAOrP,IACT,OAAOi6B,GAGT3rB,EAAOkqB,iBAAmB,SAAOh3B,EAAQg1B,GAAQ,qC,kEAKpC,OAJHz0B,EAAauM,EAAO9M,OAAZ,SACV9J,EAAU,YAAwB,aAClConB,EAAaxQ,EAAO0rB,cAAcj4B,EAAU,YAC5ClL,EAASyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD9M,EAAO3K,QAClE,GAAMyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,sBAAxC4W,CAA+D,CAAEzX,OAAM,EAAEioB,WAAU,K,OAGpG,OAHM7V,EAAK,SAGX,IAA0B,KADpBwtB,EAAgB,WAAS14B,QAAQy4B,IACT,GAAK,cAAIvtB,EAAGwtB,IAAgB,SAAC93B,GAAS,MAAC,CAAE0G,KAAM1G,EAAKyZ,OAAQ7mB,MAAOoN,EAA7B,oBAGtE2P,EAAO+pB,OAEX,OArDA,kCAqDA,EArDA,GAoJM,SAAU6D,IACd,MAAO,CACLttB,SA/Fa,oyGAgGbC,WAAYstB,EACZrtB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZS,SAAU,IACVwpB,UAAW,IACXvE,KAAM,KAER5hB,KAAM,SAACxD,EAAO2qB,EAASC,GACrB5qB,EAAM6qB,OAAO,mBAAmB,W,MACR,QAAtB,EAAA7qB,EAAMktB,wBAAgB,cAAtBltB,MAEFA,EAAM6qB,OAAO,qBAAqB,W,MACV,QAAtB,EAAA7qB,EAAMktB,wBAAgB,cAAtBltB,QAMR,IAAWJ,UAAU,gBAAiButB,I,m+CC/KtC,aAEE,WAAY5tB,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAOyQ,mBAAqB,sBAG9BzQ,EAAOgqB,cAAgB,WACf,IAAAv2B,EAAauM,EAAO9M,OAAZ,SAEd,KADAO,EAAWuM,EAAOG,WAAW8pB,aAAa,MAAO,cAAtCjqB,CAAqDvM,IAE9D,MAAO,GAET,IACEA,EAAW7J,KAAK6G,MAAMgD,GAAU60B,aAChC,MAAO52B,IAGT,OAAO+B,GAGTuM,EAAOooB,YAAc,SAAOl1B,GAAM,qC,mCAQhC,OAFMo1B,EAAetoB,EAAOgqB,gBACtBzhC,EAASyX,EAAOG,WAAW8pB,aAAa,MAAO,cAAtCjqB,CAAqD9M,EAAO3K,QACtE+/B,GAAiB//B,EAItB,GAFgByX,EAAOG,WAAW8pB,aAAa,MAAO,cAE/C7sB,CAAQ7U,EAAQ,CAAE+/B,aAAY,IAAIjuB,MAAK,SAAC/P,GAS7C,OAPeA,EAAIqI,KAAI,SAAClQ,GAEtB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,qBAAmB8G,SACtC,CACLwN,KAAMtU,EAAE,qBAAmB8G,SAC3BtG,MAAO2G,KAAKC,UAAUpH,WAVS,CAAC,EAAD,WAuCvCud,EAAO+pB,OAEX,OAtEA,kCAsEA,EAtEA,GAkJM,SAAUgB,IACd,MAAO,CACLzqB,SA5Ea,g9EA6EbC,WAAYyqB,EACZxqB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,MAIjB,IAAW/pB,UAAU,WAAY0qB,I,6BCrKjC,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,q+CCExBD,EAAc,CAClB,CACElsB,MAAO,gBACP7N,MAAO,gBACP1H,OAAQ,wBAEV,CACEuV,MAAO,YACP7N,MAAO,YACP1H,OAAQ,mBAINijC,EAAqB,CACzB9D,eAAgB,YAChBC,qBAAsB,iBAExB,aAEE,WAAYzoB,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAOsI,2BAA6B,6BACpCtI,EAAO8qB,YAAcA,EACrB9qB,EAAOlQ,UAAY,aAGrBkQ,EAAOgqB,cAAgB,WACf,IAAAv2B,EAAauM,EAAO9M,OAAZ,SACR9J,EAAU,YAAwB4W,EAAOlQ,WAE/C,KADA2D,EAAWuM,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuDvM,IAEhE,MAAO,GAET,IACEA,EAAW7J,KAAK6G,MAAMgD,GAAU,qBAAmBA,UACnD,MAAO/B,IAGT,OAAO+B,GAETuM,EAAOkrB,eAAiB,WACtB,OAAOJ,EAAYlyB,QAAO,SAACvI,GAAI,QAAK,OAAAA,EAAKU,SAAqB,QAAX,EAAAiP,EAAO6lB,YAAI,QAAI,KAAOx1B,EAAKuO,SAAqB,QAAX,EAAAoB,EAAO6lB,YAAI,QAAI,QAEzG7lB,EAAOkqB,iBAAmB,SAAOh3B,EAAQ7J,GAAM,qC,gEAO7C,GANMD,EAAU,YAAwB4W,EAAOlQ,WACzCvH,EAASyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD9M,EAAO3K,QACvEiB,EAAe,CACnBkS,MAAO,IACPqgB,UAAW/b,EAAOgqB,iBAEL,mBAAX3gC,EAA6B,CAC3BykC,EAAO9tB,EAAO9M,OAAOkV,cACzB,IAEE0lB,GADAA,EAAOlkC,KAAK6G,MAAMq9B,IACN,qBAAmB1lB,eAC/B,MAAO1X,IACTlH,EAAQof,cAAgBklB,EAGf,SAAM9tB,EAAOG,WAAW8pB,aAAa7gC,EAAS,kBAAxC4W,CAA2D,CAAEzX,OAAM,EAAEc,OAAM,EAAEG,QAAO,K,OASrG,OATMmR,EAAK,SASX,GAReA,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,qBAAmB6pC,EAAmBjjC,KACzD,CACL0N,KAAMtU,EAAE,qBAAmB6pC,EAAmBjjC,KAC9CuV,MAAOnc,EAAE,qBAAmB6pC,EAAmBjjC,KAC/CpG,MAAO2G,KAAKC,UAAUpH,gBAM5Bud,EAAO+pB,OAEX,OAxDA,kCAwDA,EAxDA,GAsIM,SAAUI,IACd,MAAO,CACL7pB,SA9Ea,ouFA+EbC,WAAYT,EACZU,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,MAIZ,IAAWxlB,UAAU,kBAAiB8pB,I,q+CCxKhCW,EAAc,CAClB,CACElsB,MAAO,OACP7N,MAAO,OACP1H,OAAQ,6BAINijC,EAAqB,CACzB5D,yBAA0B,QAE5B,aAEE,WAAY1oB,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAOsI,2BAA6B,6BACpCtI,EAAO8qB,YAAcA,EACrB9qB,EAAOlQ,UAAY,aAGrBkQ,EAAO2tB,iBAAmB,WACxB3tB,EAAO9M,OAAO6Y,KAAO,IAGvB/L,EAAOgqB,cAAgB,WACf,IAAAv2B,EAAauM,EAAO9M,OAAZ,SACR9J,EAAU,YAAwB4W,EAAOlQ,WAE/C,KADA2D,EAAWuM,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuDvM,IAEhE,MAAO,GAET,IACEA,EAAW7J,KAAK6G,MAAMgD,GAAU,qBAAmBA,UACnD,MAAO/B,IAGT,OAAO+B,GAETuM,EAAOkrB,eAAiB,WACtB,OAAOJ,EAAYlyB,QAAO,SAACvI,GAAI,QAAK,OAAAA,EAAKU,SAAqB,QAAX,EAAAiP,EAAO6lB,YAAI,QAAI,KAAOx1B,EAAKuO,SAAqB,QAAX,EAAAoB,EAAO6lB,YAAI,QAAI,QAEzG7lB,EAAOkqB,iBAAmB,SAAOh3B,EAAQ7J,GAAM,qC,8DAQlC,OAPLD,EAAU,YAAwB4W,EAAOlQ,WACzCvH,EAASyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD9M,EAAO3K,QACvEiB,EAAe,CACnBkS,MAAO,IACPiJ,WAAY3E,EAAOgqB,iBAGV,GAAMhqB,EAAOG,WAAW8pB,aAAa7gC,EAAS,kBAAxC4W,CAA2D,CAAEzX,OAAM,EAAEc,OAAM,EAAEG,QAAO,K,OASrG,OATMmR,EAAK,SASX,GAReA,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,qBAAmB6pC,EAAmBjjC,KACzD,CACL0N,KAAMtU,EAAE,qBAAmB6pC,EAAmBjjC,KAC9CuV,MAAOnc,EAAE,qBAAmB6pC,EAAmBjjC,KAC/CpG,MAAO2G,KAAKC,UAAUpH,gBAM5Bud,EAAO+pB,OAEX,OApDA,kCAoDA,EApDA,GAkIM,SAAUI,IACd,MAAO,CACL7pB,SA9Ea,+sFA+EbC,WAAYT,EACZU,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,KAER5hB,KAAM,SAACxD,EAAO2qB,EAASC,GACrB5qB,EAAM6qB,OAAO,mBAAmB,W,MACR,QAAtB,EAAA7qB,EAAMktB,wBAAgB,cAAtBltB,MAEFA,EAAM6qB,OAAO,qBAAqB,W,MACV,QAAtB,EAAA7qB,EAAMktB,wBAAgB,cAAtBltB,QAKR,IAAWJ,UAAU,oBAAqB8pB,I,4/CCtKpCW,EAAc,CAClB,CACElsB,MAAO,YACP7N,MAAO,YACP1H,OAAQ,8BAEV,CACEuV,MAAO,QACP7N,MAAO,QACP1H,OAAQ,2BAINijC,EAAqB,CACzB3D,2BAA4B,YAC5BC,uBAAwB,SAE1B,aAEE,WAAY5oB,EAAQC,GAApB,WACED,EAAO+pB,KAAO,WACZ/pB,EAAOsI,2BAA6B,6BACpCtI,EAAO8qB,YAAcA,EACrB9qB,EAAOlQ,UAAY,aAGrBkQ,EAAO2tB,iBAAmB,WACxB3tB,EAAO9M,OAAOpD,UAAY,GAC1BkQ,EAAO9M,OAAOiZ,MAAQ,IAGxBnM,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOgqB,cAAgB,WACf,IAAAv2B,EAAauM,EAAO9M,OAAZ,SACR9J,EAAU,YAAwB4W,EAAOlQ,WAE/C,KADA2D,EAAWuM,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuDvM,IAEhE,MAAO,GAET,IACEA,EAAW7J,KAAK6G,MAAMgD,GAAU,qBAAmBA,UACnD,MAAO/B,IAGT,OAAO+B,GAETuM,EAAOkrB,eAAiB,WACtB,OAAOJ,EAAYlyB,QAAO,SAACvI,GAAI,QAAK,OAAAA,EAAKU,SAAqB,QAAX,EAAAiP,EAAO6lB,YAAI,QAAI,KAAOx1B,EAAKuO,SAAqB,QAAX,EAAAoB,EAAO6lB,YAAI,QAAI,QAEzG7lB,EAAOkqB,iBAAmB,SAAOh3B,EAAQ7J,GAAM,qC,gEAO7C,GANMD,EAAU,YAAwB4W,EAAOlQ,WACzCvH,EAASyX,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD9M,EAAO3K,QACvEiB,EAAe,CACnBkS,MAAO,IACPqgB,UAAW/b,EAAOgqB,iBAEL,2BAAX3gC,EAAqC,CACnC,EAAY2W,EAAO9M,OAAOpD,UAC9B,IACE,EAAYlG,KAAK6G,MAAM,GAAW,qBAAmBX,WACrD,MAAOY,IACTlH,EAAQijB,YAAczM,EAAOG,WAAW8pB,aAAa7gC,EAAS,cAAxC4W,CAAuD,GAGpE,SAAMA,EAAOG,WAAW8pB,aAAa7gC,EAAS,kBAAxC4W,CAA2D,CAAEzX,OAAM,EAAEc,OAAM,EAAEG,QAAO,K,OAQrG,OARMmR,EAAK,SAQX,GAPeA,EAAGhI,KAAI,SAAClQ,GAErB,OADAA,EAAEuQ,oBAAsBvQ,EAAE,qBAAmB6pC,EAAmBjjC,KACzD,CACL0N,KAAMtU,EAAE,qBAAmB6pC,EAAmBjjC,KAC9CpG,MAAO2G,KAAKC,UAAUpH,gBAM5Bud,EAAO+pB,OAEX,OAlEA,kCAkEA,EAlEA,GAyLM,SAAUgE,IACd,MAAO,CACLztB,SAvHa,ksJAwHbC,WAAYytB,EACZxtB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,KAER5hB,KAAM,SAACxD,EAAO2qB,EAASC,GACrB5qB,EAAM6qB,OAAO,mBAAmB,W,MACR,QAAtB,EAAA7qB,EAAMktB,wBAAgB,cAAtBltB,MAEFA,EAAM6qB,OAAO,qBAAqB,W,MACV,QAAtB,EAAA7qB,EAAMktB,wBAAgB,cAAtBltB,QAKR,IAAWJ,UAAU,oBAAqB0tB,I,6BCvO1C,2HAIA,aAEE,WAAY/tB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAOqiB,0BAA4B,6BAGrCriB,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAOiuB,aAAe,WACpBjuB,EAAO9M,OAAO8uB,WAAW9vB,KAAK,CAAE82B,IAAK,GAAIC,SAAU,IAAKj3B,MAAO,MAGjEgO,EAAOkuB,gBAAkB,SAAC16B,GACxB,IAAM26B,EAAkBnuB,EAAO9M,OAAO8uB,WAAWxuB,GAC7C,kBAAQ26B,EAAgBnF,MAAQ,kBAAQmF,EAAgBlF,WAAa,kBAAQkF,EAAgBn8B,OAC/FgO,EAAO9M,OAAO8uB,WAAW/uB,OAAOO,EAAO,IAEvCwM,EAAO9M,OAAO8uB,WAAW/uB,OAAOO,EAAO,GACvCwM,EAAOoqB,cAIXpqB,EAAOouB,YAAc,WACnB,OAAOh3B,QAAQC,QAAQ,CACrB,CAAEN,KAAM,IAAK9T,MAAO,KACpB,CAAE8T,KAAM,KAAM9T,MAAO,SAIzB+c,EAAO+pB,OAEX,OArCA,kCAqCA,EArCA,GAuLM,SAAUI,IACd,MAAO,CACL7pB,SAlJa,wgMAmJbC,WAAYT,EACZU,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,MAIZ,IAAWxlB,UAAU,WAAY8pB,I,6BC5MjC,yHAGA,aAEE,WAAYnqB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAO6f,oBAAsB,uBAG/B7f,EAAO+pB,OAEX,OATA,kCASA,EATA,GA+DM,SAAUsE,IACd,MAAO,CACL/tB,SAtDa,0uDAuDbC,WAAY+tB,EACZ9tB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZS,SAAU,MAKhB,IAAWP,UAAU,WAAYguB,I,6BCjFjC,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,gIAIMvD,EAAmB,GAWzB,aAEE,WAAY9qB,EAAQC,GAClBD,EAAO+pB,KAAO,WACZ/pB,EAAOkd,0BAA4B,4BACnCld,EAAOlQ,UAAY,aAErBkQ,EAAOkrB,eAAiB,WACtB,OAAOJ,EAAYlyB,QAAO,SAACvI,GAAI,MAAK,OAAAA,EAAKU,SAAqB,QAAX,EAAAiP,EAAO6lB,YAAI,QAAI,QAGpE7lB,EAAOkqB,iBAAmB,SAACn5B,GACzB,IAAM3H,EAAU,YAAwB4W,EAAOlQ,WAE/C,OAAOkQ,EAAOG,WAAWC,kBAAkBhX,EAAS,CAAE2H,MAAK,KAG7DiP,EAAO+pB,OAEX,OAnBA,kCAmBA,EAnBA,GAiGM,SAAUgB,IACd,MAAO,CACLzqB,SA9Ea,wmFA+EbC,WAAYguB,EACZ/tB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,IACVwpB,UAAW,IACXvE,KAAM,MAIZ,IAAWxlB,UAAU,WAAY0qB,I,6BCjIjC,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,6BCF9B,0BAEA,kBAAa,kBAAiB,sB,gBCF9B,IAAIp4B,EAAM,CACT,IAAK,GACL,KAAM,GACN,sBAAuB,IACvB,yBAA0B,IAC1B,qBAAsB,EACtB,wBAAyB,EACzB,gBAAiB,EACjB,mBAAoB,EACpB,uBAAwB,IACxB,0BAA2B,IAC3B,gBAAiB,IACjB,mBAAoB,IACpB,0BAA2B,GAC3B,6BAA8B,GAC9B,qBAAsB,IACtB,wBAAyB,IACzB,yBAA0B,GAC1B,4BAA6B,GAC7B,yBAA0B,GAC1B,4BAA6B,GAC7B,oBAAqB,IACrB,uBAAwB,IACxB,wBAAyB,GACzB,2BAA4B,GAC5B,qBAAsB,GACtB,wBAAyB,GACzB,gBAAiB,IACjB,mBAAoB,IACpB,oBAAqB,GACrB,uBAAwB,GACxB,sBAAuB,GACvB,yBAA0B,GAC1B,iBAAkB,IAClB,oBAAqB,IACrB,qBAAsB,GACtB,wBAAyB,GACzB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,4BAA6B,GAC7B,+BAAgC,GAChC,uBAAwB,IACxB,0BAA2B,IAC3B,2BAA4B,GAC5B,8BAA+B,GAC/B,4BAA6B,GAC7B,+BAAgC,GAChC,uBAAwB,IACxB,0BAA2B,IAC3B,2BAA4B,GAC5B,8BAA+B,GAC/B,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,sBAAuB,GACvB,yBAA0B,GAC1B,iBAAkB,IAClB,oBAAqB,IACrB,qBAAsB,GACtB,wBAAyB,GACzB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,yBAA0B,GAC1B,4BAA6B,GAC7B,oBAAqB,IACrB,uBAAwB,IACxB,wBAAyB,GACzB,2BAA4B,GAC5B,mBAAoB,GACpB,sBAAuB,GACvB,kBAAmB,IACnB,qBAAsB,IACtB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,6BAA8B,GAC9B,gCAAiC,GACjC,wBAAyB,IACzB,2BAA4B,IAC5B,4BAA6B,GAC7B,+BAAgC,GAChC,kBAAmB,GACnB,qBAAsB,GACtB,aAAc,IACd,gBAAiB,IACjB,iBAAkB,GAClB,oBAAqB,GACrB,oBAAqB,GACrB,uBAAwB,GACxB,eAAgB,IAChB,kBAAmB,IACnB,mBAAoB,GACpB,sBAAuB,GACvB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,oBAAqB,GACrB,uBAAwB,GACxB,eAAgB,IAChB,kBAAmB,IACnB,mBAAoB,GACpB,sBAAuB,GACvB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,iCAAkC,GAClC,oCAAqC,GACrC,4BAA6B,IAC7B,+BAAgC,IAChC,gCAAiC,GACjC,mCAAoC,GACpC,sBAAuB,GACvB,yBAA0B,GAC1B,iBAAkB,IAClB,oBAAqB,IACrB,qBAAsB,GACtB,wBAAyB,GACzB,mBAAoB,GACpB,sBAAuB,GACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,UAAW,GACX,aAAc,GACd,kBAAmB,IACnB,qBAAsB,IACtB,aAAc,IACd,gBAAiB,IACjB,iBAAkB,GAClB,oBAAqB,GACrB,0BAA2B,IAC3B,6BAA8B,IAC9B,qBAAsB,IACtB,wBAAyB,IACzB,yBAA0B,GAC1B,4BAA6B,GAC7B,uBAAwB,IACxB,0BAA2B,IAC3B,kBAAmB,IACnB,qBAAsB,IACtB,sBAAuB,GACvB,yBAA0B,GAC1B,kBAAmB,IACnB,qBAAsB,IACtB,aAAc,IACd,gBAAiB,IACjB,iBAAkB,GAClB,oBAAqB,GACrB,2BAA4B,IAC5B,8BAA+B,IAC/B,sBAAuB,IACvB,yBAA0B,IAC1B,0BAA2B,GAC3B,6BAA8B,GAC9B,sBAAuB,IACvB,yBAA0B,IAC1B,iBAAkB,IAClB,oBAAqB,IACrB,qBAAsB,GACtB,wBAAyB,GACzB,mBAAoB,IACpB,sBAAuB,IACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,0BAA2B,IAC3B,6BAA8B,IAC9B,qBAAsB,IACtB,wBAAyB,IACzB,yBAA0B,GAC1B,4BAA6B,GAC7B,oBAAqB,IACrB,uBAAwB,IACxB,eAAgB,IAChB,kBAAmB,IACnB,mBAAoB,GACpB,sBAAuB,GACvB,qBAAsB,IACtB,wBAAyB,IACzB,gBAAiB,IACjB,mBAAoB,IACpB,oBAAqB,GACrB,uBAAwB,GACxB,yBAA0B,IAC1B,4BAA6B,IAC7B,oBAAqB,IACrB,uBAAwB,IACxB,wBAAyB,GACzB,2BAA4B,GAC5B,mBAAoB,IACpB,sBAAuB,IACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,yBAA0B,IAC1B,4BAA6B,IAC7B,oBAAqB,IACrB,uBAAwB,IACxB,wBAAyB,GACzB,2BAA4B,GAC5B,uBAAwB,IACxB,0BAA2B,IAC3B,kBAAmB,IACnB,qBAAsB,IACtB,sBAAuB,GACvB,yBAA0B,GAC1B,oBAAqB,IACrB,uBAAwB,IACxB,eAAgB,IAChB,kBAAmB,IACnB,mBAAoB,GACpB,sBAAuB,GACvB,6BAA8B,IAC9B,gCAAiC,IACjC,wBAAyB,IACzB,2BAA4B,IAC5B,4BAA6B,GAC7B,+BAAgC,GAChC,6BAA8B,IAC9B,gCAAiC,IACjC,wBAAyB,IACzB,2BAA4B,IAC5B,4BAA6B,GAC7B,+BAAgC,GAChC,mBAAoB,IACpB,sBAAuB,IACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,mBAAoB,IACpB,sBAAuB,IACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,qBAAsB,IACtB,wBAAyB,IACzB,gBAAiB,IACjB,mBAAoB,IACpB,oBAAqB,GACrB,uBAAwB,GACxB,mBAAoB,IACpB,sBAAuB,IACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,GACtB,8BAA+B,IAC/B,iCAAkC,IAClC,yBAA0B,IAC1B,4BAA6B,IAC7B,6BAA8B,GAC9B,gCAAiC,GACjC,qBAAsB,IACtB,wBAAyB,IACzB,gBAAiB,IACjB,mBAAoB,IACpB,oBAAqB,GACrB,uBAAwB,GACxB,oBAAqB,IACrB,uBAAwB,IACxB,eAAgB,IAChB,kBAAmB,IACnB,mBAAoB,GACpB,sBAAuB,GACvB,mBAAoB,IACpB,sBAAuB,IACvB,cAAe,IACf,iBAAkB,IAClB,kBAAmB,GACnB,qBAAsB,IAIvB,SAAS67B,EAAeC,GACvB,IAAI9hC,EAAK+hC,EAAsBD,GAC/B,OAAO7sC,EAAoB+K,GAE5B,SAAS+hC,EAAsBD,GAC9B,IAAI7sC,EAAoBa,EAAEkQ,EAAK87B,GAAM,CACpC,IAAI/9B,EAAI,IAAIkL,MAAM,uBAAyB6yB,EAAM,KAEjD,MADA/9B,EAAEsM,KAAO,mBACHtM,EAEP,OAAOiC,EAAI87B,GAEZD,EAAej1B,KAAO,WACrB,OAAO7W,OAAO6W,KAAK5G,IAEpB67B,EAAen3B,QAAUq3B,EACzB3sC,EAAOD,QAAU0sC,EACjBA,EAAe7hC,GAAK,K,6BC3WpB,4GAmBA,aAME,WAAYgI,EAAkBlL,EAAYoH,GAA1C,WACElH,KAAKgL,iBAAmBA,EACxBhL,KAAKF,WAAaA,EAClBE,KAAKkH,YAAcA,EACnB,IAAET,QAAQ,eAAa,SAACu+B,EAAaprC,GACnC,EAAKA,GAAO,IAAIorC,EAAO,EAAKh6B,iBAAkB,EAAKlL,WAAY,EAAKoH,gBA2P1E,OAtQA,0DAgBE,YAAA+9B,cAAA,sBACQC,EAAoB,GAO1B,OANA,IAAEz+B,QAAQ,YAAU,SAAChH,IACqC,IAApD,EAAKuL,iBAAiBQ,SAAS/L,EAAQA,UAEzCylC,EAAW38B,KAAK9I,MAGbylC,GAGT,YAAAC,sBAAA,sBACQC,EAAgB,WAASn2B,QAAO,SAACxP,GAAY,SAAKuL,iBAAiBQ,SAAS/L,EAA/B,YACnD,OAAO,YAAe2lC,IAGxB,YAAAC,oBAAA,WACE,IAAMH,EAAallC,KAAKilC,gBACxB,OAAO,IAAEj8B,IAAIk8B,GAAY,SAAC,G,IAAE/+B,EAAS,YACnC,OAAO,YAAwBA,OAwDnC,YAAAE,MAAA,SAAM9G,GAAN,WACQ+lC,EAAkB,GAClBtwB,EAAWhV,KAAKqlC,sBAYtB,OAXA,IAAE5+B,QAAQuO,GAAU,SAACvV,GACnB,IAAM8lC,EAAc,IAAEz8B,UAAUvJ,GAC1B2P,EAAU,IAAED,OAAOs2B,EAAYr2B,SAAS,SAACxI,GAAS,OAAAA,EAAKjH,UAAL,KAExD,GADA8lC,EAAYr2B,QAAUA,EAClBq2B,EAAYr2B,QAAQ/F,OAAS,EAAG,CAClC,IAAMq8B,EAAc,EAAK,UAAG,IAAEtc,QAAQzpB,GAAQ,eAAc4G,MAAMk/B,GAC9DC,GACFF,EAAS/8B,KAAKi9B,OAII,IAApBF,EAASn8B,OACJsE,QAAQC,QAAQ,CAAE1M,KAAM,GAAI2yB,MAAO,eAAa8R,OAElDh4B,QAAQgD,IAAI60B,GAAU50B,MAAK,SAACg1B,GACjC,MAAO,CAAE1kC,KAAM,IAAE4P,QAAQ80B,GAAU/R,MAAO,eAAa8R,UAS3D,YAAAh5B,gBAAA,SAAgBpG,EAAe9G,GAC7B,IAAMgH,EAAU,YAAiBF,GAC3B5G,EAAU,YAAwB8G,EAAO,WAAiB,IAEhE,GAAI,IAAE4B,QAAQ5B,KAAaA,EAAO,YAAkBA,EAAO,SAAe9G,EACxE,OAAOgO,QAAQC,QAAQ,IAEzB,GAAI1N,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAcgN,gBAAiB,CAC3D,IAAMnG,EAAStG,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAcgN,gBACrDlG,EACA,IAAErN,IAAIqG,EAAS,sBAAkB+I,IAEnC,GAAIhC,EACF,OAAOA,EAGX,OAAOmH,QAAQC,QAAQ,KAOzB,YAAAV,WAAA,SAAWvN,GACT,OAAIO,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAcuN,WACnChN,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAcuN,aAE1C,IAQT,YAAAwE,WAAA,SAAW/R,EAASb,GAClB,OAAOoB,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAc+R,WAAW5S,IAQ5D,YAAAu6B,SAAA,SAAS15B,EAASb,GAChB,OAAIoB,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAc05B,SACnCn5B,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAc05B,SAASv6B,GAEnD,IAQT,YAAA6X,kBAAA,SAAkBhX,EAAS4S,GACzB,OAAIrS,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAcgX,kBACnCzW,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAcgX,kBAAkBpE,GAE5D,IAST,YAAAT,aAAA,SAAanS,EAASb,EAAQsS,GAC5B,OAAOlR,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAcmS,aAAahT,EAAQsS,IAStE,YAAAy0B,aAAA,SAAalmC,EAASb,EAAQkL,GAC5B,OAAK9J,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAckmC,aAGtC3lC,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAckmC,aAAa/mC,EAAQkL,GAF3D,IASX,YAAAs0B,UAAA,SAAU3+B,EAASb,GACjB,GAAIoB,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAc2+B,UAC1C,OAAOp+B,KAAK,UAAG,IAAEkpB,QAAQzpB,GAAQ,eAAc2+B,UAAUx/B,IAK7D,YAAA2T,eAAA,sBACQ+yB,EAAkB,GAClBtwB,EAAWhV,KAAKqlC,sBAItB,OAHA,IAAE5+B,QAAQuO,GAAU,SAACvV,GACnB6lC,EAAS/8B,KAAK,EAAK,UAAG,IAAE2gB,QAAQzpB,GAAQ,eAAc8S,qBAEhC,IAApB+yB,EAASn8B,OACJsE,QAAQC,QAAQ,MAGlBD,QAAQgD,IAAI60B,GAAU50B,MAAK,SAACg1B,GACjC,IAAIxyB,EAAS,UACTH,EAAU,2BAER6yB,EAAW,IAAEv2B,OACjBq2B,GACA,SAACtxB,EAAKC,GAKJ,MAJmB,UAAfA,EAAInB,SACM,KAARkB,IAAYA,GAAO,6BACvBA,GAAO,UAAGC,EAAI5U,QAAO,aAAK4U,EAAItB,QAAO,SAEhCqB,IAET,IAQF,OALIwxB,IACF1yB,EAAS,QACTH,EAAU6yB,GAGL,CACL1yB,OAAM,EACNH,QAAO,EACPI,MAAO,IAAE0yB,WAAW3yB,QAK1B,YAAAotB,aAAA,SAAa7gC,EAASqmC,GAAtB,WACE,OAAO,W,UAAC,kDACN,OAAK,EAAK,UAAG,IAAE5c,QAAQzpB,GAAQ,eAAcqmC,IAGtC,IAAK,UAAG,IAAE5c,QAAQzpB,GAAQ,gBAAcqmC,GAAO,QAAIC,GAFjD,KAKf,EAtQA,I,6BCjBA,IAAItgB,EAAM1sB,OAAOkB,UAAUC,eAEvB8rC,EAAY,WAEZ,IADA,IAAIC,EAAQ,GACH5tC,EAAI,EAAGA,EAAI,MAAOA,EACvB4tC,EAAM19B,KAAK,MAAQlQ,EAAI,GAAK,IAAM,IAAMA,EAAEiK,SAAS,KAAKqhB,eAG5D,OAAOsiB,EANI,GAgCXC,EAAgB,SAAuBC,EAAQ5mC,GAE/C,IADA,IAAI2I,EAAM3I,GAAWA,EAAQ6mC,aAAertC,OAAOY,OAAO,MAAQ,GACzDtB,EAAI,EAAGA,EAAI8tC,EAAOh9B,SAAU9Q,OACR,IAAd8tC,EAAO9tC,KACd6P,EAAI7P,GAAK8tC,EAAO9tC,IAIxB,OAAO6P,GA+JX9P,EAAOD,QAAU,CACb+tC,cAAeA,EACfvjC,OAvGS,SAA4B4G,EAAQ48B,GAC7C,OAAOptC,OAAO6W,KAAKu2B,GAAQ92B,QAAO,SAAU+E,EAAKxa,GAE7C,OADAwa,EAAIxa,GAAOusC,EAAOvsC,GACXwa,IACR7K,IAoGHyJ,QArCU,SAAiB1Z,GAI3B,IAHA,IAAIomB,EAAQ,CAAC,CAAExX,IAAK,CAAEpP,EAAGQ,GAASkiB,KAAM,MACpC6qB,EAAO,GAEFhuC,EAAI,EAAGA,EAAIqnB,EAAMvW,SAAU9Q,EAKhC,IAJA,IAAIqO,EAAOgZ,EAAMrnB,GACb6P,EAAMxB,EAAKwB,IAAIxB,EAAK8U,MAEpB5L,EAAO7W,OAAO6W,KAAK1H,GACdo+B,EAAI,EAAGA,EAAI12B,EAAKzG,SAAUm9B,EAAG,CAClC,IAAI1sC,EAAMgW,EAAK02B,GACXz/B,EAAMqB,EAAItO,GACK,iBAARiN,GAA4B,OAARA,IAAuC,IAAvBw/B,EAAKvgC,QAAQe,KACxD6Y,EAAMnX,KAAK,CAAEL,IAAKA,EAAKsT,KAAM5hB,IAC7BysC,EAAK99B,KAAK1B,IAKtB,OA/Ke,SAAsB6Y,GAGrC,IAFA,IAAIxX,EAEGwX,EAAMvW,QAAQ,CACjB,IAAIzC,EAAOgZ,EAAM6mB,MAGjB,GAFAr+B,EAAMxB,EAAKwB,IAAIxB,EAAK8U,MAEhBxP,MAAMhE,QAAQE,GAAM,CAGpB,IAFA,IAAIs+B,EAAY,GAEPF,EAAI,EAAGA,EAAIp+B,EAAIiB,SAAUm9B,OACR,IAAXp+B,EAAIo+B,IACXE,EAAUj+B,KAAKL,EAAIo+B,IAI3B5/B,EAAKwB,IAAIxB,EAAK8U,MAAQgrB,GAI9B,OAAOt+B,EA2JAu+B,CAAa/mB,IAmBpBgnB,OAlGS,SAAU//B,GACnB,IACI,OAAOggC,mBAAmBhgC,EAAImB,QAAQ,MAAO,MAC/C,MAAOf,GACL,OAAOJ,IA+FXigC,OA3FS,SAAgBjgC,GAGzB,GAAmB,IAAfA,EAAIwC,OACJ,OAAOxC,EAMX,IAHA,IAAIkgC,EAAwB,iBAARlgC,EAAmBA,EAAMc,OAAOd,GAEhDmgC,EAAM,GACDzuC,EAAI,EAAGA,EAAIwuC,EAAO19B,SAAU9Q,EAAG,CACpC,IAAIK,EAAImuC,EAAOE,WAAW1uC,GAGhB,KAANK,GACS,KAANA,GACM,KAANA,GACM,MAANA,GACCA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAEtBouC,GAAOD,EAAOG,OAAO3uC,GAIrBK,EAAI,IACJouC,GAAYd,EAASttC,GAIrBA,EAAI,KACJouC,GAAad,EAAS,IAAQttC,GAAK,GAAMstC,EAAS,IAAY,GAAJttC,GAI1DA,EAAI,OAAUA,GAAK,MACnBouC,GAAad,EAAS,IAAQttC,GAAK,IAAOstC,EAAS,IAASttC,GAAK,EAAK,IAASstC,EAAS,IAAY,GAAJttC,IAIpGL,GAAK,EACLK,EAAI,QAAiB,KAAJA,IAAc,GAA8B,KAAvBmuC,EAAOE,WAAW1uC,IACxDyuC,GAAOd,EAAS,IAAQttC,GAAK,IACvBstC,EAAS,IAASttC,GAAK,GAAM,IAC7BstC,EAAS,IAASttC,GAAK,EAAK,IAC5BstC,EAAS,IAAY,GAAJttC,IAG3B,OAAOouC,GA2CPG,SAdW,SAAkB/+B,GAC7B,OAAIA,YAIMA,EAAIg/B,aAAeh/B,EAAIg/B,YAAYD,UAAY/+B,EAAIg/B,YAAYD,SAAS/+B,KAUlFi/B,SAnBW,SAAkBj/B,GAC7B,MAA+C,oBAAxCnP,OAAOkB,UAAUqI,SAAS9J,KAAK0P,IAmBtCk/B,MApKQ,SAASA,EAAM79B,EAAQ48B,EAAQ5mC,GACvC,IAAK4mC,EACD,OAAO58B,EAGX,GAAsB,iBAAX48B,EAAqB,CAC5B,GAAIn6B,MAAMhE,QAAQuB,GACdA,EAAOhB,KAAK49B,OACT,IAAsB,iBAAX58B,EAKd,MAAO,CAACA,EAAQ48B,IAJZ5mC,EAAQ6mC,cAAgB7mC,EAAQ8nC,kBAAoB5hB,EAAIjtB,KAAKO,OAAOkB,UAAWksC,MAC/E58B,EAAO48B,IAAU,GAMzB,OAAO58B,EAGX,GAAsB,iBAAXA,EACP,MAAO,CAACA,GAAQiG,OAAO22B,GAG3B,IAAImB,EAAc/9B,EAKlB,OAJIyC,MAAMhE,QAAQuB,KAAYyC,MAAMhE,QAAQm+B,KACxCmB,EAAcpB,EAAc38B,EAAQhK,IAGpCyM,MAAMhE,QAAQuB,IAAWyC,MAAMhE,QAAQm+B,IACvCA,EAAO1/B,SAAQ,SAAUC,EAAMrO,GACvBotB,EAAIjtB,KAAK+Q,EAAQlR,GACbkR,EAAOlR,IAA2B,iBAAdkR,EAAOlR,GAC3BkR,EAAOlR,GAAK+uC,EAAM79B,EAAOlR,GAAIqO,EAAMnH,GAEnCgK,EAAOhB,KAAK7B,GAGhB6C,EAAOlR,GAAKqO,KAGb6C,GAGJxQ,OAAO6W,KAAKu2B,GAAQ92B,QAAO,SAAU+E,EAAKxa,GAC7C,IAAIN,EAAQ6sC,EAAOvsC,GAOnB,OALI6rB,EAAIjtB,KAAK4b,EAAKxa,GACdwa,EAAIxa,GAAOwtC,EAAMhzB,EAAIxa,GAAMN,EAAOiG,GAElC6U,EAAIxa,GAAON,EAER8a,IACRkzB,M,6BCjGP,IAAIx/B,EAAUL,OAAOxN,UAAU6N,QAC3By/B,EAAkB,OAEtBnvC,EAAOD,QAAU,CACb,QAAW,UACXqvC,WAAY,CACRC,QAAS,SAAUnuC,GACf,OAAOwO,EAAQtP,KAAKc,EAAOiuC,EAAiB,MAEhDG,QAAS,SAAUpuC,GACf,OAAOA,IAGfmuC,QAAS,UACTC,QAAS,Y,6BChBb,oEAGA,aAIE,WAAYrxB,EAAQC,GAClBvd,OAAO4J,OAAO0T,EAAQsxB,EAAYC,SAElCvxB,EAAOqqB,UAAY,SAACC,EAAUC,IACY,IAApCvqB,EAAO9M,OAAOhD,QAAQo6B,KACxBtqB,EAAO9M,OAAOhD,QAAQq6B,IAAY,GAEpCvqB,EAAOY,YAGTZ,EAAO+pB,OAEX,OAhBA,kCAgBA,EAhBA,GAuHM,SAAUyH,IACd,MAAO,CACLlxB,SAvGa,6rHAwGbC,WAAY+wB,EACZ9wB,SAAU,IACVC,MAAO,CACLvN,OAAQ,IACRwN,WAAY,IACZnY,OAAQ,IACR4X,WAAY,IACZQ,mBAAoB,IACpBC,SAAU,MAKD,mBAACre,EAAcqd,GAC5B0xB,EAAYC,QAAU3xB,EACtB,IAAWS,UAAU9d,EAAMivC,K,kEC1I7B,IAAI3nC,EAAY,EAAQ,KACpB4G,EAAQ,EAAQ,KAChBghC,EAAU,EAAQ,KAEtB1vC,EAAOD,QAAU,CACb2vC,QAASA,EACThhC,MAAOA,EACP5G,UAAWA,I,grlBCPf,IAAI6nC,EAAQ,EAAQ,KAChBD,EAAU,EAAQ,KAElBE,EAAwB,CACxBC,SAAU,SAAkBvkB,GACxB,OAAOA,EAAS,MAEpBwkB,QAAS,SAAiBxkB,EAAQ9pB,GAC9B,OAAO8pB,EAAS,IAAM9pB,EAAM,KAEhCuuC,OAAQ,SAAgBzkB,GACpB,OAAOA,IAIX0kB,EAAQC,KAAKpuC,UAAUquC,YAEvB/lC,EAAW,CACXgmC,UAAW,IACX3B,QAAQ,EACR4B,QAAST,EAAMnB,OACf6B,kBAAkB,EAClBC,cAAe,SAAuBnoC,GAClC,OAAO6nC,EAAM5vC,KAAK+H,IAEtBooC,WAAW,EACXC,oBAAoB,GAGpB1oC,EAAY,SAASA,EACrBnG,EACA2pB,EACAmlB,EACAD,EACAD,EACAH,EACAv5B,EACA65B,EACAC,EACAL,EACAM,EACAP,GAEA,IAAIvgC,EAAMnO,EACV,GAAsB,mBAAXkV,EACP/G,EAAM+G,EAAOyU,EAAQxb,QAClB,GAAIA,aAAemgC,KACtBngC,EAAMwgC,EAAcxgC,QACjB,GAAY,OAARA,EAAc,CACrB,GAAI0gC,EACA,OAAOJ,IAAYC,EAAmBD,EAAQ9kB,EAAQnhB,EAASimC,SAAW9kB,EAG9Exb,EAAM,GAGV,GAAmB,iBAARA,GAAmC,iBAARA,GAAmC,kBAARA,GAAqB6/B,EAAMd,SAAS/+B,GACjG,OAAIsgC,EAEO,CAACQ,EADOP,EAAmB/kB,EAAS8kB,EAAQ9kB,EAAQnhB,EAASimC,UACtC,IAAMQ,EAAUR,EAAQtgC,EAAK3F,EAASimC,WAEjE,CAACQ,EAAUtlB,GAAU,IAAMslB,EAAUvhC,OAAOS,KAGvD,IAMI+gC,EANAr/B,EAAS,GAEb,QAAmB,IAAR1B,EACP,OAAO0B,EAIX,GAAIoC,MAAMhE,QAAQiH,GACdg6B,EAAUh6B,MACP,CACH,IAAIW,EAAO7W,OAAO6W,KAAK1H,GACvB+gC,EAAUH,EAAOl5B,EAAKk5B,KAAKA,GAAQl5B,EAGvC,IAAK,IAAIvX,EAAI,EAAGA,EAAI4wC,EAAQ9/B,SAAU9Q,EAAG,CACrC,IAAIuB,EAAMqvC,EAAQ5wC,GAEdswC,GAA0B,OAAbzgC,EAAItO,KAKjBgQ,EADAoC,MAAMhE,QAAQE,GACL0B,EAAO4F,OAAOtP,EACnBgI,EAAItO,GACJivC,EAAoBnlB,EAAQ9pB,GAC5BivC,EACAD,EACAD,EACAH,EACAv5B,EACA65B,EACAC,EACAL,EACAM,EACAP,IAGK7+B,EAAO4F,OAAOtP,EACnBgI,EAAItO,GACJ8pB,GAAUqlB,EAAY,IAAMnvC,EAAM,IAAMA,EAAM,KAC9CivC,EACAD,EACAD,EACAH,EACAv5B,EACA65B,EACAC,EACAL,EACAM,EACAP,KAKZ,OAAO7+B,GAGXxR,EAAOD,QAAU,SAAU4B,EAAQmvC,GAC/B,IAAIhhC,EAAMnO,EACNwF,EAAU2pC,EAAOnB,EAAMplC,OAAO,GAAIumC,GAAQ,GAE9C,GAAwB,OAApB3pC,EAAQipC,cAAwClgC,IAApB/I,EAAQipC,SAAoD,mBAApBjpC,EAAQipC,QAC5E,MAAM,IAAIW,UAAU,iCAGxB,IAAIZ,OAAyC,IAAtBhpC,EAAQgpC,UAA4BhmC,EAASgmC,UAAYhpC,EAAQgpC,UACpFK,EAA2D,kBAA/BrpC,EAAQqpC,mBAAmCrpC,EAAQqpC,mBAAqBrmC,EAASqmC,mBAC7GD,EAAyC,kBAAtBppC,EAAQopC,UAA0BppC,EAAQopC,UAAYpmC,EAASomC,UAClF/B,EAAmC,kBAAnBrnC,EAAQqnC,OAAuBrnC,EAAQqnC,OAASrkC,EAASqkC,OACzE4B,EAAqC,mBAApBjpC,EAAQipC,QAAyBjpC,EAAQipC,QAAUjmC,EAASimC,QAC7EM,EAA+B,mBAAjBvpC,EAAQupC,KAAsBvpC,EAAQupC,KAAO,KAC3DC,OAAyC,IAAtBxpC,EAAQwpC,WAAoCxpC,EAAQwpC,UACvEL,EAAiD,mBAA1BnpC,EAAQmpC,cAA+BnpC,EAAQmpC,cAAgBnmC,EAASmmC,cAC/FD,EAAuD,kBAA7BlpC,EAAQkpC,iBAAiClpC,EAAQkpC,iBAAmBlmC,EAASkmC,iBAC3G,QAA8B,IAAnBlpC,EAAQiB,OACfjB,EAAQiB,OAASsnC,EAAiB,aAC/B,IAAK/uC,OAAOkB,UAAUC,eAAe1B,KAAKsvC,EAAQN,WAAYjoC,EAAQiB,QACzE,MAAM,IAAI2oC,UAAU,mCAExB,IACIF,EACAh6B,EAFA+5B,EAAYlB,EAAQN,WAAWjoC,EAAQiB,QAIb,mBAAnBjB,EAAQ0P,OAEf/G,GADA+G,EAAS1P,EAAQ0P,QACJ,GAAI/G,GACV8D,MAAMhE,QAAQzI,EAAQ0P,UAE7Bg6B,EADAh6B,EAAS1P,EAAQ0P,QAIrB,IAMIm6B,EANAx5B,EAAO,GAEX,GAAmB,iBAAR1H,GAA4B,OAARA,EAC3B,MAAO,GAKPkhC,EADA7pC,EAAQ6pC,eAAepB,EACTzoC,EAAQ6pC,YACf,YAAa7pC,EACNA,EAAQ2oC,QAAU,UAAY,SAE9B,UAGlB,IAAIW,EAAsBb,EAAsBoB,GAE3CH,IACDA,EAAUlwC,OAAO6W,KAAK1H,IAGtB4gC,GACAG,EAAQH,KAAKA,GAGjB,IAAK,IAAIzwC,EAAI,EAAGA,EAAI4wC,EAAQ9/B,SAAU9Q,EAAG,CACrC,IAAIuB,EAAMqvC,EAAQ5wC,GAEdswC,GAA0B,OAAbzgC,EAAItO,KAIrBgW,EAAOA,EAAKJ,OAAOtP,EACfgI,EAAItO,GACJA,EACAivC,EACAD,EACAD,EACA/B,EAAS4B,EAAU,KACnBv5B,EACA65B,EACAC,EACAL,EACAM,EACAP,KAIR,IAAIY,EAASz5B,EAAK3D,KAAKs8B,GACnB7kB,GAAoC,IAA3BnkB,EAAQ+pC,eAA0B,IAAM,GAErD,OAAOD,EAAOlgC,OAAS,EAAIua,EAAS2lB,EAAS,K,6BC9MjD,IAAItB,EAAQ,EAAQ,KAEhBtiB,EAAM1sB,OAAOkB,UAAUC,eAEvBqI,EAAW,CACXwmC,WAAW,EACX1B,iBAAiB,EACjBkC,WAAY,GACZC,QAASzB,EAAMrB,OACf6B,UAAW,IACXkB,MAAO,EACPC,eAAgB,IAChBtD,cAAc,EACdwC,oBAAoB,GAmEpBe,EAAY,SAA8BC,EAAU/iC,EAAKtH,GACzD,GAAKqqC,EAAL,CAKA,IAAIhwC,EAAM2F,EAAQwpC,UAAYa,EAAS9hC,QAAQ,cAAe,QAAU8hC,EAKpEC,EAAQ,gBAIRC,EALW,eAKQj0B,KAAKjc,GACxBmwC,EAASD,EAAUlwC,EAAI+a,MAAM,EAAGm1B,EAAQjgC,OAASjQ,EAIjDgW,EAAO,GACX,GAAIm6B,EAAQ,CAGR,IAAKxqC,EAAQ6mC,cAAgB3gB,EAAIjtB,KAAKO,OAAOkB,UAAW8vC,KAC/CxqC,EAAQ8nC,gBACT,OAIRz3B,EAAKrH,KAAKwhC,GAMd,IADA,IAAI1xC,EAAI,EAC+B,QAA/ByxC,EAAUD,EAAMh0B,KAAKjc,KAAkBvB,EAAIkH,EAAQkqC,OAAO,CAE9D,GADApxC,GAAK,GACAkH,EAAQ6mC,cAAgB3gB,EAAIjtB,KAAKO,OAAOkB,UAAW6vC,EAAQ,GAAGn1B,MAAM,GAAI,MACpEpV,EAAQ8nC,gBACT,OAGRz3B,EAAKrH,KAAKuhC,EAAQ,IAStB,OAJIA,GACAl6B,EAAKrH,KAAK,IAAM3O,EAAI+a,MAAMm1B,EAAQjgC,OAAS,KAnFjC,SAAUoyB,EAAOp1B,EAAKtH,GAGpC,IAFA,IAAIyqC,EAAOnjC,EAEFxO,EAAI4jC,EAAM9yB,OAAS,EAAG9Q,GAAK,IAAKA,EAAG,CACxC,IAAI6P,EACA+hC,EAAOhO,EAAM5jC,GAEjB,GAAa,OAAT4xC,EAEA/hC,GADAA,EAAM,IACIsH,OAAOw6B,OACd,CACH9hC,EAAM3I,EAAQ6mC,aAAertC,OAAOY,OAAO,MAAQ,GACnD,IAAIuwC,EAA+B,MAAnBD,EAAKjD,OAAO,IAA+C,MAAjCiD,EAAKjD,OAAOiD,EAAK9gC,OAAS,GAAa8gC,EAAKt1B,MAAM,GAAI,GAAKs1B,EACjGpgC,EAAQkM,SAASm0B,EAAW,KAE3BC,MAAMtgC,IACJogC,IAASC,GACTziC,OAAOoC,KAAWqgC,GAClBrgC,GAAS,GACRtK,EAAQ6qC,aAAevgC,GAAStK,EAAQgqC,YAE5CrhC,EAAM,IACF2B,GAASmgC,EAEb9hC,EAAIgiC,GAAaF,EAIzBA,EAAO9hC,EAGX,OAAO8hC,EAuDAK,CAAYz6B,EAAM/I,EAAKtH,KAGlCnH,EAAOD,QAAU,SAAUwO,EAAKuiC,GAC5B,IAAI3pC,EAAU2pC,EAAOnB,EAAMplC,OAAO,GAAIumC,GAAQ,GAE9C,GAAwB,OAApB3pC,EAAQiqC,cAAwClhC,IAApB/I,EAAQiqC,SAAoD,mBAApBjqC,EAAQiqC,QAC5E,MAAM,IAAIL,UAAU,iCAexB,GAZA5pC,EAAQ+qC,mBAAkD,IAA9B/qC,EAAQ+qC,kBACpC/qC,EAAQgpC,UAAyC,iBAAtBhpC,EAAQgpC,WAA0BR,EAAMZ,SAAS5nC,EAAQgpC,WAAahpC,EAAQgpC,UAAYhmC,EAASgmC,UAC9HhpC,EAAQkqC,MAAiC,iBAAlBlqC,EAAQkqC,MAAqBlqC,EAAQkqC,MAAQlnC,EAASknC,MAC7ElqC,EAAQgqC,WAA2C,iBAAvBhqC,EAAQgqC,WAA0BhqC,EAAQgqC,WAAahnC,EAASgnC,WAC5FhqC,EAAQ6qC,aAAsC,IAAxB7qC,EAAQ6qC,YAC9B7qC,EAAQiqC,QAAqC,mBAApBjqC,EAAQiqC,QAAyBjqC,EAAQiqC,QAAUjnC,EAASinC,QACrFjqC,EAAQwpC,UAAyC,kBAAtBxpC,EAAQwpC,UAA0BxpC,EAAQwpC,UAAYxmC,EAASwmC,UAC1FxpC,EAAQ6mC,aAA+C,kBAAzB7mC,EAAQ6mC,aAA6B7mC,EAAQ6mC,aAAe7jC,EAAS6jC,aACnG7mC,EAAQ8nC,gBAAqD,kBAA5B9nC,EAAQ8nC,gBAAgC9nC,EAAQ8nC,gBAAkB9kC,EAAS8kC,gBAC5G9nC,EAAQmqC,eAAmD,iBAA3BnqC,EAAQmqC,eAA8BnqC,EAAQmqC,eAAiBnnC,EAASmnC,eACxGnqC,EAAQqpC,mBAA2D,kBAA/BrpC,EAAQqpC,mBAAmCrpC,EAAQqpC,mBAAqBrmC,EAASqmC,mBAEzG,KAARjiC,SAAcA,EACd,OAAOpH,EAAQ6mC,aAAertC,OAAOY,OAAO,MAAQ,GASxD,IANA,IAAI4wC,EAAyB,iBAAR5jC,EA9IP,SAAgCA,EAAKpH,GAMnD,IALA,IAAI2I,EAAM,GACNsiC,EAAWjrC,EAAQ+qC,kBAAoB3jC,EAAImB,QAAQ,MAAO,IAAMnB,EAChE6uB,EAAQj2B,EAAQmqC,iBAAmBe,SAAWniC,EAAY/I,EAAQmqC,eAClE9zB,EAAQ40B,EAAShkC,MAAMjH,EAAQgpC,UAAW/S,GAErCn9B,EAAI,EAAGA,EAAIud,EAAMzM,SAAU9Q,EAAG,CACnC,IAKIuB,EAAKiN,EALL6jC,EAAO90B,EAAMvd,GAEbsyC,EAAmBD,EAAK5kC,QAAQ,MAChC8kC,GAA4B,IAAtBD,EAA0BD,EAAK5kC,QAAQ,KAAO6kC,EAAmB,GAG9D,IAATC,GACAhxC,EAAM2F,EAAQiqC,QAAQkB,EAAMnoC,EAASinC,SACrC3iC,EAAMtH,EAAQqpC,mBAAqB,KAAO,KAE1ChvC,EAAM2F,EAAQiqC,QAAQkB,EAAK/1B,MAAM,EAAGi2B,GAAMroC,EAASinC,SACnD3iC,EAAMtH,EAAQiqC,QAAQkB,EAAK/1B,MAAMi2B,EAAM,GAAIroC,EAASinC,UAEpD/jB,EAAIjtB,KAAK0P,EAAKtO,GACdsO,EAAItO,GAAO,GAAG4V,OAAOtH,EAAItO,IAAM4V,OAAO3I,GAEtCqB,EAAItO,GAAOiN,EAInB,OAAOqB,EAmHiC2iC,CAAYlkC,EAAKpH,GAAWoH,EAChEuB,EAAM3I,EAAQ6mC,aAAertC,OAAOY,OAAO,MAAQ,GAInDiW,EAAO7W,OAAO6W,KAAK26B,GACdlyC,EAAI,EAAGA,EAAIuX,EAAKzG,SAAU9Q,EAAG,CAClC,IAAIuB,EAAMgW,EAAKvX,GACXyyC,EAASnB,EAAU/vC,EAAK2wC,EAAQ3wC,GAAM2F,GAC1C2I,EAAM6/B,EAAMX,MAAMl/B,EAAK4iC,EAAQvrC,GAGnC,OAAOwoC,EAAM/0B,QAAQ9K,K,gBC5KzB,IAAIc,EAAM,CACT,mBAAoB,EACpB,0BAA2B,GAC3B,6BAA8B,GAC9B,wBAAyB,IACzB,4BAA6B,GAC7B,yBAA0B,GAC1B,4BAA6B,GAC7B,uBAAwB,IACxB,2BAA4B,GAC5B,qBAAsB,GACtB,wBAAyB,GACzB,mBAAoB,IACpB,uBAAwB,GACxB,sBAAuB,GACvB,yBAA0B,GAC1B,oBAAqB,IACrB,wBAAyB,GACzB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,4BAA6B,GAC7B,+BAAgC,GAChC,0BAA2B,IAC3B,8BAA+B,GAC/B,4BAA6B,GAC7B,+BAAgC,GAChC,0BAA2B,IAC3B,8BAA+B,GAC/B,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,sBAAuB,GACvB,yBAA0B,GAC1B,oBAAqB,IACrB,wBAAyB,GACzB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,yBAA0B,GAC1B,4BAA6B,GAC7B,uBAAwB,IACxB,2BAA4B,GAC5B,mBAAoB,GACpB,sBAAuB,GACvB,qBAAsB,IACtB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,6BAA8B,GAC9B,gCAAiC,GACjC,2BAA4B,IAC5B,+BAAgC,GAChC,kBAAmB,GACnB,qBAAsB,GACtB,gBAAiB,IACjB,oBAAqB,GACrB,oBAAqB,GACrB,uBAAwB,GACxB,kBAAmB,IACnB,sBAAuB,GACvB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,oBAAqB,GACrB,uBAAwB,GACxB,kBAAmB,IACnB,sBAAuB,GACvB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,iCAAkC,GAClC,oCAAqC,GACrC,+BAAgC,IAChC,mCAAoC,GACpC,sBAAuB,GACvB,yBAA0B,GAC1B,oBAAqB,IACrB,wBAAyB,GACzB,mBAAoB,GACpB,sBAAuB,GACvB,iBAAkB,IAClB,qBAAsB,GACtB,kBAAmB,IACnB,qBAAsB,IACtB,gBAAiB,IACjB,oBAAqB,GACrB,0BAA2B,IAC3B,6BAA8B,IAC9B,wBAAyB,IACzB,4BAA6B,GAC7B,uBAAwB,IACxB,0BAA2B,IAC3B,qBAAsB,IACtB,yBAA0B,GAC1B,kBAAmB,IACnB,qBAAsB,IACtB,gBAAiB,IACjB,oBAAqB,GACrB,2BAA4B,IAC5B,8BAA+B,IAC/B,yBAA0B,IAC1B,6BAA8B,GAC9B,sBAAuB,IACvB,yBAA0B,IAC1B,oBAAqB,IACrB,wBAAyB,GACzB,mBAAoB,IACpB,sBAAuB,IACvB,iBAAkB,IAClB,qBAAsB,GACtB,0BAA2B,IAC3B,6BAA8B,IAC9B,wBAAyB,IACzB,4BAA6B,GAC7B,oBAAqB,IACrB,uBAAwB,IACxB,kBAAmB,IACnB,sBAAuB,GACvB,qBAAsB,IACtB,wBAAyB,IACzB,mBAAoB,IACpB,uBAAwB,GACxB,yBAA0B,IAC1B,4BAA6B,IAC7B,uBAAwB,IACxB,2BAA4B,GAC5B,mBAAoB,IACpB,sBAAuB,IACvB,iBAAkB,IAClB,qBAAsB,GACtB,yBAA0B,IAC1B,4BAA6B,IAC7B,uBAAwB,IACxB,2BAA4B,GAC5B,uBAAwB,IACxB,0BAA2B,IAC3B,qBAAsB,IACtB,yBAA0B,GAC1B,oBAAqB,IACrB,uBAAwB,IACxB,kBAAmB,IACnB,sBAAuB,GACvB,6BAA8B,IAC9B,gCAAiC,IACjC,2BAA4B,IAC5B,+BAAgC,GAChC,6BAA8B,IAC9B,gCAAiC,IACjC,2BAA4B,IAC5B,+BAAgC,GAChC,mBAAoB,IACpB,sBAAuB,IACvB,iBAAkB,IAClB,qBAAsB,GACtB,mBAAoB,IACpB,sBAAuB,IACvB,iBAAkB,IAClB,qBAAsB,GACtB,qBAAsB,IACtB,wBAAyB,IACzB,mBAAoB,IACpB,uBAAwB,GACxB,mBAAoB,IACpB,sBAAuB,IACvB,iBAAkB,IAClB,qBAAsB,GACtB,8BAA+B,IAC/B,iCAAkC,IAClC,4BAA6B,IAC7B,gCAAiC,GACjC,qBAAsB,IACtB,wBAAyB,IACzB,mBAAoB,IACpB,uBAAwB,GACxB,oBAAqB,IACrB,uBAAwB,IACxB,kBAAmB,IACnB,sBAAuB,GACvB,mBAAoB,IACpB,sBAAuB,IACvB,iBAAkB,IAClB,qBAAsB,IAIvB,SAAS67B,EAAeC,GACvB,IAAI9hC,EAAK+hC,EAAsBD,GAC/B,OAAO7sC,EAAoB+K,GAE5B,SAAS+hC,EAAsBD,GAC9B,IAAI7sC,EAAoBa,EAAEkQ,EAAK87B,GAAM,CACpC,IAAI/9B,EAAI,IAAIkL,MAAM,uBAAyB6yB,EAAM,KAEjD,MADA/9B,EAAEsM,KAAO,mBACHtM,EAEP,OAAOiC,EAAI87B,GAEZD,EAAej1B,KAAO,WACrB,OAAO7W,OAAO6W,KAAK5G,IAEpB67B,EAAen3B,QAAUq3B,EACzB3sC,EAAOD,QAAU0sC,EACjBA,EAAe7hC,GAAK,K,47CC7OdlD,EAAa,0BAEbirC,EAAW,CACfvd,IAAK,wBACLra,MAAO,QACP63B,SAAU,MAGNC,EAAc,CAClBzd,IAAK,gCACLra,MAAO,wBACP63B,SAAU,MAOZ,SAAeE,I,gHACb,OAAIH,EAASC,UAAYC,EAAYD,SACnC,GAAO,CAACD,EAASC,SAAUC,EAAYD,WAElB,GAAMlrC,EAAW5G,IAAI,iB,cAAtCiyC,EAAiB,SACnBH,EAA4D,QAAjD,EAAAG,EAAQplC,MAAK,SAACW,GAAS,OAAAA,EAAK8mB,MAAQud,EAAb,cAA0B,eAAE/nC,GAC9DooC,EAAiE,QAApD,EAAAD,EAAQplC,MAAK,SAACW,GAAS,OAAAA,EAAK8mB,MAAQyd,EAAb,cAA6B,eAAEjoC,GAClEgoC,EAAD,MACa,GAAMlrC,EAAWurC,KAAK,eAAgBN,I,OAA/CO,EAAS,SACfN,GAAWM,aAAM,EAANA,EAAQtoC,KAAM,E,wBAEtBooC,EAAD,MACe,GAAMtrC,EAAWurC,KAAK,eAAgBJ,I,OAAjDM,EAAW,SACjBH,GAAaG,aAAQ,EAARA,EAAUvoC,KAAM,E,iBAI/B,OAFA+nC,EAASC,SAAWA,EACpBC,EAAYD,SAAWI,EACvB,GAAO,CAACJ,EAAUI,YAMpB,sBACQI,EAAU1rC,EAAWurC,KAAKxxC,KAAK,2BAC/B4xC,EAAWxpC,OAAOypC,SAASC,SAASnlC,MAAM,KAAKyI,QAAO,SAACvI,GAAS,OAAAA,KAAM,GAC5E5G,EAAWurC,KAAO,SAAOxqC,EAAKG,GAAI,qC,kEAEpB,2BAARH,GAAoCG,EAAKyqC,WAAaA,EAAtD,MAC6B,GAAMP,K,OAA/B,EAAyB,SAAxBF,EAAQ,KAAEI,EAAU,KAC3BpqC,EAAKgqC,SAAWhqC,EAAKwB,KAAKopC,SAAS,sBAAwBR,EAAaJ,E,iBAE1E,SAAOQ,EAAQ3qC,EAAKG,YAIxB6qC,GAEA,iBAQE,WAAYx1B,EAAay1B,EAAgBC,G,MACvC/rC,KAAKgsC,YAAYC,kBAAkBjsC,KAAKksC,WAAWryC,KAAKmG,OACxDA,KAAK+rC,GAAKA,EAEL/rC,KAAKmsC,WAERnsC,KAAKmsC,SAAW,IAIlB,IAAMA,EAAWnsC,KAAKmsC,UACjBA,EAAS3gC,WACZ2gC,EAAS3gC,SAAW,IAEtBxL,KAAKosC,YAAa,EACD,QAAb,EAAApsC,KAAKmsC,gBAAQ,eAAEE,WACGtzC,OAAO6Q,OAAO,SAAO0iC,aAAar9B,QAAO,SAACs9B,GAC5D,OAAOA,EAAGn1B,OAAS,OAELjO,OAAS,IACvBnJ,KAAKosC,YAAa,IA6C1B,OAzEA,sCAiCQ,YAAAI,aAAN,SAAmBC,EAAsBzB,G,gGAEjB,SAAMlrC,EAAW5G,IAAI,8BAAuBuzC,K,OAElE,OAFQC,EAAc,SAAL,UAEjB,GAAM5sC,EAAWurC,KAAK,sBAAuB,CAC3CqB,UAAS,EACT1B,SAAQ,EACRj4B,QAAS,GACT45B,WAAW,K,cAJb,S,YAQI,YAAAC,gBAAN,W,qHAEiC,SAAM1B,K,OAE1B,OAFL,EAAyB,SAAxBF,EAAQ,KAAEI,EAAU,KAEhB,GAAMtrC,EAAW5G,IAAI,uBAA6B,QAAb,EAAA8G,KAAKmsC,gBAAQ,eAAEnpC,GAAE,iB,OAajE,OAbMgO,EAAK,SAGL67B,EAAS77B,EAAGhI,KAAI,SAACtC,GACb,IAAAomC,EAAsBpmC,EAAX,YAAElE,EAASkE,EAAL,KACnB8mB,EAAMsf,EAAYtmC,MAAM,KAAK,GACnC,OAAIgnB,EACK,EAAKgf,aAAahf,EAAKhrB,EAAKopC,SAAS,sBAAwBR,EAAaJ,GAE1Ev9B,QAAQC,aAInB,GAAOD,QAAQgD,IAAIo8B,YAGf,YAAAX,WAAN,W,gGACE,OAAkB,QAAb,EAAAlsC,KAAKmsC,gBAAQ,eAAEE,SAIpB,GAAMrsC,KAAK4sC,mBAHT,I,OAIF,OADA,SACA,GAAO5sC,KAAK+rC,GAAGr+B,SAAQ,YAtElB,EAAAq/B,YAAc,yBAwEvB,EAzEA","file":"components/config.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 195);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","const zh_CN = {\n language: '语言',\n enable_intranet_API_mode: '开启内网API模式',\n cloud_database: '云数据库',\n cloud_load_balancer: '负载均衡',\n virtual_private_cloud: '私有网络',\n content_delivery_network: '内容分发网络',\n message_queue: '消息队列',\n direct_connect: '专线接入',\n cloud_physical_machine: '黑石物理服务器',\n elastic_mapReduce: '弹性 MapReduce',\n edge_computing_machine: '边缘计算机器',\n // namespace\n RUM: '前端性能监控(RUM)',\n CLS: '日志服务(CLS)',\n CVM: '云服务器(CVM)',\n CDB: '云数据库 MySQL(CDB)',\n CMONGO: '云数据库 MongoDB(CMONGO)',\n POSTGRES: '云数据库 PostgreSQL(POSTGRES)',\n REDIS: '云数据库 Redis(REDIS)',\n REDIS_MEM: '云数据库 Redis内存版(5s)(REDIS_MEM)',\n SQLSERVER: '云数据库 SQL Server(SQLSERVER)',\n CYNOSDB_MYSQL: '云数据库 CYNOSDB_MYSQL(CYNOSDB_MYSQL)',\n TCAPLUS: '云数据库 TcaplusDB(TCAPLUS)',\n TDMYSQL: '分布式数据库 TDSQL MySQL(TDMYSQL)',\n PCX: '私有网络-对等连接(PCX)',\n BWP: '私有网络-带宽包(BWP)',\n NAT_GATEWAY: '私有网络-NAT 网关(NAT_GATEWAY)',\n VPNGW: '私有网络-VPN 网关(VPNGW)',\n VPNX: '私有网络-VPN 通道(VPNX)',\n DCG: '私有网络-专线网关(DCG)',\n CEIP_SUMMARY: '私有网络-Anycast 弹性公网IP(CEIP_SUMMARY)',\n VPC_NET_DETECT: '私有网络-网络探测(VPC_NET_DETECT)',\n VBC: '私有网络-云联网(VBC)',\n LB: '私有网络-弹性公网IP(LB)',\n LB_PUBLIC: '公网负载均衡监控指标(LB_PUBLIC)',\n LB_PRIVATE: '内网负载均衡四层协议监控指标(LB_PRIVATE)',\n LOADBALANCE: '内网负载均衡七层协议监控指标(LOADBALANCE)',\n CDN: '国内域名(CDN)',\n CDN_LOG_DATA: '省份域名(CDN_LOG_DATA)',\n OV_CDN: '国外域名(OV_CDN)',\n SCF_V2: '云函数(SCF)',\n CFS: '文件存储(CFS)',\n COS: '对象存储(COS)',\n CKAFKA: '消息队列 CKafka(CKAFKA)',\n CMQ: '消息队列-队列服务监控(CMQ)',\n CMQTOPIC: '消息队列-主题订阅监控(CMQTOPIC)',\n TDMQ: '消息队列 Pulsar 版(TDMQ)',\n TDMQ_ROCKETMQ: '消息队列 RocketMQ 版(ROCKETMQ)',\n TDMQ_RABBITMQ: '消息队列 RabbitMQ 版(RABBITMQ)',\n DCX: '专线接入-专用通道(DCX)',\n DC: '专线接入-物理专线(DC)',\n CPM: '黑石物理服务器(CPM)',\n BM_PCX: '黑石对等连接(BM_PCX)',\n BM_LB: '黑石外网负载均衡(BM_LB)',\n BM_INTRA_LB: '黑石内网负载均衡(BM_INTRA_LB)',\n CES: 'Elasticsearch指标(CES)',\n BLOCK_STORAGE: '云硬盘(BLOCK_STORAGE)',\n APIGATEWAY: 'API 网关(APIGATEWAY)',\n QAAP: '全球应用加速(GAAP)',\n ECM: '边缘计算和网络监控(ECM)',\n ECM_BLOCK_STORAGE: '边缘计算存储监控(ECM_BLOCK_STORAGE)',\n ECM_LB: '边缘计算负载均衡(ECM_LB)',\n GSE: '游戏服务器伸缩(GSE)',\n TKE: '容器服务(TKE)',\n ECDN: '全站加速网络(ECDN)',\n WAF: 'Web 应用防火墙(WAF)',\n // others\n multi_scene: '多场景版',\n lite: '精简版',\n cloud_monitor: '云监控',\n cloud_log_service: '日志服务',\n real_user_monitoring: '前端性能监控',\n region: '地域',\n log_topic: '日志主题',\n search_statement: '检索语句',\n time_unit: 'Time unit',\n seconds: 'seconds',\n search_description: '按照具体的查询条件搜索实例,默认拉取前 20 条实例',\n // region\n 'ap-guangzhou': '华南地区(广州)',\n 'ap-shenzhen-fsi': '华南地区(深圳金融)',\n 'ap-guangzhou-open': '华南地区(广州OPEN)',\n 'ap-shenzhen': '华南地区(深圳)',\n 'ap-qingyuan': '华南地区(清远)',\n 'ap-shanghai': '华东地区(上海)',\n 'ap-shanghai-fsi': '华东地区(上海金融)',\n 'ap-jinan-ec': '华东地区(济南)',\n 'ap-hangzhou-ec': '华东地区(杭州)',\n 'ap-nanjing': '华东地区(南京)',\n 'ap-fuzhou-ec': '华东地区(福州)',\n 'ap-hefei-ec': '华东地区(合肥)',\n 'ap-beijing': '华北地区(北京)',\n 'ap-tianjin': '华北地区(天津)',\n 'ap-beijing-fsi': '华北地区(北京金融)',\n 'ap-shijiazhuang-ec': '华北地区(石家庄)',\n 'ap-wuhan-ec': '华中地区(武汉)',\n 'ap-changsha-ec': '华中地区(长沙)',\n 'ap-zhengzhou-ec': '华中地区(郑州)',\n 'ap-chengdu': '西南地区(成都)',\n 'ap-chongqing': '西南地区(重庆)',\n 'ap-xian-ec': '西北地区(西安)',\n 'ap-shenyang-ec': '东北地区(沈阳)',\n 'ap-taipei': '港澳台地区(中国台北)',\n 'ap-hongkong': '港澳台地区(中国香港)',\n 'ap-seoul': '亚太东北(首尔)',\n 'ap-tokyo': '亚太东北(东京)',\n 'ap-singapore': '亚太东南(新加坡)',\n 'ap-bangkok': '亚太东南(曼谷)',\n 'ap-jakarta': '亚太东南(雅加达)',\n 'na-siliconvalley': '美国西部(硅谷)',\n 'eu-frankfurt': '欧洲地区(法兰克福)',\n 'eu-moscow': '欧洲地区(莫斯科)',\n 'ap-mumbai': '亚太南部(孟买)',\n 'na-ashburn': '美国东部(弗吉尼亚)',\n 'sa-saopaulo': '南美地区(圣保罗)',\n 'na-toronto': '北美地区(多伦多)',\n};\nexport default zh_CN;\n","const en_US = {\n language: 'Language',\n enable_intranet_API_mode: 'Enable Intranet API Mode',\n cloud_database: 'Cloud Database',\n cloud_load_balancer: 'Cloud Load Balancer',\n virtual_private_cloud: 'Virtual Private Cloud',\n content_delivery_network: 'Content Delivery Network',\n message_queue: 'Message Queue',\n direct_connect: 'Direct Connect',\n cloud_physical_machine: 'Cloud Physical Machine',\n elastic_mapReduce: 'Elastic MapReduce',\n edge_computing_machine: 'Edge Computing Machine',\n // namespace\n RUM: 'Real User Monitoring(RUM)',\n CLS: 'Cloud Log Service(CLS)',\n CVM: 'Cloud Virtual Machine(CVM)',\n CDB: 'TencentDB for MySQL(CDB)',\n CMONGO: 'TencentDB for MongoDB(CMONGO)',\n POSTGRES: 'TencentDB for PostgreSQL(POSTGRES)',\n REDIS: 'TencentDB for Redis(REDIS)',\n REDIS_MEM: 'TencentDB for Redis(Memory Edition, 5-Second)(REDIS_MEM)',\n SQLSERVER: 'TencentDB for SQL Server(SQLSERVER)',\n CYNOSDB_MYSQL: 'TencentDB for CYNOSDB_MYSQL(CYNOSDB_MYSQL)',\n TCAPLUS: 'TencentDB for TcaplusDB(TCAPLUS)',\n TDMYSQL: 'TDSQL for MySQL(TDMYSQL)',\n PCX: 'Peering Connection(PCX)',\n BWP: 'Bandwidth Packet(BWP)',\n NAT_GATEWAY: 'NAT Gateway(NAT_GATEWAY)',\n VPNGW: 'VPN Gateway(VPNGW)',\n VPNX: 'VPN Tunnel(VPNX)',\n DCG: 'Direct Connect Gateway(DCG)',\n CEIP_SUMMARY: 'Anycast EIP(CEIP_SUMMARY)',\n VPC_NET_DETECT: 'Network Detection(VPC_NET_DETECT)',\n VBC: 'Cloud Connect Network(VBC)',\n LB: 'Elastic IP(LB)',\n LB_PUBLIC: 'Public Network CLB(LB_PUBLIC)',\n LB_PRIVATE: 'Private Network CLB Layer-4 Protocol(LB_PRIVATE)',\n LOADBALANCE: 'Private Network CLB Layer-7 Protocol(LOADBALANCE)',\n CDN: 'Chinese Mainland Domain(CDN)',\n CDN_LOG_DATA: 'Province(CDN_LOG_DATA)',\n OV_CDN: 'Overseas Domain(OV_CDN)',\n SCF_V2: 'Serverless Cloud Function(SCF)',\n CFS: 'Cloud File Storage(CFS)',\n COS: 'Cloud Object Storage(COS)',\n CKAFKA: 'Message Queue CKafka(CKAFKA)',\n CMQ: 'Message Queue for Queue Service(CMQ)',\n CMQTOPIC: 'Message Queue for Topic Subscription(CMQTOPIC)',\n TDMQ: 'Tencent Distributed Message Queue for Pulsar(TDMQ)',\n TDMQ_ROCKETMQ: 'Tencent Distributed Message Queue for RocketMQ(ROCKETMQ)',\n TDMQ_RABBITMQ: 'Tencent Distributed Message Queue for RabbitMQ(RABBITMQ)',\n DCX: 'Direct Connect for Dedicated Tunnel(DCX)',\n DC: 'Direct Connect for Connection(DC)',\n CPM: 'Cloud Physical Machine(CPM)',\n BM_PCX: 'Cloud Physical Machine for Peering Connection(BM_PCX)',\n BM_LB: 'Cloud Physical Machine for Public Network CLB(BM_LB)',\n BM_INTRA_LB: 'Cloud Physical Machine for Private Network CLB(BM_INTRA_LB)',\n CES: 'Elasticsearch Service(CES)',\n BLOCK_STORAGE: 'Cloud Block Storage(BLOCK_STORAGE)',\n APIGATEWAY: 'API Gateway(APIGATEWAY)',\n QAAP: 'Global Application Acceleration Platform(GAAP)',\n ECM: 'Edge Computing Machine for Computation and Networking(ECM)',\n ECM_BLOCK_STORAGE: 'Edge Computing Machine for Block Storage(ECM_BLOCK_STORAGE)',\n ECM_LB: 'Edge Computing Machine for Layer-4 CLB(ECM_LB)',\n GSE: 'Game Server Elastic-scaling(GSE)',\n TKE: 'Tencent Kubernetes Engine(TKE)',\n ECDN: 'Enterprise Content Delivery Network(ECDN)',\n WAF: 'Web Application Firewall(WAF)',\n // others\n multi_scene: 'Multi-Scene',\n lite: 'Lite',\n cloud_monitor: 'Cloud Monitor',\n cloud_log_service: 'Cloud Log Service',\n real_user_monitoring: 'Real User Monitoring',\n region: 'Region',\n log_topic: 'Log Topic',\n search_statement: 'Search Statement',\n time_unit: 'Time unit',\n seconds: 'seconds',\n search_description:\n 'Search for instances according to specific query conditions, and pull the first 20 instances by default',\n // region\n 'ap-guangzhou': 'South China(Guangzhou)',\n 'ap-shenzhen-fsi': 'South China(Shenzhen Finance)',\n 'ap-guangzhou-open': 'South China(Guangzhou OPEN)',\n 'ap-shenzhen': 'South China(Shenzhen)',\n 'ap-qingyuan': 'South China(Qingyuan)',\n 'ap-shanghai': 'East China(Shanghai)',\n 'ap-shanghai-fsi': 'East China(Shanghai Finance)',\n 'ap-jinan-ec': 'East China(Jinan)',\n 'ap-hangzhou-ec': 'East China(Hangzhou)',\n 'ap-nanjing': 'East China(Nanjing)',\n 'ap-fuzhou-ec': 'East China(Fuzhou)',\n 'ap-hefei-ec': 'East China(Hefei)',\n 'ap-beijing': 'North China region(Beijing)',\n 'ap-tianjin': 'North China region(Tianjin)',\n 'ap-beijing-fsi': 'North China region(Beijing Finance)',\n 'ap-shijiazhuang-ec': 'North China region(Shijiazhuang)',\n 'ap-wuhan-ec': 'Central China(Wuhan)',\n 'ap-changsha-ec': 'Central China(Changsha)',\n 'ap-zhengzhou-ec': 'Central China(Zhengzhou)',\n 'ap-chengdu': 'Southwest China(Chengdu)',\n 'ap-chongqing': 'Southwest China(Chongqing)',\n 'ap-xian-ec': \"Northwest region(Xi'an)\",\n 'ap-shenyang-ec': 'Northeast China(Shenyang)',\n 'ap-taipei': 'Hong Kong, Macau and Taiwan (China)(Taipei, China)',\n 'ap-hongkong': 'Hong Kong, Macau and Taiwan (China)(Hong Kong, China)',\n 'ap-seoul': 'Northeast Asia(Seoul)',\n 'ap-tokyo': 'Northeast Asia(Tokyo)',\n 'ap-singapore': 'Southeast Asia(Singapore)',\n 'ap-bangkok': 'Southeast Asia(Bangkok)',\n 'ap-jakarta': 'Southeast Asia(Jakarta)',\n 'na-siliconvalley': 'US West(Silicon Valley)',\n 'eu-frankfurt': 'Europe(Frankfurt)',\n 'eu-moscow': 'Europe(Northeastern Europe)',\n 'ap-mumbai': 'South Asia(Mumbai)',\n 'na-ashburn': 'US East(Virginia)',\n 'sa-saopaulo': 'South America(São Paulo)',\n 'na-toronto': 'North America(Toronto)',\n};\nexport default en_US;\n","import zh_CN from './zh_CN';\nimport en_US from './en_US';\n\nlet locale_language = 'zh-CN'\n\nexport enum Language {\n Chinese = 'zh-CN',\n English = 'en-US',\n}\n\nexport const t = (key: string) => {\n if (locale_language === Language.Chinese) {\n return zh_CN[key]\n }\n return en_US[key];\n}\n\nexport const setLanguage = (language: Language) => {\n locale_language = language;\n}\n\nexport const getLanguage = () => locale_language;","import moment from 'moment';\n\nconst HttpRequestMethod = 'POST';\nconst CanonicalUri = '/';\nconst CanonicalQueryString = '';\nconst ContentType = 'application/json';\n\nexport default class Sign {\n /**\n * Tencent Cloud API Signature v3 reference: https://cloud.tencent.com/document/api/213/30654\n * secretId: SecretId for identifying identity that is applied for on Cloud API Key.\n * A SecretId corresponds to a unique SecretKey, which is used to generate the request Signature.\n * secretKey: SecretKey is used to encrypt the signature string and verify the signature string on the server\n * service: the name of service, which must be consistent with the request domain, such as cvm\n * action: The name of the API for the desired operation\n * host: the domain of service,which must be consistent with the request domain, such as cvm.tencentcloudapi.com\n * version: PI version, such as 2017-03-12\n * payload: The request parameters\n */\n\n secretId: string;\n\n service: string;\n action: string;\n host: string;\n version: string;\n payload: Record | string;\n region: string;\n timestamp: number;\n date: string;\n backendSrv: any;\n datasourceId: Number;\n constructor(options) {\n const { secretId, service, action, host, version, payload = '', region, backendSrv, datasourceId } = options;\n this.secretId = secretId;\n // this.secretKey = secretKey;\n this.service = service;\n this.action = action;\n this.host = host;\n this.version = version;\n this.payload = typeof payload === 'string' ? payload : JSON.stringify(payload);\n this.region = region;\n const nowDate = moment().utc();\n this.timestamp = nowDate.unix();\n this.date = nowDate.format('YYYY-MM-DD');\n this.backendSrv = backendSrv;\n this.datasourceId = datasourceId;\n }\n\n async getHeader() {\n return this.getResourceHeader();\n }\n\n async getResourceHeader() {\n let res: { authorization?: string; token?: string; intranet?: boolean } = {};\n try {\n const resp = await this.backendSrv.datasourceRequest({\n url: `/api/datasources/${this.datasourceId}/resources/sign_v3`,\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n data: {\n Host: this.host,\n Service: this.service,\n Version: this.version,\n Action: this.action,\n Region: this.region,\n Timestamp: this.timestamp,\n Method: HttpRequestMethod,\n Uri: CanonicalUri,\n Query: CanonicalQueryString,\n Body: this.payload,\n Headers: {\n 'content-type': ContentType,\n host: this.host,\n },\n },\n });\n res = resp.data;\n } catch (err) {}\n const { authorization, token, intranet } = res;\n const grafanaVersion = (window as any).grafanaBootData?.settings?.buildInfo?.version || '0.0.0';\n const headers = {\n Authorization: authorization,\n 'Content-Type': ContentType,\n 'X-TC-Action': this.action,\n 'X-TC-Timestamp': this.timestamp.toString(),\n 'X-TC-Version': this.version,\n 'X-TC-RequestClient': `GF_${grafanaVersion}_PL_CM_${process.env.TENCENT_CLOUD_MONITOR_GRAFANA_PLUGIN_VERSION}`,\n ...(this.region && {\n 'X-TC-Region': this.region,\n }),\n ...(token && {\n 'X-TC-Token': token,\n }),\n intranet: intranet,\n };\n return headers;\n }\n}\n","/**\n *\n * @param defaults 为对象\n * secretId\n * secretKey\n * action\n * region\n * host\n */\n\nexport default class SignV2 {\n defaults: any = {\n path: '/v2/index.php',\n method: 'POST',\n };\n backendSrv: any;\n datasourceId: Number;\n constructor(defaults: any = {}) {\n this.defaults = Object.assign(this.defaults, defaults);\n this.defaults.secretKey = '';\n this.backendSrv = defaults.backendSrv;\n this.datasourceId = defaults.datasourceId;\n }\n\n generateQueryString = async () => {\n return this.getResourceQueryString();\n };\n\n async getResourceQueryString() {\n let res: { path?: string; querystring?: any; host?: string; intranet?: boolean } = {};\n try {\n const { data } = this.defaults;\n const payload = typeof data === 'string' ? data : JSON.stringify(data);\n const resp = await this.backendSrv.datasourceRequest({\n url: `/api/datasources/${this.datasourceId}/resources/sign_v2`,\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n data: {\n Host: this.defaults.host,\n Action: this.defaults.action,\n Version: this.defaults.version,\n Region: this.defaults.region,\n Method: this.defaults.method,\n Uri: this.defaults.path,\n Query: '',\n Body: payload,\n },\n });\n res = resp.data;\n } catch (err) {}\n const { path, querystring, host, intranet } = res;\n return { queryString: querystring, path: path, host: host, intranet: intranet };\n }\n}\n","import _ from 'lodash';\nimport qs from 'qs';\nimport { SERVICES } from '../tc_monitor';\nimport Sign from './sign';\nimport SignV2 from './signV2';\nimport { toDataQueryResponse } from '@grafana/runtime';\nimport { getLanguage } from '../../locale';\n\nimport packageInfo from '../plugin.json';\nexport const TcDataSourceId = packageInfo.id;\n\n// the services of tencentcloud monitor api\nconst FINACE_REGIONS = ['ap-shanghai-fsi', 'ap-shenzhen-fsi'];\nconst SERVICES_API_INFO = {\n api: {\n service: 'api',\n version: '2020-11-06',\n path: '/api',\n host: 'api.tencentcloudapi.com',\n },\n // monitor api info\n monitor: {\n service: 'monitor',\n version: '2018-07-24',\n path: '/monitor',\n host: 'monitor.tencentcloudapi.com',\n },\n // cls api info\n cls: {\n service: 'cls',\n version: '2020-10-16',\n path: '/cls',\n host: 'cls.tencentcloudapi.com',\n },\n // cvm api info\n cvm: {\n service: 'cvm',\n version: '2017-03-12',\n path: '/cvm',\n host: 'cvm.tencentcloudapi.com',\n },\n // cdb api info\n cdb: {\n service: 'cdb',\n version: '2017-03-20',\n path: '/cdb',\n host: 'cdb.tencentcloudapi.com',\n },\n // pcx api info\n pcx: {\n service: 'pcx',\n version: '',\n path: '/pcx',\n host: 'vpc.api.qcloud.com',\n },\n // vpc api info\n vpc: {\n service: 'vpc',\n version: '2017-03-12',\n path: '/vpc',\n host: 'vpc.tencentcloudapi.com',\n },\n // mongodb api info\n mongodb: {\n service: 'mongodb',\n version: '2019-07-25',\n path: '/mongodb',\n host: 'mongodb.tencentcloudapi.com',\n },\n // 负载均衡 clb\n clb: {\n service: 'clb',\n version: '2018-03-17',\n path: '/clb',\n host: 'clb.tencentcloudapi.com',\n },\n // postgresql api info\n postgres: {\n service: 'postgres',\n version: '2017-03-12',\n path: '/postgres',\n host: 'postgres.tencentcloudapi.com',\n },\n // cdn info\n cdn: {\n service: 'cdn',\n version: '2018-06-06',\n path: '/cdn',\n host: 'cdn.tencentcloudapi.com',\n },\n // redis info\n redis: {\n service: 'redis',\n version: '2018-04-12',\n path: '/redis',\n host: 'redis.tencentcloudapi.com',\n },\n scf: {\n service: 'scf',\n version: '2018-04-16',\n path: '/scf',\n host: 'scf.tencentcloudapi.com',\n },\n cfs: {\n service: 'cfs',\n version: '2019-07-19',\n path: '/cfs',\n host: 'cfs.tencentcloudapi.com',\n },\n ckafka: {\n service: 'ckafka',\n version: '2019-08-19',\n path: '/ckafka',\n host: 'ckafka.tencentcloudapi.com',\n },\n // 专线接入实例列表\n dc: {\n service: 'dc',\n version: '2018-04-10',\n path: '/dc',\n host: 'dc.tencentcloudapi.com',\n },\n // cynosdb实例列表\n cynosdb: {\n service: 'cynosdb',\n version: '2019-01-07',\n path: '/cynosdb',\n host: 'cynosdb.tencentcloudapi.com',\n },\n // sqlserver实例列表\n sqlserver: {\n service: 'sqlserver',\n version: '2018-03-28',\n path: '/sqlserver',\n host: 'sqlserver.tencentcloudapi.com',\n },\n // bm实例列表\n bm: {\n service: 'bm',\n version: '2018-04-23',\n path: '/bm',\n host: 'bm.tencentcloudapi.com',\n },\n bmeip: {\n service: 'bmeip',\n version: '2018-06-25',\n path: '/bmeip',\n host: 'bmeip.tencentcloudapi.com',\n },\n bmvpc: {\n service: 'bmvpc',\n version: '2018-06-25',\n path: '/bmvpc',\n host: 'bmvpc.tencentcloudapi.com',\n },\n bmlb: {\n service: 'bmlb',\n version: '2018-06-25',\n path: '/bmlb',\n host: 'bmlb.tencentcloudapi.com',\n },\n // ES集群实例\n es: {\n service: 'es',\n version: '2018-04-16',\n path: '/es',\n host: 'es.tencentcloudapi.com',\n },\n // MapReduce\n emr: {\n service: 'emr',\n version: '2019-01-03',\n path: '/emr',\n host: 'emr.tencentcloudapi.com',\n },\n // CMQ消息队列\n cmq: {\n service: 'cmq',\n version: '2019-03-04',\n path: '/cmq',\n host: 'cmq.tencentcloudapi.com',\n },\n cbs: {\n service: 'cbs',\n version: '2017-03-12',\n path: '/cbs',\n host: 'cbs.tencentcloudapi.com',\n },\n // tcaplus实例\n tcaplusdb: {\n service: 'tcaplusdb',\n version: '2019-08-23',\n path: '/tcaplusdb',\n host: 'tcaplusdb.tencentcloudapi.com',\n },\n // tcaplus实例\n dcdb: {\n service: 'dcdb',\n version: '2018-04-11',\n path: '/dcdb',\n host: 'dcdb.tencentcloudapi.com',\n },\n // apigateway实例\n apigateway: {\n service: 'apigateway',\n version: '2018-08-08',\n path: '/apigateway',\n host: 'apigateway.tencentcloudapi.com',\n },\n tdmq: {\n service: 'tdmq',\n version: '2020-02-17',\n path: '/tdmq',\n host: 'tdmq.tencentcloudapi.com',\n },\n tdmq_rabbitmq: {\n service: 'tdmq',\n version: '2020-02-17',\n path: '/tdmq',\n host: 'tdmq.tencentcloudapi.com',\n },\n tdmq_rocketmq: {\n service: 'tdmq',\n version: '2020-02-17',\n path: '/tdmq',\n host: 'tdmq.tencentcloudapi.com',\n },\n gaap: {\n service: 'gaap',\n version: '2018-05-29',\n path: '/gaap',\n host: 'gaap.tencentcloudapi.com',\n },\n ecm: {\n service: 'ecm',\n version: '2019-07-19',\n path: '/ecm',\n host: 'ecm.tencentcloudapi.com',\n },\n gse: {\n service: 'gse',\n version: '2019-11-12',\n path: '/gse',\n host: 'gse.tencentcloudapi.com',\n },\n lighthouse: {\n service: 'lighthouse',\n version: '2020-03-24',\n path: '/lighthouse',\n host: 'lighthouse.tencentcloudapi.com',\n },\n tsf: {\n service: 'tsf',\n version: '2018-03-26',\n path: '/tsf',\n host: 'tsf.tencentcloudapi.com',\n },\n rum: {\n service: 'rum',\n version: '2021-06-22',\n path: '/rum',\n host: 'rum.tencentcloudapi.com',\n },\n tke: {\n service: 'tke',\n version: '2018-05-25',\n path: '/tke',\n host: 'tke.tencentcloudapi.com',\n },\n ecdn: {\n service: 'ecdn',\n version: '2019-10-12',\n path: '/ecdn',\n host: 'ecdn.tencentcloudapi.com',\n },\n waf: {\n service: 'waf',\n version: '2018-01-25',\n path: '/waf',\n host: 'waf.tencentcloudapi.com',\n },\n region: {\n service: 'region',\n version: '2022-06-27',\n path: '/region',\n host: 'region.tencentcloudapi.com',\n },\n // 不单独定义lb,因为lb同样用的是vpc的配置,同上\n // lb: {\n // service: 'lb',\n // version: '2017-03-12',\n // path: '/lb',\n // host: 'vpc.tencentcloudapi.com'\n // }\n // 负载均衡四层协议 lbPrivate\n // lbPrivate: {\n // service: 'lbPrivate',\n // version: '2018-03-17',\n // path: '/clb',\n // host: 'clb.tencentcloudapi.com',\n // },\n};\n\nconst FINACE_HOST = {\n scf: {\n 'ap-shanghai-fsi': {\n path: '/fsi/scf/shanghai',\n host: 'scf.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/scf/shenzhen',\n host: 'scf.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cfs: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cfs/shanghai',\n host: 'cfs.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cfs/shenzhen',\n host: 'cfs.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n ckafka: {\n 'ap-shanghai-fsi': {\n path: '/fsi/ckafka/shanghai',\n host: 'ckafka.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/ckafka/shenzhen',\n host: 'ckafka.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n clb: {\n 'ap-shanghai-fsi': {\n path: '/fsi/clb/shanghai',\n host: 'clb.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/clb/shenzhen',\n host: 'clb.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n mongodb: {\n 'ap-shanghai-fsi': {\n path: '/fsi/mongodb/shanghai',\n host: 'mongodb.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/mongodb/shenzhen',\n host: 'mongodb.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n vpc: {\n 'ap-shanghai-fsi': {\n path: '/fsi/vpc/shanghai',\n host: 'vpc.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/vpc/shenzhen',\n host: 'vpc.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cvm: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cvm/shanghai',\n host: 'cvm.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cvm/shenzhen',\n host: 'cvm.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cdb: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cdb/shanghai',\n host: 'cdb.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cdb/shenzhen',\n host: 'cdb.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n monitor: {\n 'ap-shanghai-fsi': {\n path: '/fsi/monitor/shanghai',\n host: 'monitor.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/monitor/shenzhen',\n host: 'monitor.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n postgres: {\n 'ap-shanghai-fsi': {\n path: '/fsi/postgres/shanghai',\n host: 'postgres.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/postgres/shenzhen',\n host: 'postgres.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n emr: {\n 'ap-shanghai-fsi': {\n path: '/fsi/emr/shanghai',\n host: 'emr.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/emr/shenzhen',\n host: 'emr.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cmq: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cmq/shanghai',\n host: 'cmq.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cmq/shenzhen',\n host: 'cmq.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cls: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cls/shanghai',\n host: 'cls.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cls/shenzhen',\n host: 'cls.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n};\n\n// 获取对应业务的 API 接口信息\nexport function GetServiceAPIInfo(region, service) {\n return { ...(SERVICES_API_INFO[service] || {}), ...getHostAndPath(region, service) };\n}\n\n// get host and path for finance regions\nfunction getHostAndPath(region, service) {\n if (_.indexOf(FINACE_REGIONS, region) === -1) {\n return {};\n }\n return (\n _.find(\n _.find(FINACE_HOST, (__, key) => key === service),\n (__, key) => key === region\n ) || {}\n );\n}\n\n// 变量替换指定实例按照那个字段展示\nexport const VARIABLE_ALIAS = 'instancealias';\n\nexport function GetServiceFromNamespace(namespace) {\n return _.get(\n _.find(SERVICES, (service) => service.namespace === namespace),\n 'service'\n );\n}\n// 处理存量target中保存的qce/cvm\nexport function GetLabelFromNamespace(namespace) {\n return _.get(\n _.find(SERVICES, (service) => service.namespace === namespace || service.label === namespace),\n 'label'\n );\n}\n// parse template variable query params\nexport function ParseMetricQuery(query = '') {\n if (!query) {\n return {};\n }\n const result = {};\n const queries = _.split(query, '&');\n _.forEach(queries, (item) => {\n const str = _.split(item, '=');\n if (_.trim(_.get(str, '0', ''))) {\n let val = _.trim(_.get(str, '1', ''));\n try {\n val = JSON.parse(val);\n } catch (e) {\n // console.log({ val });\n }\n result[_.toLower(_.trim(_.get(str, '0', '')))] = val;\n }\n });\n return result;\n}\n\n// parse template variable regex params\nexport function ParseMetricRegex(regex = '') {\n if (!regex) {\n return [];\n }\n regex = regex.replace(/:/g, ':');\n regex = regex.replace(/,/g, ',');\n const regexParams = ParseMetricQuery(regex);\n const result: any[] = [];\n _.forEach(regexParams, (value, key) => {\n if (key === 'tag:tag-key') {\n const valuesArr = _.split(value, ',');\n _.forEach(valuesArr, (item) => {\n const temp = _.split(item, ':');\n if (temp.length === 2) {\n result.push({ Name: `tag:${temp[0]}`, Values: temp.slice(1) });\n }\n });\n } else {\n result.push({ Name: key, Values: _.split(value, ',') });\n }\n });\n return result;\n}\n\n// get the actual value of template variable\nfunction parseVariableFormat(varname: string) {\n varname = String(varname || '');\n // $varname\n let varFlag = false;\n const regResult1 = varname.match(/^\\${?(\\w+)}?/);\n if (regResult1) {\n varFlag = true;\n varname = `\\$\\{${regResult1[1]}\\:json\\}`;\n }\n // [[varname]]\n const regResult2 = varname.match(/^\\[\\[(\\w+)(\\:\\w+)?\\]\\]/);\n if (regResult2) {\n varFlag = true;\n varname = `\\$\\{${regResult2[1]}\\:json\\}`;\n }\n return { varname, varFlag };\n}\n\nexport function ReplaceVariable(templateSrv, scopedVars, field, multiple = false) {\n const { varname, varFlag } = parseVariableFormat(field);\n let replaceVar = templateSrv.replace(varname, scopedVars);\n if (varFlag) {\n try {\n replaceVar = JSON.parse(replaceVar);\n } catch (error) {}\n }\n if (!multiple && _.isArray(replaceVar)) {\n replaceVar = _.get(replaceVar, '0', '');\n }\n return replaceVar;\n}\n\n// get dimensions for instance query param\nexport function GetDimensions(obj) {\n if (_.isEmpty(obj)) {\n return [];\n }\n const dimensions: any[] = [];\n _.forEach(obj, (item) => {\n if (item.Value !== null && item.Value !== undefined && item.Value !== '') {\n dimensions.push({ Name: item.Name, Value: typeof item.Value === 'string' ? item.Value : `${item.Value}` });\n }\n });\n return dimensions;\n}\n\n// parse query data result for panel\nexport function ParseQueryResult(response, instances: any[] = [], timeshift = 0) {\n const instanceList = _.cloneDeep(instances);\n\n const dataPoints = _.get(response, 'DataPoints', []);\n return _.map(dataPoints, (dataPoint) => {\n let instanceAliasValue = _.get(dataPoint, 'Dimensions[0].Value');\n for (let i = 0; i < instanceList.length; i++) {\n if (isInstanceMatch(instanceList[i], _.get(dataPoint, 'Dimensions', []))) {\n instanceAliasValue = instanceList[i]._InstanceAliasValue;\n instanceList.splice(i, 1);\n break;\n }\n }\n return {\n target: `${response.MetricName} - ${instanceAliasValue}`,\n datapoints: parseDataPoint(dataPoint, timeshift),\n };\n });\n}\n\n// parse tencent cloud monitor response data to grafana panel data\nfunction parseDataPoint(dataPoint, timeshift = 0) {\n const timestamps = _.get(dataPoint, 'Timestamps', []);\n const values = _.get(dataPoint, 'Values', []);\n const result = timestamps.map((timestamp, index) => {\n return [values[index], timestamp * 1000 + timeshift];\n });\n\n return result;\n}\n\n// check whether instance is match or not\nfunction isInstanceMatch(instance, dimensions) {\n let match = true;\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < dimensions.length; i++) {\n if (_.get(instance, dimensions[i].Name, '').toString() !== dimensions[i].Value.toString()) {\n match = false;\n break;\n }\n }\n return match;\n}\n\n/**\n * 检查某个变量是否模板变量,即是否匹配 ${varnam} 或 [[varname]]\n *\n * @param field 变量字段名\n */\nexport function isVariable(value) {\n if (value && (value.match(/^\\${?(\\w+)}?/) || value.match(/^\\[\\[(\\w+)(\\:\\w+)?\\]\\]/))) {\n return true;\n }\n return false;\n}\n\n/**\n * 腾讯云 API 3.0 接口协议\n * @param options 接口请求对象 { url: string, data?: object }\n * @param service 产品名字 'cvm'\n * @param signObj 接口请求相关信息 { region?: string, action: string }\n * @param secretId\n * @param secretKey\n */\nexport async function GetRequestParams(options, service, signObj: any = {}, secretId, datasourceId, backendSrv) {\n const signParams = {\n secretId,\n payload: options.data || '',\n ...signObj,\n ...(_.pick(GetServiceAPIInfo(signObj.region || '', service), ['service', 'host', 'version']) || {}),\n backendSrv,\n datasourceId,\n };\n const sign = new Sign(signParams);\n const { intranet, ...headerSigned } = await sign.getHeader();\n // 传入x-tc-language实现国际化\n // zh-CN en-US ko-KR ja-JP\n options.headers = Object.assign(options.headers || {}, { ...headerSigned }, { 'x-tc-language': getLanguage() });\n options.method = 'POST';\n if (intranet) {\n options.url += '-internal';\n }\n return options;\n}\n\n/**\n * 腾讯云 API 2.0 接口协议\n * @param options 接口请求对象 { url: string, data?: object }\n * @param service 产品名字 'cvm'\n * @param signObj 接口请求相关信息 { region?: string, action: string }\n * @param secretId\n * @param secretKey\n */\nexport async function GetRequestParamsV2(\n options: any = {},\n service,\n signObj: any = {},\n secretId,\n datasourceId,\n backendSrv\n) {\n const data = options.data || {};\n const signParams = {\n secretId,\n data,\n ...signObj,\n ...(_.pick(GetServiceAPIInfo(signObj.region || '', service), ['host', 'version']) || {}),\n backendSrv,\n datasourceId,\n };\n options.method = 'POST';\n const sign = new SignV2(signParams);\n options.headers = Object.assign(options.headers || {}, { 'Content-Type': 'application/x-www-form-urlencoded' });\n const { queryString, path, host, intranet } = await sign.generateQueryString();\n options.data = qs.stringify({\n ...options.data,\n ...queryString,\n ...(host && { host: host }),\n });\n if (intranet) {\n // TODO: qcloud.com intranet host\n console.log('got intranet for sign v2');\n }\n options.url += path;\n return options;\n}\n\nexport function SliceLength(total = 0, len = 1) {\n const result: any[] = [];\n const num = Math.ceil(total / len);\n for (let i = 1; i < num; i++) {\n result.push({ Offset: len * i });\n }\n return result;\n}\n\nexport const FilterKeys = ['Namespace', 'Offset', 'Limit', 'SearchKey', 'Description', 'OrderBy', 'Order'];\n\nexport function parseDataFromBackendPlugin(res) {\n const { data } = toDataQueryResponse(res);\n return {\n authorization: _.get(data, '[0].meta.custom', ''),\n };\n}\n\n/** 当前环境是否为非生产环境 */\nexport const IS_DEVELOPMENT_ENVIRONMENT = !(process.env.NODE_ENV === 'production');\n\n/**\n * @link https://github.com/grafana/grafana/blob/3c6e0e8ef85048af952367751e478c08342e17b4/packages/grafana-data/src/types/app.ts#L12\n */\nexport enum CoreApp {\n CloudAlerting = 'cloud-alerting',\n UnifiedAlerting = 'unified-alerting',\n Dashboard = 'dashboard',\n Explore = 'explore',\n Unknown = 'unknown',\n PanelEditor = 'panel-editor',\n PanelViewer = 'panel-viewer',\n}\n","import _ from 'lodash';\nimport moment from 'moment';\nimport DatasourceInterface from '../MonitorDatasource';\nimport {\n GetRequestParams,\n GetServiceAPIInfo,\n ReplaceVariable,\n GetDimensions,\n ParseQueryResult,\n SliceLength,\n} from '../../common/constants';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { MetricQuery } from './types';\nimport { getNamesapceFromService, getTimeShiftInMs } from '../../common/utils';\nimport { Language, setLanguage } from '../../../locale';\n\nexport interface TemplateQueryIdType {\n instance: string;\n listener?: string;\n}\n\ninterface queryConfigType {\n dim_KeyInStorage: string;\n dim_KeyInTarget?: string;\n dim_KeyInIns?: string;\n dim_KeyInMap: string;\n}\n\nexport abstract class BaseDatasource implements DatasourceInterface {\n Namespace?: string;\n service: string;\n instanceListCache: any[] = [];\n extraMetricDims: string[] = [];\n url: string;\n instanceSettings: any;\n backendSrv: any;\n templateSrv: any;\n secretId: string;\n checkKeys: string[] = [];\n MetricReqConfig: {\n resultFilter?: Function;\n } = {};\n extrasAlias?: string[] = [];\n /*\n 一个配置:(用于处理除了InstanceId之外的)(Record中的key是指标修正之后的维度,即通过InvalidDemsion处理后)\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。为空则取即通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。即:templateQueryIdMap中内容。联合上面2的内容筛选出原始sourceMap\n 4 通过这个dim和sourceMap获取维度值。即sourceMap[dim]\n */\n queryMonitorExtraConfg: Record = {};\n CandiateDimensions?: Record = {};\n\n InstanceReqConfig?: {\n service?: string;\n action: string;\n responseField: string;\n interceptor?: {\n request?: (params: unknown) => unknown;\n response?: (data: unknown) => unknown;\n };\n };\n InvalidDimensions?: Record;\n\n abstract InstanceAliasList: string[];\n abstract templateQueryIdMap: TemplateQueryIdType; // 必须为标识\n\n /** @ngInject */\n constructor(instanceSettings, backendSrv, templateSrv) {\n this.instanceSettings = instanceSettings;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n this.url = instanceSettings.url;\n this.secretId = (instanceSettings.jsonData || {}).secretId || '';\n setLanguage(instanceSettings.jsonData.language || Language.Chinese);\n }\n\n get namespace() {\n // 需要注意的是this.service来自于原型上,在实例中导入时注入\n return this.Namespace || getNamesapceFromService(this.service);\n }\n\n // 获取额外要显示到图例里的内容\n getOtherAlias(instance: any, target: any): string {\n let result = '';\n const alias = instance._InstanceAliasValue;\n this.extrasAlias?.forEach((extra) => {\n const extraAlia = this.getVariable(target[extra]);\n if (extraAlia && alias.indexOf(extraAlia) === -1) {\n result += ` - ${extraAlia}`;\n }\n });\n return result;\n }\n\n /* 格式化模板变量上的显示 */\n getAliasValue(instance: Record, alias: string) {\n const result = instance[alias];\n return Array.isArray(result) ? result.join() : result;\n }\n\n formatVarDisplay(instance: Record, displayTpl: string | undefined, instanceAlias: string) {\n // 获取display=aaa${InstanceName}bbb${InstanceId}ccc\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !this.InstanceAliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(instance, b);\n });\n }\n return this.getAliasValue(instance, instanceAlias);\n }\n /**\n * @param query 模板变量配置填写的 Query 参数对象,由顶层将字符串转换为了对象\n */\n async metricFindQuery(query: MetricQuery, regex?: string) {\n const { action, namespace, display, payload = {} } = query;\n let { region, instancealias = this.templateQueryIdMap.instance } = query;\n if (!action || !namespace) {\n return [];\n }\n // 支持payload里传入模板变量\n if (_.isObject(payload)) {\n _.forEach(payload, (value, key) => {\n payload[key] = _.isString(value) ? this.getVariable(value) : value;\n });\n }\n\n // 查询地域列表\n const regionQuery = action.match(/^DescribeRegions$/i);\n if (regionQuery) {\n return this.getRegions();\n }\n\n region = this.getVariable(region); // 将模板region转换为真实值\n\n // 查询实例列表\n if (region && action.match(/^DescribeInstances/i)) {\n const result = await this.getVariableInstances(region, payload);\n instancealias = this.InstanceAliasList.includes(instancealias) ? instancealias : this.templateQueryIdMap.instance;\n\n const res = result.flatMap((item) => {\n const insAlias = this.formatVarDisplay(item, display, instancealias);\n\n item._InstanceAliasValue = insAlias; // FIXME:\n\n if (!item[instancealias]) return [];\n return [\n {\n text: insAlias,\n value: item[this.templateQueryIdMap.instance],\n },\n ];\n });\n\n // 缓存全量实例列表\n await instanceStorage.setInstance(this.service, result);\n return res;\n }\n\n // 在instance实例的基础上查询其他数据\n let instance = this.getVariable(query['instance']);\n if (_.isArray(instance)) instance = instance[0]; // 有额外维度,仅支持实例单选情况\n if (region && action && instance) {\n try {\n // instance = JSON.parse(instance);\n const instanceCache = await instanceStorage.getInstance(this.service);\n\n instance = _.cloneDeep(instanceCache.find((item) => item[this.templateQueryIdMap.instance] === instance)) ?? {};\n // eslint-disable-next-line no-empty\n } catch (error) {}\n return this.fetchMetricData(action, region, instance, query);\n }\n\n return Promise.resolve([]);\n }\n // 获取指标数据\n async fetchMetricData(action: string, region: string, instance: any, query?: any) {\n return [];\n }\n\n /**\n * 根据 Panel 的配置项,获取相应的监控数据\n *\n * @param options Panel 的配置参数\n * @return 返回数据数组,示例如下\n * [\n * {\n * \"target\": \"AccOuttraffic - ins-123\",\n * \"datapoints\": [\n * [861, 1450754160000],\n * [767, 1450754220000]\n * ]\n * }\n * ]\n */\n async dimensionsFormat(dimKeys, ins, dimensionObject, target, service, options) {\n for (let key of dimKeys) {\n let keyTmp = key;\n const invalidDim = this.InvalidDimensions || this.getInvalidDimensions(this, target[service]);\n if (invalidDim[key]) {\n // 从【维度中】的字段到【实例中】字段的映射。 { functionName: FunctionName }\n keyTmp = invalidDim[key];\n ins[key] = ins[keyTmp];\n }\n\n let extraDimValue = this.getVariable(target[service][keyTmp]);\n if (this.queryMonitorExtraConfg[keyTmp]) {\n const {\n dim_KeyInStorage,\n dim_KeyInTarget = keyTmp,\n dim_KeyInMap,\n dim_KeyInIns,\n } = this.queryMonitorExtraConfg[keyTmp];\n let extraIns = ReplaceVariable(this.templateSrv, options.scopedVars, target[service][dim_KeyInTarget], true);\n let extraSourceMap: any = {};\n try {\n extraSourceMap = JSON.parse(extraIns); // 兼容json字符串的 形式\n } catch (error) {\n if (_.isArray(extraIns)) extraIns = extraIns[0]; // 如果多个,取第一个。除了实例ID 暂不支持其他纬度多选\n const extraStorage = await instanceStorage.getExtraStorage(this.service, dim_KeyInStorage);\n\n extraSourceMap =\n extraStorage?.find((item) => {\n if (_.isArray(item[dim_KeyInMap])) {\n return item[dim_KeyInMap][0] === extraIns;\n }\n return item[dim_KeyInMap] === extraIns;\n }) ?? {};\n }\n const isStringOrNumber = _.isString(extraSourceMap) || _.isNumber(extraSourceMap);\n // 增加ins实例之外的alias,填入到ins._InstanceAliasValue\n const insAlias = ins._InstanceAliasValue;\n const otherAlias = isStringOrNumber ? extraSourceMap : extraSourceMap._InstanceAliasValue;\n if (otherAlias && insAlias.indexOf(otherAlias) === -1) {\n ins._InstanceAliasValue += ` - ${otherAlias}`;\n }\n\n extraDimValue = isStringOrNumber ? extraSourceMap : extraSourceMap?.[dim_KeyInIns || keyTmp];\n } else {\n ins._InstanceAliasValue += this.getOtherAlias(ins, target[service]);\n }\n\n if (\n getTimeShiftInMs(target[service].timeshift) > 0 &&\n ins._InstanceAliasValue.indexOf(target[service].timeshift) === -1\n ) {\n ins._InstanceAliasValue += `_${target[service].timeshift}`;\n }\n // 设置instance,针对额外的维度,需要注意模板变量的值\n // ins[key] = ins[keyTmp] ?? extraDimValue;\n ins[key] = this.getDimensionsVal(ins, keyTmp, extraDimValue);\n // cynosdb产品接口返回维度和入参不一致\n if (this.checkKeys.length > 0) {\n this.checkKeys.forEach((Ekey) => {\n ins[Ekey] = ins[key];\n });\n }\n dimensionObject[key] = { Name: key, Value: ins[key] };\n }\n return dimensionObject;\n }\n getDimensionsVal(ins: Record, key: string, extraDimValue: string) {\n let dimVal = ins[key];\n if (_.isEmpty(dimVal) && this.CandiateDimensions[key]) {\n dimVal = ins[this.CandiateDimensions[key]];\n }\n return dimVal ?? extraDimValue;\n }\n query(options: any) {\n const service = this.service!; // 强制声明非空\n\n const queries = _.filter(options.targets, (item) => {\n // 过滤无效的查询 target\n return (\n item.hide !== true &&\n !!item.namespace &&\n !!item[service].metricName &&\n !_.isEmpty(ReplaceVariable(this.templateSrv, options.scopedVars, item[service].region, false)) &&\n !_.isEmpty(ReplaceVariable(this.templateSrv, options.scopedVars, item[service].instance, true))\n );\n })\n .reduce((prev, target) => {\n if (getTimeShiftInMs(target[service].timeshift) > 0) {\n const cloneTarget = _.cloneDeep(target);\n cloneTarget[service].timeshift = '';\n return [...prev, cloneTarget, target];\n }\n return [...prev, target];\n }, [])\n .map(async (target) => {\n // 实例 instances 可能为模板变量,需先获取实际值\n // 针对JSON字符串和id的形式,分开做处理\n let instances = ReplaceVariable(this.templateSrv, options.scopedVars, target[service].instance, true);\n const instanceCache = await instanceStorage.getInstance(this.service);\n const timeshift = getTimeShiftInMs(target[service].timeshift);\n\n instances = [].concat(instances).map((inst) => {\n try {\n return JSON.parse(inst); // 兼容json字符串的 形式\n } catch (error) {\n // 如果没拿到缓存,取默认实例组\n if (!instanceCache) return this.getDefaultInsObj?.(inst);\n return _.cloneDeep(instanceCache.find((item) => item[this.templateQueryIdMap.instance] === inst)) ?? {};\n }\n });\n const region = ReplaceVariable(this.templateSrv, options.scopedVars, target[service].region, false);\n const insInReq: any = [];\n for (let ins of instances) {\n const dimensionObject = target[service].dimensionObject;\n // 处理dimensions的值\n const dimKeys = Object.keys(dimensionObject);\n const dimResult = await this.dimensionsFormat(dimKeys, ins, dimensionObject, target, service, options);\n\n insInReq.push([{ Dimensions: GetDimensions(dimResult) }]);\n }\n const data = {\n StartTime: moment(options.range.from).subtract(timeshift).format(),\n EndTime: moment(options.range.to).subtract(timeshift).format(),\n Period: target[service].period || 300,\n Instances: _.flatMap(insInReq),\n Namespace: target.namespace,\n MetricName: target[service].metricName,\n };\n return this.getMonitorData(data, region, instances, target[service], options);\n });\n\n if (queries.length === 0) {\n return [];\n }\n\n return Promise.all(queries)\n .then((responses) => {\n return _.flatten(responses);\n })\n .catch((error) => {\n return [];\n });\n }\n getDefaultInsObj(ins: string) {\n return {} as any;\n }\n getInstanceReqConfig(selfIns: any) {\n return {} as any;\n }\n getInvalidDimensions(selfIns: any, target?: any) {\n return {} as any;\n }\n // 获取某个变量的实际值,this.templateSrv.replace() 函数返回实际值的字符串\n getVariable(metric?: string) {\n const rs = this.templateSrv.replace((metric || '').trim());\n const valStr = rs.match(/\\{([\\w-,]+)\\}/);\n // 判断是否为多选\n if (valStr) {\n return valStr[1].split(',');\n }\n return rs;\n }\n\n /**\n * 获取 监控数据\n * @param params 获取监控数据的请求参数\n * @param region 地域信息\n * @param instances 实例列表,用于对返回结果的匹配解析\n */\n getMonitorData(params, region, instances, target, options) {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n const timeshift = getTimeShiftInMs(target.timeshift);\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { action: 'GetMonitorData', region }\n ).then((response) => {\n return ParseQueryResult(response, instances, timeshift);\n });\n }\n\n getRegions(): any {\n return this.doRequest(\n {\n url: this.url + '/cvm',\n },\n 'cvm',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n\n getMetrics(region = 'ap-guangzhou'): Promise {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Namespace: this.namespace,\n },\n },\n serviceInfo.service,\n { region, action: 'DescribeBaseMetrics' }\n ).then((response) => {\n const res = _.filter(\n _.filter(response.MetricSet || [], (item) => !(item.Namespace !== this.namespace || !item.MetricName))\n );\n const resFilterFn = this.MetricReqConfig.resultFilter;\n if (resFilterFn) {\n return res.map((item) => resFilterFn(item));\n }\n return res;\n });\n }\n\n getInstances(region, params = {}) {\n const {\n service = this.service,\n action,\n responseField: field,\n interceptor,\n } = this.InstanceReqConfig || this.getInstanceReqConfig(this);\n params = { Offset: 0, Limit: 100, ...params };\n const serviceInfo = GetServiceAPIInfo(region, service);\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: interceptor?.request ? interceptor.request(params) : params,\n },\n serviceInfo.service,\n { region, action }\n ).then((response) => {\n // 处理异常,则不按正常的情况处理,直接抛出错误\n if (response?.Error) {\n console.error(response.Error);\n return response;\n }\n\n let result;\n // 先,field处理\n if (field) {\n result = _.get(response, field) ?? _.get(response, `Result.${field}`) ?? [];\n }\n\n // 后,拦截器处理\n if (interceptor?.response) {\n result = interceptor.response(result);\n }\n return result;\n });\n }\n\n getVariableInstances(region, query = {}): Promise {\n let result: any[] = [];\n const params = { ...{ Offset: 0, Limit: 100 }, ...query };\n\n const {\n service = this.service,\n action,\n responseField: field,\n interceptor,\n } = this.InstanceReqConfig || this.getInstanceReqConfig(this);\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: interceptor?.request ? interceptor.request(params) : params,\n },\n serviceInfo.service,\n { region, action }\n ).then((response) => {\n result = _.get(response, field) ?? _.get(response, `Result.${field}`) ?? [];\n const total =\n response.TotalCount ?? response.TotalCnt ?? response.TotalNumber ?? _.get(response, `Result.TotalCount`) ?? 0;\n if (result.length >= total) {\n return interceptor?.response ? interceptor.response(result) : result;\n } else {\n const param = SliceLength(total, params?.Limit || 100);\n const promises: any[] = [];\n _.forEach(param, (item) => {\n promises.push(this.getInstances(region, { ...item, ...query }));\n });\n return Promise.all(promises)\n .then((responses) => {\n _.forEach(responses, (item) => {\n result = _.concat(result, item);\n });\n return interceptor?.response ? interceptor.response(result) : result;\n })\n .catch((error) => {\n return interceptor?.response ? interceptor.response(result) : result;\n });\n }\n });\n }\n\n // 检查某变量字段是否有值\n isValidConfigField(field: string) {\n return field && field.length > 0;\n }\n\n testDatasource() {\n // const { service = this.service, action } = this.InstanceReqConfig;\n // const serviceInfo = GetServiceAPIInfo('ap-guangzhou', service);\n\n if (!this.isValidConfigField(this.secretId)) {\n return {\n service: this.service,\n status: 'error',\n message: 'The SecretId/SecretKey field is required.',\n };\n }\n\n return Promise.all([\n this.getRegions(),\n this.getMetrics(),\n // this.doRequest(\n // {\n // url: this.url + serviceInfo.path,\n // data: {\n // Offset: 0,\n // Limit: 1,\n // },\n // },\n // service,\n // { region: 'ap-guangzhou', action },\n // ),\n this.getInstances('ap-guangzhou', {\n Offset: 0,\n Limit: 1,\n }),\n ])\n .then((responses) => {\n const cvmErr = _.get(responses, '[0].Error', {});\n const monitorErr = _.get(responses, '[1].Error', {});\n const serviceErr = _.get(responses, '[2].Error', {});\n // const cvmAuthFail = _.get(cvmErr, 'Code', '').indexOf('AuthFailure') !== -1;\n // const monitorAuthFail = _.get(monitorErr, 'Code', '').indexOf('AuthFailure') !== -1;\n // const serviceAuthFail = _.get(serviceErr, 'Code', '').indexOf('AuthFailure') !== -1;\n const cvmAuthFail = _.get(cvmErr, 'Code', '');\n const monitorAuthFail = _.get(monitorErr, 'Code', '');\n const serviceAuthFail = _.get(serviceErr, 'Code', '');\n if (cvmAuthFail || monitorAuthFail || serviceAuthFail) {\n const messages: any[] = [];\n if (cvmAuthFail) {\n messages.push(_.get(cvmErr, 'Code'));\n }\n if (monitorAuthFail) {\n messages.push(_.get(monitorErr, 'Code'));\n }\n if (serviceAuthFail) {\n messages.push(_.get(serviceErr, 'Code'));\n }\n const message = _.join(_.compact(_.uniq(messages)), '; ');\n return {\n service: this.service,\n status: 'error',\n message,\n };\n } else {\n return {\n namespace: this.namespace,\n service: this.service,\n status: 'success',\n message: `Successfully queried the ${this.service} service.`,\n title: 'Success',\n };\n }\n })\n .catch((error) => {\n let message = `${this.service} service:`;\n message += error.statusText ? error.statusText + '; ' : '';\n if (_.get(error, 'data.error.code', '')) {\n message += error.data.error.code + '. ' + error.data.error.message;\n } else if (_.get(error, 'data.error', '')) {\n message += error.data.error;\n } else if (_.get(error, 'data', '')) {\n message += error.data;\n } else {\n message += `Cannot connect to ${this.service} service.`;\n }\n return {\n service: this.service,\n status: 'error',\n message: message,\n };\n });\n }\n\n async doRequest(options, service, signObj: any = {}) {\n options = await GetRequestParams(\n options,\n service,\n signObj,\n this.secretId,\n this.instanceSettings.id,\n this.backendSrv\n );\n return this.backendSrv\n .datasourceRequest(options)\n .then((response) => {\n return _.get(response, 'data.Response', {});\n })\n .catch((error) => {\n throw error;\n });\n }\n}\n","import _ from 'lodash';\nimport { SERVICES } from '../tc_monitor';\n\n/* 从分页数据获取全量数据 */\nconst PageSize = 50;\nfunction getFieldsValue(value, fields) {\n return fields.map((item) => _.get(value, item, _.get(value, `Result.${item}`, [])));\n}\n\nexport async function fetchAllFactory(fetcher: (args: any) => Promise, _params: any, field: string | string[]) {\n const params = { ..._.omit(_params, ['isOffsetPage']) };\n params.Limit = params.Limit || PageSize; // 默认给个Limit大小为50\n params.Offset = params.Offset ?? 0; // 默认给个Offset为0\n\n // 第一次请求,获取总数\n const rs = (await fetcher(params)) ?? {};\n const fields = Array.isArray(field) ? field : [field];\n\n // rs.TotalCount = rs.TotalCount ?? rs.Result.TotalCount ?? [];\n // const { TotalCount } = rs;\n const TotalCount = rs.TotalCount ?? rs.Result?.TotalCount ?? rs.TotalCnt ?? rs.Result?.TotalCnt ?? 0;\n const firstLists = getFieldsValue(rs, fields);\n\n if (TotalCount === 0 || firstLists[0].length === TotalCount) {\n // 只有一页,结束\n return firstLists;\n }\n\n // 批量请求\n const delta = TotalCount - firstLists[0].length;\n const batchCount = Math.ceil(delta / PageSize);\n const pmList = new Array(batchCount).fill(0).map((_, index) => {\n params.Offset = _params.isOffsetPage ? 1 + index : (1 + index) * params.Limit;\n return fetcher(params);\n });\n\n // 合并\n const resultList = await Promise.all(pmList); // [ {a: [], b[] }, { a: [], b:[] }]\n\n return resultList.reduce((acc, cur) => {\n const lists = getFieldsValue(cur, fields);\n // [[], [], []] + [[], [], []]\n acc.forEach((list, index) => list.push(...lists[index]));\n return acc;\n }, firstLists);\n}\n\n/**\n * 实例列表接口入参处理\n *\n * @param queries 表单键入内容\n * @param isFilter 是否需要设置为Filters格式\n */\nexport function instanceQueryParamsBaseParse(queries: any, isFilter: boolean) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n const Filters: any[] = [];\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n if (isFilter) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n } else {\n params[key] = _.uniq(item);\n }\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n if (isFilter) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n } else {\n params[key] = _.get(item, 'value');\n }\n }\n } else if (item !== null && item !== undefined && item !== '') {\n if (isFilter) {\n Filters.push({ Name: key, Values: item });\n } else {\n params[key] = item;\n }\n }\n });\n if (isFilter && Filters.length > 0) {\n params.Filters = Filters;\n return params;\n }\n }\n return params;\n}\n\nexport function getNamesapceFromService(serviceName: string) {\n return _.get(\n _.find(SERVICES, (service) => service.service === serviceName),\n 'namespace'\n );\n}\n\nexport function serviceGroupBy(\n services: { service: string; label: string; namespace: string; href: string; groupName?: string }[]\n) {\n const result = services.reduce((acc, cur) => {\n const { namespace, label, groupName = label } = cur;\n\n const existedGroup = acc.find((item) => item.label === groupName);\n if (!existedGroup) {\n acc.push({ label: groupName, value: groupName, items: [{ label, value: namespace }] });\n return acc;\n }\n\n existedGroup.items.push({ label, value: namespace });\n return acc;\n }, [] as any[]);\n\n // 将只有一个子元素的项目进行特殊处理\n const rs = result.map((item) =>\n item.items.length === 1 ? { label: item.items[0].label, value: item.items[0].value } : item\n );\n return rs;\n}\n\nexport const isTargetEqual = (newTargetString: string, oldTargetString: string, key: string) => {\n try{\n const newTarget = JSON.parse(newTargetString);\n const oldTarget = JSON.parse(oldTargetString);\n return newTarget[key] === oldTarget[key];\n }catch(e){\n return newTargetString === oldTargetString;\n }\n}\n\nexport const getTimeShiftInMs = (timeShift: any) => {\n const parts = /^(\\d+)([d|h|m|s])$/.exec(timeShift);\n if (!parts) {\n return 0;\n }\n const amount = parseInt(parts[1], 10);\n const unit = parts[2];\n switch (unit) {\n case 'd':\n return amount * 86400 * 1000;\n case 'h':\n return amount * 3600 * 1000;\n case 'm':\n return amount * 60 * 1000;\n case 's':\n return amount * 1000;\n }\n return 0;\n}","module.exports = __WEBPACK_EXTERNAL_MODULE__6__;","import coreModule from 'grafana/app/core/core_module';\nimport { DetailQueryConfig } from './types';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nfunction classFactory(detailConfig) {\n return class QueryCtrl {\n static _config: DetailQueryConfig;\n\n /** @ngInject */\n constructor($scope, $rootScope) {\n Object.assign($scope, detailConfig);\n\n $scope.getDropdown = (field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n return $scope.datasource.getFilterDropdown(service, { field, region: $scope.region });\n };\n }\n };\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n`;\nfunction queryDDOFactory(QueryCtrl) {\n return function queryDDO() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n };\n}\n\nexport default (name: string, config: DetailQueryConfig) => {\n // QueryCtrl._config = config;\n const newQueryIns = classFactory(config);\n coreModule.directive(name, queryDDOFactory(newQueryIns));\n};\n","interface DBEvent {\n target: { result: any; error: any };\n}\n// 数据库结构\ninterface DBTypes {\n store: StoreType;\n name?: string;\n version?: number;\n}\n// store表结构\ninterface StoreType {\n name: string; // 表名\n key: string; // 主键名\n cursorIndex?: { name: string; unique: boolean }[]; // 索引列表\n}\n\n// 数据结构\n// {service: 'cvm', instance: [{ins: 23}]}\ninterface DataType {\n service: string;\n [x: string]: any; // 有产品需缓存其他列表\n}\n\n// interface UpdateProps {\n// storeName: string;\n// cursorKey: string;\n// cursorValue?: any;\n// data: any;\n// }\n\nconst store: StoreType = {\n name: 'grafanaInstanceList',\n key: 'service',\n};\nconst promisify = (request: any, type?: string) => {\n return new Promise((resolve, reject) => {\n request.onsuccess = (event: DBEvent) => {\n const returnMap: any = {\n event: event.target.result,\n request: request.result,\n msg: '操作成功',\n };\n resolve(returnMap[type || 'msg']);\n };\n request.onerror = (event: DBEvent) => reject(event.target.error || '操作失败');\n });\n};\n// 固定表名和数据库名\nclass IndexedDB {\n name = 'grafanaDatabase';\n version = 1;\n\n constructor(props: DBTypes) {\n const { name = 'database', version = 1, store } = props;\n this.name = name;\n this.version = version;\n\n this.initDB(store);\n }\n\n /**\n * 初始化数据库\n * @param store 库表的结构\n */\n initDB(store: StoreType) {\n const indexeddb = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;\n const request = indexeddb.open(this.name, this.version);\n\n request.onupgradeneeded = (event: IDBVersionChangeEvent) => {\n const db = (event.target as IDBOpenDBRequest).result;\n if (db.objectStoreNames.contains(store.name)) {\n // 存在表store\n }\n\n // 遍历store,设置数据表结构\n db.createObjectStore(store.name, {\n keyPath: store.key,\n });\n };\n request.onerror = () => Promise.reject(new Error('初始化数据库失败'));\n request.onsuccess = () => Promise.resolve('初始化数据库成功');\n }\n\n openDB() {\n const indexeddb = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;\n const request = indexeddb.open(this.name, this.version);\n\n return promisify(request, 'event');\n }\n\n /**\n * 新增数据\n * @param storeName 表名\n * @param data 添加的数据\n */\n async insertData(storeName: string, data: any) {\n try {\n // console.time('insertData');\n const db = await this.openDB();\n const transaction = db.transaction(storeName, 'readwrite');\n const objectStore = transaction.objectStore(storeName);\n\n objectStore.add(data);\n // console.timeEnd('insertData');\n\n return new Promise((resolve, reject) => {\n transaction.oncomplete = function () {\n // console.timeEnd('insertData');\n resolve('所有数据插入成功');\n };\n\n transaction.onerror = function (event) {\n reject(event);\n };\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n /**\n * 更新数据\n * @param props 查询数据的参数以及要修改的值的参数\n */\n async addData(data: DataType, isCover?: boolean) {\n try {\n // console.log('addData');\n const storeName = store.name; // 表名\n const oldData = await this.getData(data.service);\n const objectStore = await this.getObjectStore(storeName, 'readwrite');\n\n if (!oldData) {\n // 不存在则新建\n this.insertData(storeName, data);\n }\n // 存在则更新\n let newData: any = { ...oldData, ...data };\n if (isCover) newData = data; // 需要覆盖之前内容\n // 把更新过的对象放回数据库\n const requestUpdate = objectStore.put(newData);\n // console.timeEnd('updateData');\n return promisify(requestUpdate);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n /**\n * 获取数据库的值,返回查询到的第一项\n * @param storeName 表名/存储对象的键\n * @param cursorKey key\n * @param cursorValue 要查询索引的值\n */\n async getData(seviceName: string) {\n try {\n // console.time('getData');\n const storeName = store.name;\n const objectStore = await this.getObjectStore(storeName);\n const request = objectStore.get(seviceName);\n // console.timeEnd('getData');\n return promisify(request, 'request');\n } catch (error) {\n return Promise.reject(error);\n }\n }\n async getAllData(storeName: string) {\n try {\n // console.time('getAllData');\n const objectStore = await this.getObjectStore(storeName);\n const request = objectStore.getAll();\n const result = await promisify(request, 'request');\n // console.timeEnd('getAllData');\n return result ? result : [];\n } catch (error) {\n return Promise.reject(error);\n }\n }\n /**\n * 获取对象仓库\n * @param storeName 表名\n * @param type readonly 或者 readwrite等\n */\n private async getObjectStore(storeName: string, type?: any): Promise {\n try {\n const db = await this.openDB();\n return db.transaction(storeName, type).objectStore(storeName);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n}\n// console.log('testDDB')\n// const indexDB = new IndexedDB({store});\n// indexDB.addData({service: 'cvm', instance: [{ins: 23}]}).then(e=>{\n// indexDB.getData('cvm').then(dd=>{console.log({dd})})\n// })\nexport default new IndexedDB({ store });\n","import indexedDB from './indexedDB';\nclass InstanceStorage {\n // prefix = 'Datasource';\n // storageKey = 'grafanaInstanceCache';\n insKey = 'Instances';\n cacheWay = '';\n constructor() {}\n setInstance(service: string, value: Record) {\n return this.setStorage(service, this.insKey, value, true);\n }\n async getInstance(service: string) {\n return this.getStorage(service, this.insKey);\n }\n setExtraStorage(service: string, Ekey: string, EValue: Record) {\n return this.setStorage(service, Ekey, EValue, false);\n }\n async getExtraStorage(service: string, Ekey: string) {\n return this.getStorage(service, Ekey);\n }\n private setStorage(serviceKey: string, key: string, value: Record, isCover = false) {\n // console.log('set', serviceKey, key, value);\n return indexedDB.addData(\n {\n service: serviceKey,\n [key]: value,\n },\n isCover\n );\n }\n // 获取到模版变量信息\n private async getStorage(service: string, key?: string) {\n const storage = await indexedDB.getData(service);\n // console.log('get', key, storage);\n return key ? storage?.[key] : storage;\n }\n}\nexport default new InstanceStorage();\n","module.exports = __WEBPACK_EXTERNAL_MODULE__9__;","import _ from 'lodash';\n\nexport const CKAFKAQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'InstanceId',\n cnDescriptor: '按照实例ID过滤',\n link: '',\n type: 'input',\n },\n {\n key: 'SearchWord',\n enDescriptor: 'SearchWord',\n cnDescriptor: '按照实例名称过滤,支持模糊查询',\n link: '',\n type: 'input',\n },\n {\n key: 'TagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '匹配标签key值',\n link: '',\n type: 'input',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例的状态,不填默认返回全部',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '创建中', value: 0 },\n { text: '运行中', value: 1 },\n { text: '删除中', value: 2 },\n ],\n },\n];\n\nconst CKAFKA_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n topicId: '',\n topicName: '',\n consumerGroup: '',\n partition: '',\n queries: {\n Offset: 0,\n Limit: 10,\n Status: [],\n InstanceId: '',\n SearchWord: '',\n TagKey: '',\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst CKAFKAInstanceAliasList = ['InstanceId', 'InstanceName'];\nconst CKAFKATopicAliasList = ['TopicId', 'TopicName'];\n// 保存在模板变量value中的key\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n topicId: 'TopicId',\n groupName: 'GroupName',\n partition: 'PartitionId',\n};\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nconst CKAFKAInvalidDemensions = new Proxy(\n {\n topicId: 'TopicId',\n topicName: 'TopicName',\n consumerGroup: 'GroupName',\n partition: 'PartitionId',\n },\n {\n get: (obj, prop) => {\n if (String(prop).toLocaleLowerCase() === 'instanceid') return 'InstanceId';\n return obj[prop];\n },\n }\n);\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n TopicList: 'TopicList',\n GroupList: 'GroupList',\n PartitionList: 'PartitionList',\n};\n\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n TopicId: {\n dim_KeyInStorage: keyInStorage.TopicList,\n dim_KeyInTarget: 'topicId',\n dim_KeyInMap: templateQueryIdMap.topicId,\n },\n // topicName和topicId是同一个storage中的source,所以根据topicId帅选\n TopicName: {\n dim_KeyInStorage: keyInStorage.TopicList,\n dim_KeyInTarget: 'topicId',\n dim_KeyInMap: templateQueryIdMap.topicId,\n },\n GroupName: {\n dim_KeyInStorage: keyInStorage.GroupList,\n dim_KeyInTarget: 'consumerGroup',\n dim_KeyInMap: templateQueryIdMap.groupName,\n },\n PartitionId: {\n dim_KeyInStorage: keyInStorage.PartitionList,\n dim_KeyInTarget: 'partition',\n dim_KeyInMap: templateQueryIdMap.partition,\n },\n};\nexport default CKAFKA_STATE;\nexport {\n CKAFKAInstanceAliasList,\n CKAFKATopicAliasList,\n CKAFKAInvalidDemensions,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n GetInstanceQueryParams as CKAFKAGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/LOADBALANCE';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'loadBalanceQuery';\n\nconst ForwardTypes = [\n { text: '通用的负载均衡', value: 1 },\n { text: '传统的负载均衡', value: 0 },\n];\n\nconst OrderBy = [\n { text: 'LoadBalancerName', value: 'LoadBalancerName' },\n { text: 'CreateTime', value: 'CreateTime' },\n { text: 'Domain', value: 'Domain' },\n { text: 'LoadBalancerType', value: 'LoadBalancerType' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\n\nconst WithRs = [\n { text: '没有绑定后端服务', value: 0 },\n { text: '绑定后端服务', value: 1 },\n { text: '查询全部', value: -1 },\n];\nconst LOADBALANCEFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1',\n link: '',\n type: 'inputNumber',\n min: 1,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancer ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancer Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'Forward',\n enDescriptor: 'Forward',\n cnDescriptor: '负载均衡实例类型',\n link: '',\n type: 'select',\n list: ForwardTypes,\n },\n {\n key: 'Domain',\n enDescriptor: 'Domain',\n cnDescriptor: '域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义',\n link: '',\n type: 'input',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancer Vips',\n cnDescriptor: '负载均衡实例的 VIP 地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPrivateIps',\n enDescriptor: 'BackendPrivate Ips',\n cnDescriptor: '负载均衡绑定的后端服务的内网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPublicIps',\n enDescriptor: 'BackendPublic Ips',\n cnDescriptor: '负载均衡绑定的后端服务的外网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ProjectId',\n enDescriptor: 'Project ID',\n cnDescriptor: '负载均衡实例所属的项目 ID',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'VpcId',\n enDescriptor: 'Vpc ID',\n cnDescriptor: '负载均衡实例所属私有网络',\n link: '',\n type: 'input',\n },\n {\n key: 'SecurityGroup',\n enDescriptor: 'Security Group',\n cnDescriptor: '安全组ID',\n link: '',\n type: 'input',\n },\n {\n key: 'MasterZone',\n enDescriptor: 'Master Zone',\n cnDescriptor: '主可用区ID',\n link: '',\n type: 'input',\n },\n {\n key: 'WithRs',\n enDescriptor: 'WithRs',\n cnDescriptor: '负载均衡是否绑定后端服务',\n link: '',\n type: 'select',\n list: WithRs,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderType,\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/214/30685',\n namespace,\n fieldDescriptor: LOADBALANCEFieldsDescriptor,\n};\nconst LBFields = {\n LoadBalancerIds: [],\n Forward: undefined,\n LoadBalancerName: '',\n Domain: '',\n LoadBalancerVips: [],\n BackendPublicIps: [],\n BackendPrivateIps: [],\n Limit: 20,\n Offset: 0,\n ProjectId: undefined,\n WithRs: {},\n VpcId: '',\n SecurityGroup: '',\n MasterZone: '',\n OrderBy: {},\n OrderType: {},\n};\n\nconst LOADBALANCE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n Port: '',\n Protocol: '',\n listener: '',\n servers: '',\n serverPort: '',\n // listenerAlias: 'ListenerId',\n queries: LBFields,\n};\n\n// function GetInstanceQueryParams(queries: any = {}) {\n// const params: any = {};\n// if (!_.isEmpty(queries)) {\n// params.Limit = _.get(queries, 'Limit', 20) || 20;\n// params.Offset = _.get(queries, 'Offset', 0) || 0;\n// queries = _.omit(queries, ['Offset', 'Limit']);\n// _.forEach(queries, (item: any, key) => {\n// if (_.isArray(item)) {\n// item = _.compact(item);\n// if (item.length > 0) {\n// params[key] = _.uniq(item);\n// }\n// } else if (_.isObject(item)) {\n// if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n// params[key] = _.get(item, 'value');\n// }\n// } else if (_.isNumber(item) || !_.isEmpty(item)) {\n// params[key] = item;\n// }\n// });\n// }\n// return params;\n// }\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nconst InstanceAliasList = ['LoadBalancerId', 'LoadBalancerName', 'LoadBalancerVips'];\nconst LOADBALANCEListenerAliasList = ['ListenerId', 'ListenerName', 'Port'];\nconst LOADBALANCEServerAliasList = ['PrivateIpAddresses', 'InstanceId'];\nconst LOADBALANCEVALIDDIMENSIONS = {\n vip: 'LoadBalancerVips',\n // vpcId: 'NumericalVpcId',\n loadBalancerPort: 'Port',\n protocol: 'Protocol',\n lanIp: 'PrivateIpAddresses',\n port: 'ServerPort',\n};\n// 对于ipv6类型,vip应该取AddressIPv6。\nconst CANDIATEDIMENSIONS = {\n LoadBalancerVips: 'AddressIPv6',\n};\n// dimensionObject[item] = { Name: item, Value: '' };\n// const LOADBALANCE_INSTANCE_DIMENSIONOBJECTS = {\n// vip: { Name: 'vip', Value: '' },\n// };\n// const LOADBALANCE_LISTENER_DIMENSIONOBJECTS = {\n// vip: { Name: 'vip', Value: '' },\n// loadBalancerPort: { Name: 'loadBalancerPort', Value: '' },\n// protocol: { Name: 'protocol', Value: '' },\n// };\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n listener: 'ListenerId',\n servers: 'PrivateIpAddresses',\n port: 'Port',\n};\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n listener: 'ListenerList',\n servers: 'ServersList',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n Port: {\n dim_KeyInStorage: keyInStorage.listener,\n dim_KeyInTarget: 'listener',\n dim_KeyInMap: templateQueryIdMap.listener,\n },\n Protocol: {\n dim_KeyInStorage: keyInStorage.listener,\n dim_KeyInTarget: 'listener',\n dim_KeyInMap: templateQueryIdMap.listener,\n },\n PrivateIpAddresses: {\n dim_KeyInStorage: keyInStorage.servers,\n dim_KeyInTarget: 'servers',\n dim_KeyInMap: templateQueryIdMap.servers,\n },\n ServerPort: {\n dim_KeyInStorage: keyInStorage.servers,\n dim_KeyInTarget: 'serverPort',\n dim_KeyInIns: 'Port',\n dim_KeyInMap: templateQueryIdMap.port,\n },\n};\nexport default LOADBALANCE_STATE;\nexport {\n LOADBALANCEFieldsDescriptor,\n InstanceAliasList,\n LOADBALANCEListenerAliasList,\n LOADBALANCEServerAliasList,\n LOADBALANCEVALIDDIMENSIONS,\n templateQueryIdMap,\n CANDIATEDIMENSIONS,\n // LOADBALANCE_LISTENER_DIMENSIONOBJECTS,\n // LOADBALANCE_INSTANCE_DIMENSIONOBJECTS,\n queryMonitorExtraConfg,\n keyInStorage,\n queryEditorConfig,\n namespace,\n queryEditorName,\n GetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/TDMQ';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'tdmqQuery';\n\nconst TDMQInvalidDemensions = {\n tenantId: 'ClusterId',\n tenant: 'ClusterId',\n topicName: 'TopicName',\n environmentId: 'EnvironmentId',\n};\n\n// 需和文件名对应\nconst TDMQInstanceAliasList = ['ClusterId', 'ClusterName'];\n\nconst templateQueryIdMap = {\n instance: 'ClusterId',\n topicName: 'TopicName',\n environmentId: 'EnvironmentId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst TDMQFilterFields = {\n Limit: 20,\n Offset: 0,\n};\n\nconst TDMQFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n];\n\nconst CDNPROVINCE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n // 此处key应该是经过TDMQInvalidDemensions处理后的\n topicName: '',\n environmentId: '',\n queries: TDMQFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-nanjing' },\n { value: 'ap-hongkong' },\n { value: 'ap-tokyo' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n { value: 'ap-bangkok' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n if (item.Dimensions.indexOf('topicName') !== -1 && item.Dimensions.indexOf('environmentId') === -1) {\n item.Dimensions.push('environmentId');\n }\n });\n return metricTmp;\n}\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n topicName: 'topicName',\n environmentId: 'environmentId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n TopicName: {\n dim_KeyInStorage: keyInStorage.topicName,\n dim_KeyInTarget: 'topicName',\n dim_KeyInMap: templateQueryIdMap.topicName,\n },\n EnvironmentId: {\n dim_KeyInStorage: keyInStorage.environmentId,\n dim_KeyInTarget: 'environmentId',\n dim_KeyInMap: templateQueryIdMap.environmentId,\n },\n};\nexport default CDNPROVINCE_STATE;\nexport {\n TDMQFilterFieldsDescriptor,\n templateQueryIdMap,\n TDMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n queryEditorName,\n queryMonitorExtraConfg,\n keyInStorage,\n modifyDimensons,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TDMQGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/GSE';\nconst fleetId = 'FleetId'; // 为和cvm其他产品保持一致,即将string[]改为Array<{fleetid: xxx}>,在此声明key\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'gseQuery';\n\nconst GSEInvalidDemensions = {\n instanceid: 'InstanceId',\n fleetid: 'FleetId',\n queuename: 'Name',\n};\n\n// 需和文件名对应\nconst GSEInstanceAliasList = ['InstanceId', 'PrivateIpAddress', 'IpAddress'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n Name: 'Name',\n FleetId: fleetId,\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n fleet: 'fleet', // 实例队列\n queue: 'queueName', // 会话队列\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n FleetId: {\n dim_KeyInStorage: keyInStorage.fleet,\n dim_KeyInTarget: 'FleetId',\n dim_KeyInMap: templateQueryIdMap.FleetId,\n },\n Name: {\n dim_KeyInStorage: keyInStorage.queue,\n dim_KeyInTarget: 'Name',\n dim_KeyInMap: templateQueryIdMap.Name,\n },\n};\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst GSEFilterFields = {\n Limit: 20,\n Offset: 0,\n InstanceId: '',\n FleetId: '',\n};\n\nconst GSEFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'resourceName',\n cnDescriptor: '资源名称',\n link: '',\n type: 'input',\n },\n {\n key: 'FleetId',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'input',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1165/42604',\n namespace,\n fieldDescriptor: GSEFilterFieldsDescriptor,\n};\n\nconst GSE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n FleetId: '', // 服务器实例\n Name: '', // 队列名称\n queries: GSEFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-bangkok' },\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n // { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-seoul' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n // { value: 'ap-shanghai-fsi' },\n // { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n // { value: 'na-toronto' },\n];\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = item.Dimensions.map((v) => GSEInvalidDemensions[v] || v);\n });\n return metricTmp;\n}\nexport default GSE_STATE;\nexport {\n GSEFilterFieldsDescriptor,\n templateQueryIdMap,\n GSEInstanceAliasList,\n GSEInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n queryMonitorExtraConfg,\n fleetId,\n keyInStorage,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as GSEGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { isArray, cloneDeep } from 'lodash';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/TDMYSQL';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'dcdbQuery';\n\nconst DCDBInvalidDemensions = {\n nodeid: 'NodeId',\n instanceid: 'InstanceId',\n shardid: 'ShardInstanceId',\n ShardId: 'ShardInstanceId',\n};\n\n// 需和文件名对应\nconst DCDBInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n NodeId: 'NodeId',\n ShardInstanceId: 'ShardInstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst DCDBFilterFields = {\n Limit: 20,\n Offset: 0,\n InstanceIds: [],\n SearchName: '',\n SearchKey: '',\n ProjectIds: [],\n // IsFilterVpc\n VpcId: '',\n SubnetId: '',\n\n OrderBy: {},\n OrderByType: {},\n // IsFilterExcluster: {},\n ExclusterType: {},\n\n ExclusterIds: [],\n FilterInstanceType: {},\n};\n\nconst DCDBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '实例 ID 查询',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'SearchName',\n enDescriptor: 'SearchName',\n cnDescriptor: '搜索的字段名,当前支持的值有:instancename、vip、all',\n link: '',\n type: 'input',\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '搜索的关键字',\n link: '',\n type: 'input',\n },\n {\n key: 'ProjectIds',\n enDescriptor: 'ProjectIds',\n cnDescriptor: '按项目 ID 查询',\n link: '',\n type: 'inputNumberMulti',\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '私有网络的子网 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: 'projectId', value: 'projectId' },\n { text: 'createtime', value: 'createtime' },\n { text: 'instancename', value: 'instancename' },\n ],\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '私有网络 ID',\n link: '',\n type: 'select',\n list: [\n { text: 'desc', value: 'desc' },\n { text: 'asc', value: 'asc' },\n ],\n },\n {\n key: 'ExclusterType',\n enDescriptor: 'ExclusterType',\n cnDescriptor: '集群类型',\n link: '',\n type: 'select',\n list: [\n { text: '非独享集群', value: 1 },\n { text: '独享集群', value: 2 },\n { text: '全部', value: 0 },\n { text: 'asc', value: 'asc' },\n ],\n },\n {\n key: 'ExclusterIds',\n enDescriptor: 'ExclusterIds',\n cnDescriptor: '独享集群ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'FilterInstanceType',\n enDescriptor: 'FilterInstanceType',\n cnDescriptor: '实例类型过滤',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '独享实例', value: 1 },\n { text: '主实例', value: 2 },\n { text: '灾备实例', value: 3 },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/557/16140',\n namespace,\n fieldDescriptor: DCDBFilterFieldsDescriptor,\n};\n\nconst DCDB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n ShardId: '',\n NodeId: '',\n queries: DCDBFilterFields,\n};\nconst modifyMetricConf = {\n shardid: 'ShardId',\n instanceid: 'InstanceId',\n nodeid: 'NodeId',\n};\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = item.Dimensions.map((v) => modifyMetricConf[v] || v);\n });\n return metricTmp;\n}\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params = instanceQueryParamsBaseParse(queries, false);\n // 特殊处理\n params.IsFilterVpc = false;\n params.IsFilterExcluster = false;\n if (params.VpcId || params.SubnetId) params.IsFilterVpc = true;\n if (params.ExclusterType) params.IsFilterExcluster = true;\n if (isArray(params.FilterInstanceType)) params.FilterInstanceType = params.FilterInstanceType.join(',');\n return params;\n}\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n NodeId: 'NodeId',\n ShardInstanceId: 'ShardId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n NodeId: {\n dim_KeyInStorage: keyInStorage.NodeId,\n dim_KeyInTarget: 'NodeId',\n dim_KeyInMap: templateQueryIdMap.NodeId,\n },\n ShardInstanceId: {\n dim_KeyInStorage: keyInStorage.ShardInstanceId,\n dim_KeyInTarget: 'ShardId',\n dim_KeyInMap: templateQueryIdMap.ShardInstanceId,\n },\n};\n// 和其他产品的展示保持一致\nconst regionSupported = [\n { text: '华北地区(北京)', value: 'ap-beijing' },\n { text: '西南地区(成都)', value: 'ap-chengdu' },\n { text: '西南地区(重庆)', value: 'ap-chongqing' },\n { text: '华南地区(广州)', value: 'ap-guangzhou' },\n { text: '港澳台地区(中国香港)', value: 'ap-hongkong' },\n { text: '亚太南部(孟买)', value: 'ap-mumbai' },\n { text: '华东地区(南京)', value: 'ap-nanjing' },\n { text: '华东地区(上海)', value: 'ap-shanghai' },\n { text: '华东地区(上海金融)', value: 'ap-shanghai-fsi' },\n { text: '华南地区(深圳金融)', value: 'ap-shenzhen-fsi' },\n { text: '亚太东南(新加坡)', value: 'ap-singapore' },\n { text: '亚太东北(东京)', value: 'ap-tokyo' },\n { text: '欧洲地区(法兰克福)', value: 'eu-frankfurt' },\n { text: '美国东部(弗吉尼亚)', value: 'na-ashburn' },\n { text: '美国西部(硅谷)', value: 'na-siliconvalley' },\n { text: '北美地区(多伦多)', value: 'na-toronto' },\n];\nexport default DCDB_STATE;\nexport {\n DCDBFilterFieldsDescriptor,\n templateQueryIdMap,\n DCDBInstanceAliasList,\n DCDBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n keyInStorage,\n modifyDimensons,\n queryMonitorExtraConfg,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as DCDBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nconst namespace = 'QCE/REDIS_MEM';\nconst BillingMode = [\n { text: '按量计费', value: 'postpaid' },\n { text: '包年包月', value: 'prepaid' },\n];\n\nconst AutoRenew = [\n { text: '手动续费', value: 0 },\n { text: '自动续费', value: 1 },\n { text: '明确不自动续费', value: 2 },\n];\n\nconst Status = [\n { text: '待初始化', value: 0 },\n { text: '流程执行中', value: 1 },\n { text: '运行中', value: 2 },\n { text: '已隔离', value: -2 },\n { text: '待删除', value: -3 },\n];\n\nconst TypeVersion = [\n { text: '单机版', value: 1 },\n { text: '主从版', value: 2 },\n { text: '集群版', value: 3 },\n];\n\nconst OrderBy = [\n { text: 'projectId', value: 'projectId' },\n { text: 'instancename', value: 'instancename' },\n { text: 'createtime', value: 'createtime' },\n { text: 'type', value: 'type' },\n { text: 'curDeadline', value: 'curDeadline' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\nconst Type = [\n { text: 'Redis老集群版', value: 1 },\n { text: 'Redis 2.8主从版', value: 2 },\n { text: 'CKV主从版', value: 3 },\n { text: 'CKV集群版', value: 4 },\n { text: 'Redis 2.8单机版', value: 5 },\n { text: 'Redis 4.0主从版', value: 6 },\n { text: 'Redis 4.0集群版', value: 7 },\n { text: 'Redis5.0主从版', value: 8 },\n { text: 'Redis5.0集群版', value: 9 },\n];\n\nconst RedisFields = {\n InstanceId: '',\n OrderBy: '',\n OrderType: null,\n VpcIds: [],\n SubnetIds: [],\n ProjectIds: [],\n SearchKey: '',\n InstanceName: '',\n UniqVpcIds: [],\n UniqSubnetIds: [],\n Status: [],\n TypeVersion: null,\n EngineName: '',\n AutoRenew: null,\n BillingMode: '',\n Type: null,\n};\n\nconst RedisMemFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'InstancesId',\n cnDescriptor: '实例id',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderType',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderType,\n },\n {\n key: 'VpcIds',\n enDescriptor: 'VpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:47525',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SubnetIds',\n enDescriptor: 'SubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:56854',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ProjectIds',\n enDescriptor: 'ProjectIds',\n cnDescriptor: '项目ID 组成的数组',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '查找实例的ID',\n link: '',\n type: 'input',\n },\n {\n key: 'InstanceName',\n enDescriptor: 'InstanceName',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'UniqVpcIds',\n enDescriptor: 'UniqVpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:vpc-sad23jfdfk',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'UniqSubnetIds',\n enDescriptor: 'UniqSubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:subnet-fdj24n34j2',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'TypeVersion',\n enDescriptor: 'TypeVersion',\n cnDescriptor: '类型版本',\n link: '',\n type: 'select',\n list: TypeVersion,\n },\n {\n key: 'EngineName',\n enDescriptor: 'EngineName',\n cnDescriptor: '引擎信息:Redis-2.8,Redis-4.0,CKV',\n link: '',\n type: 'input',\n },\n {\n key: 'AutoRenew',\n enDescriptor: 'AutoRenew',\n cnDescriptor: '续费模式',\n multiple: true,\n type: 'select',\n list: AutoRenew,\n },\n {\n key: 'BillingMode',\n enDescriptor: 'BillingMode',\n cnDescriptor: '计费模式:postpaid-按量计费;prepaid-包年包月',\n link: '',\n type: 'select',\n list: BillingMode,\n },\n {\n key: 'Type',\n enDescriptor: 'Type',\n cnDescriptor: '实例类型',\n link: '',\n type: 'select',\n list: Type,\n },\n];\n\nconst REDISMEM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...RedisFields },\n rnodeid: '',\n pnodeid: '',\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n // select 单选\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst REDISMEMInstanceAliasList = ['InstanceId', 'InstanceName', 'WanIp'];\n\nconst RedisMemInvalidDemensions = {\n instanceid: 'InstanceId',\n rnodeid: 'rnodeid',\n pnodeid: 'pnodeid',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n rnodeid: 'rnodeid',\n pnodeid: 'pnodeid',\n};\n\nconst NodeType = ['Redis', 'Proxy'];\n\nexport default REDISMEM_STATE;\nexport {\n RedisMemFieldsDescriptor,\n RedisMemInvalidDemensions,\n REDISMEMInstanceAliasList,\n templateQueryIdMap,\n namespace,\n NodeType,\n GetInstanceQueryParams as REDISMEMGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/RABBITMQ';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'tdmqQuery';\n\nconst TDMQInvalidDemensions = {\n instanceid: 'InstanceId',\n node: 'NodeName',\n};\n\n// 需和文件名对应\nconst TDMQRABBITMQInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n node: 'NodeName',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst TDMQFilterFields = {\n Limit: 20,\n Offset: 0,\n};\n\nconst TDMQFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n];\n\nconst TDMQ_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n // 此处key应该是经过TDMQInvalidDemensions处理后的\n node: '',\n queries: TDMQFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-nanjing' },\n { value: 'ap-hongkong' },\n { value: 'ap-tokyo' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n { value: 'ap-bangkok' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n node: 'NodeName',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n NodeName: {\n dim_KeyInStorage: keyInStorage.node,\n dim_KeyInTarget: 'node',\n dim_KeyInMap: templateQueryIdMap.node,\n },\n};\nexport default TDMQ_STATE;\nexport {\n TDMQFilterFieldsDescriptor,\n templateQueryIdMap,\n TDMQRABBITMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n queryEditorName,\n queryMonitorExtraConfg,\n keyInStorage,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TDMQGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/ROCKETMQ';\n\nconst TDMQInvalidDemensions = {\n tenant: 'ClusterId',\n namespace: 'NamespaceId',\n group: 'Name',\n};\n\n// 需和文件名对应\nconst TDMQROCKETMQInstanceAliasList = ['ClusterId', 'ClusterName'];\n\nconst templateQueryIdMap = {\n instance: 'ClusterId',\n namespace: 'NamespaceId',\n group: 'Name',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst TDMQFilterFields = {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: true,\n ClusterIdList: [''],\n Filters: {\n includeVip: { text: '是', value: 'true' },\n },\n};\n\nconst TDMQFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'includeVip',\n enDescriptor: 'includeVip',\n cnDescriptor: '包含专享集群',\n link: '',\n type: 'select',\n list: [\n { text: '是', value: 'true' },\n { text: '否', value: 'false' },\n ],\n },\n];\n\nconst TDMQ_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n // 此处key应该是经过TDMQInvalidDemensions处理后的\n namespace: '',\n group: '',\n queries: TDMQFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.ClusterIdList)) {\n const ClusterIdList = _.compact(queries.ClusterIdList);\n if (_.uniq(ClusterIdList).length > 0) {\n params.ClusterIdList = _.uniq(ClusterIdList).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: [_.get(item, 'value', [])].slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-nanjing' },\n { value: 'ap-hongkong' },\n { value: 'ap-tokyo' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n { value: 'ap-bangkok' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n namespace: 'NamespaceId',\n group: 'Name',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n NamespaceId: {\n dim_KeyInStorage: keyInStorage.namespace,\n dim_KeyInTarget: 'namespace',\n dim_KeyInMap: templateQueryIdMap.namespace,\n },\n Name: {\n dim_KeyInStorage: keyInStorage.group,\n dim_KeyInTarget: 'group',\n dim_KeyInMap: templateQueryIdMap.group,\n },\n};\nexport default TDMQ_STATE;\nexport {\n TDMQFilterFieldsDescriptor,\n templateQueryIdMap,\n TDMQROCKETMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n queryMonitorExtraConfg,\n keyInStorage,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TDMQROCKETMQGetInstanceQueryParams,\n};\n","import { t } from '../../locale';\n// name (产品名称), service(对应的真实service)\ninterface ServiceType {\n service: string;\n label: string;\n namespace: string;\n href: string;\n groupName?: string;\n hideRegion?: boolean;\n}\nconst SERVICES: ServiceType[] = [\n {\n service: 'cvm',\n get label() {\n return t('CVM');\n },\n namespace: 'QCE/CVM',\n href: 'https://cloud.tencent.com/document/api/213/15688',\n },\n {\n service: 'cdb',\n get label() {\n return t('CDB');\n },\n namespace: 'QCE/CDB',\n href: 'https://cloud.tencent.com/document/api/236/15829',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'mongoDB',\n get label() {\n return t('CMONGO');\n },\n namespace: 'QCE/CMONGO',\n href: 'https://cloud.tencent.com/document/api/240/38568',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'postgres',\n get label() {\n return t('POSTGRES');\n },\n namespace: 'QCE/POSTGRES',\n href: 'https://cloud.tencent.com/document/product/248/45105',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'redis',\n get label() {\n return t('REDIS');\n },\n namespace: 'QCE/REDIS',\n href: 'https://cloud.tencent.com/document/product/248/45110',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'redisMem',\n get label() {\n return t('REDIS_MEM');\n },\n namespace: 'QCE/REDIS_MEM',\n href: 'https://cloud.tencent.com/document/product/248/49729',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'sqlserver',\n get label() {\n return t('SQLSERVER');\n },\n namespace: 'QCE/SQLSERVER',\n href: 'https://cloud.tencent.com/document/product/248/45146',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'cynosdbMysql',\n get label() {\n return t('CYNOSDB_MYSQL');\n },\n namespace: 'QCE/CYNOSDB_MYSQL',\n href: 'https://cloud.tencent.com/document/product/248/45106',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'tcaplus',\n get label() {\n return t('TCAPLUS');\n },\n namespace: 'QCE/TCAPLUS',\n href: 'https://cloud.tencent.com/document/product/248/45107',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'dcdb',\n get label() {\n return t('TDMYSQL');\n },\n namespace: 'QCE/TDMYSQL',\n href: 'https://cloud.tencent.com/document/product/248/45108',\n },\n {\n service: 'pcx',\n get label() {\n return t('PCX');\n },\n namespace: 'QCE/PCX',\n href: 'https://cloud.tencent.com/document/product/215/5181',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'bwp',\n get label() {\n return t('BWP');\n },\n namespace: 'QCE/BWP',\n href: 'https://cloud.tencent.com/document/api/215/19209',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'natGateway',\n get label() {\n return t('NAT_GATEWAY');\n },\n namespace: 'QCE/NAT_GATEWAY',\n href: 'https://cloud.tencent.com/document/api/215/36034',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vpngw',\n get label() {\n return t('VPNGW');\n },\n namespace: 'QCE/VPNGW',\n href: 'https://cloud.tencent.com/document/product/248/45070',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vpnx',\n get label() {\n return t('VPNX');\n },\n namespace: 'QCE/VPNX',\n href: 'https://cloud.tencent.com/document/product/248/45071',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'dcg',\n get label() {\n return t('DCG');\n },\n namespace: 'QCE/DCG',\n href: 'https://cloud.tencent.com/document/product/248/45072',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'ceipSummary',\n get label() {\n return t('CEIP_SUMMARY');\n },\n namespace: 'QCE/CEIP_SUMMARY',\n href: 'https://cloud.tencent.com/document/product/248/50381',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vpcNetDetect',\n get label() {\n return t('VPC_NET_DETECT');\n },\n namespace: 'QCE/VPC_NET_DETECT',\n href: 'https://cloud.tencent.com/document/product/248/50384',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vbc',\n get label() {\n return t('VBC');\n },\n namespace: 'QCE/VBC',\n href: 'https://cloud.tencent.com/document/product/248/45073',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'lb',\n get label() {\n return t('LB');\n },\n namespace: 'QCE/LB',\n href: 'https://cloud.tencent.com/document/product/248/45099',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'lbPublic',\n get label() {\n return t('LB_PUBLIC');\n },\n namespace: 'QCE/LB_PUBLIC',\n href: 'https://cloud.tencent.com/document/product/248/51898',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('multi_scene')})`;\n },\n },\n {\n service: 'lbPrivate',\n get label() {\n return t('LB_PRIVATE');\n },\n namespace: 'QCE/LB_PRIVATE',\n href: 'https://cloud.tencent.com/document/product/248/51899',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('multi_scene')})`;\n },\n },\n {\n service: 'loadBalance',\n get label() {\n return t('LOADBALANCE');\n },\n namespace: 'QCE/LOADBALANCE',\n href: 'https://cloud.tencent.com/document/product/248/51901',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('multi_scene')})`;\n },\n },\n {\n service: 'vClb',\n get label() {\n return `${t('cloud_load_balancer')}(${t('lite')})`;\n },\n namespace: 'QCE/V_CLB',\n href: 'https://cloud.tencent.com/document/product/248/51901',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('lite')})`;\n },\n },\n {\n service: 'cdn',\n get label() {\n return t('CDN');\n },\n namespace: 'QCE/CDN',\n hideRegion: true,\n href: 'https://cloud.tencent.com/document/product/248/50386',\n get groupName() {\n return t('content_delivery_network');\n },\n },\n {\n service: 'cdnProvince',\n get label() {\n return t('CDN_LOG_DATA');\n },\n namespace: 'QCE/CDN_LOG_DATA',\n hideRegion: true,\n href: 'https://cloud.tencent.com/document/product/248/50388',\n get groupName() {\n return t('content_delivery_network');\n },\n },\n {\n service: 'ovCdn',\n get label() {\n return t('OV_CDN');\n },\n namespace: 'QCE/OV_CDN',\n hideRegion: true,\n href: 'https://cloud.tencent.com/document/product/248/50387',\n get groupName() {\n return t('content_delivery_network');\n },\n },\n {\n service: 'scf',\n get label() {\n return t('SCF_V2');\n },\n namespace: 'QCE/SCF_V2',\n href: 'https://cloud.tencent.com/document/product/248/45130',\n },\n {\n service: 'cfs',\n get label() {\n return t('CFS');\n },\n namespace: 'QCE/CFS',\n href: 'https://cloud.tencent.com/document/product/248/45143',\n },\n {\n service: 'cos',\n get label() {\n return t('COS');\n },\n namespace: 'QCE/COS',\n href: 'https://cloud.tencent.com/document/product/248/45140',\n },\n {\n service: 'ckafka',\n get label() {\n return t('CKAFKA');\n },\n namespace: 'QCE/CKAFKA',\n href: 'https://cloud.tencent.com/document/product/248/45121',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'cmq',\n get label() {\n return t('CMQ');\n },\n namespace: 'QCE/CMQ',\n href: 'https://cloud.tencent.com/document/product/248/45114',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'cmqTopic',\n get label() {\n return t('CMQTOPIC');\n },\n namespace: 'QCE/CMQTOPIC',\n href: 'https://cloud.tencent.com/document/product/248/45113',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'tdmq',\n get label() {\n return t('TDMQ');\n },\n namespace: 'QCE/TDMQ',\n href: 'https://cloud.tencent.com/document/product/248/51450',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'tdmqRocketmq',\n get label() {\n return t('TDMQ_ROCKETMQ');\n },\n namespace: 'QCE/ROCKETMQ',\n href: 'https://cloud.tencent.com/document/product/248/51450',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'tdmqRabbitmq',\n get label() {\n return t('TDMQ_RABBITMQ');\n },\n namespace: 'QCE/RABBITMQ',\n href: 'https://cloud.tencent.com/document/product/248/51450',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'dcx',\n get label() {\n return t('DCX');\n },\n namespace: 'QCE/DCX',\n href: 'https://cloud.tencent.com/document/product/248/45101',\n get groupName() {\n return t('direct_connect');\n },\n },\n {\n service: 'dc',\n get label() {\n return t('DC');\n },\n namespace: 'QCE/DC',\n href: 'https://cloud.tencent.com/document/product/248/45102',\n get groupName() {\n return t('direct_connect');\n },\n },\n {\n service: 'cpm',\n get label() {\n return t('CPM');\n },\n namespace: 'QCE/CPM',\n href: 'https://cloud.tencent.com/document/product/248/45881',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'bmPcx',\n get label() {\n return t('BM_PCX');\n },\n namespace: 'QCE/BM_PCX',\n href: 'https://cloud.tencent.com/document/product/248/45884',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'bmLb',\n get label() {\n return t('BM_LB');\n },\n namespace: 'QCE/BM_LB',\n href: 'https://cloud.tencent.com/document/product/248/45886',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'bmIntraLb',\n get label() {\n return t('BM_INTRA_LB');\n },\n namespace: 'QCE/BM_INTRA_LB',\n href: 'https://cloud.tencent.com/document/product/248/45885',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'ces',\n get label() {\n return t('CES');\n },\n namespace: 'QCE/CES',\n href: 'https://cloud.tencent.com/document/product/248/45129',\n },\n {\n service: 'mrHDFS',\n get label() {\n return `${t('elastic_mapReduce')}(HDFS)`;\n },\n namespace: 'QCE/TXMR_HDFS',\n href: 'https://cloud.tencent.com/document/product/248/44797',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrHBASE',\n get label() {\n return `${t('elastic_mapReduce')}(HBASE)`;\n },\n namespace: 'QCE/TXMR_HBASE',\n href: 'https://cloud.tencent.com/document/product/248/45567',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrHIVE',\n get label() {\n return `${t('elastic_mapReduce')}(HIVE)`;\n },\n namespace: 'QCE/TXMR_HIVE',\n href: 'https://cloud.tencent.com/document/product/248/45569',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrNODE',\n get label() {\n return `${t('elastic_mapReduce')}(NODE)`;\n },\n namespace: 'QCE/TXMR_NODE',\n href: 'https://cloud.tencent.com/document/product/248/45570',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrPRESTO',\n get label() {\n return `${t('elastic_mapReduce')}(PRESTO)`;\n },\n namespace: 'QCE/TXMR_PRESTO',\n href: 'https://cloud.tencent.com/document/product/248/45571',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrSPARK',\n get label() {\n return `${t('elastic_mapReduce')}(SPARK)`;\n },\n namespace: 'QCE/TXMR_SPARK',\n href: 'https://cloud.tencent.com/document/product/248/45572',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrYARN',\n get label() {\n return `${t('elastic_mapReduce')}(YARN)`;\n },\n namespace: 'QCE/TXMR_YARN',\n href: 'https://cloud.tencent.com/document/product/248/45573',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrZOOKEEPER',\n get label() {\n return `${t('elastic_mapReduce')}(ZOOKEEPER)`;\n },\n namespace: 'QCE/TXMR_ZOOKEEPER',\n href: 'https://cloud.tencent.com/document/product/248/45574',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'cbs',\n get label() {\n return t('BLOCK_STORAGE');\n },\n namespace: 'QCE/BLOCK_STORAGE',\n href: 'https://cloud.tencent.com/document/product/362/2345',\n },\n {\n service: 'apigateway',\n get label() {\n return t('APIGATEWAY');\n },\n namespace: 'QCE/APIGATEWAY',\n href: 'https://cloud.tencent.com/document/product/248/45127',\n },\n {\n service: 'qaap',\n get label() {\n return t('QAAP');\n },\n namespace: 'QCE/QAAP',\n href: 'https://cloud.tencent.com/document/product/608',\n },\n {\n service: 'ecm',\n get label() {\n return t('ECM');\n },\n hideRegion: true,\n namespace: 'QCE/ECM',\n href: 'https://cloud.tencent.com/document/product/1108',\n get groupName() {\n return t('edge_computing_machine');\n },\n },\n {\n service: 'ecmBlockStorage',\n get label() {\n return t('ECM_BLOCK_STORAGE');\n },\n hideRegion: true,\n namespace: 'QCE/ECM_BLOCK_STORAGE',\n href: 'https://cloud.tencent.com/document/product/1108',\n get groupName() {\n return t('edge_computing_machine');\n },\n },\n {\n service: 'ecmLb',\n get label() {\n return t('ECM_LB');\n },\n hideRegion: true,\n namespace: 'QCE/ECM_LB',\n href: 'https://cloud.tencent.com/document/product/1108',\n get groupName() {\n return t('edge_computing_machine');\n },\n },\n {\n service: 'gse',\n get label() {\n return t('GSE');\n },\n namespace: 'QCE/GSE',\n href: 'https://cloud.tencent.com/document/product/1165',\n },\n {\n service: 'cls',\n get label() {\n return t('CLS');\n },\n namespace: 'QCE/CLS',\n href: 'https://cloud.tencent.com/document/product/614',\n },\n {\n service: 'tke',\n get label() {\n return t('TKE');\n },\n namespace: 'QCE/TKE2',\n href: 'https://cloud.tencent.com/document/product/457',\n },\n {\n service: 'ecdn',\n get label() {\n return t('ECDN');\n },\n namespace: 'QCE/DSA',\n href: 'https://cloud.tencent.com/document/product/570',\n },\n // {\n // service: 'lighthouse',\n // label: '轻量应用服务器(LIGHTHOUSE)',\n // namespace: 'QCE/LIGHTHOUSE',\n // href: 'https://cloud.tencent.com/document/product/1207',\n // },\n // {\n // service: 'tsf',\n // label: ' 微服务平台(TSF)',\n // namespace: 'QCE/TSF',\n // href: 'https://cloud.tencent.com/document/product/649',\n // },\n {\n service: 'waf',\n get label() {\n return t('WAF');\n },\n // hideRegion: true,\n namespace: 'QCE/WAF',\n href: 'https://cloud.tencent.com/document/product/627',\n },\n];\nconst Datasources = {};\nconst InitStates = {};\nconst InstanceAliasList = {};\nconst GetInstanceQueryParams = {};\n\n/**\n * 由于目录命名不规范,导致需要使用额外逻辑保证正确性。从目录到具体service的映射\n */\nconst hackModuleName = {\n // lb_loadBalance: 'loadBalance',\n postgresql: 'postgres',\n mongodb: 'mongoDB',\n clb: ['lbPrivate', 'lbPublic', 'loadBalance'],\n mr: ['mrHDFS', 'mrHBASE', 'mrHIVE', 'mrNODE', 'mrPRESTO', 'mrSPARK', 'mrYARN', 'mrZOOKEEPER'],\n};\n\nconst requireModule = (require as any).context('./', true, /^\\.\\/[a-zA-Z]\\w+\\/(datasource)|(query(_def)?)\\.ts$/);\n\nrequireModule.keys().forEach((filePath) => {\n let [, moduleName, fileName] = filePath.split('/');\n\n // hack: 这里是由于产品目录命名不规范,所以才会多这么一段代码\n moduleName = hackModuleName[moduleName] ?? moduleName;\n\n // 目录与模块的映射关系,不管是一对一还是一对多,均按数组进行统一处理\n [].concat(moduleName).forEach((module: string) => {\n // 这个service就是产品配置中的service,需要注意这里的service是根据目录名称算出来的,因此目录名称一定要和service对应\n const service = module.replace(/_([a-zA-Z])/g, (_, b) => b.toUpperCase());\n const prefix = service.toUpperCase(); // 命名规则\n\n // datasource\n if (fileName === 'datasource.ts') {\n const Cls = require(`${filePath}`).default;\n\n // 想办法为实例注入service,不能为prototype或则类本身注入,因为会造成互相污染,详尽mrDatasource\n Datasources[`${prefix}Datasource`] = class {\n constructor(...params) {\n const target = new Cls(...params, service);\n target.service = service;\n // eslint-disable-next-line no-constructor-return\n return target;\n }\n };\n }\n // query\n if (fileName === 'query.ts') {\n require(`${filePath}`);\n }\n // query_def\n if (fileName === 'query_def.ts') {\n const alias = `${prefix}InstanceAliasList`;\n const getParams = `${prefix}GetInstanceQueryParams`;\n\n const target = require(`${filePath}`);\n\n InitStates[service] = target.default; // FIXME: 这里需不需要深拷贝?\n InstanceAliasList[alias] = target[alias] ?? target['InstanceAliasList'];\n GetInstanceQueryParams[getParams] = target[getParams] ?? target['GetInstanceQueryParams'];\n }\n });\n});\n\nexport {\n InitStates as InitServiceState,\n SERVICES,\n Datasources,\n InstanceAliasList,\n GetInstanceQueryParams,\n // DefaultDimensions\n};\n\n// console.log(Datasources, InitStates, InstanceAliasList, GetInstanceQueryParams);\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/ECM_BLOCK_STORAGE';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'ecmBlockStorageQuery';\n\nconst ECMBLOCKSTORAGEInvalidDemensions = {\n uuid: 'UUID',\n diskId: 'DiskId',\n};\n\n// 需和文件名对应\nconst ECMBLOCKSTORAGEInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n diskId: 'DiskId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst ECMBLOCKSTORAGEFilterFields = {\n Limit: 20,\n Offset: 0,\n 'zone-name': [],\n 'module-id': [],\n 'module-name': [],\n 'instance-id': [],\n 'instance-name': [],\n 'ip-address': [],\n 'instance-uuid': [],\n 'instance-state': {},\n 'internet-service-provider': [],\n 'instance-family': [],\n 'image-id': [],\n 'vpc-id': [],\n 'subnet-id': [],\n};\n\nconst ECMBLOCKSTORAGEFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'zone-name',\n enDescriptor: 'zone-name',\n cnDescriptor: '排列顺序',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-id',\n enDescriptor: 'module-id',\n cnDescriptor: '模块ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-name',\n enDescriptor: 'module-name',\n cnDescriptor: '模块名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-id',\n enDescriptor: 'instance-id',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-name',\n enDescriptor: 'instance-name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ip-address',\n enDescriptor: 'ip-address',\n cnDescriptor: '内网/公网IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-uuid',\n enDescriptor: 'instance-uuid',\n cnDescriptor: '实例uuid',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-state',\n enDescriptor: 'instance-state',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '创建中', value: 'PENDING' },\n { text: '创建失败', value: 'LAUNCH_FAILED' },\n { text: '运行中', value: 'RUNNING' },\n { text: '关机', value: 'STOPPED' },\n { text: '开机中', value: 'STARTING' },\n { text: '关机中', value: 'STOPPING' },\n { text: '重启中', value: 'REBOOTING' },\n { text: '停止待销毁', value: 'SHUTDOWN' },\n { text: '销毁中', value: 'TERMINATING' },\n ],\n },\n {\n key: 'internet-service-provider',\n enDescriptor: 'internet-service-provider',\n cnDescriptor: '公网IP所属的运营商',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-family',\n enDescriptor: 'instance-family',\n cnDescriptor: '机型family',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'image-id',\n enDescriptor: 'image-id',\n cnDescriptor: '镜像ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: '实例的vpc id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'subnet-id',\n cnDescriptor: '实例的subnet id',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1108/42565',\n namespace,\n fieldDescriptor: ECMBLOCKSTORAGEFilterFieldsDescriptor,\n};\n\nconst ECMBLOCKSTORAGE_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n diskId: '',\n queries: ECMBLOCKSTORAGEFilterFields,\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n diskId: 'diskId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n DiskId: {\n dim_KeyInStorage: keyInStorage.diskId,\n dim_KeyInTarget: 'diskId',\n dim_KeyInMap: templateQueryIdMap.diskId,\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default ECMBLOCKSTORAGE_STATE;\nexport {\n ECMBLOCKSTORAGEFilterFieldsDescriptor,\n templateQueryIdMap,\n ECMBLOCKSTORAGEInstanceAliasList,\n ECMBLOCKSTORAGEInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n keyInStorage,\n queryMonitorExtraConfg,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as ECMBLOCKSTORAGEGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/APIGATEWAY';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'apigatewayQuery';\n\nconst APIGATEWAYInvalidDemensions = {\n serviceId: 'ServiceId',\n environmentName: 'EnvironmentName',\n apiid: 'Apiid',\n apiId: 'Apiid',\n};\n\n// 需和文件名对应\nconst APIGATEWAYInstanceAliasList = ['ServiceId', 'ServiceName'];\n\nconst templateQueryIdMap = {\n instance: 'ServiceId',\n environmentName: 'EnvironmentName',\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n environmentList: 'EnvironmentList',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n EnvironmentName: {\n dim_KeyInStorage: keyInStorage.environmentList,\n dim_KeyInTarget: 'EnvironmentName',\n dim_KeyInMap: templateQueryIdMap.environmentName,\n },\n};\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst APIGATEWAYFilterFields = {\n Limit: 20,\n Offset: 0,\n ServiceId: [],\n ServiceName: [],\n NotUsagePlanId: [],\n Environment: [],\n IpVersion: [],\n};\n\nconst APIGATEWAYFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ServiceId',\n enDescriptor: 'ServiceId',\n cnDescriptor: '服务id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ServiceName',\n enDescriptor: 'ServiceName',\n cnDescriptor: '服务名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'NotUsagePlanId',\n enDescriptor: 'NotUsagePlanId',\n cnDescriptor: 'NotUsagePlanId',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Environment',\n enDescriptor: 'Environment',\n cnDescriptor: '环境名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'IpVersion',\n enDescriptor: 'IpVersion',\n cnDescriptor: 'IP版本',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/628/45198',\n namespace,\n fieldDescriptor: APIGATEWAYFilterFieldsDescriptor,\n};\n\nconst APIGATEWAY_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ServiceId',\n EnvironmentName: '',\n queries: APIGATEWAYFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nexport default APIGATEWAY_STATE;\nexport {\n APIGATEWAYFilterFieldsDescriptor,\n templateQueryIdMap,\n APIGATEWAYInstanceAliasList,\n APIGATEWAYInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as APIGATEWAYGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nexport const InstanceQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '按照一个或者多个实例ID查询。实例ID形如: emr-xxxxxxxx ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'OrderField',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: '实例ID', value: 'clusterId' },\n { text: '创建时间', value: 'addTime' },\n { text: '状态', value: 'status' },\n ],\n },\n {\n key: 'Asc',\n enDescriptor: 'Order Direction',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: [\n { text: '降序', value: 0 },\n { text: '升序', value: 1 },\n ],\n },\n {\n key: 'ProjectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '实例所属项目ID',\n link: '',\n type: 'inputnumber',\n },\n {\n key: 'DisplayStrategy',\n enDescriptor: 'DisplayStrategy',\n cnDescriptor: '集群筛选策略',\n link: '',\n type: 'select',\n list: [\n { text: '未销毁的实例', value: 'clusterList' },\n { text: '正常运行的实例', value: 'monitorManage' },\n ],\n },\n];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nexport const InvalidDemensions = new Proxy(\n {},\n {\n get(target, k, receiver) {\n if (typeof k === 'string') {\n if (k.startsWith('id4')) return 'ClusterId'; // id4****\n if (k.startsWith('host4')) return 'Ip'; // host4***\n }\n return Reflect.get(target, k, receiver);\n },\n has(target, propKey) {\n return true;\n },\n }\n);\n\nexport const templateQueryIdMap = {\n instance: 'ClusterId',\n node: 'Ip',\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n node: 'nodeIP',\n};\n\n/**\n * 如果有InstanceId额外的维度,原则上都需要传入此map结构配置\n *\n * `key` 的含义:\n * 经过InvalidDemensions处理后的string。topicId => TopicId。\n * 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\n *\n * `value` 的含义:\n * @param {1} dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n * @param {2} dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n * 默认取通过InvalidDemsion处理后的key\n * @param {3} dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n * 即:templateQueryIdMap中内容。\n * 联合上面 2 的内容筛选出原始sourceMap\n */\nconst queryMonitorExtraConfg = {\n Ip: {\n dim_KeyInStorage: keyInStorage.node,\n dim_KeyInTarget: 'nodeIP',\n dim_KeyInMap: templateQueryIdMap.node,\n },\n};\n\n// 与名称挂钩的变量\nconst InstanceAliasList = ['ClusterId', 'ClusterName'];\nexport { InstanceAliasList, GetInstanceQueryParams, queryMonitorExtraConfg, keyInStorage };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n nodeIP: '',\n queries: {\n Offset: 0,\n Limit: 10,\n DisplayStrategy: '',\n OrderBy: {},\n Order: {},\n InstanceIds: [],\n ProjectId: -1,\n OrderField: '',\n Asc: '',\n },\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/V_CLB';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'vClbQuery';\n\nconst VCLBInvalidDemensions = {\n InstanceId: 'LoadBalancerId',\n // vip: 'LoadBalancerVips',\n // loadBalancerPort: 'Port',\n // protocol: 'Protocol',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst VCLBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerVips', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\nconst ForwardTypes = [\n { text: '通用的负载均衡', value: 1 },\n { text: '传统的负载均衡', value: 0 },\n];\n\nconst OrderBy = [\n { text: 'LoadBalancerName', value: 'LoadBalancerName' },\n { text: 'CreateTime', value: 'CreateTime' },\n { text: 'Domain', value: 'Domain' },\n { text: 'LoadBalancerType', value: 'LoadBalancerType' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\n\nconst WithRs = [\n { text: '没有绑定后端服务', value: 0 },\n { text: '绑定后端服务', value: 1 },\n { text: '查询全部', value: -1 },\n];\nconst VCLBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1',\n link: '',\n type: 'inputNumber',\n min: 1,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancer ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancer Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'Forward',\n enDescriptor: 'Forward',\n cnDescriptor: '负载均衡实例类型',\n link: '',\n type: 'select',\n list: ForwardTypes,\n },\n {\n key: 'Domain',\n enDescriptor: 'Domain',\n cnDescriptor: '域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义',\n link: '',\n type: 'input',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancer Vips',\n cnDescriptor: '负载均衡实例的 VIP 地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPrivateIps',\n enDescriptor: 'BackendPrivate Ips',\n cnDescriptor: '负载均衡绑定的后端服务的内网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPublicIps',\n enDescriptor: 'BackendPublic Ips',\n cnDescriptor: '负载均衡绑定的后端服务的外网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ProjectId',\n enDescriptor: 'Project ID',\n cnDescriptor: '负载均衡实例所属的项目 ID',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'VpcId',\n enDescriptor: 'Vpc ID',\n cnDescriptor: '负载均衡实例所属私有网络',\n link: '',\n type: 'input',\n },\n {\n key: 'SecurityGroup',\n enDescriptor: 'Security Group',\n cnDescriptor: '安全组ID',\n link: '',\n type: 'input',\n },\n {\n key: 'MasterZone',\n enDescriptor: 'Master Zone',\n cnDescriptor: '主可用区ID',\n link: '',\n type: 'input',\n },\n {\n key: 'WithRs',\n enDescriptor: 'WithRs',\n cnDescriptor: '负载均衡是否绑定后端服务',\n link: '',\n type: 'select',\n list: WithRs,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderType,\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/214/30685',\n namespace,\n fieldDescriptor: VCLBFilterFieldsDescriptor,\n};\nconst LBFields = {\n LoadBalancerIds: [],\n Forward: undefined,\n LoadBalancerName: '',\n Domain: '',\n LoadBalancerVips: [],\n BackendPublicIps: [],\n BackendPrivateIps: [],\n Limit: 20,\n Offset: 0,\n ProjectId: undefined,\n WithRs: {},\n VpcId: '',\n SecurityGroup: '',\n MasterZone: '',\n OrderBy: {},\n OrderType: {},\n};\n\nconst VCLB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n Port: '',\n Protocol: '',\n listener: '',\n // listenerAlias: 'ListenerId',\n queries: LBFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-bangkok' },\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'ap-seoul' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nconst clbNamespaceMap = {\n public: 'QCE/LB_PUBLIC',\n private: 'QCE/LB_PRIVATE',\n};\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\nexport default VCLB_STATE;\nexport {\n VCLBFilterFieldsDescriptor,\n templateQueryIdMap,\n VCLBInstanceAliasList,\n VCLBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n clbNamespaceMap,\n modifyDimensons,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMLBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CYNOSDB_MYSQL';\n\n// 按照驼峰方式命名,和SERVICES保持一致,abcDeF会成为angular组件名字\nconst queryEditorName = 'cynosdbMysqlQuery';\n\nconst cynosdbMysqlFilterFields = {\n Limit: 20,\n Offset: 0,\n OrderBy: {},\n OrderByType: {},\n InstanceIds: [],\n DbType: {},\n // Status: '',\n};\n\nconst cynosdbMysqlFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 1000,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '实例id列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: '创建时间', value: 'CREATETIME' },\n { text: '过期时间', value: 'PERIODENDTIME' },\n ],\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序类型',\n link: '',\n type: 'select',\n list: [\n { text: '升序', value: 'ASC' },\n { text: '降序', value: 'DESC' },\n ],\n },\n {\n key: 'DbType',\n enDescriptor: 'DbType',\n cnDescriptor: '引擎类型',\n link: '',\n type: 'select',\n list: [\n { text: 'MYSQL', value: 'MYSQL' },\n { text: 'POSTGRESQL', value: 'POSTGRESQL' },\n ],\n },\n // {\n // key: 'Status',\n // enDescriptor: 'Status',\n // cnDescriptor: '实例状态',\n // link: '',\n // type: 'input',\n // },\n];\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n];\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1003/48334',\n namespace,\n fieldDescriptor: cynosdbMysqlFilterFieldsDescriptor,\n};\n\nconst CYNOSDB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: cynosdbMysqlFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n// 和文件名字一样CYNOSDBMYSQL\nconst CYNOSDBMYSQLInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\nconst CYNOSDBInvalidDemensions = {\n instanceid: 'InstanceId',\n instanceId: 'InstanceId',\n};\nconst checkKeys = ['instanceId'];\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\n\nexport default CYNOSDB_STATE;\nexport {\n cynosdbMysqlFilterFieldsDescriptor,\n templateQueryIdMap,\n CYNOSDBMYSQLInstanceAliasList,\n CYNOSDBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n checkKeys,\n // params前缀为service的全大写\n GetInstanceQueryParams as CYNOSDBMYSQLGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nexport const SCFQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '支持FunctionName模糊匹配',\n link: '',\n type: 'input',\n },\n {\n key: 'Namespace',\n enDescriptor: 'Namespace',\n cnDescriptor: '云函数命名空间',\n link: '',\n type: 'input',\n },\n {\n key: 'Description',\n enDescriptor: 'Description',\n cnDescriptor: '函数描述,支持模糊搜索',\n link: '',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: 'AddTime', value: 'AddTime' },\n { text: 'ModTime', value: 'ModTime' },\n { text: 'FunctionName', value: 'FunctionName' },\n ],\n },\n {\n key: 'Order',\n enDescriptor: 'Order Direction',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: [\n { text: 'ASC', value: 'ASC' },\n { text: 'DESC', value: 'DESC' },\n ],\n },\n // {\n // key: 'Filters',\n // enDescriptor: 'Filters',\n // cnDescriptor: '按照标签键值对进行过滤',\n // link: '',\n // type: 'dropdownmulti',\n // },\n];\n\nconst SCF_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'FunctionName',\n version: '',\n queries: {\n Offset: 0,\n Limit: 20,\n OrderBy: {},\n Order: {},\n SearchKey: '',\n Namespace: '',\n Description: '',\n // Filters: {},\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst SCFInstanceAliasList = ['FunctionId', 'FunctionName'];\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nconst SCFInvalidDemensions = {\n functionName: 'FunctionName',\n namespace: 'Namespace',\n version: 'Version',\n};\n\nconst templateQueryIdMap = {\n instance: 'FunctionName',\n version: 'Version',\n};\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n version: 'version',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n Version: {\n dim_KeyInStorage: keyInStorage.version,\n dim_KeyInTarget: 'version',\n dim_KeyInMap: templateQueryIdMap.version,\n },\n};\nexport default SCF_STATE;\nexport {\n SCFInstanceAliasList,\n SCFInvalidDemensions,\n queryMonitorExtraConfg,\n regionSupported,\n templateQueryIdMap,\n keyInStorage,\n GetInstanceQueryParams as SCFGetInstanceQueryParams,\n};\n\n// monitor监控数据默认支持的维度\nexport const SCFDefaultDimensionList = ['functionName', 'namespace', 'version'];\n","module.exports = __WEBPACK_EXTERNAL_MODULE__26__;","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/CLS';\nconst queryEditorName = 'clsQuery';\n\nconst CLSInvalidDemensions = {\n // instanceid: 'TopicId',\n};\n\n// 需和文件名对应\nconst CLSInstanceAliasList = ['TopicId', 'TopicName'];\n\nconst templateQueryIdMap = {\n instance: 'TopicId',\n};\n\n// 需要缓存到storage的内容的key列表\n// const keyInStorage = {\n// fleet: 'fleet', // 实例队列\n// queue: 'queueName', // 会话队列\n// };\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\n// const queryMonitorExtraConfg = {\n// FleetId: {\n// dim_KeyInStorage: keyInStorage.fleet,\n// dim_KeyInTarget: 'FleetId',\n// dim_KeyInMap: templateQueryIdMap.FleetId,\n// },\n// Name: {\n// dim_KeyInStorage: keyInStorage.queue,\n// dim_KeyInTarget: 'Name',\n// dim_KeyInMap: templateQueryIdMap.Name,\n// },\n// };\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst CLSFilterFields = {\n Limit: 20,\n Offset: 0,\n topicName: [],\n topicId: [],\n logsetName: [],\n logsetId: [],\n tagKey: [],\n 'tag:tagKey': [],\n storageType: {},\n};\n\nconst CLSFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'topicName',\n enDescriptor: 'topicName',\n cnDescriptor: '日志主题名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'topicId',\n enDescriptor: 'topicId',\n cnDescriptor: '日志主题ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'logsetName',\n enDescriptor: 'logsetName',\n cnDescriptor: '日志集名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'logsetId',\n enDescriptor: 'logsetId',\n cnDescriptor: '日志集ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'tag:tagKey',\n enDescriptor: 'tag - tagKey',\n cnDescriptor: '标签键值对',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'storageType',\n enDescriptor: 'storageType',\n cnDescriptor: '日志主题的存储类型',\n link: '',\n type: 'select',\n list: [\n { text: '实时存储', value: 'hot' },\n { text: '离线存储', value: 'cold' },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/614/56454',\n namespace,\n fieldDescriptor: CLSFilterFieldsDescriptor,\n};\n\nconst CLS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'TopicId',\n uin: '',\n queries: CLSFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-bangkok' },\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'ap-seoul' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n // item.Dimensions = item.Dimensions.map((v) => CLSInvalidDemensions[v] || v);\n item.Dimensions = ['uin', 'TopicId'];\n });\n return metricTmp;\n}\nexport default CLS_STATE;\nexport {\n CLSFilterFieldsDescriptor,\n templateQueryIdMap,\n CLSInstanceAliasList,\n CLSInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n // queryMonitorExtraConfg,\n // fleetId,\n // keyInStorage,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CLSGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/SQLSERVER';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'sqlserverQuery';\n\nconst SQLSERVERInvalidDemensions = {\n resourceId: 'InstanceId',\n};\n\nconst SQLSERVERInstanceAliasList = ['InstanceId', 'Name'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst SQLSERVERNETFilterFields = {\n Limit: 20,\n Offset: 0,\n ProjectId: null,\n Status: {},\n InstanceIdSet: [],\n PayMode: {},\n VpcId: '',\n SubnetId: '',\n VipSet: [],\n InstanceNameSet: [],\n VersionSet: [],\n Zone: '',\n};\n\nconst SQLSERVERNETFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ProjectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n list: [\n { text: '申请中', value: 1 },\n { text: '运行中', value: 2 },\n { text: '受限运行中 (主备切换中)', value: 3 },\n { text: '已隔离', value: 4 },\n { text: '回收中', value: 5 },\n { text: '已回收', value: 6 },\n { text: '任务执行中', value: 7 },\n { text: '已下线', value: 8 },\n { text: '实例扩容中', value: 9 },\n { text: '实例迁移中', value: 10 },\n { text: '只读', value: 11 },\n { text: '重启中', value: 12 },\n ],\n },\n {\n key: 'InstanceIdSet',\n enDescriptor: 'InstanceIdSet',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'PayMode',\n enDescriptor: 'PayMode',\n cnDescriptor: '子网实例ID',\n link: '',\n type: 'select',\n list: [\n { text: '包年包月', value: 1 },\n { text: '按量计费', value: 0 },\n ],\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '实例所属VPC的唯一字符串ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '实例所属子网的唯一字符串ID',\n link: '',\n type: 'input',\n },\n {\n key: 'VipSet',\n enDescriptor: 'VipSet',\n cnDescriptor: '实例内网地址列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'InstanceNameSet',\n enDescriptor: 'InstanceNameSet',\n cnDescriptor: '实例名称列表, 模糊查询',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'VersionSet',\n enDescriptor: 'VersionSet',\n cnDescriptor: '实例版本代号列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Zone',\n enDescriptor: 'Zone',\n cnDescriptor: '实例可用区',\n link: '',\n type: 'dropdown',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/238/19969',\n namespace,\n fieldDescriptor: SQLSERVERNETFilterFieldsDescriptor,\n};\n\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-nanjing' },\n { value: 'ap-seoul' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-moscow' },\n { value: 'na-siliconvalley' },\n];\nconst SQLSERVER_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: SQLSERVERNETFilterFields,\n};\n\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['resourceId'];\n });\n return metricTmp;\n}\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nexport default SQLSERVER_STATE;\nexport {\n SQLSERVERNETFilterFieldsDescriptor,\n templateQueryIdMap,\n SQLSERVERInstanceAliasList,\n SQLSERVERInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n // 对应产品的service的全大写拼接InstanceQueryParams\n GetInstanceQueryParams as SQLSERVERGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/BM_INTRA_LB';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'bmIntraLbQuery';\n\nconst BMINTRALBInvalidDemensions = {\n vip: 'LoadBalancerVips',\n vpcId: 'VpcId',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst BMINTRALBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerVips', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst BMINTRALBFilterFields = {\n Limit: 20,\n Offset: 0,\n LoadBalancerIds: [],\n LoadBalancerName: [],\n LoadBalancerVips: [],\n};\n\nconst BMINTRALBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancerIds',\n cnDescriptor: '负载均衡器ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancerName',\n cnDescriptor: '负载均衡器名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancerVips',\n cnDescriptor: '负载均衡获得的公网IP地址',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1027/33280',\n namespace,\n fieldDescriptor: BMINTRALBFilterFieldsDescriptor,\n};\n\nconst BMINTRALB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n queries: BMINTRALBFilterFields,\n};\nconst BMLBValidMetricsT = ['Inpkg', 'Outpkg', 'Intraffic', 'Outtraffic', 'Connum', 'Req'];\nfunction isValidMetric(metric) {\n const validMetrics = _.map(BMLBValidMetricsT, _.toUpper);\n return _.indexOf(validMetrics, _.toUpper(metric.MetricName)) !== -1;\n}\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nexport default BMINTRALB_STATE;\nexport {\n BMINTRALBFilterFieldsDescriptor,\n templateQueryIdMap,\n BMINTRALBInstanceAliasList,\n BMINTRALBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n isValidMetric,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMINTRALBGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/BM_LB';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'bmLbQuery';\n\nconst CPMInvalidDemensions = {\n vip: 'LoadBalancerVips',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst BMLBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerVips', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst CPMFilterFields = {\n Limit: 20,\n Offset: 0,\n LoadBalancerIds: [],\n LoadBalancerName: [],\n LoadBalancerVips: [],\n};\n\nconst CPMFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancerIds',\n cnDescriptor: '负载均衡器ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancerName',\n cnDescriptor: '负载均衡器名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancerVips',\n cnDescriptor: '负载均衡获得的公网IP地址',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1027/33280',\n namespace,\n fieldDescriptor: CPMFilterFieldsDescriptor,\n};\n\nconst CPM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n queries: CPMFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nconst BMLBValidMetricsT = ['Inpkg', 'Outpkg', 'Intraffic', 'Outtraffic', 'Connum', 'Req'];\nfunction isValidMetric(metric) {\n const validMetrics = _.map(BMLBValidMetricsT, _.toUpper);\n return _.indexOf(validMetrics, _.toUpper(metric.MetricName)) !== -1;\n}\nexport default CPM_STATE;\nexport {\n CPMFilterFieldsDescriptor,\n templateQueryIdMap,\n BMLBInstanceAliasList,\n CPMInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n isValidMetric,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMLBGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/BM_PCX';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'bmPcxQuery';\n\nconst BMPCXInvalidDemensions = {\n peeringConnectionId: 'VpcPeerConnectionId',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst BMPCXInstanceAliasList = ['VpcPeerConnectionId', 'VpcPeerConnectionName'];\n\nconst templateQueryIdMap = {\n instance: 'VpcPeerConnectionId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst BMPCXFilterFields = {\n Limit: 20,\n Offset: 0,\n VpcPeerConnectionIds: [],\n};\n\nconst BMPCXFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'VpcPeerConnectionIds',\n enDescriptor: 'VpcPeerConnectionIds',\n cnDescriptor: '对等连接实例ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/product/1024/36903',\n namespace,\n fieldDescriptor: BMPCXFilterFieldsDescriptor,\n};\n\nconst BMPCX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'VpcPeerConnectionId',\n queries: BMPCXFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['peeringConnectionId'];\n });\n return metricTmp;\n}\nexport default BMPCX_STATE;\nexport {\n BMPCXFilterFieldsDescriptor,\n templateQueryIdMap,\n BMPCXInstanceAliasList,\n BMPCXInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMPCXGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/BLOCK_STORAGE';\nconst queryEditorName = 'cbsQuery';\n\nconst CBSInvalidDemensions = {\n diskId: 'DiskId',\n InstanceId: 'InstanceId',\n diskname: 'DiskName',\n unInstanceId: 'InstanceId',\n};\n\nconst CBSInstanceAliasList = ['DiskId', 'DiskName'];\n\nconst templateQueryIdMap = {\n instance: 'DiskId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst CBSFilterFields = {\n Limit: 20,\n Offset: 0,\n DiskIds: [],\n OrderField: [],\n Order: [],\n ReturnBindAutoSnapshotPolicy: false,\n};\n\nconst CBSFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'DiskIds',\n enDescriptor: 'DiskIds',\n cnDescriptor: '云硬盘ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Order',\n enDescriptor: 'Order',\n cnDescriptor: '排列顺序',\n link: '',\n type: 'select',\n list: [\n { text: '升序排列', value: 'ASC' },\n { text: '降序排列', value: 'DESC' },\n ],\n },\n {\n key: 'OrderField',\n enDescriptor: 'OrderField',\n cnDescriptor: '排序的依据字段',\n link: '',\n type: 'select',\n list: [\n { text: '云盘的创建时间排序', value: 'CREATE_TIME' },\n { text: '云盘的到期时间排序', value: 'DEADLINE' },\n ],\n },\n {\n key: 'ReturnBindAutoSnapshotPolicy',\n enDescriptor: 'ReturnBindAutoSnapshotPolicy',\n cnDescriptor: '否需要返回云盘绑定的定期快照策略ID',\n link: '',\n type: 'switch',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/362/16315',\n namespace,\n fieldDescriptor: CBSFilterFieldsDescriptor,\n};\n\nconst CBS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DiskId',\n queries: CBSFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nfunction isValidMetric(metricObj: any = {}) {\n const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n // console.log('dimension', dimension, dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1);\n return dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1;\n}\nexport default CBS_STATE;\nexport {\n CBSFilterFieldsDescriptor,\n templateQueryIdMap,\n CBSInstanceAliasList,\n CBSInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n isValidMetric,\n GetInstanceQueryParams as CBSGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CDN_LOG_DATA';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'cdnProvinceQuery';\n\nconst CDNPROVINCEInvalidDemensions = {\n domain: 'Domain',\n // isp: 'Isp',\n projectid: 'ProjectId',\n province: 'district',\n appid: 'AppId',\n};\n\n// 需和文件名对应\nconst CDNPROVINCEInstanceAliasList = ['Domain', 'ProjectId'];\n\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst CDNPROVINCEFilterFields = {\n Limit: 20,\n Offset: 0,\n origin: [],\n domain: [],\n resourceId: [],\n status: {},\n serviceType: {},\n projectId: [],\n domainType: {},\n fullUrlCache: {},\n https: {},\n originPullProtocol: {},\n tagKey: [],\n};\n\nconst CDNPROVINCEFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumberMulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst CDNPROVINCE_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n // Isp Province分别在两个接口,单独保存在state\n isp: '',\n district: '',\n queries: CDNPROVINCEFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// const regionSupported = [\n// { text: '华北地区(北京)', value: 'ap-beijing' },\n// { text: '西南地区(成都)', value: 'ap-chengdu' },\n// { text: '西南地区(重庆)', value: 'ap-chongqing' },\n// { text: '华南地区(广州)', value: 'ap-guangzhou' },\n// { text: '港澳台地区(中国香港)', value: 'ap-hongkong' },\n// { text: '亚太南部(孟买)', value: 'ap-mumbai' },\n// { text: '华东地区(南京)', value: 'ap-nanjing' },\n// { text: '华东地区(上海)', value: 'ap-shanghai' },\n// { text: '华东地区(上海金融)', value: 'ap-shanghai-fsi' },\n// { text: '华南地区(深圳金融)', value: 'ap-shenzhen-fsi' },\n// { text: '亚太东南(新加坡)', value: 'ap-singapore' },\n// { text: '亚太东北(东京)', value: 'ap-tokyo' },\n// { text: '欧洲地区(法兰克福)', value: 'eu-frankfurt' },\n// { text: '美国东部(弗吉尼亚)', value: 'na-ashburn' },\n// { text: '美国西部(硅谷)', value: 'na-siliconvalley' },\n// { text: '北美地区(多伦多)', value: 'na-toronto' },\n// ];\nexport default CDNPROVINCE_STATE;\nexport {\n CDNPROVINCEFilterFieldsDescriptor,\n templateQueryIdMap,\n CDNPROVINCEInstanceAliasList,\n CDNPROVINCEInvalidDemensions,\n namespace,\n queryEditorName,\n // regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CDNPROVINCEGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CEIP_SUMMARY';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'ceipSummaryQuery';\n\nconst CEIPInvalidDemensions = {\n vip: 'AddressIp',\n eip: 'AddressIp',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst CEIPSUMMARYInstanceAliasList = ['AddressId', 'AddressName', 'AddressIp'];\n\nconst templateQueryIdMap = {\n instance: 'AddressId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst CEIPFilterFields = {\n Limit: 20,\n Offset: 0,\n 'address-id': [],\n 'address-name': [],\n 'address-ip': [],\n 'address-status': {},\n 'is-arrears': {},\n 'address-isp': {},\n 'instance-id': [],\n 'private-ip-address': [],\n 'network-interface-id': [],\n};\n\nconst CEIPFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'address-id',\n enDescriptor: 'address-id',\n cnDescriptor: ' EIP 的唯一 ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'address-name',\n enDescriptor: 'address-name',\n cnDescriptor: 'EIP 名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'address-ip',\n enDescriptor: 'address-ip',\n cnDescriptor: 'EIP 的 IP 地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'address-status',\n enDescriptor: 'address-status',\n cnDescriptor: 'EIP 的状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: 'CREATING', value: 'CREATING' },\n { text: 'BINDING', value: 'BINDING' },\n { text: 'BIND', value: 'BIND' },\n { text: 'UNBINDING', value: 'UNBINDING' },\n { text: 'UNBIND', value: 'UNBIND' },\n { text: 'OFFLINING', value: 'OFFLINING' },\n { text: 'BIND_ENI', value: 'BIND_ENI' },\n ],\n },\n {\n key: 'instance-id',\n enDescriptor: 'instance-id',\n cnDescriptor: 'EIP 绑定的实例 ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'private-ip-address',\n cnDescriptor: 'EIP 绑定的内网 IP ',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'network-interface-id',\n enDescriptor: 'network-interface-id',\n cnDescriptor: ' EIP 绑定的弹性网卡 ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'is-arrears',\n enDescriptor: 'is-arrears',\n cnDescriptor: 'EIP 是否欠费',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '欠费状态', value: 'TRUE' },\n { text: '费用状态正常', value: 'FALSE' },\n ],\n },\n {\n key: 'address-isp',\n enDescriptor: 'address-isp',\n cnDescriptor: '运营商类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: 'BGP', value: 'BGP' },\n { text: 'CMCC', value: 'CMCC' },\n { text: 'CUCC', value: 'CUCC' },\n { text: 'CTCC', value: 'CTCC' },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/16702',\n namespace,\n fieldDescriptor: CEIPFilterFieldsDescriptor,\n};\n\nconst CEIP_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'AddressId',\n queries: CEIPFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['eip'];\n });\n return metricTmp;\n}\nexport default CEIP_STATE;\nexport {\n CEIPFilterFieldsDescriptor,\n templateQueryIdMap,\n CEIPSUMMARYInstanceAliasList,\n CEIPInvalidDemensions,\n namespace,\n queryEditorName,\n modifyDimensons,\n queryEditorConfig,\n GetInstanceQueryParams as CEIPSUMMARYGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { FildDescriptorType } from '../_base/types';\n\nexport const InstanceQueryDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 50,\n },\n {\n key: 'TopicName',\n enDescriptor: 'TopicName',\n cnDescriptor: '精确匹配TopicName',\n link: '',\n type: 'input',\n },\n {\n key: 'TagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '标签搜索',\n link: '',\n type: 'input',\n },\n];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nexport const InvalidDemensions = {\n topicId: 'TopicId',\n};\n\n// 因为cmq那边,以TopciName为主键\nexport const templateQueryIdMap = {\n instance: 'TopicName',\n subscription: 'SubscriptionId',\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n subscriptionId: 'subscriptionId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n subscriptionId: {\n dim_KeyInStorage: keyInStorage.subscriptionId,\n dim_KeyInTarget: 'subscriptionId',\n dim_KeyInMap: templateQueryIdMap.subscription,\n },\n};\n// 与名称挂钩的变量\nconst InstanceAliasList = ['TopicName', 'TopicId'];\nexport { InstanceAliasList, GetInstanceQueryParams, queryMonitorExtraConfg, keyInStorage };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'TopicName',\n subscriptionId: '',\n queries: {\n Offset: 0,\n Limit: 20,\n TopicName: '',\n TagKey: '',\n },\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/CPM';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'cpmQuery';\n\nconst CPMInvalidDemensions = {\n instanceId: 'InstanceId',\n // uniqid: 'InstanceId',\n};\n\nconst CPMInstanceAliasList = ['InstanceId', 'Name'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst CPMFilterFields = {\n Limit: 20,\n Offset: 0,\n DeviceClassCode: '',\n InstanceIds: [],\n WanIps: [],\n LanIps: [],\n Alias: '',\n VagueIp: '',\n AutoRenewFlag: {},\n VpcId: '',\n SubnetId: '',\n DeviceType: {},\n IsLuckyDevice: {},\n};\n\nconst CPMFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'DeviceClassCode',\n enDescriptor: 'DeviceClassCode',\n cnDescriptor: '机型ID',\n link: '',\n type: 'dropdown',\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '设备ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'WanIps',\n enDescriptor: 'WanIps',\n cnDescriptor: '外网IP数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LanIps',\n enDescriptor: 'LanIps',\n cnDescriptor: '内网IP数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Alias',\n enDescriptor: 'Alias',\n cnDescriptor: '设备名称',\n link: '',\n type: 'input',\n },\n {\n key: 'VagueIp',\n enDescriptor: 'VagueIp',\n cnDescriptor: '模糊IP查询',\n link: '',\n type: 'input',\n },\n {\n key: 'AutoRenewFlag',\n enDescriptor: 'AutoRenewFlag',\n cnDescriptor: '自动续费标志',\n link: '',\n type: 'select',\n list: [\n { text: '不自动续费', value: 0 },\n { text: '自动续费', value: 1 },\n ],\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络唯一ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '子网唯一ID',\n link: '',\n type: 'input',\n },\n {\n key: 'DeviceType',\n enDescriptor: 'DeviceType',\n cnDescriptor: '子网实例ID',\n link: '',\n type: 'select',\n list: [\n { text: '计算型', value: 'compute' },\n { text: '标准型', value: 'standard' },\n { text: '存储型', value: 'storage' },\n ],\n },\n {\n key: 'IsLuckyDevice',\n enDescriptor: 'IsLuckyDevice',\n cnDescriptor: '竞价实例机器过滤',\n link: '',\n type: 'select',\n list: [\n { text: '非竞价实例机器', value: 0 },\n { text: '竞价实例的机器', value: 1 },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/386/32904',\n namespace,\n fieldDescriptor: CPMFilterFieldsDescriptor,\n};\n\nconst CPM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: CPMFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['instanceId'];\n });\n return metricTmp;\n}\nexport default CPM_STATE;\nexport {\n CPMFilterFieldsDescriptor,\n templateQueryIdMap,\n CPMInstanceAliasList,\n CPMInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CPMGetInstanceQueryParams,\n};\n","import { cloneDeep, compact, forEach, get, isArray, isEmpty, isObject, omit, uniq } from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\n\nconst namespace = 'QCE/DSA';\nconst queryEditorName = 'ecdnQuery';\n\nconst ECDNInstanceAliasList = ['Domain'];\n\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\n\nconst ECDNInvalidDemensions = {\n domain: 'Domain',\n projectid: 'ProjectId',\n};\n\nconst ECDN_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: {\n Limit: 100,\n Offset: 0,\n origin: [],\n domain: [],\n resourceId: [],\n status: [],\n disable: [],\n projectId: [],\n fullUrlCache: [],\n https: [],\n originPullProtocol: [],\n area: [],\n tagKey: [],\n },\n};\n\nconst ECDNFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'origin',\n enDescriptor: 'Origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'domain',\n enDescriptor: 'Domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'ResourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'status',\n enDescriptor: 'Status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'disable',\n enDescriptor: 'Disable',\n cnDescriptor: '域名封禁状态',\n link: '',\n type: 'select',\n list: [\n { text: 'normal', value: 'normal' },\n { text: 'unlicensed', value: 'unlicensed' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'FullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'Https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'OriginPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'https', value: 'https' },\n { text: 'follow', value: 'follow' },\n ],\n },\n {\n key: 'area',\n enDescriptor: 'Area',\n cnDescriptor: '加速区域',\n link: '',\n type: 'select',\n list: [\n { text: 'mainland', value: 'mainland' },\n { text: 'overseas', value: 'overseas' },\n { text: 'global', value: 'global' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/570/42462',\n namespace,\n fieldDescriptor: ECDNFilterFieldsDescriptor,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!isEmpty(queries)) {\n params.Limit = get(queries, 'Limit', 20) || 20;\n params.Offset = get(queries, 'Offset', 0) || 0;\n const _queries = omit(queries, ['Offset', 'Limit']);\n const Filters: any[] = [];\n forEach(_queries, (item: any, key) => {\n if (isArray(item)) {\n item = compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Value: uniq(item).slice(0, 5) });\n }\n } else if (isObject(item)) {\n if (!isEmpty(get(item, 'value', []))) {\n Filters.push({ Name: key, Value: [get(item, 'value', [])].slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters.map((item) => {\n if (item.Name === 'domain') {\n return { ...item, Fuzzy: true };\n }\n return item;\n });\n return params;\n }\n }\n return params;\n}\n\nfunction modifyDimensons(metricItem) {\n const metricTmp = cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['domain', 'projectid'];\n });\n return metricTmp;\n}\n\nexport default ECDN_STATE;\n\nexport {\n ECDNFilterFieldsDescriptor,\n templateQueryIdMap,\n ECDNInstanceAliasList,\n ECDNInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as ECDNGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/ECM';\nconst queryEditorName = 'ecmQuery';\n\nconst ECMInvalidDemensions = {\n // diskId: 'InstanceId',\n uuid: 'UUID',\n // unInstanceId: 'InstanceId',\n};\n\nconst ECMInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst ECMFilterFields = {\n Limit: 20,\n Offset: 0,\n zone: [],\n 'zone-name': [],\n 'module-id': [],\n 'module-name': [],\n 'instance-id': [],\n 'instance-name': [],\n 'ip-address': [],\n 'instance-uuid': [],\n 'instance-state': {},\n 'internet-service-provider': [],\n 'instance-family': [],\n 'image-id': [],\n 'vpc-id': [],\n 'subnet-id': [],\n};\n\nconst ECMFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'zone',\n enDescriptor: 'zone',\n cnDescriptor: '可用区英文标识',\n link: '',\n type: 'dropdownMulti',\n },\n {\n key: 'zone-name',\n enDescriptor: 'zone-name',\n cnDescriptor: '排列顺序',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-id',\n enDescriptor: 'module-id',\n cnDescriptor: '模块ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-name',\n enDescriptor: 'module-name',\n cnDescriptor: '模块名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-id',\n enDescriptor: 'instance-id',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-name',\n enDescriptor: 'instance-name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ip-address',\n enDescriptor: 'ip-address',\n cnDescriptor: '内网/公网IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-uuid',\n enDescriptor: 'instance-uuid',\n cnDescriptor: '实例uuid',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-state',\n enDescriptor: 'instance-state',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '创建中', value: 'PENDING' },\n { text: '创建失败', value: 'LAUNCH_FAILED' },\n { text: '运行中', value: 'RUNNING' },\n { text: '关机', value: 'STOPPED' },\n { text: '开机中', value: 'STARTING' },\n { text: '关机中', value: 'STOPPING' },\n { text: '重启中', value: 'REBOOTING' },\n { text: '停止待销毁', value: 'SHUTDOWN' },\n { text: '销毁中', value: 'TERMINATING' },\n ],\n },\n {\n key: 'internet-service-provider',\n enDescriptor: 'internet-service-provider',\n cnDescriptor: '公网IP所属的运营商',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-family',\n enDescriptor: 'instance-family',\n cnDescriptor: '机型family',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'image-id',\n enDescriptor: 'image-id',\n cnDescriptor: '镜像ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: '实例的vpc id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'subnet-id',\n cnDescriptor: '实例的subnet id',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1108/42565',\n namespace,\n fieldDescriptor: ECMFilterFieldsDescriptor,\n};\n\nconst ECM_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: ECMFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// function isValidMetric(metricObj: any = {}) {\n// const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n// // console.log('dimension', dimension, dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1);\n// return dimension.length === 1 &&( _.indexOf(dimension, 'UUID') !== -1 || _.indexOf(dimension, 'uuid') !== -1);\n// }\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['UUID'];\n });\n return metricTmp;\n}\nexport default ECM_STATE;\nexport {\n ECMFilterFieldsDescriptor,\n templateQueryIdMap,\n ECMInstanceAliasList,\n ECMInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as ECMGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nconst namespace = 'QCE/POSTGRES';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'postgresQuery';\n\nconst PostgresFields = {\n 'db-instance-id': [],\n 'db-instance-name': [],\n};\n\nconst PostgresFieldsDescriptor: FildDescriptorType = [\n {\n key: 'db-instance-id',\n enDescriptor: 'DB Instance ID',\n cnDescriptor: 'DB 实例ID',\n link: '',\n type: 'inputMulti',\n min: 0,\n },\n {\n key: 'db-instance-name',\n enDescriptor: 'DB Instance Name',\n cnDescriptor: 'DB 实例名称',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/409/16773',\n namespace,\n fieldDescriptor: PostgresFieldsDescriptor,\n};\nconst POSTGRESInstanceAliasList = ['DBInstanceId', 'DBInstanceName'];\n\nconst POSTGRES_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DBInstanceId',\n queries: {\n Limit: 20,\n Offset: 0,\n Filters: { ...PostgresFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['resourceId'];\n });\n return metricTmp;\n}\nconst PostgreInvalidDemensions = {\n uid: 'DBInstanceId',\n resourceId: 'DBInstanceId',\n};\nconst templateQueryIdMap = {\n instance: 'DBInstanceId',\n};\nexport default POSTGRES_STATE;\n\nexport {\n PostgresFieldsDescriptor,\n POSTGRESInstanceAliasList,\n templateQueryIdMap,\n modifyDimensons,\n namespace,\n queryEditorName,\n queryEditorConfig,\n PostgreInvalidDemensions,\n GetInstanceQueryParams as POSTGRESGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VPC_NET_DETECT';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'vpcNetDetectQuery';\n\nconst VPCNETInvalidDemensions = {\n netdetectid: 'NetDetectId',\n netDetectId: 'NetDetectId',\n};\n\nconst VPCNETDETECTInstanceAliasList = ['NetDetectId', 'NetDetectName'];\n\nconst templateQueryIdMap = {\n instance: 'NetDetectId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst VPCNETFilterFields = {\n Limit: 20,\n Offset: 0,\n 'vpc-id': [],\n 'net-detect-id': [],\n 'subnet-id': [],\n 'net-detect-name': [],\n};\n\nconst VPCNETFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: 'VPC实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'net-detect-id',\n enDescriptor: 'net-detect-id',\n cnDescriptor: '网络探测实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'subnet-id',\n cnDescriptor: '子网实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'net-detect-name',\n enDescriptor: 'net-detect-name',\n cnDescriptor: '网络探测名称',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/38696',\n namespace,\n fieldDescriptor: VPCNETFilterFieldsDescriptor,\n};\n\nconst VPCNET_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'NetDetectId',\n queries: VPCNETFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['netDetectId'];\n });\n return metricTmp;\n}\nexport default VPCNET_STATE;\nexport {\n VPCNETFilterFieldsDescriptor,\n templateQueryIdMap,\n VPCNETDETECTInstanceAliasList,\n VPCNETInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as VPCNETDETECTGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/WAF';\nconst queryEditorName = 'wafQuery';\nconst WAFFilterFields = {\n Limit: 20,\n Offset: 0,\n origin: [],\n domain: [],\n resourceId: [],\n status: {},\n serviceType: {},\n projectId: [],\n domainType: {},\n fullUrlCache: {},\n https: {},\n originPullProtocol: {},\n tagKey: [],\n};\n\nconst WAFFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumberMulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/228/41118',\n namespace,\n fieldDescriptor: WAFFilterFieldsDescriptor,\n};\nconst WAF_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: WAFFilterFields,\n};\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n];\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n\nconst WAFInstanceAliasList = ['Domain', 'ProjectId'];\n\nconst WAFInvalidDemensions = {\n projectId: 'ProjectId',\n domain: 'Domain',\n};\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\nexport default WAF_STATE;\nexport {\n WAFFilterFieldsDescriptor,\n templateQueryIdMap,\n WAFInstanceAliasList,\n WAFInvalidDemensions,\n namespace,\n regionSupported,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as WAFGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nconst InstanceTypes = [\n { text: '主实例', value: 1 },\n { text: '备灾实例', value: 2 },\n { text: '只读实例', value: 3 },\n];\n\nconst Status = [\n { text: '创建中', value: 0 },\n { text: '运行中', value: 1 },\n { text: '隔离中', value: 4 },\n { text: '已隔离', value: 5 },\n];\n\nconst PayTypes = [\n { text: '包年包月', value: 0 },\n { text: '小时计费', value: 1 },\n];\n\nconst TaskStatus = [\n { text: '没有任务', value: 0 },\n { text: '升级中', value: 1 },\n { text: '数据导入中', value: 2 },\n { text: '开放Slave中', value: 3 },\n { text: '外网访问开通中', value: 4 },\n { text: '批量操作执行中', value: 5 },\n { text: '回档中', value: 6 },\n { text: '外网访问关闭中', value: 7 },\n { text: '密码修改中', value: 8 },\n { text: '实例名修改中', value: 9 },\n { text: '重启中', value: 10 },\n { text: '自建迁移中', value: 12 },\n { text: '删除库表中', value: 13 },\n { text: '灾备实例创建同步中', value: 14 },\n { text: '升级待切换', value: 15 },\n { text: '升级切换中', value: 16 },\n { text: '升级切换完成', value: 17 },\n];\n\nconst EngineVersions = [\n { text: '5.1', value: '5.1' },\n { text: '5.5', value: '5.5' },\n { text: '5.6', value: '5.6' },\n { text: '5.7', value: '5.7' },\n];\n\nconst OrderBy = [\n { text: 'InstanceId', value: 'InstanceId' },\n { text: 'InstanceName', value: 'InstanceName' },\n { text: 'CreateTime', value: 'CreateTime' },\n { text: 'DeadlineTime', value: 'DeadlineTime' },\n];\n\nconst OrderDirection = [\n { text: 'ASC', value: 'ASC' },\n { text: 'DESC', value: 'DESC' },\n];\n\nconst InitFlag = [\n { text: '未初始化', value: 0 },\n { text: '初始化', value: 1 },\n];\n\nconst CdbErrors = [\n { text: '未锁定', value: 0 },\n { text: '锁定', value: 1 },\n];\n\nconst CDBFields = {\n ProjectId: '',\n InstanceTypes: {},\n Vips: [],\n Status: {},\n Offset: 0,\n Limit: 20,\n SecurityGroupId: '',\n PayTypes: {},\n InstanceNames: [],\n TaskStatus: {},\n EngineVersions: {},\n VpcIds: [],\n ZoneIds: [],\n SubnetIds: [],\n CdbErrors: {},\n OrderBy: {},\n OrderDirection: {},\n InstanceIds: [],\n InitFlag: {},\n};\n\nconst CDBFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceNames',\n enDescriptor: 'Instance Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'Instance ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ZoneIds',\n enDescriptor: 'Zone ID',\n cnDescriptor: '可用区的ID',\n link: '',\n type: 'dropdownmulti',\n },\n {\n key: 'InstanceTypes',\n enDescriptor: 'Instance Type',\n cnDescriptor: '实例类型',\n link: '',\n multiple: true,\n type: 'select',\n list: InstanceTypes,\n },\n {\n key: 'EngineVersions',\n enDescriptor: 'Engine Version',\n cnDescriptor: '实例数据库引擎版本',\n link: '',\n multiple: true,\n type: 'select',\n list: EngineVersions,\n },\n {\n key: 'TaskStatus',\n enDescriptor: 'Task Status',\n cnDescriptor: '实例任务',\n link: '',\n multiple: true,\n type: 'select',\n list: TaskStatus,\n },\n {\n key: 'InitFlag',\n enDescriptor: 'Init Flag',\n cnDescriptor: '实例初始化状态',\n link: '',\n multiple: true,\n type: 'select',\n list: InitFlag,\n },\n {\n key: 'PayTypes',\n enDescriptor: 'Pay Type',\n cnDescriptor: '付费类型',\n link: '',\n multiple: true,\n type: 'select',\n list: PayTypes,\n },\n {\n key: 'CdbErrors',\n enDescriptor: 'CDB Errors',\n cnDescriptor: '实例锁定标记',\n link: '',\n multiple: true,\n type: 'select',\n list: CdbErrors,\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n link: '',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderDirection',\n enDescriptor: 'Order Direction',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderDirection,\n },\n {\n key: 'Vips',\n enDescriptor: 'Vip',\n cnDescriptor: '实例内网IP地址',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'VpcIds',\n enDescriptor: 'Vpc ID',\n cnDescriptor: '私有网络ID',\n link: 'https://cloud.tencent.com/document/api/215/15778',\n type: 'inputmulti',\n },\n {\n key: 'SubnetIds',\n enDescriptor: 'Subnet ID',\n cnDescriptor: '子网ID',\n link: 'https://cloud.tencent.com/document/api/215/15784',\n type: 'inputmulti',\n },\n {\n key: 'ProjectId',\n enDescriptor: 'Project ID',\n cnDescriptor: '项目ID',\n link: 'https://cloud.tencent.com/document/product/378/4400',\n type: 'input',\n },\n { \n key: 'SecurityGroupId',\n enDescriptor: 'Security Group ID',\n cnDescriptor: '安全组ID',\n link: 'https://cloud.tencent.com/document/api/236/15854',\n type: 'input',\n },\n];\n\nconst CDB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...CDBFields },\n};\n\nconst CDBInstanceAliasList = ['InstanceId', 'InstanceName', 'Vip'];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\nfunction isValidMetric(metricObj: any = {}) {\n const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n return (\n dimension.length === 2 &&\n ((_.indexOf(dimension, 'instanceid') !== -1 && _.indexOf(dimension, 'insttype') !== -1) ||\n (_.indexOf(dimension, 'InstanceId') !== -1 && _.indexOf(dimension, 'InstanceType') !== -1))\n );\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = item.Dimensions.map((i) => CDBInvalidDemensions[i] || i);\n });\n return metricTmp;\n}\nconst CDBInvalidDemensions = {\n instanceid: 'InstanceId',\n insttype: 'InstanceType',\n region: 'Region',\n};\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nexport default CDB_STATE;\n\nexport {\n CDBFieldsDescriptor,\n CDBInstanceAliasList,\n templateQueryIdMap,\n CDBInvalidDemensions,\n isValidMetric,\n modifyDimensons,\n GetInstanceQueryParams as CDBGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CES';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'cesQuery';\n\nconst CESInvalidDemensions = {\n uInstanceId: 'InstanceId',\n};\n\nconst CESInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst CESFilterFields = {\n Limit: 20,\n Offset: 0,\n InstanceIds: [],\n InstanceNames: [],\n OrderByKey: {},\n OrderByType: {},\n IpList: [],\n};\n\nconst CESFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '集群实例ID列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'InstanceNames',\n enDescriptor: 'InstanceNames',\n cnDescriptor: '集群实例名称列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'OrderByKey',\n enDescriptor: 'OrderByKey',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: '实例ID', value: 1 },\n { text: '实例名称', value: 2 },\n { text: '可用区', value: 3 },\n { text: '创建时间', value: 4 },\n ],\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n ],\n },\n {\n key: 'IpList',\n enDescriptor: 'IpList',\n cnDescriptor: '私有网络vip列表',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/845/30631',\n namespace,\n fieldDescriptor: CESFilterFieldsDescriptor,\n};\n\nconst CES_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: CESFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nexport default CES_STATE;\nexport {\n CESFilterFieldsDescriptor,\n templateQueryIdMap,\n CESInstanceAliasList,\n CESInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CESGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/DC';\nconst queryEditorName = 'dcQuery';\n\nconst DCFilterFields = {\n Limit: 20,\n Offset: 0,\n DirectConnectIds: [],\n};\n\nconst DCFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'DirectConnectIds',\n enDescriptor: 'DirectConnectIds',\n cnDescriptor: '物理专线 ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/216/34826',\n namespace,\n fieldDescriptor: DCFilterFieldsDescriptor,\n};\n\nconst DC_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DirectConnectId',\n queries: DCFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\nconst DCInstanceAliasList = ['DirectConnectId', 'DirectConnectName'];\n\nconst templateQueryIdMap = {\n instance: 'DirectConnectId',\n};\n\nconst DCInvalidDemensions = {\n directConnectId: 'DirectConnectId',\n directconnectid: 'DirectConnectId',\n};\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['directConnectId'];\n });\n return metricTmp;\n}\nexport default DC_STATE;\nexport {\n DCFilterFieldsDescriptor,\n templateQueryIdMap,\n DCInstanceAliasList,\n DCInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as DCGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/DCG';\nconst queryEditorName = 'dcgQuery';\n\nconst DCGInvalidDemensions = {\n directConnectGatewayId: 'DirectConnectGatewayId',\n};\n\nconst DCGInstanceAliasList = ['DirectConnectGatewayId', 'DirectConnectGatewayName'];\n\nconst templateQueryIdMap = {\n instance: 'DirectConnectGatewayId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst DCGFilterFields = {\n Limit: 20,\n Offset: 0,\n 'direct-connect-gateway-id': [],\n 'direct-connect-gateway-name': [],\n 'direct-connect-gateway-ip': [],\n 'gateway-type': {},\n 'network-type': {},\n 'ccn-id': [],\n 'vpc-id': [],\n};\n\nconst DCGFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'direct-connect-gateway-id',\n enDescriptor: 'direct-connect-gateway-id',\n cnDescriptor: '专线网关唯一ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-gateway-name',\n enDescriptor: 'direct-connect-gateway-name',\n cnDescriptor: '专线网关名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-gateway-ip',\n enDescriptor: 'direct-connect-gateway-ip',\n cnDescriptor: '专线网关IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'gateway-type',\n enDescriptor: 'gateway-type',\n cnDescriptor: '网关类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '普通型', value: 'NORMAL' },\n { text: 'NAT型', value: 'NAT' },\n ],\n },\n {\n key: 'network-type',\n enDescriptor: 'network-type',\n cnDescriptor: '网络类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '私有网络类型', value: 'VPC' },\n { text: '云联网类型', value: 'CCN' },\n ],\n },\n {\n key: 'ccn-id',\n enDescriptor: 'ccn-id',\n cnDescriptor: '专线网关所在云联网ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: '专线网关所在私有网络ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/30644',\n namespace,\n fieldDescriptor: DCGFilterFieldsDescriptor,\n};\n\nconst DCG_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DirectConnectGatewayId',\n queries: DCGFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default DCG_STATE;\nexport {\n DCGFilterFieldsDescriptor,\n templateQueryIdMap,\n DCGInstanceAliasList,\n DCGInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as DCGGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/DCX';\nconst queryEditorName = 'dcxQuery';\n\nconst DCXFilterFields = {\n 'direct-connect-tunnel-name': [],\n 'direct-connect-tunnel-id': [],\n 'direct-connect-id': [],\n};\n\nconst DCXFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'direct-connect-tunnel-name',\n enDescriptor: 'direct-connect-tunnel-name',\n cnDescriptor: '专用通道名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-tunnel-id',\n enDescriptor: 'direct-connect-tunnel-id',\n cnDescriptor: '专用通道实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-id',\n enDescriptor: 'direct-connect-id',\n cnDescriptor: '物理专线实例ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/216/19819',\n namespace,\n fieldDescriptor: DCXFilterFieldsDescriptor,\n};\n\nconst DCX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DirectConnectTunnelId',\n queries: {\n Limit: 20,\n Offset: 0,\n ...DCXFilterFields,\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n\nconst DCXInstanceAliasList = ['DirectConnectTunnelId', 'DirectConnectTunnelName'];\n\nconst templateQueryIdMap = {\n instance: 'DirectConnectTunnelId',\n};\n\nconst DCXInvalidDemensions = {\n directconnectconnid: 'DirectConnectTunnelId',\n directConnectConnId: 'DirectConnectTunnelId',\n};\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['directConnectConnId'];\n });\n return metricTmp;\n}\nexport default DCX_STATE;\nexport {\n DCXFilterFieldsDescriptor,\n templateQueryIdMap,\n DCXInstanceAliasList,\n DCXInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as DCXGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/ECM_LB';\nconst queryEditorName = 'ecmLbQuery';\n\nconst ECMLBInvalidDemensions = {\n vip: 'LoadBalancerVips',\n};\n\nconst ECMLBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst ECMLBFilterFields = {\n Limit: 20,\n Offset: 0,\n LoadBalancerIds: [],\n LoadBalancerName: [],\n LoadBalancerVips: [],\n BackendPrivateIps: [],\n VpcId: '',\n};\n\nconst ECMLBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancerIds',\n cnDescriptor: '负载均衡器ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancerName',\n cnDescriptor: '负载均衡器名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancerVips',\n cnDescriptor: '负载均衡获得的公网IP地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPrivateIps',\n enDescriptor: 'BackendPrivateIps',\n cnDescriptor: '绑定的后端服务的内网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '实例所属私有网络唯一ID',\n link: '',\n type: 'input',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1108/48459',\n namespace,\n fieldDescriptor: ECMLBFilterFieldsDescriptor,\n};\n\nconst ECM_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n queries: ECMLBFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n// function isValidMetric(metricObj: any = {}) {\n// const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n// // console.log('dimension', dimension, dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1);\n// return dimension.length === 1 &&( _.indexOf(dimension, 'UUID') !== -1 || _.indexOf(dimension, 'uuid') !== -1);\n// }\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n // item.Dimensions = ['UUID'];\n });\n return metricTmp;\n}\nexport default ECM_STATE;\nexport {\n ECMLBFilterFieldsDescriptor,\n templateQueryIdMap,\n ECMLBInstanceAliasList,\n ECMLBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as ECMLBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst InstanceTypes = [\n { text: '所有实例', value: 0 },\n { text: '正式实例', value: 1 },\n { text: '临时实例', value: 2 },\n { text: '只读实例', value: 3 },\n { text: '正式,只读,灾备实例', value: -1 },\n];\n\nconst ClusterTypes = [\n { text: '副本集实例', value: 0 },\n { text: '分片实例', value: 1 },\n { text: '所有实例', value: -1 },\n];\n\nconst Status = [\n { text: '待初始化', value: 0 },\n { text: '流程执行中', value: 1 },\n { text: '实例有效', value: 2 },\n { text: '实例已过期', value: -2 },\n];\n\nconst PayMode = [\n { text: '按量计费', value: 0 },\n { text: '包年包月', value: 1 },\n { text: '按量包年包月计费', value: -1 },\n];\n\nconst OrderBy = [\n { text: 'ProjectId', value: 'ProjectId' },\n { text: 'InstanceName', value: 'InstanceName' },\n { text: 'CreateTime', value: 'CreateTime' },\n];\n\nconst OrderByType = [\n { text: '升序', value: 'ASC' },\n { text: '降序', value: 'DESC' },\n];\n\nconst MongoDBFields = {\n InstanceIds: [],\n InstanceType: {},\n ClusterType: {},\n Status: [],\n VpcId: '',\n SubnetId: '',\n PayMode: {},\n Limit: 20,\n Offset: 0,\n OrderBy: '',\n OrderByType: '',\n};\n\nconst MONGODBFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstancesIds',\n cnDescriptor: '实例名称',\n type: 'inputmulti',\n },\n {\n key: 'InstanceType',\n enDescriptor: 'InstanceType',\n cnDescriptor: '实例类型',\n link: '',\n type: 'select',\n list: InstanceTypes,\n },\n {\n key: 'ClusterType',\n enDescriptor: 'ClusterType',\n cnDescriptor: '集群类型',\n link: '',\n type: 'select',\n list: ClusterTypes,\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n link: '',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络的ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '私有网络的子网ID,基础网络则不传该参数。入参设置该参数的同时,必须设置相应的VpcId',\n link: '',\n type: 'input',\n },\n {\n key: 'PayMode',\n enDescriptor: 'PayMode',\n cnDescriptor: '付费类型',\n link: '',\n type: 'select',\n list: PayMode,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderByType,\n },\n];\n\nconst MONGODB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...MongoDBFields },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n // select 单选\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst MONGODBInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst MONGODBInvalidDemensions = {\n target: 'InstanceId',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n replica: 'ReplicaSetId',\n};\n\nconst queryMonitorExtraConfg = {\n Replica: {\n dim_KeyInStorage: 'ReplicaSets',\n dim_KeyInTarget: 'replica',\n dim_KeyInMap: 'ReplicaSetId',\n dim_KeyInIns: 'ReplicaSetId',\n },\n Node: {\n dim_KeyInStorage: 'ReplicaNodeSets',\n dim_KeyInTarget: 'node',\n dim_KeyInMap: 'NodeId',\n dim_KeyInIns: 'NodeId',\n },\n};\nexport default MONGODB_STATE;\nexport {\n MONGODBFieldsDescriptor,\n MONGODBInvalidDemensions,\n MONGODBInstanceAliasList,\n templateQueryIdMap,\n queryMonitorExtraConfg,\n GetInstanceQueryParams as MONGODBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/QAAP';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'qaapQuery';\n\nconst QAAPInvalidDemensions = {\n channelId: 'InstanceId',\n};\n\nconst QAAPInstanceAliasList = ['InstanceId'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst QAAPFilterFields = {\n Limit: 20,\n Offset: 0,\n ProjectId: [],\n AccessRegion: [],\n RealServerRegion: [],\n GroupId: [],\n};\n\nconst QAAPFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ProjectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'AccessRegion',\n enDescriptor: 'AccessRegion',\n cnDescriptor: '接入地域',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'RealServerRegion',\n enDescriptor: 'RealServerRegion',\n cnDescriptor: '源站地域',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'GroupId',\n enDescriptor: 'GroupId',\n cnDescriptor: '通道组ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/608/36963',\n namespace,\n fieldDescriptor: QAAPFilterFieldsDescriptor,\n};\n\nconst QAAP_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: QAAPFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n // metricTmp.Dimensions.forEach((item) => {\n // item.Dimensions = ['netDetectId'];\n // });\n return metricTmp;\n}\nexport default QAAP_STATE;\nexport {\n QAAPFilterFieldsDescriptor,\n templateQueryIdMap,\n QAAPInstanceAliasList,\n QAAPInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as QAAPGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/TCAPLUS';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'tcaplusQuery';\n\nconst TCAPLUSInvalidDemensions = {\n // TableInstanceId: 'TableInstanceId',\n // ClusterId: 'ClusterId',\n};\n\n// 需和文件名对应\nconst TCAPLUSInstanceAliasList = ['TableInstanceId', 'TableName'];\n\nconst templateQueryIdMap = {\n instance: 'TableInstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst TCAPLUSFilterFields = {\n Limit: 20,\n Offset: 0,\n ClusterId: '',\n TableGroupIds: [],\n\n TableName: '',\n TableInstanceId: '',\n TableIdlType: {},\n TableType: {},\n ListElementNum: null,\n ReservedVolume: null,\n ReservedReadQps: null,\n ReservedWriteQps: null,\n Memo: '',\n FileName: '',\n FileExtType: '',\n FileSize: null,\n FileContent: '',\n};\n\nconst TCAPLUSFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ClusterId',\n enDescriptor: 'ClusterId',\n cnDescriptor: '表格所属集群ID',\n link: '',\n type: 'input',\n },\n {\n key: 'TableGroupIds',\n enDescriptor: 'TableGroupIds',\n cnDescriptor: '表格组ID列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'TableName',\n enDescriptor: 'TableName',\n cnDescriptor: '表格名称',\n link: '',\n type: 'input',\n },\n {\n key: 'TableInstanceId',\n enDescriptor: 'TableInstanceId',\n cnDescriptor: '表实例ID',\n link: '',\n type: 'input',\n },\n {\n key: 'TableIdlType',\n enDescriptor: 'TableIdlType',\n cnDescriptor: '表格描述语言类型',\n link: '',\n type: 'select',\n list: [\n { text: 'PROTO', value: 'PROTO' },\n { text: 'TDR', value: 'TDR' },\n ],\n },\n {\n key: 'TableType',\n enDescriptor: 'TableType',\n cnDescriptor: '表格数据结构类型',\n link: '',\n type: 'select',\n list: [\n { text: 'GENERIC', value: 'GENERIC' },\n { text: 'LIST', value: 'LIST' },\n ],\n },\n {\n key: 'ListElementNum',\n enDescriptor: 'ListElementNum',\n cnDescriptor: 'LIST表元素个数',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'ReservedVolume',\n enDescriptor: 'ReservedVolume',\n cnDescriptor: '表格预留容量(GB)',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'ReservedReadQps',\n enDescriptor: 'ReservedReadQps',\n cnDescriptor: '表格预留读CU',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'ReservedWriteQps',\n enDescriptor: 'ReservedWriteQps',\n cnDescriptor: '表格预留写CU',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'Memo',\n enDescriptor: 'Memo',\n cnDescriptor: '表格备注信息',\n link: '',\n type: 'input',\n },\n {\n key: 'FileName',\n enDescriptor: 'FileName',\n cnDescriptor: 'Key回档文件名,回档专用',\n link: '',\n type: 'input',\n },\n {\n key: 'FileExtType',\n enDescriptor: 'FileExtType',\n cnDescriptor: 'Key回档文件扩展名,回档专用',\n link: '',\n type: 'input',\n },\n {\n key: 'FileSize',\n enDescriptor: 'FileSize',\n cnDescriptor: 'Key回档文件大小,回档专用',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'FileContent',\n enDescriptor: 'FileContent',\n cnDescriptor: 'Key回档文件内容,回档专用',\n link: '',\n type: 'input',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/596/39664',\n namespace,\n fieldDescriptor: TCAPLUSFilterFieldsDescriptor,\n};\n\nconst TCAPLUS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'TableInstanceId',\n queries: TCAPLUSFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n params.ClusterId = _.get(queries, 'ClusterId', '') || '';\n params.TableGroupIds = _.get(queries, 'TableGroupIds', []) || [];\n queries = _.omit(queries, ['Offset', 'Limit', 'TableGroupIds', 'ClusterId']);\n const SelectedTables: any[] = [];\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n SelectedTables[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n SelectedTables[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n SelectedTables[key] = item;\n }\n });\n params.SelectedTables = SelectedTables;\n return params;\n}\n// 和其他产品的展示保持一致\nconst regonsMap = {\n 'ap-beijing': '华北地区(北京)',\n 'ap-guangzhou': '华南地区(广州)',\n 'ap-hongkong': '港澳台地区(中国香港)',\n 'ap-seoul': '亚太东北(首尔)',\n 'ap-shanghai': '华东地区(上海)',\n 'ap-singapore': '亚太东南(新加坡)',\n 'ap-tokyo': '亚太东北(东京)',\n 'eu-frankfurt': '欧洲地区(法兰克福)',\n 'na-ashburn': '美国东部(弗吉尼亚)',\n 'na-siliconvalley': '美国西部(硅谷)',\n};\nexport default TCAPLUS_STATE;\nexport {\n TCAPLUSFilterFieldsDescriptor,\n templateQueryIdMap,\n TCAPLUSInstanceAliasList,\n TCAPLUSInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regonsMap,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TCAPLUSGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VBC';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'vbcQuery';\n\nconst VBCInvalidDemensions = {\n // CcnId: 'CcnId',\n};\n\n// 需和文件名对应\nconst VBCInstanceAliasList = ['CcnId', 'CcnName'];\n\nconst templateQueryIdMap = {\n instance: 'CcnId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst VBCFilterFields = {\n Limit: 20,\n Offset: 0,\n 'ccn-id': [],\n 'ccn-name': [],\n 'ccn-description': [],\n state: {},\n};\n\nconst VBCFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ccn-id',\n enDescriptor: 'ccn-id',\n cnDescriptor: 'CCN实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ccn-name',\n enDescriptor: 'ccn-name',\n cnDescriptor: 'CCN名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ccn-description',\n enDescriptor: 'ccn-description',\n cnDescriptor: 'CCN描述',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'state',\n enDescriptor: 'state',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '隔离中', value: 'ISOLATED' },\n { text: '运行中', value: 'AVAILABLE' },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/19199',\n namespace,\n fieldDescriptor: VBCFilterFieldsDescriptor,\n};\n\nconst VBC_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'CcnId',\n DRegion: '',\n SRegion: '',\n queries: VBCFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n// const regionSupported = [\n// { text: '华北地区(北京)', value: 'ap-beijing' },\n// { text: '西南地区(成都)', value: 'ap-chengdu' },\n// { text: '西南地区(重庆)', value: 'ap-chongqing' },\n// { text: '华南地区(广州)', value: 'ap-guangzhou' },\n// { text: '港澳台地区(中国香港)', value: 'ap-hongkong' },\n// { text: '亚太南部(孟买)', value: 'ap-mumbai' },\n// { text: '华东地区(南京)', value: 'ap-nanjing' },\n// { text: '华东地区(上海)', value: 'ap-shanghai' },\n// { text: '华东地区(上海金融)', value: 'ap-shanghai-fsi' },\n// { text: '华南地区(深圳金融)', value: 'ap-shenzhen-fsi' },\n// { text: '亚太东南(新加坡)', value: 'ap-singapore' },\n// { text: '亚太东北(东京)', value: 'ap-tokyo' },\n// { text: '欧洲地区(法兰克福)', value: 'eu-frankfurt' },\n// { text: '美国东部(弗吉尼亚)', value: 'na-ashburn' },\n// { text: '美国西部(硅谷)', value: 'na-siliconvalley' },\n// { text: '北美地区(多伦多)', value: 'na-toronto' },\n// ];\nexport default VBC_STATE;\nexport {\n VBCFilterFieldsDescriptor,\n templateQueryIdMap,\n VBCInstanceAliasList,\n VBCInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n // regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as VBCGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VPNGW';\nconst queryEditorName = 'vpngwQuery';\n\nconst VPNGWInvalidDemensions = {\n vpnGwId: 'VpnGatewayId',\n};\n\nconst VPNGWInstanceAliasList = ['VpnGatewayId', 'VpnGatewayName'];\n\nconst templateQueryIdMap = {\n instance: 'VpnGatewayId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst VPNGWFilterFields = {\n Limit: 20,\n Offset: 0,\n 'vpc-id': [],\n 'vpn-gateway-id': [],\n 'vpn-gateway-name': [],\n type: {},\n 'public-ip-address': [],\n 'renew-flag': {},\n zone: [],\n};\n\nconst VPNGWFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: 'VPC实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-gateway-id',\n enDescriptor: 'vpn-gateway-id',\n cnDescriptor: 'VPN实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-gateway-name',\n enDescriptor: 'vpn-gateway-name',\n cnDescriptor: 'VPN实例名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'type',\n enDescriptor: 'type',\n cnDescriptor: 'VPN网关类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: 'IPSEC', value: 'IPSEC' },\n { text: 'SSL', value: 'SSL' },\n ],\n },\n {\n key: 'public-ip-address',\n enDescriptor: 'public-ip-address',\n cnDescriptor: '公网IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'renew-flag',\n enDescriptor: 'renew-flag',\n cnDescriptor: '网关续费类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '手动续费', value: 'NOTIFY_AND_MANUAL_RENEW' },\n { text: '自动续费', value: 'NOTIFY_AND_AUTO_RENEW' },\n ],\n },\n {\n key: 'zone',\n enDescriptor: 'zone',\n cnDescriptor: 'VPN所在可用区',\n link: '',\n type: 'dropdownMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/17514',\n namespace,\n fieldDescriptor: VPNGWFilterFieldsDescriptor,\n};\n\nconst VPNGW_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'VpnGatewayId',\n queries: VPNGWFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default VPNGW_STATE;\nexport {\n VPNGWFilterFieldsDescriptor,\n templateQueryIdMap,\n VPNGWInstanceAliasList,\n VPNGWInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as VPNGWGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VPNX';\nconst queryEditorName = 'vpnxQuery';\n\nconst VPNXInvalidDemensions = {\n vpnConnId: 'VpnConnectionId',\n};\n\nconst VPNXInstanceAliasList = ['VpnConnectionId', 'VpnConnectionName'];\n\nconst templateQueryIdMap = {\n instance: 'VpnConnectionId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst VPNXFilterFields = {\n Limit: 20,\n Offset: 0,\n 'vpc-id': [],\n 'vpn-gateway-id': [],\n 'customer-gateway-id': [],\n 'vpn-connection-name': [],\n 'vpn-connection-id': [],\n};\n\nconst VPNXFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: 'VPC实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-gateway-id',\n enDescriptor: 'vpn-gateway-id',\n cnDescriptor: 'VPN实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'customer-gateway-id ',\n enDescriptor: 'customer-gateway-id ',\n cnDescriptor: '对端网关实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-connection-name',\n enDescriptor: 'vpn-connection-name',\n cnDescriptor: '通道名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-connection-id',\n enDescriptor: 'vpn-connection-id',\n cnDescriptor: '通道实例ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/17515',\n namespace,\n fieldDescriptor: VPNXFilterFieldsDescriptor,\n};\n\nconst VPNX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'VpnConnectionId',\n queries: VPNXFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default VPNX_STATE;\nexport {\n VPNXFilterFieldsDescriptor,\n templateQueryIdMap,\n VPNXInstanceAliasList,\n VPNXInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as VPNXGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nconst LighthouseStateType = [\n { text: '创建中', value: 'PENDING' },\n { text: '创建失败', value: 'LAUNCH_FAILED' },\n { text: '运行中', value: 'RUNNING' },\n { text: '关机', value: 'STOPPED' },\n { text: '开机中', value: 'STARTING' },\n { text: '关机中', value: 'STOPPING' },\n { text: '重启中', value: 'REBOOTING' },\n { text: '停止待销毁', value: 'SHUTDOWN' },\n { text: '销毁中', value: 'TERMINATING' },\n];\n\nconst LighthouseFilterFields = {\n zone: [],\n 'instance-name': [],\n 'instance-state': {},\n 'private-ip-address': [],\n 'public-ip-address': [],\n};\n\nconst LighthouseFilterFieldsDescriptor = [\n {\n key: 'instance-name',\n enDescriptor: 'Instance Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'Private IP Address',\n cnDescriptor: '实例主网卡的内网IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'public-ip-address',\n enDescriptor: 'Public IP Address',\n cnDescriptor: '实例主网卡的公网IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'zone',\n enDescriptor: 'Zone',\n cnDescriptor: '可用区',\n link: '',\n type: 'dropdownmulti',\n },\n {\n key: 'instance-state',\n enDescriptor: 'Instance State',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n list: LighthouseStateType,\n },\n];\n\nconst LIGHTHOUSE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n InstanceIds: [''],\n Filters: { ...LighthouseFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.InstanceIds)) {\n const InstanceIds = _.compact(queries.InstanceIds);\n if (_.uniq(InstanceIds).length > 0) {\n params.InstanceIds = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst LIGHTHOUSEInstanceAliasList = ['InstanceId', 'InstanceName', 'PrivateIpAddresses', 'PublicIpAddresses'];\n\nconst LighthouseInvalidDemensions = {\n instanceid: 'InstanceId',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\n\nexport default LIGHTHOUSE_STATE;\n\nexport {\n LighthouseFilterFieldsDescriptor,\n LIGHTHOUSEInstanceAliasList,\n LighthouseInvalidDemensions,\n templateQueryIdMap,\n modifyDimensons,\n GetInstanceQueryParams as LIGHTHOUSEGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nexport const CFSQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'FileSystemId',\n enDescriptor: 'File System Id',\n cnDescriptor: '文件系统 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络(VPC) ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '子网 ID',\n link: '',\n type: 'input',\n },\n];\n\nconst CFS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'FileSystemId',\n version: '',\n queries: {\n Offset: 0,\n Limit: 20,\n FileSystemId: '',\n VpcId: '',\n SubnetId: '',\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst CFSInstanceAliasList = ['FileSystemId', 'FsName'];\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nconst CFSInvalidDemensions = {\n // functionName: 'FunctionName',\n // namespace: 'Namespace'\n};\n\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-nanjing' },\n { value: 'ap-seoul' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nexport default CFS_STATE;\nexport {\n CFSInstanceAliasList,\n CFSInvalidDemensions,\n templateQueryIdMap,\n regionSupported,\n GetInstanceQueryParams as CFSGetInstanceQueryParams,\n};\n\n// monitor监控数据默认支持的维度\n// export const SCFDefaultDimensionList = ['functionName', 'namespace', 'version'];\n","import _ from 'lodash';\nimport { FildDescriptorType } from '../_base/types';\n\nexport const InstanceQueryDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 50,\n },\n {\n key: 'QueueName',\n enDescriptor: 'QueueName',\n cnDescriptor: '精确匹配QueueName',\n link: '',\n type: 'input',\n },\n {\n key: 'TagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '标签搜索',\n link: '',\n type: 'input',\n },\n];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nexport const InvalidDemensions = {\n queueId: 'QueueId',\n queueName: 'QueueName',\n};\n\nexport const templateQueryIdMap = {\n instance: 'QueueName',\n};\n\n// 与名称挂钩的变量\nconst InstanceAliasList = ['QueueName', 'QueueId'];\nexport { InstanceAliasList, GetInstanceQueryParams };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'QueueName',\n queries: {\n Offset: 0,\n Limit: 20,\n QueueName: '',\n TagKey: '',\n },\n};\n","import _ from 'lodash';\nconst instanceChargeTypes = [\n { text: '预付费', value: 'PREPAID' },\n { text: '后付费', value: 'POSTPAID_BY_HOUR' },\n { text: 'CDH付费', value: 'CDHPAID' },\n];\n\nconst CVMFilterFields = {\n zone: [],\n 'project-id': [],\n 'host-id': [],\n 'vpc-id': [],\n 'subnet-id': [],\n 'instance-id': [],\n 'security-group-id': [],\n 'instance-name': [],\n 'instance-charge-type': {},\n 'private-ip-address': [],\n 'public-ip-address': [],\n 'tag-key': [],\n};\n\nconst CVMFilterFieldsDescriptor = [\n {\n key: 'zone',\n enDescriptor: 'Zone',\n cnDescriptor: '可用区',\n link: '',\n type: 'dropdownmulti',\n },\n {\n key: 'project-id',\n enDescriptor: 'Project ID',\n cnDescriptor: '项目ID',\n link: 'https://cloud.tencent.com/document/api/378/4400',\n type: 'inputNumbermulti',\n },\n {\n key: 'host-id',\n enDescriptor: 'CDH ID',\n cnDescriptor: 'CDH ID',\n link: 'https://cloud.tencent.com/document/product/416/19730',\n type: 'inputmulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'VPC ID',\n cnDescriptor: 'VPC ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'Subnet ID',\n cnDescriptor: '子网ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'instance-id',\n enDescriptor: 'Instance ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'security-group-id',\n enDescriptor: 'Security Group ID',\n cnDescriptor: '安全组ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'instance-name',\n enDescriptor: 'Instance Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'tag-key',\n enDescriptor: '标签简',\n cnDescriptor: '标签简',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'instance-charge-type',\n enDescriptor: 'Instance Charge Type',\n cnDescriptor: '实例计费模式',\n link: '',\n type: 'select',\n list: instanceChargeTypes,\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'Private IP Address',\n cnDescriptor: '实例主网卡的内网IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'public-ip-address',\n enDescriptor: 'Public IP Address',\n cnDescriptor: '实例主网卡的公网IP,包含实例创建时自动分配的IP和实例创建后手动绑定的弹性IP',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst CVM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n InstanceIds: [''],\n Filters: { ...CVMFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.InstanceIds)) {\n const InstanceIds = _.compact(queries.InstanceIds);\n if (_.uniq(InstanceIds).length > 0) {\n params.InstanceIds = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst CVMInstanceAliasList = ['InstanceId', 'InstanceName', 'PrivateIpAddresses', 'PublicIpAddresses'];\n\nconst CVMValidMetricsT = [\n 'CPUUsage',\n 'CpuLoadavg',\n 'Cpuloadavg5m',\n 'Cpuloadavg15m',\n 'BaseCpuUsage',\n 'GpuMemTotal',\n 'GpuMemUsage',\n 'GpuMemUsed',\n 'GpuPowDraw',\n 'GpuPowLimit',\n 'GpuPowUsage',\n 'GpuTemp',\n 'GpuUtil',\n 'LanOuttraffic',\n 'LanIntraffic',\n 'LanOutpkg',\n 'LanInpkg',\n 'WanOuttraffic',\n 'WanIntraffic',\n 'WanOutpkg',\n 'WanInpkg',\n 'AccOuttraffic',\n 'TcpCurrEstab',\n 'TimeOffset',\n 'MemUsed',\n 'MemUsage',\n 'CvmDiskUsage',\n 'BaseCpuUsage',\n 'VmDiskReadIops',\n];\n// const CVMInvalidDemensions = {\n// 'vm_uuid': 'InstanceId',\n// 'vmUuid': 'InstanceId',\n// };\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nfunction isValidMetric(metric) {\n const CVMValidMetrics = _.map(CVMValidMetricsT, _.toUpper);\n return _.indexOf(CVMValidMetrics, _.toUpper(metric.MetricName)) !== -1;\n}\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\nexport default CVM_STATE;\nexport {\n CVMFilterFieldsDescriptor,\n CVMInstanceAliasList,\n isValidMetric,\n modifyDimensons,\n templateQueryIdMap,\n // CVMInvalidDemensions,\n GetInstanceQueryParams as CVMGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst namespace = 'QCE/PCX';\n\nconst PCXFields = {\n limit: 20,\n offset: 0,\n peeringConnectionId: '',\n peeringConnectionName: '',\n vpcId: '',\n state: undefined,\n};\n\nconst PCX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'peeringConnectionId',\n queries: { ...PCXFields },\n};\n\nconst StateTypes = [\n { text: '申请中', value: 0 },\n { text: '连接成功', value: 1 },\n { text: '已过期', value: 2 },\n { text: '对端已拒绝', value: 3 },\n { text: '对端已删除', value: 4 },\n];\n\nconst PCXFieldsDescriptor = [\n {\n key: 'offset',\n enDescriptor: 'offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'limit',\n enDescriptor: 'limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为50',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 50,\n },\n {\n key: 'peeringConnectionId',\n enDescriptor: 'PeeringConnection Id',\n cnDescriptor: '私有网络对等连接 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'peeringConnectionName',\n enDescriptor: 'PeeringConnection Name',\n cnDescriptor: '对等连接名称',\n link: '',\n type: 'input',\n },\n {\n key: 'vpcId',\n enDescriptor: 'vpcId',\n cnDescriptor: '发起方私有网络 ID 值',\n link: 'https://cloud.tencent.com/document/api/215/1372',\n type: 'dropdown',\n },\n {\n key: 'state',\n enDescriptor: 'state',\n cnDescriptor: '连接状态',\n link: '',\n type: 'select',\n list: StateTypes,\n },\n];\n\nconst PCXInstanceAliasList = ['peeringConnectionId', 'peeringConnectionName'];\n\nconst templateQueryIdMap = {\n instance: 'peeringConnectionId',\n};\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.limit = _.get(queries, 'limit', 20) || 20;\n params.offset = _.get(queries, 'offset', 0) || 0;\n queries = _.omit(queries, ['offset', 'limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nexport default PCX_STATE;\n\nexport {\n PCXInstanceAliasList,\n PCXFieldsDescriptor,\n templateQueryIdMap,\n namespace,\n GetInstanceQueryParams as PCXGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst BillingMode = [\n { text: '按量计费', value: 'postpaid' },\n { text: '包年包月', value: 'prepaid' },\n];\n\nconst AutoRenew = [\n { text: '手动续费', value: 0 },\n { text: '自动续费', value: 1 },\n { text: '明确不自动续费', value: 2 },\n];\n\nconst Status = [\n { text: '待初始化', value: 0 },\n { text: '流程执行中', value: 1 },\n { text: '运行中', value: 2 },\n { text: '已隔离', value: -2 },\n { text: '待删除', value: -3 },\n];\n\nconst TypeVersion = [\n { text: '单机版', value: 1 },\n { text: '主从版', value: 2 },\n { text: '集群版', value: 3 },\n];\n\nconst OrderBy = [\n { text: 'projectId', value: 'projectId' },\n { text: 'instancename', value: 'instancename' },\n { text: 'createtime', value: 'createtime' },\n { text: 'type', value: 'type' },\n { text: 'curDeadline', value: 'curDeadline' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\nconst Type = [\n { text: 'Redis老集群版', value: 1 },\n { text: 'Redis 2.8主从版', value: 2 },\n { text: 'CKV主从版', value: 3 },\n { text: 'CKV集群版', value: 4 },\n { text: 'Redis 2.8单机版', value: 5 },\n { text: 'Redis 4.0主从版', value: 6 },\n { text: 'Redis 4.0集群版', value: 7 },\n { text: 'Redis5.0主从版', value: 8 },\n { text: 'Redis5.0集群版', value: 9 },\n];\n\nconst RedisFields = {\n InstanceId: '',\n OrderBy: '',\n OrderType: null,\n VpcIds: [],\n SubnetIds: [],\n ProjectIds: [],\n SearchKey: '',\n InstanceName: '',\n UniqVpcIds: [],\n UniqSubnetIds: [],\n Status: [],\n TypeVersion: null,\n EngineName: '',\n AutoRenew: null,\n BillingMode: '',\n Type: null,\n};\n\nconst RedisFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'InstancesId',\n cnDescriptor: '实例id',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderType',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderType,\n },\n {\n key: 'VpcIds',\n enDescriptor: 'VpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:47525',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SubnetIds',\n enDescriptor: 'SubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:56854',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ProjectIds',\n enDescriptor: 'ProjectIds',\n cnDescriptor: '项目ID 组成的数组',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '查找实例的ID',\n link: '',\n type: 'input',\n },\n {\n key: 'InstanceName',\n enDescriptor: 'InstanceName',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'UniqVpcIds',\n enDescriptor: 'UniqVpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:vpc-sad23jfdfk',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'UniqSubnetIds',\n enDescriptor: 'UniqSubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:subnet-fdj24n34j2',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'TypeVersion',\n enDescriptor: 'TypeVersion',\n cnDescriptor: '类型版本',\n link: '',\n type: 'select',\n list: TypeVersion,\n },\n {\n key: 'EngineName',\n enDescriptor: 'EngineName',\n cnDescriptor: '引擎信息:Redis-2.8,Redis-4.0,CKV',\n link: '',\n type: 'input',\n },\n {\n key: 'AutoRenew',\n enDescriptor: 'AutoRenew',\n cnDescriptor: '续费模式',\n multiple: true,\n type: 'select',\n list: AutoRenew,\n },\n {\n key: 'BillingMode',\n enDescriptor: 'BillingMode',\n cnDescriptor: '计费模式:postpaid-按量计费;prepaid-包年包月',\n link: '',\n type: 'select',\n list: BillingMode,\n },\n {\n key: 'Type',\n enDescriptor: 'Type',\n cnDescriptor: '实例类型',\n link: '',\n type: 'select',\n list: Type,\n },\n];\n\nconst REDIS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...RedisFields },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n // select 单选\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nfunction isValidMetric(metricObj: any = {}) {\n const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n return dimension.length === 1 && _.indexOf(dimension, 'instanceid') !== -1;\n}\n\nconst REDISInstanceAliasList = ['InstanceId', 'InstanceName', 'WanIp'];\n\nconst RedisInvalidDemensions = {\n redis_uuid: 'InstanceId',\n instanceid: 'InstanceId',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nexport default REDIS_STATE;\nexport {\n RedisFieldsDescriptor,\n RedisInvalidDemensions,\n templateQueryIdMap,\n REDISInstanceAliasList,\n isValidMetric,\n GetInstanceQueryParams as REDISGetInstanceQueryParams,\n};\n","import { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst ApplicationType = [\n { text: '所有', value: '' },\n { text: '容器应用', value: 'C' },\n { text: '普通应用/虚拟机应用', value: 'V' },\n];\n\nconst MicroserviceType = [\n { text: '所有', value: '' },\n { text: '普通应用', value: 'N' },\n { text: 'Mesh应用', value: 'M' },\n { text: '微服务网关应用', value: 'G' },\n { text: '原生应用', value: 'NATIVE' },\n];\n\nconst ApplicationResourceType = [\n { text: '默认资源类型', value: 'DEF' },\n { text: '微服务网关资源', value: 'GW' },\n];\n\nconst TSFFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'SearchWord',\n enDescriptor: 'SearchWord',\n cnDescriptor: '搜索关键字',\n link: '',\n type: 'input',\n },\n {\n key: 'ApplicationIdList',\n enDescriptor: 'ApplicationIdList',\n cnDescriptor: '应用ID 组成的数组',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ApplicationType',\n enDescriptor: 'ApplicationType',\n cnDescriptor: '应用类型',\n link: '',\n type: 'select',\n list: ApplicationType,\n },\n {\n key: 'MicroserviceType',\n enDescriptor: 'MicroserviceType',\n cnDescriptor: '应用的微服务类型',\n link: '',\n type: 'select',\n list: MicroserviceType,\n },\n {\n key: 'ApplicationResourceTypeList',\n enDescriptor: 'ApplicationResourceTypeList',\n cnDescriptor: '应用资源类型数组',\n link: '',\n type: 'select',\n multiple: true,\n list: ApplicationResourceType,\n },\n];\n\nconst TSF_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ApplicationId',\n queries: {\n Limit: 20,\n Offset: 0,\n SearchWord: '',\n OrderBy: '',\n OrderType: null,\n ApplicationType: '',\n MicroserviceType: '',\n ApplicationResourceTypeList: [],\n ApplicationIdList: [],\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\nconst TSFInstanceAliasList = ['ApplicationId', 'ApplicationName'];\n\nconst TSFInvalidDemensions = {\n applicationid: 'ApplicationId',\n};\n\nconst templateQueryIdMap = {\n instance: 'ApplicationId',\n};\n\nexport default TSF_STATE;\nexport {\n TSFInvalidDemensions,\n templateQueryIdMap,\n TSFInstanceAliasList,\n TSFFieldsDescriptor,\n GetInstanceQueryParams as TSFGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst networkTypes = [\n { text: 'BGP', value: 'BGP' },\n { text: 'SINGLEISP', value: 'SINGLEISP' },\n { text: 'ANYCAST', value: 'ANYCAST' },\n];\n\nconst chargeTypes = [\n { text: 'top5计费', value: 'TOP5_POSTPAID_BY_MONTH' },\n { text: '月95计费', value: 'PERCENT95_POSTPAID_BY_MONTH' },\n];\nconst BWPFilterFields = {\n 'bandwidth-package_id': [],\n 'bandwidth-package-name': [],\n 'network-type': [],\n 'charge-type': [],\n};\n\nconst BWPFilterFieldsDescriptor = [\n {\n key: 'bandwidth-package_id',\n enDescriptor: 'BandwidthPackage Id',\n cnDescriptor: '带宽包ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'bandwidth-package-name',\n enDescriptor: 'BandwidthPackage Name',\n cnDescriptor: '带宽包名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'network-type',\n enDescriptor: 'network type',\n cnDescriptor: '带宽包类型',\n link: '',\n type: 'select',\n list: networkTypes,\n },\n {\n key: 'charge-type',\n enDescriptor: 'charge type',\n cnDescriptor: '带宽包计费类型',\n link: '',\n type: 'select',\n list: chargeTypes,\n },\n];\n\nconst BWP_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'BandwidthPackageId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n BandwidthPackageIds: [''],\n Filters: { ...BWPFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.BandwidthPackageIds)) {\n const BandwidthPackageIds = _.compact(queries.BandwidthPackageIds);\n if (_.uniq(BandwidthPackageIds).length > 0) {\n params.BandwidthPackageIds = _.uniq(BandwidthPackageIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst BWPInstanceAliasList = ['BandwidthPackageId', 'BandwidthPackageName'];\n\nconst templateQueryIdMap = {\n instance: 'BandwidthPackageId',\n};\n\nconst BWPInvalidDemensions = {\n bandwidthPackageId: 'BandwidthPackageId',\n};\nexport default BWP_STATE;\nexport {\n BWPFilterFieldsDescriptor,\n templateQueryIdMap,\n BWPInstanceAliasList,\n BWPInvalidDemensions,\n GetInstanceQueryParams as BWPGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst CDNFilterFields = {\n origin: [],\n domain: [],\n resourceId: [],\n status: {},\n serviceType: {},\n projectId: [],\n domainType: {},\n fullUrlCache: {},\n https: {},\n originPullProtocol: {},\n tagKey: [],\n};\n\nconst CDNFilterFieldsDescriptor = [\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumbermulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst CDN_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: {\n Limit: 20,\n Offset: 0,\n Filters: { ...CDNFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n // console.log('item', item, queries);\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Value: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Value: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n return params;\n}\n\nconst CDNInstanceAliasList = ['Domain', 'ProjectId'];\n\nconst CDNInvalidDemensions = {\n projectId: 'ProjectId',\n domain: 'Domain',\n};\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\nexport default CDN_STATE;\nexport {\n CDNFilterFieldsDescriptor,\n templateQueryIdMap,\n CDNInstanceAliasList,\n CDNInvalidDemensions,\n GetInstanceQueryParams as CDNGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\n// export const LBQueryDescriptor = [{\n// key: 'Offset',\n// enDescriptor: 'Offset',\n// cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n// link: '',\n// type: 'inputnumber',\n// min: 0,\n// },\n// {\n// key: 'Limit',\n// enDescriptor: 'Limit',\n// cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为2000',\n// link: '',\n// type: 'inputnumber',\n// min: 1,\n// max: 2000,\n// },\n// {\n// key: 'AddressId',\n// enDescriptor: 'Address Id',\n// cnDescriptor: '标识 EIP 的唯一 ID ',\n// link: '',\n// type: 'inputmulti',\n// }\n// ];\n\nexport const LBFilterDescriptor = [\n {\n key: 'address-id',\n enDescriptor: 'Address ID',\n cnDescriptor: 'EIP 的唯一 ID ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'address-name',\n enDescriptor: 'Address Name',\n cnDescriptor: 'EIP 名称 ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'address-ip',\n enDescriptor: 'Address IP',\n cnDescriptor: 'EIP 的 IP 地址 ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'address-status',\n enDescriptor: 'Address Status',\n cnDescriptor: 'EIP 的状态',\n link: '',\n type: 'select',\n list: [\n { value: 'CREATING', text: 'CREATING' },\n { value: 'BINDING', text: 'BINDING' },\n { value: 'BIND', text: 'BIND' },\n { value: 'UNBINDING', text: 'UNBINDING' },\n { value: 'UNBIND', text: 'UNBIND' },\n { value: 'OFFLINING', text: 'OFFLINING' },\n { value: 'BIND_ENI', text: 'BIND_ENI' },\n ],\n },\n {\n key: 'instance-id',\n enDescriptor: 'Instance ID',\n cnDescriptor: '实例ID ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'Private IP Address',\n cnDescriptor: 'EIP 绑定的内网 IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'network-interface-id',\n enDescriptor: 'Network Interface ID',\n cnDescriptor: 'EIP 绑定的弹性网卡 ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'is-arrears',\n enDescriptor: 'Arrears',\n cnDescriptor: 'EIP 是否欠费 ',\n link: '',\n type: 'select',\n list: [\n { text: '正常', value: 'FALSE' },\n { text: '欠费', value: 'TRUE' },\n ],\n },\n];\n\n// const LBFilterFields = {\n// \"address-id\": [],\n// \"address-name\": [],\n// \"address-ip\": [],\n// \"address-status \": [],\n// \"instance-id \": [],\n// \"private-ip-address\": [],\n// \"network-interface-id \": [],\n// \"is-arrears \": [],\n// };\n\nconst InstanceKey = 'AddressIds';\nconst LB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'AddressId',\n version: '',\n queries: {\n Offset: 0,\n Limit: 20,\n [InstanceKey]: [''],\n Filters: {\n 'address-id': [],\n 'address-name': [],\n 'address-ip': [],\n 'address-status ': [],\n 'instance-id ': [],\n 'private-ip-address': [],\n 'network-interface-id ': [],\n 'is-arrears ': [],\n },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries[InstanceKey])) {\n const InstanceIds = _.compact(queries[InstanceKey]);\n if (_.uniq(InstanceIds).length > 0) {\n params[InstanceKey] = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst LBInstanceAliasList = ['AddressId', 'AddressName', 'AddressIp'];\n\n// 维度eip对应于实例中的哪个字段?映射\nconst LBInvalidDemensions = {\n eip: 'AddressIp',\n};\n\nconst templateQueryIdMap = {\n instance: 'AddressId',\n};\n// 从monitor维度到LB实例对应字段的映射\n// export const metric2Instance = {\n// functionName: 'FunctionName',\n// namespace: 'Namespace'\n// };\n\nexport default LB_STATE;\nexport {\n LBInstanceAliasList,\n LBInvalidDemensions,\n templateQueryIdMap,\n GetInstanceQueryParams as LBGetInstanceQueryParams,\n};\n\n// monitor监控数据默认支持的维度\n// export const LBDefaultDimensionList = ['functionName', 'namespace', 'version'];\n","import _ from 'lodash';\n\nconst NATGATEWAYInstanceAliasList = ['NatGatewayId', 'NatGatewayName'];\n\nconst NATGatewayFilterFields = {\n 'nat-gateway-id': [],\n 'nat-gateway-name': [],\n 'vpc-id': [],\n};\n\nconst NATGatewayFilterFieldsDescriptor = [\n {\n key: 'nat-gateway-id',\n enDescriptor: 'NatGateway ID',\n cnDescriptor: 'NAT网关统一 ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'nat-gateway-name',\n enDescriptor: 'NatGateway Name',\n cnDescriptor: 'NatGateway Name',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'VPC ID',\n cnDescriptor: '私有网络 ID',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst NATGATEWAY_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'NatGatewayId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n NatGatewayIds: [''],\n Filters: { ...NATGatewayFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.NatGatewayIds)) {\n const NatGatewayIds = _.compact(queries.NatGatewayIds);\n if (_.uniq(NatGatewayIds).length > 0) {\n params.InstanceIds = _.uniq(NatGatewayIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst templateQueryIdMap = {\n instance: 'NatGatewayId',\n};\n\nconst NATInvalidDemensions = {\n natId: 'NatGatewayId',\n};\n\nexport default NATGATEWAY_STATE;\nexport {\n NATGatewayFilterFieldsDescriptor,\n NATGATEWAYInstanceAliasList,\n templateQueryIdMap,\n NATInvalidDemensions,\n GetInstanceQueryParams as NATGATEWAYGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst CDNFilterFields = {\n origin: [],\n domain: [],\n resourceId: [],\n status: [],\n serviceType: [],\n projectId: [],\n domainType: [],\n fullUrlCache: [],\n https: [],\n originPullProtocol: [],\n tagKey: [],\n};\n\nconst OVCDNFilterFieldsDescriptor = [\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumbermulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst OVCDN_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: {\n Limit: 20,\n Offset: 0,\n Filters: { ...CDNFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Value: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Value: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n return params;\n}\n\nconst OVCDNInstanceAliasList = ['Domain', 'ResourceId'];\n\nconst OVCDNInvalidDemensions = {\n projectId: 'ProjectId',\n domain: 'Domain',\n};\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\nexport default OVCDN_STATE;\nexport {\n OVCDNFilterFieldsDescriptor,\n OVCDNInstanceAliasList,\n templateQueryIdMap,\n OVCDNInvalidDemensions,\n GetInstanceQueryParams as OVCDNGetInstanceQueryParams,\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__67__;","import _ from 'lodash';\n\nconst TKE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n conditions: [],\n groupBys: '',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: true,\n ClusterIds: [''],\n Filters: {\n ClusterName: [],\n ClusterType: [],\n ClusterStatus: [],\n 'tag-key': [],\n },\n },\n};\n\nconst TKEFilterFieldsDescriptor = [\n {\n key: 'ClusterName',\n enDescriptor: 'Cluster Name',\n cnDescriptor: '集群名',\n link: '',\n type: 'input',\n },\n {\n key: 'ClusterType',\n enDescriptor: 'Cluster Type',\n cnDescriptor: '集群类型',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ClusterStatus',\n enDescriptor: 'Cluster Status',\n cnDescriptor: '集群状态',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'Tags',\n enDescriptor: 'Tags',\n cnDescriptor: '标签键值对',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'VPC',\n cnDescriptor: 'VPC',\n link: '',\n type: 'input',\n },\n {\n key: 'tag-key',\n enDescriptor: 'Tag Key',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'tag-value',\n enDescriptor: 'Tag Value',\n cnDescriptor: '标签值',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst TKEInstanceAliasList = ['ClusterId', 'ClusterName'];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.InstanceIds)) {\n const InstanceIds = _.compact(queries.InstanceIds);\n if (_.uniq(InstanceIds).length > 0) {\n params.InstanceIds = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nexport default TKE_STATE;\n\nexport { TKEFilterFieldsDescriptor, TKEInstanceAliasList, GetInstanceQueryParams as TKEGetInstanceQueryParams };\n","import {\n APIGATEWAYInstanceAliasList,\n APIGATEWAYInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = APIGATEWAYInstanceAliasList;\n InvalidDimensions = APIGATEWAYInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'apigateway',\n action: 'DescribeServicesStatus',\n responseField: 'ServiceSet',\n };\n\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n async getEnvironmentNameList(params: any) {\n const { region, instanceId } = params;\n const serviceInfo = GetServiceAPIInfo(region, this.service);\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeServiceEnvironmentList' }\n );\n },\n {\n ServiceId: instanceId,\n },\n 'EnvironmentList'\n );\n const [rs] = res;\n return rs;\n }\n async fetchMetricData(action: string, region: string, instance: any) {\n // console.log({ action, region, instance });\n if (action === 'DescribeServiceEnvironmentList') {\n const rs = await this.getEnvironmentNameList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.environmentName];\n return {\n text: o[this.templateQueryIdMap.environmentName],\n value: o[this.templateQueryIdMap.environmentName],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.environmentList, rs);\n return result;\n }\n return [];\n }\n}\n","import {\n BMINTRALBInstanceAliasList,\n BMINTRALBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n isValidMetric,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = BMINTRALBInstanceAliasList;\n InvalidDimensions = BMINTRALBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bmlb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n interceptor: {\n request: (params) => ({\n ...params,\n LoadBalancerType: 'internal',\n }), // 设置一些请求参数的 默认值\n },\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return item;\n }\n return null;\n })\n );\n }\n}\n","import { BMLBInstanceAliasList, CPMInvalidDemensions, namespace, templateQueryIdMap, isValidMetric } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = BMLBInstanceAliasList;\n InvalidDimensions = CPMInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bmlb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n interceptor: {\n request: (params) => ({\n ...params,\n LoadBalancerType: 'open',\n }), // 设置一些请求参数的 默认值\n },\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return item;\n }\n return null;\n })\n );\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n}\n","import {\n BMPCXInstanceAliasList,\n BMPCXInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = BMPCXInstanceAliasList;\n InvalidDimensions = BMPCXInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bmvpc',\n action: 'DescribeVpcPeerConnections',\n responseField: 'VpcPeerConnectionSet',\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n}\n","import { BWPInstanceAliasList, BWPInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class BWPDatasource extends BaseDatasource {\n Namespace = 'QCE/BWP';\n InstanceAliasList = BWPInstanceAliasList;\n InvalidDimensions = BWPInvalidDemensions;\n templateQueryIdMap = {\n instance: 'BandwidthPackageId',\n };\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeBandwidthPackages',\n responseField: 'BandwidthPackageSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { CBSInstanceAliasList, CBSInvalidDemensions, namespace, templateQueryIdMap, isValidMetric } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CBSInstanceAliasList;\n InvalidDimensions = CBSInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cbs',\n action: 'DescribeDisks',\n responseField: 'DiskSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.filter(rawSet, isValidMetric);\n }\n}\n","import _ from 'lodash';\nimport { CDBInstanceAliasList, CDBInvalidDemensions, isValidMetric, modifyDimensons, templateQueryIdMap } from './query_def';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CDBDatasource extends BaseDatasource {\n Namespace = 'QCE/CDB';\n InstanceAliasList = CDBInstanceAliasList;\n InvalidDimensions = CDBInvalidDemensions;\n templateQueryIdMap = {\n instance: 'InstanceId',\n };\n InstanceReqConfig = {\n service: 'cdb',\n action: 'DescribeDBInstances',\n responseField: 'Items',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return modifyDimensons(item);\n }\n return null;\n })\n );\n }\n /**\n * 获取 可用区\n * @param region 地域信息\n */\n getZones(region) {\n const serviceInfo = GetServiceAPIInfo(region, 'cvm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.ZoneId, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n // 仅对维度组合是InstanceId和InstanceType的指标,其他指标不支持\n getDefaultInsObj(ins: string) {\n return {\n [templateQueryIdMap.instance]: ins,\n InstanceType: 1,\n }\n }\n}\n","import _ from 'lodash';\nimport { CDNInstanceAliasList, CDNInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CDNDatasource extends BaseDatasource {\n Namespace = 'QCE/CDN';\n InstanceAliasList = CDNInstanceAliasList;\n InvalidDimensions = CDNInvalidDemensions;\n templateQueryIdMap = {\n instance: 'Domain',\n };\n InstanceReqConfig = {\n service: 'cdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import { CDNPROVINCEInstanceAliasList, CDNPROVINCEInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CDNPROVINCEInstanceAliasList;\n InvalidDimensions = CDNPROVINCEInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n extrasAlias = ['isp', 'district'];\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n async getConsumerList(params: any) {\n const { region, field } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'cdn');\n\n // 从分页数据,获取全量数据\n const rs = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Name: field,\n },\n },\n serviceInfo.service,\n { action: 'DescribeMapInfo' }\n );\n return (rs.MapInfoList || []).map((o) => {\n return {\n text: o.Name,\n value: o.Name,\n };\n });\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n if (action === 'DescribeMapInfo') {\n const { name: field } = query;\n const rs = await this.getConsumerList({ region, field });\n return rs;\n }\n return [];\n }\n}\n","import {\n CEIPSUMMARYInstanceAliasList,\n CEIPInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CEIPSUMMARYInstanceAliasList;\n InvalidDimensions = CEIPInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeAddresses',\n responseField: 'AddressSet',\n interceptor: {\n request: (params) => {\n const { Filters } = params;\n if (!Filters) {\n params.Filters = [];\n }\n params.Filters.push({\n Name: 'address-type',\n Values: ['AnycastEIP'],\n });\n return params;\n }, // 设置一些请求参数的 默认值\n // response: (data: unknown[]) =>[\n // {\n // AddressId: 'AddressId',\n // AddressIp: '111.22.3.4'\n // },\n // ],\n },\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n // async getInstances(region, params = {}) {\n // const rawSet = await super.getInstances(region, params);\n // return rawSet.filter((item) => item.AddressType === 'AnycastEIP');\n // }\n\n // async getVariableInstances(region, query = {}) {\n // const rawSet = await super.getVariableInstances(region, query);\n // return rawSet.filter((item) => item.AddressType === 'AnycastEIP');\n // }\n}\n","import { CESInstanceAliasList, CESInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CESInstanceAliasList;\n InvalidDimensions = CESInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'es',\n action: 'DescribeInstances',\n responseField: 'InstanceList',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import _ from 'lodash';\nimport { BaseDatasource } from '../_base/datasource';\nimport { CFSInstanceAliasList, CFSInvalidDemensions, regionSupported } from './query_def';\nimport { t } from '../../../locale'\nexport default class CFSDatasource extends BaseDatasource {\n InstanceKey: string;\n Namespace: string;\n InstanceAliasList: string[];\n InvalidDimensions: Record;\n templateQueryIdMap = {\n instance: 'FileSystemId',\n };\n extrasAlias = ['version'];\n InstanceReqConfig: { service?: string | undefined; action: string; responseField: string };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n\n this.Namespace = 'QCE/CFS';\n this.InstanceAliasList = CFSInstanceAliasList;\n this.InvalidDimensions = CFSInvalidDemensions;\n this.InstanceReqConfig = {\n service: 'cfs',\n action: 'DescribeCfsFileSystems',\n responseField: 'FileSystems',\n };\n }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n}\n","import _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n CKAFKAInstanceAliasList,\n CKAFKATopicAliasList,\n CKAFKAInvalidDemensions,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\n\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class CKFKADatasource extends BaseDatasource {\n Namespace = 'QCE/CKAFKA';\n InstanceAliasList = CKAFKAInstanceAliasList;\n TopicAliasList = CKAFKATopicAliasList;\n InvalidDimensions = CKAFKAInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'ckafka',\n action: 'DescribeInstances',\n responseField: 'InstanceList',\n };\n extraMetricDims = ['topicId'];\n // extrasAlias = ['topicId', 'consumerGroup', 'partition'];\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n consumerGroupCache = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getConsumerGroups(region, params) {\n const serviceInfo = GetServiceAPIInfo(region, 'ckafka');\n let { InstanceId, groupname = '', topicid = '' } = params;\n groupname = this.getVariable(groupname); // 将模板转换为真实值\n topicid = this.getVariable(topicid); // 将模板转换为真实值\n try {\n groupname = JSON.parse(groupname)[templateQueryIdMap.groupName];\n topicid = JSON.parse(topicid)[templateQueryIdMap.topicId];\n } catch (e) {}\n let consumerGoup = this.consumerGroupCache[InstanceId];\n if (!consumerGoup) {\n // 从分页数据,获取全量数据\n consumerGoup = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeConsumerGroup' }\n );\n },\n _.pick(params, 'InstanceId'),\n ['GroupListForMonitor', 'TopicListForMonitor', 'PartitionListForMonitor', 'GroupList']\n );\n this.consumerGroupCache[InstanceId] = consumerGoup;\n }\n\n let [GroupList, TopicList, PartitionList, GroupDetailList] = consumerGoup;\n // 无重复数组\n TopicList = _.uniqBy(TopicList, (item) => (item as any).TopicId);\n GroupList = _.uniqBy(GroupList, (item) => (item as any).GroupName);\n PartitionList = _.uniqBy(PartitionList, (item) => (item as any).PartitionId);\n GroupDetailList = _.uniqBy(GroupDetailList, (item) => (item as any).ConsumerGroupName);\n // 如果传入消费者信息,consumergroupname,获取该用户的订阅信息列表\n const SubscribedInfos = GroupDetailList.find((d) => d.ConsumerGroupName === groupname)?.SubscribedInfo || [];\n // 这里为了兼容PartitonList格式,最后转化为数组对象的方式\n const partitions =\n SubscribedInfos.find((sub) => sub.TopicId === topicid)?.Partition?.map((p) => ({\n [templateQueryIdMap.partition]: p,\n })) || [];\n return {\n GroupList,\n TopicList:\n SubscribedInfos.length > 0\n ? SubscribedInfos.map(({ TopicId, TopicName }) => ({ TopicId, TopicName }))\n : TopicList,\n PartitionList: partitions.length > 0 ? partitions : PartitionList,\n };\n }\n formatTopicVarDisplay(topic: Record, displayTpl: string | undefined, topicAlias: string) {\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !this.TopicAliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(topic, b);\n });\n }\n return this.getAliasValue(topic, topicAlias);\n }\n // 查询指标下的数据\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n let { topicalias, groupname, topicid } = query;\n const result = await this.getConsumerGroups(region, {\n InstanceId: instance.InstanceId,\n groupname,\n topicid,\n });\n let { display } = query;\n const { TopicList, GroupList, PartitionList } = result;\n topicalias = this.TopicAliasList.includes(topicalias) ? topicalias : this.templateQueryIdMap.topicId;\n\n const rs = {\n GroupList: GroupList.map((group) => {\n group._InstanceAliasValue = group.GroupName;\n return {\n text: group.GroupName,\n value: group[templateQueryIdMap.groupName],\n };\n }),\n TopicList: TopicList.map((topic) => {\n const topicAlias = this.formatTopicVarDisplay(topic, display, topicalias);\n topic._InstanceAliasValue = topicAlias || topic[templateQueryIdMap.topicId];\n return {\n text: topicAlias || topic[templateQueryIdMap.topicId],\n value: topic[templateQueryIdMap.topicId], // 为了获取多维度的值,这里完全可以使用JSON.stringify()将整个对象放进去\n TopicName: topic.TopicName,\n };\n }),\n PartitionList: PartitionList.map((par) => {\n par._InstanceAliasValue = par[templateQueryIdMap.partition];\n return {\n text: par[templateQueryIdMap.partition],\n value: par[templateQueryIdMap.partition],\n };\n }),\n };\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.TopicList, TopicList);\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.GroupList, GroupList);\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.PartitionList, PartitionList);\n // console.log({ res1, res2, res3 });\n // console.log({rs});\n // 根据action返回指定的维度数据列表\n switch (action) {\n case 'DescribeTopicList':\n return rs.TopicList;\n case 'DescribeGroup':\n return rs.GroupList;\n case 'DescribePartion':\n return rs.PartitionList;\n default:\n return [];\n }\n }\n\n // async getOtherAlias(datapoints) {\n // let dimension;\n // for(let j = 0; j < datapoints.Dimensions.length; j++){\n // if(datapoints.Dimensions[j] !== 'InstanceName'){\n // dimension.push(datapoints.Dimensions[j])\n // }\n // }\n // console.log(dimension);\n\n // return dimension\n // }\n}\n","import {\n InstanceAliasList,\n LOADBALANCEListenerAliasList,\n LOADBALANCEServerAliasList,\n LOADBALANCEVALIDDIMENSIONS,\n templateQueryIdMap,\n keyInStorage,\n CANDIATEDIMENSIONS,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class DCDatasource extends BaseDatasource {\n // Namespace = namespace;\n InstanceAliasList = InstanceAliasList;\n ListenerAliasList = LOADBALANCEListenerAliasList;\n ServerAliasList = LOADBALANCEServerAliasList;\n CandiateDimensions = CANDIATEDIMENSIONS;\n // InvalidDimensions = LOADBALANCEVALIDDIMENSIONS;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n // InstanceReqConfig = {\n // service: 'clb',\n // action: 'DescribeLoadBalancers',\n // responseField: 'LoadBalancerSet',\n // };\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getInvalidDimensions(selfIns: any, tagret: any) {\n if (selfIns.service === 'lbPrivate' || (selfIns.service === 'lbPublic' && tagret.servers))\n return { ...LOADBALANCEVALIDDIMENSIONS, vpcId: 'NumericalVpcId' };\n return LOADBALANCEVALIDDIMENSIONS;\n }\n getInstanceReqConfig(selfIns: any) {\n const res: any = {\n service: 'clb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n };\n if (selfIns.service === 'lbPrivate' || selfIns.service === 'loadBalance') {\n res.interceptor = {\n request: (param) => ({ ...param, LoadBalancerType: 'INTERNAL' }),\n };\n }\n if (selfIns.service === 'lbPublic') {\n res.interceptor = {\n request: (param) => ({ ...param, LoadBalancerType: 'OPEN' }),\n };\n }\n return res;\n }\n async getListenerList(params: any) {\n const { region, instanceId } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'clb');\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeListeners' }\n );\n },\n {\n LoadBalancerId: instanceId,\n },\n 'Listeners'\n );\n const [rs] = res;\n return rs;\n }\n formatVariableDisplay(data: Record, displayTpl: string | undefined, alias: string, aliasList: string[]) {\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !aliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(data, b);\n });\n }\n return this.getAliasValue(data, alias);\n }\n async getServerList(params: any) {\n const { region, instanceId, listenerId } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'clb');\n\n const res = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: { LoadBalancerId: instanceId, ListenerIds: [listenerId] },\n },\n serviceInfo.service,\n { region, action: 'DescribeTargets' }\n );\n const { Listeners } = res;\n const serversList = _.reduce(\n Listeners,\n (prev, item) => {\n const { Rules, Targets } = item;\n if (!_.isEmpty(Rules)) {\n return _.concat(prev, _.flatten(_.map(Rules, (elem) => (_.isEmpty(elem.Targets) ? [] : elem.Targets))));\n }\n if (!_.isEmpty(Targets)) {\n return _.concat(prev, Targets);\n }\n return prev;\n },\n []\n );\n return serversList;\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const { display } = query;\n if (action === 'DescribeListeners') {\n const rs = await this.getListenerList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n let { listeneralias } = query;\n listeneralias = this.ListenerAliasList.includes(listeneralias) ? listeneralias : this.templateQueryIdMap.listener;\n const result = rs.flatMap((o) => {\n const listenAlias = this.formatVariableDisplay(o, display, listeneralias, this.ListenerAliasList);\n const lisId = o[this.templateQueryIdMap.listener];\n o._InstanceAliasValue = listenAlias || lisId;\n // if (!o[listeneralias]) return [];\n return {\n text: listenAlias || lisId,\n value: lisId,\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.listener, rs);\n return result;\n }\n if (action === 'DescribeServer' || action === 'DescribeServerPort') {\n const { listenerid, serverprivateip, serveralias } = query;\n const serverPrivateIp = this.getVariable(serverprivateip);\n const serversList = await this.getServerList({\n region,\n instanceId: instance[this.templateQueryIdMap.instance],\n listenerId: this.getVariable(listenerid),\n });\n const serverAlias = this.ServerAliasList.includes(serveralias) ? serveralias : this.templateQueryIdMap.servers;\n const result = _.chain(serversList)\n .filter((item) => {\n if (action === 'DescribeServer') {\n return true;\n }\n return serverPrivateIp === _.get(item, 'PrivateIpAddresses.0');\n })\n .map((item) => {\n const alias = this.formatVariableDisplay(item, display, serverAlias, this.ServerAliasList);\n const id = item[this.templateQueryIdMap.servers][0];\n item._InstanceAliasValue = alias || id;\n return action === 'DescribeServer'\n ? {\n text: alias || id,\n value: id,\n }\n : {\n text: `${_.get(item, 'Port')}`,\n value: _.get(item, 'Port'),\n };\n })\n .value();\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.servers, serversList);\n return action === 'DescribeServer' ? result : _.uniqBy(result, 'text');\n }\n return [];\n }\n}\n","import {\n CLSInstanceAliasList,\n CLSInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CLSInstanceAliasList;\n InvalidDimensions = CLSInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cls',\n action: 'DescribeTopics',\n responseField: 'Topics',\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n // async getInstances(region, params = {}) {\n // const superRes = await super.getInstances(region, params);\n // console.log({ superRes });\n // }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n}\n","import { BaseDatasource } from '../_base/datasource';\nimport { InvalidDemensions, InstanceAliasList, templateQueryIdMap } from './query_def';\n\nexport default class CmqDatasource extends BaseDatasource {\n InvalidDimensions: Record = InvalidDemensions;\n InstanceAliasList: string[] = InstanceAliasList;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'cmq',\n action: 'DescribeQueueDetail',\n responseField: 'QueueSet',\n };\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawMetric = await super.getMetrics(region);\n return rawMetric.map((metric) => {\n let dims = metric.Dimensions[0].Dimensions;\n dims = Array.from(new Set([...dims, 'queueId', 'queueName']));\n metric.Dimensions[0].Dimensions = dims;\n return metric;\n });\n }\n}\n","import { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n InvalidDemensions,\n InstanceAliasList,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class CmqTopicDatasource extends BaseDatasource {\n Namespace = 'QCE/CMQTOPIC';\n InvalidDimensions: Record = InvalidDemensions;\n InstanceAliasList: string[] = InstanceAliasList;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'cmq',\n action: 'DescribeTopicDetail',\n responseField: 'TopicSet',\n };\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n extraMetricDims = ['subscriptionId']; // 多选\n\n async fetchAllSubscription(region: string, params: any) {\n const serviceInfo = GetServiceAPIInfo(region, 'cmq');\n // console.log(serviceInfo, 'serviceinfo');\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeSubscriptionDetail' }\n );\n },\n params,\n 'SubscriptionSet'\n );\n\n return rs[0];\n }\n\n async fetchMetricData(action: string, region: string, instance: any) {\n let result;\n switch (action) {\n case 'DescribeSubscriptionDetail':\n result = await this.fetchAllSubscription(region, { TopicName: instance.TopicName });\n // eslint-disable-next-line no-case-declarations\n const rs = result.map((item) => {\n item._InstanceAliasValue = item.SubscriptionId;\n return { text: item.SubscriptionId, value: item[templateQueryIdMap.subscription] };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.subscriptionId, result);\n return rs;\n default:\n return [];\n }\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawMetric = await super.getMetrics(region);\n return rawMetric.map((metric) => {\n let dims = metric.Dimensions[0].Dimensions;\n dims.push('topicId');\n if (['NumOfNotify', 'NumOfSuccNotify'].includes(metric.MetricName)) {\n dims.push('subscriptionId');\n }\n\n dims = Array.from(new Set(dims));\n metric.Dimensions[0].Dimensions = dims;\n return metric;\n });\n }\n}\n","import { BaseDatasource } from '../_base/datasource';\n\ninterface BucketListResult {\n Owner: { ID: 'string'; DisplayName: 'string' };\n Buckets: { Name: string; Region: string }[];\n}\n\nexport default class CosDatasource extends BaseDatasource {\n InvalidDimensions: Record = {};\n InstanceAliasList: string[] = ['BucketName'];\n templateQueryIdMap = {\n instance: 'BucketName',\n };\n InstanceReqConfig = {} as any; // 不必要的配置\n cosURL: string;\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n this.cosURL = `/api/datasources/${this.instanceSettings.id}/resources/tc_cos_list`;\n }\n async getInstances(region: string) {\n return this.backendSrv\n .datasourceRequest({\n url: this.cosURL,\n method: 'GET',\n params: { region },\n headers: { 'Content-Type': 'application/json' },\n })\n .then((res) => {\n let { data }: { data: BucketListResult } = res;\n data = data || ({} as any);\n let { Buckets } = data;\n Buckets = Buckets || [];\n\n // name contains appid,see detail https://cloud.tencent.com/document/product/436/8291\n return Buckets.map((item) => ({\n ...item,\n BucketName: item.Name,\n bucket: item.Name,\n appid: item.Name.split('-').slice(-1)[0],\n }));\n });\n }\n\n async getVariableInstances(region) {\n return this.getInstances(region);\n }\n}\n","import {\n CPMInstanceAliasList,\n CPMInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CPMInstanceAliasList;\n InvalidDimensions = CPMInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bm',\n action: 'DescribeDevices',\n responseField: 'DeviceInfoSet',\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n\n getFilterDropdown({ field, region }) {\n if (field === 'DeviceClassCode') {\n const serviceInfo = GetServiceAPIInfo(region, 'bm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n 'bm',\n { region, action: 'DescribeDeviceClass' }\n ).then((response) => {\n return _.map(response.DeviceClassSet || [], (item) => {\n return { text: item.DeviceClassCode, value: item.DeviceClassCode };\n });\n });\n }\n return [];\n }\n}\n","import _ from 'lodash';\nimport { CVMInstanceAliasList, isValidMetric, modifyDimensons } from './query_def';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CVMDatasource extends BaseDatasource {\n Namespace = 'QCE/CVM';\n InstanceAliasList = CVMInstanceAliasList;\n InvalidDimensions = {};\n templateQueryIdMap = {\n instance: 'InstanceId',\n };\n InstanceReqConfig = {\n service: 'cvm',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return modifyDimensons(item);\n }\n return null;\n })\n );\n }\n\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/api',\n data: { Product: 'cvm' },\n },\n 'api',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n\n getZones(region) {\n const serviceInfo = GetServiceAPIInfo(region, 'api');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: { Product: 'cvm' },\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n}\n","import {\n CYNOSDBMYSQLInstanceAliasList,\n CYNOSDBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n checkKeys,\n} from './query_def';\nimport _ from 'lodash';\nimport { BaseDatasource } from '../_base/datasource';\n// import { t } from '../../../locale';\n\nexport default class CYNOSDBMYSQLDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CYNOSDBMYSQLInstanceAliasList;\n InvalidDimensions = CYNOSDBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n checkKeys = checkKeys;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cynosdb',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n // getRegions() {\n // return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n // }\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/api',\n data: { Product: 'cynosdbmysql' },\n },\n 'api',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n // 仅对维度组合是InstanceId的指标,其他指标不支持\n getDefaultInsObj(ins: string) {\n return {\n [templateQueryIdMap.instance]: ins,\n }\n }\n}\n","import { DCInstanceAliasList, DCInvalidDemensions, namespace, modifyDimensons } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCInstanceAliasList;\n InvalidDimensions = DCInvalidDemensions;\n templateQueryIdMap = {\n instance: 'DirectConnectId',\n };\n InstanceReqConfig = {\n service: 'dc',\n action: 'DescribeDirectConnects',\n responseField: 'DirectConnectSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n}\n","import {\n DCDBInstanceAliasList,\n DCDBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCDBInstanceAliasList;\n InvalidDimensions = DCDBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'dcdb',\n action: 'DescribeDCDBInstances',\n responseField: 'Instances',\n };\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n extraActionMap = {\n DescribeDCDBShards: {\n service: 'dcdb',\n action: 'DescribeDCDBShards',\n responseField: 'Shards',\n pickKey: 'ShardInstanceId',\n },\n DescribeDCDBInstanceNodeInfo: {\n service: 'dcdb',\n action: 'DescribeDCDBInstanceNodeInfo',\n responseField: 'NodesInfo',\n pickKey: 'NodeId',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion, 入参的region用广州\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/dcdb',\n },\n 'dcdb',\n { action: 'DescribeDCDBSaleInfo', region: 'ap-guangzhou' }\n ).then((response) => {\n return _.map(response.RegionList || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n RegionState: item.RegionState,\n };\n });\n });\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n InstanceId: instance[this.templateQueryIdMap.instance],\n Limit: 100,\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import { DCGInstanceAliasList, DCGInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCGInstanceAliasList;\n InvalidDimensions = DCGInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeDirectConnectGateways',\n responseField: 'DirectConnectGatewaySet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { DCXInstanceAliasList, DCXInvalidDemensions, namespace, modifyDimensons } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCXDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCXInstanceAliasList;\n InvalidDimensions = DCXInvalidDemensions;\n templateQueryIdMap = {\n instance: 'DirectConnectTunnelId',\n };\n InstanceReqConfig = {\n service: 'dc',\n action: 'DescribeDirectConnectTunnels',\n responseField: 'DirectConnectTunnelSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n}\n","import { BaseDatasource } from '../_base/datasource';\nimport {\n ECDNInstanceAliasList,\n ECDNInvalidDemensions,\n modifyDimensons,\n namespace,\n templateQueryIdMap,\n} from './query_def';\n\nexport default class ECDNDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECDNInstanceAliasList;\n InvalidDimensions = ECDNInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'ecdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n}\n","import {\n ECMInstanceAliasList,\n ECMInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECMInstanceAliasList;\n InvalidDimensions = ECMInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'ecm',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import {\n ECMBLOCKSTORAGEInstanceAliasList,\n ECMBLOCKSTORAGEInvalidDemensions,\n namespace,\n templateQueryIdMap,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECMBLOCKSTORAGEInstanceAliasList;\n InvalidDimensions = ECMBLOCKSTORAGEInvalidDemensions;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n templateQueryIdMap = templateQueryIdMap;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'ecm',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getDiskList(params: any) {\n const { payload } = params;\n const { InstanceId } = payload;\n const instanceCache = await instanceStorage.getInstance(this.service);\n const instanceObj: any =\n _.cloneDeep(instanceCache.find((item) => item[this.templateQueryIdMap.instance] === InstanceId)) ?? {};\n const { DataDisks: dataDisks } = instanceObj;\n return dataDisks;\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n InstanceId: instance,\n Limit: 100,\n };\n const rs = await this.getDiskList({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.diskId];\n return {\n text: o[this.templateQueryIdMap.diskId],\n value: o[this.templateQueryIdMap.diskId],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.diskId, rs);\n return result;\n }\n}\n","import { ECMLBInstanceAliasList, ECMLBInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECMLBInstanceAliasList;\n InvalidDimensions = ECMLBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'ecm',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import {\n GSEInstanceAliasList,\n GSEInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n keyInStorage,\n queryMonitorExtraConfg,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = GSEInstanceAliasList;\n InvalidDimensions = GSEInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'gse',\n action: 'DescribeInstances',\n responseField: 'Instances',\n };\n\n keyInStorage = keyInStorage;\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n async getQueueNameList(params: any) {\n const { region } = params;\n const serviceInfo = GetServiceAPIInfo(region, this.service);\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeGameServerSessionQueues' }\n );\n },\n {},\n 'GameServerSessionQueues'\n );\n const [rs] = res;\n return rs;\n }\n async getFleetList(params: any) {\n const { region } = params;\n const serviceInfo = GetServiceAPIInfo(region, this.service);\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'ListFleets' }\n );\n },\n {},\n 'FleetIds'\n );\n const [rs] = res;\n return rs.map((r) => ({ [this.templateQueryIdMap.FleetId]: r }));\n }\n async fetchMetricData(action: string, region: string, instance: any) {\n // console.log({ action, region, instance });\n if (action === 'DescribeGameServerSessionQueues') {\n const rs = await this.getQueueNameList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.Name];\n return {\n text: o[this.templateQueryIdMap.Name],\n value: o[this.templateQueryIdMap.Name],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.queue, rs);\n return result;\n }\n if (action === 'ListFleets') {\n const rs = await this.getFleetList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.FleetId];\n return {\n text: o[this.templateQueryIdMap.FleetId],\n value: o[this.templateQueryIdMap.FleetId],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.fleet, rs);\n return result;\n }\n return [];\n }\n}\n","import _ from 'lodash';\nimport { BaseDatasource } from '../_base/datasource';\nimport { LBInstanceAliasList, LBInvalidDemensions } from './query_def';\n\nexport default class SCFDatasource extends BaseDatasource {\n Namespace = 'QCE/LB';\n InstanceAliasList = LBInstanceAliasList;\n InvalidDimensions = LBInvalidDemensions;\n templateQueryIdMap = {\n instance: 'AddressId',\n };\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeAddresses',\n responseField: 'AddressSet',\n interceptor: {\n request: (params) => {\n const { Filters } = params;\n if (!Filters) {\n params.Filters = [];\n }\n params.Filters.push({\n Name: 'address-type',\n Values: ['EIP'],\n });\n return params;\n }, // 设置一些请求参数的 默认值\n },\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter((item) =>\n /* hack:这里多加了筛选条件,是因为后端数据不准确,坑啊! 只拿取包含eip的指标 */\n item.Dimensions?.[0]?.Dimensions?.includes('eip')\n );\n }\n\n // async getInstances(region, params = {}) {\n // const rawSet = await super.getInstances(region, params);\n // /* hack:这里多加了筛选条件,是因为后端数据不准确,坑啊! 只拿取包含eip的指标 */\n // return rawSet.filter((item) => item.AddressType === 'EIP');\n // }\n\n // async getVariableInstances(region, query = {}) {\n // const rawSet = await super.getVariableInstances(region, query);\n // return rawSet.filter((item) => item.AddressType === 'EIP');\n // }\n}\n","import _ from 'lodash';\nimport {\n LIGHTHOUSEInstanceAliasList,\n templateQueryIdMap,\n LighthouseInvalidDemensions,\n modifyDimensons,\n} from './query_def';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class LighthouseDatasource extends BaseDatasource {\n Namespace = 'QCE/LIGHTHOUSE';\n InstanceAliasList = LIGHTHOUSEInstanceAliasList;\n InvalidDimensions = LighthouseInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'lighthouse',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/api',\n data: { Product: 'lighthouse' },\n },\n 'api',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n\n getZones(region) {\n const serviceInfo = GetServiceAPIInfo(region, 'api');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: { Product: 'lighthouse' },\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n}\n","import _ from 'lodash';\nimport {\n MONGODBInstanceAliasList,\n MONGODBInvalidDemensions,\n templateQueryIdMap,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class MONGODBDatasource extends BaseDatasource {\n Namespace = 'QCE/CMONGO';\n InstanceAliasList = MONGODBInstanceAliasList;\n ReplicaAliasList = ['ReplicaSetId', 'ReplicaSetName'];\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n\n InstanceReqConfig = {\n service: 'mongodb',\n action: 'DescribeDBInstances',\n responseField: 'InstanceDetails',\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n getInvalidDimensions(selfIns: any, target: any) {\n if (target.node && target.node !== '') {\n return { target: 'Node' };\n }\n if (target.replica && target.replica !== '') {\n return { target: 'Replica' };\n }\n return MONGODBInvalidDemensions;\n }\n formatVariableDisplay(data: Record, displayTpl: string | undefined, alias: string, aliasList: string[]) {\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !aliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(data, b);\n });\n }\n return this.getAliasValue(data, alias);\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const { display } = query;\n if (action === 'DescribeReplicas') {\n const [res] = await this.getInstances(region, { InstanceIds: [instance[this.templateQueryIdMap.instance]] });\n let { replicaalias } = query;\n replicaalias = this.ReplicaAliasList.includes(replicaalias) ? replicaalias : this.templateQueryIdMap.replica;\n const result = _.map(_.get(res, 'ReplicaSets', []), (item) => {\n const replicaAlias = this.formatVariableDisplay(item, display, replicaalias, this.ReplicaAliasList);\n item._InstanceAliasValue = replicaAlias || item[this.templateQueryIdMap.replica];\n return { text: item.ReplicaSetId, value: item.ReplicaSetId };\n });\n await instanceStorage.setExtraStorage(\n this.service,\n this.queryMonitorExtraConfg.Replica.dim_KeyInStorage,\n _.get(res, 'ReplicaSets', [])\n );\n return result;\n }\n if (action === 'DescribeReplicaNodes') {\n const [res] = await this.getInstances(region, { InstanceIds: [instance[this.templateQueryIdMap.instance]] });\n const { replicasetid } = query;\n const targetReplica = _.find(_.get(res, 'ReplicaSets', []), { ReplicaSetId: this.getVariable(replicasetid) });\n let result = _.times(targetReplica.SecondaryNum, (index) => {\n const nodeId = `${targetReplica.ReplicaSetId}-node-slave${index}`;\n return { text: nodeId, value: nodeId };\n });\n if (targetReplica) {\n result = [\n { text: `${targetReplica.ReplicaSetId}-node-primary`, value: `${targetReplica.ReplicaSetId}-node-primary` },\n ...result,\n ];\n }\n await instanceStorage.setExtraStorage(\n this.service,\n this.queryMonitorExtraConfg.Node.dim_KeyInStorage,\n result.map((item) => ({ NodeId: item.value, _InstanceAliasValue: item.value }))\n );\n return result;\n }\n\n return [];\n }\n}\n","import { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n InvalidDemensions,\n InstanceAliasList,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class MrHdfsDatasource extends BaseDatasource {\n InvalidDimensions: Record = InvalidDemensions;\n InstanceAliasList: string[] = InstanceAliasList;\n templateQueryIdMap = templateQueryIdMap;\n extrasAlias = [];\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n InstanceReqConfig = {\n service: 'emr',\n action: 'DescribeInstances',\n responseField: 'ClusterList',\n interceptor: {\n request: (params) => ({\n ...params,\n DisplayStrategy: params.DisplayStrategy || 'monitorManage',\n ProjectId: params.ProjectId || -1,\n }), // 设置一些请求参数的 默认值\n response: (data: any[]) => data.map(({ ClusterId, ClusterName }) => ({ ClusterId, ClusterName })),\n },\n };\n\n async fetchAllNodes(region: string, params: any) {\n const serviceInfo = GetServiceAPIInfo(region, 'emr');\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeClusterNodes' }\n );\n },\n { ...params, isOffsetPage: true },\n 'NodeList'\n );\n\n // return rs[0].map((item) => ({ text: item.Ip, value: item.Ip }));\n return rs[0];\n }\n\n async fetchMetricData(action: string, region: string, instance: any) {\n let result;\n switch (action) {\n case 'DescribeClusterNodes': {\n const resultT = await this.fetchAllNodes(region, { InstanceId: instance.ClusterId, NodeFlag: 'all' });\n result = resultT.map((item) => {\n item._InstanceAliasValue = item[templateQueryIdMap.node];\n return { text: item[templateQueryIdMap.node], value: item[templateQueryIdMap.node] };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.node, resultT);\n\n return result;\n }\n default:\n return [];\n }\n }\n}\n","import _ from 'lodash';\nimport { NATGATEWAYInstanceAliasList, NATInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class NATGATEWAYDatasource extends BaseDatasource {\n Namespace = 'QCE/NAT_GATEWAY';\n InstanceAliasList = NATGATEWAYInstanceAliasList;\n InvalidDimensions = NATInvalidDemensions;\n templateQueryIdMap = {\n instance: 'NatGatewayId',\n };\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeNatGateways',\n responseField: 'NatGatewaySet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import _ from 'lodash';\nimport { OVCDNInstanceAliasList, OVCDNInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class OVCDNDatasource extends BaseDatasource {\n Namespace = 'QCE/OV_CDN';\n InstanceAliasList = OVCDNInstanceAliasList;\n InvalidDimensions = OVCDNInvalidDemensions;\n templateQueryIdMap = {\n instance: 'Domain',\n };\n InstanceReqConfig = {\n service: 'cdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import { PCXInstanceAliasList, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo, GetRequestParamsV2, SliceLength } from '../../common/constants';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = PCXInstanceAliasList;\n InvalidDimensions = {};\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'xx',\n action: 'xx',\n responseField: 'xx',\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getInstances(region = 'ap-guangzhou', params = {}) {\n params = { offset: 0, limit: 50, ...params };\n const serviceInfo = GetServiceAPIInfo(region, 'pcx');\n return this.doRequestV2(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcPeeringConnections' }\n ).then((response) => {\n return response.data || [];\n });\n }\n\n /**\n * 模板变量中获取全量的 PCX 实例列表\n * @param region 地域信息\n */\n getVariableInstances(region, query) {\n let result: any[] = [];\n const params = { Offset: 0, Limit: 50, ...query };\n const serviceInfo = GetServiceAPIInfo(region, 'pcx');\n return this.doRequestV2(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcPeeringConnections' }\n ).then((response) => {\n result = response.data || [];\n const total = response.totalCount || 0;\n if (result.length >= total) {\n return result;\n } else {\n const param = SliceLength(total, 50);\n const promises: any[] = [];\n _.forEach(param, (item) => {\n promises.push(this.getInstances(region, item));\n });\n return Promise.all(promises)\n .then((responses) => {\n _.forEach(responses, (item) => {\n result = _.concat(result, item);\n });\n return result;\n })\n .catch((error) => {\n return result;\n });\n }\n });\n }\n\n getVpcId(region, params: any = {}) {\n params = { Offset: 0, Limit: 20, ...params };\n // TODO 等待腾讯云接口查问题\n params.Offset = String(params.Offset);\n params.Limit = String(params.Limit);\n const serviceInfo = GetServiceAPIInfo(region, 'vpc');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcs' }\n ).then((response) => {\n return _.map(response.VpcSet || [], (item) => ({ text: item.VpcId, value: item.VpcId }));\n });\n }\n\n getVpcIds(region) {\n let result: any[] = [];\n const params: any = { Offset: 0, Limit: 100 };\n // TODO 等待腾讯云接口查问题\n params.Offset = String(params.Offset);\n params.Limit = String(params.Limit);\n const serviceInfo = GetServiceAPIInfo(region, 'vpc');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcs' }\n ).then((response) => {\n result = _.map(response.VpcSet || [], (item) => ({ text: item.VpcId, value: item.VpcId }));\n const total = response.TotalCount || 0;\n if (result.length >= total) {\n return result;\n } else {\n const param = SliceLength(total, 100);\n const promises: any[] = [];\n _.forEach(param, (item) => {\n promises.push(this.getVpcId(region, item));\n });\n return Promise.all(promises)\n .then((responses) => {\n _.forEach(responses, (item) => {\n result = _.concat(result, item);\n });\n return result;\n })\n .catch((error) => {\n return result;\n });\n }\n });\n }\n\n /**\n * 腾讯云 API 2.0 请求接口\n * @param options\n * @param service\n * @param signObj\n */\n async doRequestV2(options, service, signObj: any = {}) {\n options = await GetRequestParamsV2(\n options,\n service,\n signObj,\n this.secretId,\n this.instanceSettings.id,\n this.backendSrv\n );\n return this.backendSrv\n .datasourceRequest(options)\n .then((response) => {\n return _.get(response, 'data', {});\n })\n .catch((error) => {\n throw error;\n });\n }\n}\n","import _ from 'lodash';\nimport {\n POSTGRESInstanceAliasList,\n PostgreInvalidDemensions,\n namespace,\n modifyDimensons,\n templateQueryIdMap,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CDBDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = POSTGRESInstanceAliasList;\n InvalidDimensions = PostgreInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'postgres',\n action: 'DescribeDBInstances',\n responseField: 'DBInstanceSet',\n };\n\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { get } from 'lodash';\nimport { QAAPInstanceAliasList, QAAPInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class QAAPDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = QAAPInstanceAliasList;\n InvalidDimensions = QAAPInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'gaap',\n action: 'DescribeProxies',\n responseField: 'ProxySet',\n interceptor: {\n // response: (data: unknown[]) =>[\n // {\n // \"NetDetectId\": \"netd-12345678\",\n // },\n // ],\n },\n };\n // MetricReqConfig = {\n // resultFilter: modifyDimensons,\n // };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter(\n (item) =>\n get(item, 'Dimensions.length') === 1 &&\n get(item, 'Dimensions[0].Dimensions.length') === 1 &&\n get(item, 'Dimensions[0].Dimensions[0]') === 'channelId'\n );\n }\n}\n","import _ from 'lodash';\nimport { REDISInstanceAliasList, RedisInvalidDemensions, isValidMetric } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class REDISDatasource extends BaseDatasource {\n Namespace = 'QCE/REDIS';\n InstanceAliasList = REDISInstanceAliasList;\n InvalidDimensions = RedisInvalidDemensions;\n templateQueryIdMap = {\n instance: 'InstanceId',\n };\n InstanceReqConfig = {\n service: 'redis',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n interceptor: {\n request: (params) => ({ ...params, MonitorVersion: '1m' }),\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter((item) => isValidMetric(item));\n }\n}\n","import _ from 'lodash';\nimport {\n REDISMEMInstanceAliasList,\n namespace,\n RedisMemInvalidDemensions,\n templateQueryIdMap,\n NodeType,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\n\nexport default class REDISDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = REDISMEMInstanceAliasList;\n InvalidDimensions = RedisMemInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n extrasAlias = [RedisMemInvalidDemensions.pnodeid, RedisMemInvalidDemensions.rnodeid];\n InstanceReqConfig = {\n service: 'redis',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n interceptor: {\n request: (params) => ({ ...params, MonitorVersion: '5s' }),\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getInstanceNodeInfo(params: any) {\n const { region, instanceId } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'redis');\n\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeInstanceNodeInfo' }\n );\n },\n {\n InstanceId: instanceId,\n },\n NodeType\n );\n\n return res;\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n if (action === 'DescribeInstanceNodeInfo') {\n const rs = await this.getInstanceNodeInfo({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const { nodetype } = query;\n const ndoeTypeIndex = NodeType.indexOf(nodetype);\n return ndoeTypeIndex === -1\n ? []\n : _.map(rs[ndoeTypeIndex], (item) => ({ text: item.NodeId, value: item.NodeId }));\n }\n return [];\n }\n}\n","import _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n SCFInstanceAliasList,\n SCFInvalidDemensions,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n templateQueryIdMap,\n} from './query_def';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class SCFDatasource extends BaseDatasource {\n InstanceKey: string;\n Namespace: string;\n InstanceAliasList: string[];\n InvalidDimensions: Record;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n InstanceReqConfig: { service?: string | undefined; action: string; responseField: string };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n\n this.Namespace = 'QCE/SCF_V2';\n this.InstanceAliasList = SCFInstanceAliasList;\n this.InvalidDimensions = SCFInvalidDemensions;\n this.InstanceReqConfig = {\n service: 'scf',\n action: 'ListFunctions',\n responseField: 'Functions',\n };\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter(\n (item) =>\n /* hack:这里多加了筛选条件,是因为后端数据不准确,坑啊! 只拿取包含functionName的指标 */\n item.Dimensions?.[0]?.Dimensions?.includes('functionName') &&\n item.Dimensions?.[0]?.Dimensions?.includes('namespace') &&\n !item.MetricName.startsWith('Name')\n );\n }\n\n getVersions(region, params) {\n const serviceInfo = GetServiceAPIInfo(region, 'scf');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'ListVersionByFunction' }\n ).then((response) => {\n return response.Versions;\n });\n }\n\n async fetchMetricData(action: string, region: string, instance: any) {\n // console.log({ action, region, instance });\n if (action === 'ListVersionByFunction') {\n const rs = await this.getVersions(region, { FunctionName: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.version];\n return {\n text: o[this.templateQueryIdMap.version],\n value: o[this.templateQueryIdMap.version],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.version, rs);\n return result;\n }\n return [];\n }\n}\n","import {\n SQLSERVERInstanceAliasList,\n SQLSERVERInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = SQLSERVERInstanceAliasList;\n InvalidDimensions = SQLSERVERInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'sqlserver',\n action: 'DescribeDBInstances',\n responseField: 'DBInstances',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(rawSet.map((item) => modifyDimensons(item)));\n }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n getFilterDropdown({ field, region }) {\n if (field === 'Zone') {\n const serviceInfo = GetServiceAPIInfo(region, 'cvm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n return [];\n }\n}\n","import {\n TCAPLUSInstanceAliasList,\n TCAPLUSInvalidDemensions,\n namespace,\n templateQueryIdMap,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TCAPLUSInstanceAliasList;\n InvalidDimensions = TCAPLUSInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tcaplusdb',\n action: 'DescribeTables',\n responseField: 'TableInfos',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/tcaplusdb',\n },\n 'tcaplusdb',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n return _.map(response.RegionInfos || [], (item) => {\n return {\n text: t(item.RegionName),\n value: item.RegionName,\n };\n });\n });\n }\n}\n","import {\n TDMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n modifyDimensons,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class TDMQDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TDMQInstanceAliasList;\n InvalidDimensions = TDMQInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tdmq',\n action: 'DescribeClusters',\n responseField: 'ClusterSet',\n };\n extraActionMap = {\n DescribeTopics: {\n service: 'tdmq',\n action: 'DescribeTopics',\n responseField: 'TopicSets',\n pickKey: 'topicName',\n },\n DescribeEnvironments: {\n service: 'tdmq',\n action: 'DescribeEnvironments',\n responseField: 'EnvironmentSet',\n pickKey: 'environmentId',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(rawSet.map((item) => modifyDimensons(item)));\n }\n\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n // console.log({ rs });\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n Limit: 100,\n ClusterId: instance[this.templateQueryIdMap.instance],\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n if (action === 'DescribeTopics') {\n payload.EnvironmentId = this.getVariable(query['environmentid']);\n }\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import {\n TDMQRABBITMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class TDMQDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TDMQRABBITMQInstanceAliasList;\n InvalidDimensions = TDMQInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tdmq',\n action: 'DescribeRabbitMQVipInstances',\n responseField: 'Instances',\n };\n extraActionMap = {\n DescribeRabbitMQNodeList: {\n service: 'tdmq',\n action: 'DescribeRabbitMQNodeList',\n responseField: 'NodeList',\n pickKey: 'node',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n Limit: 100,\n InstanceId: instance[this.templateQueryIdMap.instance],\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import {\n TDMQROCKETMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class TDMQDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TDMQROCKETMQInstanceAliasList;\n InvalidDimensions = TDMQInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tdmq',\n action: 'DescribeRocketMQClusters',\n responseField: 'ClusterList',\n interceptor: {\n response: (result) =>\n _.map(result, (item) => ({\n ...item,\n ClusterId: _.get(item, 'Info.ClusterId', ''),\n ClusterName: _.get(item, 'Info.ClusterName', ''),\n })),\n },\n };\n extraActionMap = {\n DescribeRocketMQNamespaces: {\n service: 'tdmq',\n action: 'DescribeRocketMQNamespaces',\n responseField: 'Namespaces',\n pickKey: 'namespace',\n },\n DescribeRocketMQGroups: {\n service: 'tdmq',\n action: 'DescribeRocketMQGroups',\n responseField: 'Groups',\n pickKey: 'group',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter((item) => !item.Dimensions?.[0]?.Dimensions?.includes('rmqcluster'));\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n Limit: 100,\n ClusterId: instance[this.templateQueryIdMap.instance],\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n if (action === 'DescribeRocketMQGroups') {\n payload.NamespaceId = this.getVariable(query['clusternamespace']);\n }\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import { map, flatten, reduce, isEmpty, filter, split, sortBy, findIndex, trim, isArray, isString } from 'lodash';\nimport { GetServiceAPIInfo, ReplaceVariable } from '../../common/constants';\nimport { getTimeShiftInMs } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\n\nconst variableToArray = (variable) => {\n if (isEmpty(variable)) {\n return [];\n }\n if (isArray(variable)) {\n return variable;\n }\n if (isString(variable)) {\n return split(variable, ',').map((item) => trim(item));\n }\n return [];\n};\n\nexport default class TKEDatasource extends BaseDatasource {\n InstanceAliasList = ['ClusterId', 'ClusterName'];\n templateQueryIdMap = {\n instance: 'ClusterId',\n };\n InvalidDimensions = {\n tke_cluster_instance_id: 'ClusterId',\n };\n InstanceReqConfig = {\n service: 'tke',\n action: 'DescribeClusters',\n responseField: 'Clusters',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getMonitorData(params: any, region: any, instances: any, target: any, options: any) {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n const timeshift = getTimeShiftInMs(target.timeshift);\n const conditions = reduce(\n target.conditions,\n (prev, item) => {\n if (isEmpty(item.Key) || isEmpty(item.Operator) || isEmpty(item.Value)) {\n return prev;\n }\n return [\n ...filter(prev, (e) => e.Key !== item.Key),\n {\n Key: ReplaceVariable(this.templateSrv, options.scopedVars, item.Key, false),\n Operator: ReplaceVariable(this.templateSrv, options.scopedVars, item.Operator, false),\n Value: variableToArray(ReplaceVariable(this.templateSrv, options.scopedVars, item.Value, true)),\n },\n ];\n },\n [{ Key: 'tke_cluster_instance_id', Operator: '=', Value: instances.map((item) => item['ClusterId']) }]\n );\n\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Period: params.Period,\n MetricNames: [params.MetricName],\n Module: 'monitor',\n Namespace: 'QCE/TKE',\n EndTime: params.EndTime,\n StartTime: params.StartTime,\n Conditions: conditions,\n GroupBys: variableToArray(ReplaceVariable(this.templateSrv, options.scopedVars, target.groupBys, true)),\n },\n },\n serviceInfo.service,\n { action: 'DescribeStatisticData', region }\n ).then((response) => {\n return flatten(\n map(response.Data, (data) => {\n return map(data.Points, (point) => {\n const dimensionSort = sortBy(point.Dimensions, ['Name']);\n const dimensionString = [\n ...dimensionSort.splice(findIndex(dimensionSort, { Name: 'tke_cluster_instance_id' }), 1),\n ...dimensionSort,\n ]\n .map((dimension) => dimension.Value)\n .join(' - ');\n const timeshiftString = timeshift > 0 ? `_${target.timeshift}` : '';\n return {\n target: `${data.MetricName} - ${dimensionString}${timeshiftString}`,\n datapoints: map(point.Values, (value) => [value.Value, value.Timestamp * 1000 + timeshift]),\n };\n });\n })\n );\n });\n }\n}\n","import _ from 'lodash';\nimport { TSFInvalidDemensions, TSFInstanceAliasList, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class TSFDatasource extends BaseDatasource {\n Namespace = 'QCE/TSF';\n InstanceAliasList = TSFInstanceAliasList;\n InvalidDimensions = TSFInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'tsf',\n action: 'DescribeApplications',\n responseField: 'Content',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import {\n VCLBInstanceAliasList,\n VCLBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n clbNamespaceMap,\n regionSupported,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VCLBInstanceAliasList;\n InvalidDimensions = VCLBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'clb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n async getAllMetrics(region: string) {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n const { MetricSet: public_metrics } = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Namespace: clbNamespaceMap.public,\n },\n },\n serviceInfo.service,\n { region, action: 'DescribeBaseMetrics' }\n );\n const { MetricSet: private_metrics } = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Namespace: clbNamespaceMap.private,\n },\n },\n serviceInfo.service,\n { region, action: 'DescribeBaseMetrics' }\n );\n const res = Object.values(_.keyBy(_.concat(private_metrics, public_metrics), 'MetricName'));\n return res.map((t) => modifyDimensons(t));\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await this.getAllMetrics(region);\n return _.compact(rawSet);\n }\n}\n","import { VBCInstanceAliasList, VBCInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VBCInstanceAliasList;\n InvalidDimensions = VBCInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeCcns',\n responseField: 'CcnSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n getFilterDropdown({ field }) {\n return super.getRegions();\n }\n}\n","import {\n VPCNETDETECTInstanceAliasList,\n VPCNETInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VPCNETDETECTInstanceAliasList;\n InvalidDimensions = VPCNETInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeNetDetects',\n responseField: 'NetDetectSet',\n interceptor: {\n // response: (data: unknown[]) =>[\n // {\n // \"NetDetectId\": \"netd-12345678\",\n // },\n // ],\n },\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { VPNGWInstanceAliasList, VPNGWInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VPNGWInstanceAliasList;\n InvalidDimensions = VPNGWInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeVpnGateways',\n responseField: 'VpnGatewaySet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getFilterDropdown({ field, region }) {\n if (field === 'zone') {\n const serviceInfo = GetServiceAPIInfo(region, 'cvm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n return [];\n }\n}\n","import { VPNXInstanceAliasList, VPNXInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VPNXInstanceAliasList;\n InvalidDimensions = VPNXInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeVpnConnections',\n responseField: 'VpnConnectionSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import _ from 'lodash';\nimport {\n WAFInstanceAliasList,\n WAFInvalidDemensions,\n templateQueryIdMap,\n namespace,\n regionSupported,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { t } from '../../../locale';\n\nexport default class CDNDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = WAFInstanceAliasList;\n InvalidDimensions = WAFInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n // service: 'waf',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import coreModule from 'grafana/app/core/core_module';\nimport { APIGATEWAYFilterFieldsDescriptor, templateQueryIdMap, queryEditorName, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.APIGATEWAYFilterFieldsDescriptor = APIGATEWAYFilterFieldsDescriptor;\n $scope.namespace = namespace;\n };\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n // console.log({namespace, service});\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraDropdown = async (target) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const instanceId = $scope.getInstanceId();\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getEnvironmentNameList')({ region, instanceId });\n\n const result = rs.map((o) => {\n return {\n text: o.EnvironmentName,\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { BWPFilterFieldsDescriptor } from './query_def';\n\nexport class BWPQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.BWPFilterFieldsDescriptor = BWPFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cvm', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function bwpQuery() {\n return {\n template: template,\n controller: BWPQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('bwpQuery', bwpQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CDBFieldsDescriptor } from './query_def';\n\nexport class CDBQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CDBFieldsDescriptor = CDBFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'ZoneIds':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cdb', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n`;\n\nexport function cdbQuery() {\n return {\n template: template,\n controller: CDBQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('cdbQuery', cdbQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CDNFilterFieldsDescriptor } from './query_def';\n\nexport class CDNQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CDNFilterFieldsDescriptor = CDNFilterFieldsDescriptor;\n };\n\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n`;\n\nexport function cdnQuery() {\n return {\n template: template,\n controller: CDNQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('cdnQuery', cdnQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CDNPROVINCEFilterFieldsDescriptor, queryEditorName, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'Isp',\n field: 'isp',\n },\n {\n label: 'Province',\n field: 'district',\n },\n];\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CDNPROVINCEFilterFieldsDescriptor = CDNPROVINCEFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, field });\n return rs;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CFSQueryDescriptor } from './query_def';\n\nexport class SCFQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CFSQueryDescriptor = CFSQueryDescriptor;\n };\n\n $scope.getVersions = async (target) => {\n // console.log(2222);\n\n // return [{ text: 1, value: 1 }];\n // console.log(target, 'target');\n const { instance, region } = target;\n const fetcher = $scope.datasource.getServiceFn('scf', 'getVersions');\n if (!instance || !region) return [];\n\n return fetcher(region, { FunctionName: JSON.parse(instance).FunctionName }).then((res) => {\n // console.log(res, 'res');\n\n return res;\n });\n };\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: SCFQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\ncoreModule.directive('cfsQuery', scfQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CKAFKAQueryDescriptor, templateQueryIdMap } from './query_def';\nimport { isTargetEqual } from '../../common/utils';\n\nconst ExtraFields = [\n {\n label: 'ConsumerGroup',\n field: 'consumerGroup',\n },\n {\n label: 'TopicId',\n field: 'topicId',\n },\n {\n label: 'Partition',\n field: 'partition',\n },\n];\n\nexport class CKAFKAQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CKAFKAQueryDescriptor = CKAFKAQueryDescriptor;\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n $scope.onInstanceChange = (n, o) => {\n if(isTargetEqual(n,o,'LoadBalancerId')) return;\n $scope.target.consumerGroup = '';\n $scope.target.topicId = '';\n $scope.target.topicName = '';\n $scope.target.partition = '';\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('ckafka', 'getVariable')(instance);\n if (Array.isArray(instance)) instance = instance[0];\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).InstanceId;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n const InstanceId = $scope.getInstanceId();\n const fetcher = $scope.datasource.getServiceFn('ckafka', 'getConsumerGroups');\n const region = $scope.datasource.getServiceFn('ckafka', 'getVariable')(target.region);\n const res = await fetcher(region, { InstanceId, groupname: target.consumerGroup, topicid: target.topicId });\n\n const { TopicList, GroupList, PartitionList } = res;\n const data = {\n GroupList: GroupList.map((group) => {\n group._InstanceAliasValue = group.GroupName;\n return {\n text: group.GroupName,\n value: JSON.stringify(group),\n };\n }),\n TopicList: TopicList.map((topic) => {\n topic._InstanceAliasValue = topic[templateQueryIdMap.topicId];\n return {\n text: topic[templateQueryIdMap.topicId],\n value: JSON.stringify(topic), // 为了获取多维度的值,这里完全可以使用JSON.stringify()将整个对象放进去\n };\n }),\n PartitionList: PartitionList.map((par) => {\n par._InstanceAliasValue = par[templateQueryIdMap.partition];\n return {\n text: String(par[templateQueryIdMap.partition]),\n value: JSON.stringify(par),\n };\n }),\n };\n\n switch (field) {\n case 'consumerGroup':\n return data.GroupList;\n case 'topicId':\n return data.TopicList;\n case 'partition':\n return data.PartitionList;\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: CKAFKAQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n instance: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', (newValue, oldValue) => {\n scope.onInstanceChange?.(newValue, oldValue);\n });\n },\n };\n}\ncoreModule.directive('ckafkaQuery', scfQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { get, chain } from 'lodash';\nimport { LOADBALANCEFieldsDescriptor, templateQueryIdMap, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\nimport { isTargetEqual } from '../../common/utils';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.LOADBALANCEFieldsDescriptor = LOADBALANCEFieldsDescriptor;\n $scope.serversList = [];\n };\n $scope.onFieldChange = (field) => {\n $scope.onRefresh();\n };\n $scope.onInstanceChange = (n, o) => {\n if(isTargetEqual(n,o,'InstanceId')) return;\n $scope.target.listener = '';\n $scope.target.servers = '';\n $scope.target.serverPort = '';\n };\n $scope.getVariableId = (data, type) => {\n let variableData = data;\n const service = GetServiceFromNamespace(namespace);\n\n variableData = $scope.datasource.getServiceFn(service, 'getVariable')(variableData);\n if (!variableData) {\n return '';\n }\n try {\n variableData = JSON.parse(variableData)[templateQueryIdMap[type]];\n } catch (error) {\n // console.log();\n }\n return variableData;\n };\n $scope.getExtraDropdown = async (target) => {\n const { instance } = $scope.target;\n const service = GetServiceFromNamespace(namespace);\n const instanceId = $scope.getVariableId(instance, 'instance');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getListenerList')({ region, instanceId });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap.listener];\n return {\n text: o[templateQueryIdMap.listener],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n $scope.getServersDropdown = async (target) => {\n const { instance, listener } = $scope.target;\n const service = GetServiceFromNamespace(namespace);\n const instanceId = $scope.getVariableId(instance, 'instance');\n const listenerId = $scope.getVariableId(listener, 'listener');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const serversList = await $scope.datasource.getServiceFn(\n service,\n 'getServerList'\n )({ region, instanceId, listenerId });\n $scope.serversList = serversList;\n const res = chain(serversList)\n .map((item) => {\n item._InstanceAliasValue = get(item, 'PrivateIpAddresses.0');\n return {\n text: get(item, 'PrivateIpAddresses.0'),\n value: JSON.stringify(item),\n };\n })\n .uniqBy('text')\n .value();\n return res;\n };\n $scope.getServerPortDropdown = async (target) => {\n const { servers } = $scope.target;\n let serverPortList: any[] = [];\n try {\n const serversSource = JSON.parse(servers);\n serverPortList = chain($scope.serversList)\n .filter((item) => get(serversSource, 'PrivateIpAddresses.0') === get(item, 'PrivateIpAddresses.0'))\n .map((item) => {\n item._InstanceAliasValue = get(item, 'Port');\n return {\n text: `${get(item, 'Port')}`,\n value: JSON.stringify(item),\n };\n })\n .value();\n } catch (error) {}\n return serverPortList;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n namespace: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', (newValue, oldValue) => {\n scope.onInstanceChange?.(newValue, oldValue);\n });\n },\n };\n}\ncoreModule.directive('clbQuery', sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CLSFilterFieldsDescriptor, queryEditorName } from './query_def';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.GSEFilterFieldsDescriptor = CLSFilterFieldsDescriptor;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n \n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import createQuery from '../_base/query';\nimport { InstanceQueryDescriptor } from './query_def';\n\ncreateQuery('cmqQuery', {\n fieldDescriptor: InstanceQueryDescriptor,\n instanceDocUrl: 'https://cloud.tencent.com/document/api/406/42624',\n namespace: 'QCE/CMQ',\n});\n","import coreModule from 'grafana/app/core/core_module';\nimport { InstanceQueryDescriptor } from './query_def';\n\nconst ExtraFields = [\n {\n label: 'Subscription(订阅)',\n field: 'subscriptionId',\n },\n];\n\nexport class CmqTopicQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.InstanceQueryDescriptor = InstanceQueryDescriptor;\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n // 各个实例下的订阅,由于不想每次都重复发请求,所以这里做了一层缓存,数据结构为{ [instanceId]: { } }\n $scope.cacheMap = {};\n\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getTopicName = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('cmqTopic', 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).TopicName;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.onExtraFieldChange = (field) => {\n $scope.onRefresh();\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n if (field === 'subscriptionId') {\n const TopicName = $scope.getTopicName();\n let data = $scope.cacheMap[TopicName];\n\n if (!data) {\n const region = $scope.datasource.getServiceFn('cmqTopic', 'getVariable')(target.region);\n const fetcher = $scope.datasource.getServiceFn('cmqTopic', 'fetchAllSubscription');\n const datas = await fetcher(region, { TopicName });\n data = datas.map((item) => {\n item._InstanceAliasValue = item.SubscriptionId;\n return { text: item.SubscriptionId, value: JSON.stringify(item) };\n });\n }\n\n // 缓存\n $scope.cacheMap[TopicName] = data;\n return data;\n }\n return [];\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: CmqTopicQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('cmqTopicQuery', scfQuery);\n","import _ from 'lodash';\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 与名称挂钩的变量\nconst InstanceAliasList = ['BucketName'];\nexport { InstanceAliasList, GetInstanceQueryParams };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'BucketName',\n queries: {},\n};\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CVMFilterFieldsDescriptor } from './query_def';\n\nexport class CVMQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CVMFilterFieldsDescriptor = CVMFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cvm', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function cvmQuery() {\n return {\n template: template,\n controller: CVMQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('cvmQuery', cvmQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { DCDBFilterFieldsDescriptor, queryEditorName, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'nodeid',\n field: 'NodeId',\n action: 'DescribeDCDBInstanceNodeInfo',\n },\n {\n label: 'shardid',\n field: 'ShardId',\n action: 'DescribeDCDBShards',\n },\n];\nconst dropdownTextConfig = {\n DescribeDCDBInstanceNodeInfo: 'NodeId',\n DescribeDCDBShards: 'ShardInstanceId',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.DCDBFilterFieldsDescriptor = DCDBFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const instanceId = $scope.getInstanceId();\n const payload: any = {\n InstanceId: instanceId,\n Limit: 100,\n };\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { ECMBLOCKSTORAGEFilterFieldsDescriptor, queryEditorName, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n // {\n // label: 'nodeid',\n // field: 'NodeId',\n // action: 'DescribeInstanceNodeInfo',\n // },\n {\n label: 'diskId',\n field: 'diskId',\n },\n];\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.ECMBLOCKSTORAGEFilterFieldsDescriptor = ECMBLOCKSTORAGEFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n // $scope.getInstanceId = () => {\n // let { instance } = $scope.target;\n // const service = GetServiceFromNamespace($scope.namespace);\n // instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n // if (!instance) {\n // return '';\n // }\n // try {\n // instance = JSON.parse(instance)[templateQueryIdMap.instance];\n // } catch (error) {\n // console.log();\n // }\n // return instance;\n // };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = (target, action) => {\n let { instance } = target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n try {\n instance = JSON.parse(instance);\n const { DataDisks: dataDisks } = instance;\n return dataDisks.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap.diskId];\n return {\n text: o[templateQueryIdMap.diskId],\n value: JSON.stringify(o),\n };\n });\n } catch (error) {\n // console.log('instance error', instance);\n const payload: any = {\n InstanceId: instance,\n };\n const rs = $scope.datasource.getServiceFn(service, 'getDiskList')({ payload });\n const result = rs.map((o) => {\n return {\n text: o[templateQueryIdMap.diskId],\n value: JSON.stringify(o),\n };\n });\n return result;\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { GSEFilterFieldsDescriptor, templateQueryIdMap, queryEditorName, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'fleetId',\n field: 'FleetId',\n },\n {\n label: 'queueName',\n field: 'Name',\n },\n];\nconst actionMaps = {\n FleetId: 'getFleetList',\n Name: 'getQueueNameList',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.GSEFilterFieldsDescriptor = GSEFilterFieldsDescriptor;\n $scope.namespace = namespace;\n };\n\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n // console.log({namespace, service});\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraDropdown = async (target, field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const instanceId = $scope.getInstanceId();\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n // const rs = await $scope.datasource.getServiceFn(service, 'getEnvironmentNameList')({ region, instanceId });\n let rs = await $scope.datasource.getServiceFn(service, actionMaps[field])({ region, instanceId });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[field]];\n return {\n text: o[templateQueryIdMap[field]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { LBFilterDescriptor } from './query_def';\n\nexport class LBQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n // $scope.LBQueryDescriptor = LBQueryDescriptor;\n $scope.LBFilterDescriptor = LBFilterDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cvm', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n\n\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function lbQuery() {\n return {\n template: template,\n controller: LBQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('lbQuery', lbQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { LighthouseFilterFieldsDescriptor } from './query_def';\n\nexport class LighthouseQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.LighthouseFilterFieldsDescriptor = LighthouseFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('lighthouse', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n`;\n\nexport function lighthouseQuery() {\n return {\n template: template,\n controller: LighthouseQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('lighthouseQuery', lighthouseQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { map, get, find, times } from 'lodash';\nimport { MONGODBFieldsDescriptor, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nexport class MongoDBQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.MONGODBFieldsDescriptor = MONGODBFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.onInstanceChange = (n, o) => {\n if (n === o) {\n return;\n }\n $scope.target.replica = '';\n $scope.target.node = '';\n };\n\n $scope.getVariableId = (data, type) => {\n let variableData = data;\n const service = GetServiceFromNamespace('QCE/CMONGO');\n\n variableData = $scope.datasource.getServiceFn(service, 'getVariable')(variableData);\n if (!variableData) {\n return '';\n }\n try {\n variableData = JSON.parse(variableData)[templateQueryIdMap[type]];\n } catch (error) {\n // console.log();\n }\n return variableData;\n };\n\n $scope.getExtraDropdown = async (target, type) => {\n const { instance, replica } = $scope.target;\n const service = GetServiceFromNamespace('QCE/CMONGO');\n const instanceId = $scope.getVariableId(instance, 'instance');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const [res] = await $scope.datasource.getServiceFn(service, 'getInstances')(region, {\n InstanceIds: [instanceId],\n });\n if (type === 'replica') {\n return map(get(res, 'ReplicaSets', []), (item) => {\n item._InstanceAliasValue = item.ReplicaSetId;\n return { text: item.ReplicaSetId, value: JSON.stringify(item) };\n });\n }\n if (type === 'node' && replica !== '') {\n const replicaId = $scope.getVariableId(replica, 'replica');\n const targetReplica = find(get(res, 'ReplicaSets', []), { ReplicaSetId: replicaId });\n const options = times(targetReplica.SecondaryNum, (index) => {\n const nodeId = `${targetReplica.ReplicaSetId}-node-slave${index}`;\n return {\n text: nodeId,\n value: JSON.stringify({ NodeId: nodeId, _InstanceAliasValue: `${targetReplica.ReplicaSetId} - ${nodeId}` }),\n };\n });\n return [\n {\n text: `${targetReplica.ReplicaSetId}-node-primary`,\n value: JSON.stringify({\n NodeId: `${targetReplica.ReplicaSetId}-node-primary`,\n _InstanceAliasValue: `${targetReplica.ReplicaSetId} - ${`${targetReplica.ReplicaSetId}-node-primary`}`,\n }),\n },\n ...options,\n ];\n }\n return [];\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n`;\n\nexport function mongodbQuery() {\n return {\n template: template,\n controller: MongoDBQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onRefresh: '&',\n onChange: '&',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', (newValue, oldValue) => {\n scope.onInstanceChange?.(newValue, oldValue);\n });\n },\n };\n}\n\ncoreModule.directive('mongodbQuery', mongodbQuery);\n","import { InstanceQueryDescriptor, templateQueryIdMap } from './query_def';\nimport coreModule from 'grafana/app/core/core_module';\n\nconst ExtraFields = [\n {\n label: 'NodeIP',\n field: 'nodeIP',\n },\n];\n\nexport class MrQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.InstanceQueryDescriptor = InstanceQueryDescriptor;\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n // 各个实例下的订阅,由于不想每次都重复发请求,所以这里做了一层缓存,数据结构为{ [instanceId]: { } }\n $scope.cacheMap = {};\n\n $scope.getExtraFields = () => {\n return Object.keys($scope.dims ?? {}).some((item: string) => item.startsWith('host4')) ? ExtraFields : [];\n // return ExtraFields;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('mrHDFS', 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).ClusterId;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.onExtraFieldChange = (field) => {\n $scope.onRefresh();\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n if (field === 'nodeIP') {\n const InstanceId = $scope.getInstanceId();\n let data = $scope.cacheMap[InstanceId];\n\n if (!data) {\n const region = $scope.datasource.getServiceFn('mrHDFS', 'getVariable')(target.region);\n const fetcher = $scope.datasource.getServiceFn('mrHDFS', 'fetchAllNodes');\n const dataT = await fetcher(region, { InstanceId, NodeFlag: 'all' });\n data = dataT.map((item) => {\n item._InstanceAliasValue = item[templateQueryIdMap.node];\n return {\n text: item[templateQueryIdMap.node],\n value: JSON.stringify(item),\n };\n });\n }\n\n // 缓存\n $scope.cacheMap[InstanceId] = data;\n return data;\n }\n return [];\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n
\n\n \n \n
\n
\n
\n
\n\n
\n`;\n\nexport function mrQuery() {\n return {\n template: template,\n controller: MrQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('mrQuery', mrQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { NATGatewayFilterFieldsDescriptor } from './query_def';\n\nexport class NatGatewayQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.NATGatewayFilterFieldsDescriptor = NATGatewayFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function natGatewayQuery() {\n return {\n template: template,\n controller: NatGatewayQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('natGatewayQuery', natGatewayQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { OVCDNFilterFieldsDescriptor } from './query_def';\n\nexport class OVCDNQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.OVCDNFilterFieldsDescriptor = OVCDNFilterFieldsDescriptor;\n };\n\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n`;\n\nexport function ovCdnQuery() {\n return {\n template: template,\n controller: OVCDNQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('ovCdnQuery', ovCdnQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { PCXFieldsDescriptor } from './query_def';\n\nexport class PCXQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.PCXFieldsDescriptor = PCXFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'vpcId':\n return $scope.getVpcIds();\n default:\n return [];\n }\n };\n\n $scope.getVpcIds = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getVpcIds('pcx', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function pcxQuery() {\n return {\n template: template,\n controller: PCXQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('pcxQuery', pcxQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { RedisFieldsDescriptor } from './query_def';\n\nexport class RedisQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.RedisFieldsDescriptor = RedisFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function redisQuery() {\n return {\n template: template,\n controller: RedisQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('redisQuery', redisQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { map } from 'lodash';\nimport { RedisMemFieldsDescriptor, templateQueryIdMap, NodeType, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nexport class RedisMemQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.RedisMemFieldsDescriptor = RedisMemFieldsDescriptor;\n };\n\n $scope.clearExtrasAlias = () => {\n $scope.target.rnodeid = '';\n $scope.target.pnodeid = '';\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.getVariableId = (data, type) => {\n let variableData = data;\n const service = GetServiceFromNamespace(namespace);\n\n variableData = $scope.datasource.getServiceFn(service, 'getVariable')(variableData);\n if (!variableData) {\n return '';\n }\n try {\n variableData = JSON.parse(variableData)[templateQueryIdMap[type]];\n } catch (error) {}\n return variableData;\n };\n\n $scope.getExtraDropdown = async (target, nodetype) => {\n const { instance } = $scope.target;\n const service = GetServiceFromNamespace(namespace);\n const instanceId = $scope.getVariableId(instance, 'instance');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getInstanceNodeInfo')({ region, instanceId });\n\n const ndoeTypeIndex = NodeType.indexOf(nodetype);\n return ndoeTypeIndex === -1 ? [] : map(rs[ndoeTypeIndex], (item) => ({ text: item.NodeId, value: item.NodeId }));\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n`;\n\nexport function redisMemQuery() {\n return {\n template: template,\n controller: RedisMemQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', () => {\n scope.clearExtrasAlias?.();\n });\n scope.$watch('target.metricName', () => {\n scope.clearExtrasAlias?.();\n });\n },\n };\n}\n\ncoreModule.directive('redisMemQuery', redisMemQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { SCFQueryDescriptor, templateQueryIdMap } from './query_def';\n\nexport class SCFQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.SCFQueryDescriptor = SCFQueryDescriptor;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('scf', 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).FunctionName;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.getVersions = async (target) => {\n // console.log(2222);\n\n // return [{ text: 1, value: 1 }];\n // console.log(target, 'target');\n // let { instance, region } = target;\n const FunctionName = $scope.getInstanceId();\n const region = $scope.datasource.getServiceFn('scf', 'getVariable')(target.region);\n if (!FunctionName || !region) return [];\n\n const fetcher = $scope.datasource.getServiceFn('scf', 'getVersions');\n\n return fetcher(region, { FunctionName }).then((res) => {\n // console.log(res, 'res');\n const result = res.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap.version];\n return {\n text: o[templateQueryIdMap.version],\n value: JSON.stringify(o),\n };\n });\n return result;\n });\n };\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: SCFQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n },\n };\n}\ncoreModule.directive('scfQuery', scfQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TDMQFilterFieldsDescriptor, queryEditorName, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'environmentId',\n field: 'environmentId',\n action: 'DescribeEnvironments',\n },\n {\n label: 'topicName',\n field: 'topicName',\n action: 'DescribeTopics',\n },\n];\n\nconst dropdownTextConfig = {\n DescribeTopics: 'topicName',\n DescribeEnvironments: 'environmentId',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TDMQFilterFieldsDescriptor = TDMQFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const payload: any = {\n Limit: 100,\n ClusterId: $scope.getInstanceId(),\n };\n if (action === 'DescribeTopics') {\n let evId = $scope.target.environmentId;\n try {\n evId = JSON.parse(evId);\n evId = evId[templateQueryIdMap.environmentId];\n } catch (e) {}\n payload.EnvironmentId = evId;\n }\n\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n label: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TDMQFilterFieldsDescriptor, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'Node',\n field: 'node',\n action: 'DescribeRabbitMQNodeList',\n },\n];\n\nconst dropdownTextConfig = {\n DescribeRabbitMQNodeList: 'node',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TDMQFilterFieldsDescriptor = TDMQFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.clearExtrasAlias = () => {\n $scope.target.node = '';\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const payload: any = {\n Limit: 100,\n InstanceId: $scope.getInstanceId(),\n };\n\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n label: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', () => {\n scope.clearExtrasAlias?.();\n });\n scope.$watch('target.metricName', () => {\n scope.clearExtrasAlias?.();\n });\n },\n };\n}\ncoreModule.directive('tdmqRabbitmqQuery', sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TDMQFilterFieldsDescriptor, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'Namespace',\n field: 'namespace',\n action: 'DescribeRocketMQNamespaces',\n },\n {\n label: 'Group',\n field: 'group',\n action: 'DescribeRocketMQGroups',\n },\n];\n\nconst dropdownTextConfig = {\n DescribeRocketMQNamespaces: 'namespace',\n DescribeRocketMQGroups: 'group',\n};\nexport class TdmqRocketmqQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TDMQFilterFieldsDescriptor = TDMQFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.clearExtrasAlias = () => {\n $scope.target.namespace = '';\n $scope.target.group = '';\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const payload: any = {\n Limit: 100,\n ClusterId: $scope.getInstanceId(),\n };\n if (action === 'DescribeRocketMQGroups') {\n let namespace = $scope.target.namespace;\n try {\n namespace = JSON.parse(namespace)[templateQueryIdMap.namespace];\n } catch (e) {}\n payload.NamespaceId = $scope.datasource.getServiceFn(service, 'getVariable')(namespace);\n }\n\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function tdmqRocketmqQuery() {\n return {\n template: template,\n controller: TdmqRocketmqQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', () => {\n scope.clearExtrasAlias?.();\n });\n scope.$watch('target.metricName', () => {\n scope.clearExtrasAlias?.();\n });\n },\n };\n}\ncoreModule.directive('tdmqRocketmqQuery', tdmqRocketmqQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { isEmpty } from 'lodash';\nimport { TKEFilterFieldsDescriptor } from './query_def';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TKEFilterFieldsDescriptor = TKEFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.addCondition = () => {\n $scope.target.conditions.push({ Key: '', Operator: '=', Value: '' });\n };\n\n $scope.deleteCondition = (index) => {\n const targetCondition = $scope.target.conditions[index];\n if (isEmpty(targetCondition.Key) || isEmpty(targetCondition.Operator) || isEmpty(targetCondition.Value)) {\n $scope.target.conditions.splice(index, 1);\n } else {\n $scope.target.conditions.splice(index, 1);\n $scope.onRefresh();\n }\n };\n\n $scope.getOperator = () => {\n return Promise.resolve([\n { text: '=', value: '=' },\n { text: 'in', value: 'in' },\n ]);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n \n
\n
\n \n
\n \n \n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('tkeQuery', sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TSFFieldsDescriptor } from './query_def';\n\nexport class TSFQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TSFFieldsDescriptor = TSFFieldsDescriptor;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function tsfQuery() {\n return {\n template: template,\n controller: TSFQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('tsfQuery', tsfQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { VBCFilterFieldsDescriptor, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields: any = [\n // {\n // label: 'SRegion',\n // field: 'SRegion',\n // },\n // {\n // label: 'DRegion',\n // field: 'DRegion',\n // },\n];\n\nexport class VBCQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.VBCFilterFieldsDescriptor = VBCFilterFieldsDescriptor;\n $scope.namespace = namespace;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getExtraDropdown = (field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n // return $scope.datasource.getServiceFn(service, 'getFilterDropdown')({ field })\n return $scope.datasource.getFilterDropdown(service, { field });\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: VBCQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('vbcQuery', scfQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","var map = {\n\t\".\": 19,\n\t\"./\": 19,\n\t\"./MonitorDatasource\": 182,\n\t\"./MonitorDatasource.ts\": 182,\n\t\"./_base/datasource\": 3,\n\t\"./_base/datasource.ts\": 3,\n\t\"./_base/query\": 7,\n\t\"./_base/query.ts\": 7,\n\t\"./_base/query_filter\": 185,\n\t\"./_base/query_filter.ts\": 185,\n\t\"./_base/types\": 186,\n\t\"./_base/types.ts\": 186,\n\t\"./apigateway/datasource\": 70,\n\t\"./apigateway/datasource.ts\": 70,\n\t\"./apigateway/query\": 126,\n\t\"./apigateway/query.ts\": 126,\n\t\"./apigateway/query_def\": 21,\n\t\"./apigateway/query_def.ts\": 21,\n\t\"./bmIntraLb/datasource\": 71,\n\t\"./bmIntraLb/datasource.ts\": 71,\n\t\"./bmIntraLb/query\": 127,\n\t\"./bmIntraLb/query.ts\": 127,\n\t\"./bmIntraLb/query_def\": 29,\n\t\"./bmIntraLb/query_def.ts\": 29,\n\t\"./bm_lb/datasource\": 72,\n\t\"./bm_lb/datasource.ts\": 72,\n\t\"./bm_lb/query\": 128,\n\t\"./bm_lb/query.ts\": 128,\n\t\"./bm_lb/query_def\": 30,\n\t\"./bm_lb/query_def.ts\": 30,\n\t\"./bm_pcx/datasource\": 73,\n\t\"./bm_pcx/datasource.ts\": 73,\n\t\"./bm_pcx/query\": 129,\n\t\"./bm_pcx/query.ts\": 129,\n\t\"./bm_pcx/query_def\": 31,\n\t\"./bm_pcx/query_def.ts\": 31,\n\t\"./bwp/datasource\": 74,\n\t\"./bwp/datasource.ts\": 74,\n\t\"./bwp/query\": 130,\n\t\"./bwp/query.ts\": 130,\n\t\"./bwp/query_def\": 61,\n\t\"./bwp/query_def.ts\": 61,\n\t\"./cbs/datasource\": 75,\n\t\"./cbs/datasource.ts\": 75,\n\t\"./cbs/query\": 131,\n\t\"./cbs/query.ts\": 131,\n\t\"./cbs/query_def\": 32,\n\t\"./cbs/query_def.ts\": 32,\n\t\"./cdb/datasource\": 76,\n\t\"./cdb/datasource.ts\": 76,\n\t\"./cdb/query\": 132,\n\t\"./cdb/query.ts\": 132,\n\t\"./cdb/query_def\": 42,\n\t\"./cdb/query_def.ts\": 42,\n\t\"./cdn/datasource\": 77,\n\t\"./cdn/datasource.ts\": 77,\n\t\"./cdn/query\": 133,\n\t\"./cdn/query.ts\": 133,\n\t\"./cdn/query_def\": 62,\n\t\"./cdn/query_def.ts\": 62,\n\t\"./cdn_province/datasource\": 78,\n\t\"./cdn_province/datasource.ts\": 78,\n\t\"./cdn_province/query\": 134,\n\t\"./cdn_province/query.ts\": 134,\n\t\"./cdn_province/query_def\": 33,\n\t\"./cdn_province/query_def.ts\": 33,\n\t\"./ceip_summary/datasource\": 79,\n\t\"./ceip_summary/datasource.ts\": 79,\n\t\"./ceip_summary/query\": 135,\n\t\"./ceip_summary/query.ts\": 135,\n\t\"./ceip_summary/query_def\": 34,\n\t\"./ceip_summary/query_def.ts\": 34,\n\t\"./ces/datasource\": 80,\n\t\"./ces/datasource.ts\": 80,\n\t\"./ces/query\": 136,\n\t\"./ces/query.ts\": 136,\n\t\"./ces/query_def\": 43,\n\t\"./ces/query_def.ts\": 43,\n\t\"./cfs/datasource\": 81,\n\t\"./cfs/datasource.ts\": 81,\n\t\"./cfs/query\": 137,\n\t\"./cfs/query.ts\": 137,\n\t\"./cfs/query_def\": 55,\n\t\"./cfs/query_def.ts\": 55,\n\t\"./ckafka/datasource\": 82,\n\t\"./ckafka/datasource.ts\": 82,\n\t\"./ckafka/query\": 138,\n\t\"./ckafka/query.ts\": 138,\n\t\"./ckafka/query_def\": 10,\n\t\"./ckafka/query_def.ts\": 10,\n\t\"./clb/datasource\": 83,\n\t\"./clb/datasource.ts\": 83,\n\t\"./clb/query\": 139,\n\t\"./clb/query.ts\": 139,\n\t\"./clb/query_def\": 12,\n\t\"./clb/query_def.ts\": 12,\n\t\"./cls/datasource\": 84,\n\t\"./cls/datasource.ts\": 84,\n\t\"./cls/query\": 140,\n\t\"./cls/query.ts\": 140,\n\t\"./cls/query_def\": 27,\n\t\"./cls/query_def.ts\": 27,\n\t\"./cmq/datasource\": 85,\n\t\"./cmq/datasource.ts\": 85,\n\t\"./cmq/query\": 141,\n\t\"./cmq/query.ts\": 141,\n\t\"./cmq/query_def\": 56,\n\t\"./cmq/query_def.ts\": 56,\n\t\"./cmq_topic/datasource\": 86,\n\t\"./cmq_topic/datasource.ts\": 86,\n\t\"./cmq_topic/query\": 142,\n\t\"./cmq_topic/query.ts\": 142,\n\t\"./cmq_topic/query_def\": 35,\n\t\"./cmq_topic/query_def.ts\": 35,\n\t\"./cos/datasource\": 87,\n\t\"./cos/datasource.ts\": 87,\n\t\"./cos/query_def\": 143,\n\t\"./cos/query_def.ts\": 143,\n\t\"./cpm/datasource\": 88,\n\t\"./cpm/datasource.ts\": 88,\n\t\"./cpm/query\": 144,\n\t\"./cpm/query.ts\": 144,\n\t\"./cpm/query_def\": 36,\n\t\"./cpm/query_def.ts\": 36,\n\t\"./cvm/datasource\": 89,\n\t\"./cvm/datasource.ts\": 89,\n\t\"./cvm/query\": 145,\n\t\"./cvm/query.ts\": 145,\n\t\"./cvm/query_def\": 57,\n\t\"./cvm/query_def.ts\": 57,\n\t\"./cynosdb_mysql/datasource\": 90,\n\t\"./cynosdb_mysql/datasource.ts\": 90,\n\t\"./cynosdb_mysql/query\": 146,\n\t\"./cynosdb_mysql/query.ts\": 146,\n\t\"./cynosdb_mysql/query_def\": 24,\n\t\"./cynosdb_mysql/query_def.ts\": 24,\n\t\"./dc/datasource\": 91,\n\t\"./dc/datasource.ts\": 91,\n\t\"./dc/query\": 147,\n\t\"./dc/query.ts\": 147,\n\t\"./dc/query_def\": 44,\n\t\"./dc/query_def.ts\": 44,\n\t\"./dcdb/datasource\": 92,\n\t\"./dcdb/datasource.ts\": 92,\n\t\"./dcdb/query\": 148,\n\t\"./dcdb/query.ts\": 148,\n\t\"./dcdb/query_def\": 15,\n\t\"./dcdb/query_def.ts\": 15,\n\t\"./dcg/datasource\": 93,\n\t\"./dcg/datasource.ts\": 93,\n\t\"./dcg/query\": 149,\n\t\"./dcg/query.ts\": 149,\n\t\"./dcg/query_def\": 45,\n\t\"./dcg/query_def.ts\": 45,\n\t\"./dcx/datasource\": 94,\n\t\"./dcx/datasource.ts\": 94,\n\t\"./dcx/query\": 150,\n\t\"./dcx/query.ts\": 150,\n\t\"./dcx/query_def\": 46,\n\t\"./dcx/query_def.ts\": 46,\n\t\"./ecdn/datasource\": 95,\n\t\"./ecdn/datasource.ts\": 95,\n\t\"./ecdn/query\": 151,\n\t\"./ecdn/query.ts\": 151,\n\t\"./ecdn/query_def\": 37,\n\t\"./ecdn/query_def.ts\": 37,\n\t\"./ecm/datasource\": 96,\n\t\"./ecm/datasource.ts\": 96,\n\t\"./ecm/query\": 152,\n\t\"./ecm/query.ts\": 152,\n\t\"./ecm/query_def\": 38,\n\t\"./ecm/query_def.ts\": 38,\n\t\"./ecm_block_storage/datasource\": 97,\n\t\"./ecm_block_storage/datasource.ts\": 97,\n\t\"./ecm_block_storage/query\": 153,\n\t\"./ecm_block_storage/query.ts\": 153,\n\t\"./ecm_block_storage/query_def\": 20,\n\t\"./ecm_block_storage/query_def.ts\": 20,\n\t\"./ecm_lb/datasource\": 98,\n\t\"./ecm_lb/datasource.ts\": 98,\n\t\"./ecm_lb/query\": 154,\n\t\"./ecm_lb/query.ts\": 154,\n\t\"./ecm_lb/query_def\": 47,\n\t\"./ecm_lb/query_def.ts\": 47,\n\t\"./gse/datasource\": 99,\n\t\"./gse/datasource.ts\": 99,\n\t\"./gse/query\": 155,\n\t\"./gse/query.ts\": 155,\n\t\"./gse/query_def\": 14,\n\t\"./gse/query_def.ts\": 14,\n\t\"./index\": 19,\n\t\"./index.ts\": 19,\n\t\"./lb/datasource\": 100,\n\t\"./lb/datasource.ts\": 100,\n\t\"./lb/query\": 156,\n\t\"./lb/query.ts\": 156,\n\t\"./lb/query_def\": 63,\n\t\"./lb/query_def.ts\": 63,\n\t\"./lighthouse/datasource\": 101,\n\t\"./lighthouse/datasource.ts\": 101,\n\t\"./lighthouse/query\": 157,\n\t\"./lighthouse/query.ts\": 157,\n\t\"./lighthouse/query_def\": 54,\n\t\"./lighthouse/query_def.ts\": 54,\n\t\"./mongodb/datasource\": 102,\n\t\"./mongodb/datasource.ts\": 102,\n\t\"./mongodb/query\": 158,\n\t\"./mongodb/query.ts\": 158,\n\t\"./mongodb/query_def\": 48,\n\t\"./mongodb/query_def.ts\": 48,\n\t\"./mr/datasource\": 103,\n\t\"./mr/datasource.ts\": 103,\n\t\"./mr/query\": 159,\n\t\"./mr/query.ts\": 159,\n\t\"./mr/query_def\": 22,\n\t\"./mr/query_def.ts\": 22,\n\t\"./nat_gateway/datasource\": 104,\n\t\"./nat_gateway/datasource.ts\": 104,\n\t\"./nat_gateway/query\": 160,\n\t\"./nat_gateway/query.ts\": 160,\n\t\"./nat_gateway/query_def\": 64,\n\t\"./nat_gateway/query_def.ts\": 64,\n\t\"./ov_cdn/datasource\": 105,\n\t\"./ov_cdn/datasource.ts\": 105,\n\t\"./ov_cdn/query\": 161,\n\t\"./ov_cdn/query.ts\": 161,\n\t\"./ov_cdn/query_def\": 65,\n\t\"./ov_cdn/query_def.ts\": 65,\n\t\"./pcx/datasource\": 106,\n\t\"./pcx/datasource.ts\": 106,\n\t\"./pcx/query\": 162,\n\t\"./pcx/query.ts\": 162,\n\t\"./pcx/query_def\": 58,\n\t\"./pcx/query_def.ts\": 58,\n\t\"./postgresql/datasource\": 107,\n\t\"./postgresql/datasource.ts\": 107,\n\t\"./postgresql/query\": 163,\n\t\"./postgresql/query.ts\": 163,\n\t\"./postgresql/query_def\": 39,\n\t\"./postgresql/query_def.ts\": 39,\n\t\"./qaap/datasource\": 108,\n\t\"./qaap/datasource.ts\": 108,\n\t\"./qaap/query\": 164,\n\t\"./qaap/query.ts\": 164,\n\t\"./qaap/query_def\": 49,\n\t\"./qaap/query_def.ts\": 49,\n\t\"./redis/datasource\": 109,\n\t\"./redis/datasource.ts\": 109,\n\t\"./redis/query\": 165,\n\t\"./redis/query.ts\": 165,\n\t\"./redis/query_def\": 59,\n\t\"./redis/query_def.ts\": 59,\n\t\"./redis_mem/datasource\": 110,\n\t\"./redis_mem/datasource.ts\": 110,\n\t\"./redis_mem/query\": 166,\n\t\"./redis_mem/query.ts\": 166,\n\t\"./redis_mem/query_def\": 16,\n\t\"./redis_mem/query_def.ts\": 16,\n\t\"./scf/datasource\": 111,\n\t\"./scf/datasource.ts\": 111,\n\t\"./scf/query\": 167,\n\t\"./scf/query.ts\": 167,\n\t\"./scf/query_def\": 25,\n\t\"./scf/query_def.ts\": 25,\n\t\"./sqlserver/datasource\": 112,\n\t\"./sqlserver/datasource.ts\": 112,\n\t\"./sqlserver/query\": 168,\n\t\"./sqlserver/query.ts\": 168,\n\t\"./sqlserver/query_def\": 28,\n\t\"./sqlserver/query_def.ts\": 28,\n\t\"./tcaplus/datasource\": 113,\n\t\"./tcaplus/datasource.ts\": 113,\n\t\"./tcaplus/query\": 169,\n\t\"./tcaplus/query.ts\": 169,\n\t\"./tcaplus/query_def\": 50,\n\t\"./tcaplus/query_def.ts\": 50,\n\t\"./tdmq/datasource\": 114,\n\t\"./tdmq/datasource.ts\": 114,\n\t\"./tdmq/query\": 170,\n\t\"./tdmq/query.ts\": 170,\n\t\"./tdmq/query_def\": 13,\n\t\"./tdmq/query_def.ts\": 13,\n\t\"./tdmq_rabbitmq/datasource\": 115,\n\t\"./tdmq_rabbitmq/datasource.ts\": 115,\n\t\"./tdmq_rabbitmq/query\": 171,\n\t\"./tdmq_rabbitmq/query.ts\": 171,\n\t\"./tdmq_rabbitmq/query_def\": 17,\n\t\"./tdmq_rabbitmq/query_def.ts\": 17,\n\t\"./tdmq_rocketmq/datasource\": 116,\n\t\"./tdmq_rocketmq/datasource.ts\": 116,\n\t\"./tdmq_rocketmq/query\": 172,\n\t\"./tdmq_rocketmq/query.ts\": 172,\n\t\"./tdmq_rocketmq/query_def\": 18,\n\t\"./tdmq_rocketmq/query_def.ts\": 18,\n\t\"./tke/datasource\": 117,\n\t\"./tke/datasource.ts\": 117,\n\t\"./tke/query\": 173,\n\t\"./tke/query.ts\": 173,\n\t\"./tke/query_def\": 69,\n\t\"./tke/query_def.ts\": 69,\n\t\"./tsf/datasource\": 118,\n\t\"./tsf/datasource.ts\": 118,\n\t\"./tsf/query\": 174,\n\t\"./tsf/query.ts\": 174,\n\t\"./tsf/query_def\": 60,\n\t\"./tsf/query_def.ts\": 60,\n\t\"./v_clb/datasource\": 119,\n\t\"./v_clb/datasource.ts\": 119,\n\t\"./v_clb/query\": 175,\n\t\"./v_clb/query.ts\": 175,\n\t\"./v_clb/query_def\": 23,\n\t\"./v_clb/query_def.ts\": 23,\n\t\"./vbc/datasource\": 120,\n\t\"./vbc/datasource.ts\": 120,\n\t\"./vbc/query\": 176,\n\t\"./vbc/query.ts\": 176,\n\t\"./vbc/query_def\": 51,\n\t\"./vbc/query_def.ts\": 51,\n\t\"./vpc_net_detect/datasource\": 121,\n\t\"./vpc_net_detect/datasource.ts\": 121,\n\t\"./vpc_net_detect/query\": 177,\n\t\"./vpc_net_detect/query.ts\": 177,\n\t\"./vpc_net_detect/query_def\": 40,\n\t\"./vpc_net_detect/query_def.ts\": 40,\n\t\"./vpngw/datasource\": 122,\n\t\"./vpngw/datasource.ts\": 122,\n\t\"./vpngw/query\": 178,\n\t\"./vpngw/query.ts\": 178,\n\t\"./vpngw/query_def\": 52,\n\t\"./vpngw/query_def.ts\": 52,\n\t\"./vpnx/datasource\": 123,\n\t\"./vpnx/datasource.ts\": 123,\n\t\"./vpnx/query\": 179,\n\t\"./vpnx/query.ts\": 179,\n\t\"./vpnx/query_def\": 53,\n\t\"./vpnx/query_def.ts\": 53,\n\t\"./waf/datasource\": 124,\n\t\"./waf/datasource.ts\": 124,\n\t\"./waf/query\": 180,\n\t\"./waf/query.ts\": 180,\n\t\"./waf/query_def\": 41,\n\t\"./waf/query_def.ts\": 41\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 181;","import _ from 'lodash';\nimport { Datasources, SERVICES } from './index';\nimport { GetServiceFromNamespace, ParseMetricQuery } from '../common/constants';\nimport { serviceGroupBy } from '../common/utils';\nimport { LoadingState } from '@grafana/data';\n\nexport default interface DatasourceInterface {\n instanceSettings: any;\n backendSrv: any;\n templateSrv: any;\n query: (options: any) => any;\n testDatasource: () => any;\n metricFindQuery: (query: any) => any;\n getRegions?: (service: string) => any;\n getMetrics: (service: string, region: string) => any;\n getInstances: (service: string, region: string, params: any) => any;\n getZones?: (service: string, region: string) => any;\n}\n\nexport class TCMonitorDatasource implements DatasourceInterface {\n instanceSettings: any;\n backendSrv: any;\n templateSrv: any;\n\n /** @ngInject */\n constructor(instanceSettings, backendSrv, templateSrv) {\n this.instanceSettings = instanceSettings;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n _.forEach(Datasources, (_class: any, key) => {\n this[key] = new _class(this.instanceSettings, this.backendSrv, this.templateSrv);\n });\n }\n\n // 根据 Datasource Config 配置时勾选的监控服务项,获取相应的命名空间\n getNamespaces() {\n const namespaces: any[] = [];\n _.forEach(SERVICES, (service) => {\n if (this.instanceSettings.jsonData[service.service] === true) {\n // namespaces.push(service.namespace);\n namespaces.push(service);\n }\n });\n return namespaces;\n }\n\n getCascaderNamespaces() {\n const validServices = SERVICES.filter((service) => this.instanceSettings.jsonData[service.service]);\n return serviceGroupBy(validServices);\n }\n\n getSelectedServices() {\n const namespaces = this.getNamespaces();\n return _.map(namespaces, ({ namespace }) => {\n return GetServiceFromNamespace(namespace);\n });\n }\n\n /**\n * 根据 Panel 的配置项,获取相应的监控数据\n *\n * @param options Panel 的配置参数,示例如下\n * {\n * cacheTimeout: undefined,\n * dashboardId: 41,\n * interval: \"30s\",\n * intervalMs: 30000,\n * maxDataPoints: 554,\n * panelId: 2,\n * range: {\n * from: Moment,\n * to: Moment,\n * raw: {from: \"now-6h\", to: \"now\"}\n * },\n * rangeRaw: {from: \"now-6h\", to: \"now\"},\n * scopedVars: {__interval: {…}, __interval_ms: {…}}\n * targets: [\n * {\n * namespace: \"QCE/CVM\",\n * refId: \"A\",\n * service: \"cvm\",\n * showInstanceDetails: false,\n * cvm: {\n * dimensionObject: {InstanceId: {…}}\n * instance: \"\",\n * instanceAlias: \"InstanceId\",\n * metricName: \"AccOuttraffic\",\n * metricUnit: \"MB\",\n * period: 10,\n * queries: {Filters: {…}, InstanceIds: Array(1), Limit: 20, Offset: 0, filtersChecked: false, …},\n * region: \"ap-beijing\"\n * },\n * cdb: {},\n * },\n * ],\n * timezone: \"browser\"\n * }\n * @return 返回数据对象,示例如下\n * {\n * data: [\n * {\n * \"target\": \"AccOuttraffic - ins-123\",\n * \"datapoints\": [\n * [861, 1450754160000],\n * [767, 1450754220000]\n * ]\n * }\n * ]\n * }\n */\n query(options: any) {\n const promises: any[] = [];\n const services = this.getSelectedServices();\n _.forEach(services, (service) => {\n const optionsTemp = _.cloneDeep(options);\n const targets = _.filter(optionsTemp.targets, (item) => item.service === service);\n optionsTemp.targets = targets;\n if (optionsTemp.targets.length > 0) {\n const promiseTemp = this[`${_.toUpper(service)}Datasource`].query(optionsTemp);\n if (promiseTemp) {\n promises.push(promiseTemp);\n }\n }\n });\n if (promises.length === 0) {\n return Promise.resolve({ data: [], state: LoadingState.Done });\n }\n return Promise.all(promises).then((results) => {\n return { data: _.flatten(results), state: LoadingState.Done };\n });\n }\n\n /**\n * 获取模板变量的选择项列表\n *\n * @param query 模板变量配置填写的 Query 参数字符串\n */\n metricFindQuery(query: string, options?: any) {\n const queries = ParseMetricQuery(query);\n const service = GetServiceFromNamespace(queries['namespace'] || '');\n\n if (_.isEmpty(queries) || !queries['namespace'] || !queries['action'] || !service) {\n return Promise.resolve([]);\n }\n if (this[`${_.toUpper(service)}Datasource`].metricFindQuery) {\n const result = this[`${_.toUpper(service)}Datasource`].metricFindQuery(\n queries,\n _.get(options, 'variable.regex', undefined)\n );\n if (result) {\n return result;\n }\n }\n return Promise.resolve([]);\n }\n\n /**\n * 获取地域列表\n * @param service\n */\n getRegions(service) {\n if (this[`${_.toUpper(service)}Datasource`].getRegions) {\n return this[`${_.toUpper(service)}Datasource`].getRegions();\n }\n return [];\n }\n\n /**\n * 获取监控指标列表\n * @param service\n * @param region\n */\n getMetrics(service, region) {\n return this[`${_.toUpper(service)}Datasource`].getMetrics(region);\n }\n\n /**\n * 获取可用区列表\n * @param service\n * @param region\n */\n getZones(service, region) {\n if (this[`${_.toUpper(service)}Datasource`].getZones) {\n return this[`${_.toUpper(service)}Datasource`].getZones(region);\n }\n return [];\n }\n\n /**\n * 获取filter中dropdown列表\n * @param service\n * @param param\n */\n getFilterDropdown(service, param) {\n if (this[`${_.toUpper(service)}Datasource`].getFilterDropdown) {\n return this[`${_.toUpper(service)}Datasource`].getFilterDropdown(param);\n }\n return [];\n }\n\n /**\n * 获取实例列表\n * @param service\n * @param region\n * @param params\n */\n getInstances(service, region, params) {\n return this[`${_.toUpper(service)}Datasource`].getInstances(region, params);\n }\n\n /**\n * 获取监听器列表\n * @param service\n * @param region\n * @param params\n */\n getListeners(service, region, instance) {\n if (!this[`${_.toUpper(service)}Datasource`].getListeners) {\n return [];\n }\n return this[`${_.toUpper(service)}Datasource`].getListeners(region, instance);\n }\n\n /**\n * 获取 私有网络列表\n * @param service\n */\n getVpcIds(service, region) {\n if (this[`${_.toUpper(service)}Datasource`].getVpcIds) {\n return this[`${_.toUpper(service)}Datasource`].getVpcIds(region);\n }\n }\n\n // 在 Datasource Config 配置时,验证 SerectId、SerectKey 的有效性,并测试勾选的监控服务项的对应 API 连通性\n testDatasource() {\n const promises: any[] = [];\n const services = this.getSelectedServices();\n _.forEach(services, (service) => {\n promises.push(this[`${_.toUpper(service)}Datasource`].testDatasource());\n });\n if (promises.length === 0) {\n return Promise.resolve(null);\n }\n\n return Promise.all(promises).then((results) => {\n let status = 'success';\n let message = 'DataSource Connection OK';\n\n const errorMsg = _.reduce(\n results,\n (acc, cur) => {\n if (cur.status === 'error') {\n if (acc === '') acc += 'Oops! Found an error in: ';\n acc += `${cur.service}: ${cur.message}; \\n`;\n }\n return acc;\n },\n ''\n );\n\n if (errorMsg) {\n status = 'error';\n message = errorMsg;\n }\n\n return {\n status,\n message,\n title: _.upperFirst(status),\n };\n });\n }\n\n getServiceFn(service, fnName) {\n return (...argu) => {\n if (!this[`${_.toUpper(service)}Datasource`][fnName]) {\n return [];\n }\n return this[`${_.toUpper(service)}Datasource`][fnName](...argu);\n };\n }\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (typeof target === 'object') {\n if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n if (target[i] && typeof target[i] === 'object') {\n target[i] = merge(target[i], item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return value;\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n","import coreModule from 'grafana/app/core/core_module';\nimport { DetailQueryConfig } from './types';\n\nclass SPQueryCtrl {\n static _config: DetailQueryConfig;\n\n /** @ngInject */\n constructor($scope, $rootScope) {\n Object.assign($scope, SPQueryCtrl._config);\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n`;\n\nexport function queryDDO() {\n return {\n template: template,\n controller: SPQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\nexport default (name: string, config: DetailQueryConfig) => {\n SPQueryCtrl._config = config;\n coreModule.directive(name, queryDDO);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) { // eslint-disable-line func-name-matching\n return prefix + '[]';\n },\n indices: function indices(prefix, key) { // eslint-disable-line func-name-matching\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) { // eslint-disable-line func-name-matching\n return prefix;\n }\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify( // eslint-disable-line func-name-matching\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (Array.isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (Array.isArray(obj)) {\n values = values.concat(stringify(\n obj[key],\n generateArrayPrefix(prefix, key),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n } else {\n values = values.concat(stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n }\n\n return values;\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n var sort = typeof options.sort === 'function' ? options.sort : null;\n var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n if (typeof options.format === 'undefined') {\n options.format = formats['default'];\n } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n var formatter = formats.formatters[options.format];\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (Array.isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (options.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = options.arrayFormat;\n } else if ('indices' in options) {\n arrayFormat = options.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (sort) {\n objKeys.sort(sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n keys = keys.concat(stringify(\n obj[key],\n key,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encode ? encoder : null,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n\n var joined = keys.join(delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]') {\n obj = [];\n obj = obj.concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","var map = {\n\t\"./_base/query.ts\": 7,\n\t\"./apigateway/datasource\": 70,\n\t\"./apigateway/datasource.ts\": 70,\n\t\"./apigateway/query.ts\": 126,\n\t\"./apigateway/query_def.ts\": 21,\n\t\"./bmIntraLb/datasource\": 71,\n\t\"./bmIntraLb/datasource.ts\": 71,\n\t\"./bmIntraLb/query.ts\": 127,\n\t\"./bmIntraLb/query_def.ts\": 29,\n\t\"./bm_lb/datasource\": 72,\n\t\"./bm_lb/datasource.ts\": 72,\n\t\"./bm_lb/query.ts\": 128,\n\t\"./bm_lb/query_def.ts\": 30,\n\t\"./bm_pcx/datasource\": 73,\n\t\"./bm_pcx/datasource.ts\": 73,\n\t\"./bm_pcx/query.ts\": 129,\n\t\"./bm_pcx/query_def.ts\": 31,\n\t\"./bwp/datasource\": 74,\n\t\"./bwp/datasource.ts\": 74,\n\t\"./bwp/query.ts\": 130,\n\t\"./bwp/query_def.ts\": 61,\n\t\"./cbs/datasource\": 75,\n\t\"./cbs/datasource.ts\": 75,\n\t\"./cbs/query.ts\": 131,\n\t\"./cbs/query_def.ts\": 32,\n\t\"./cdb/datasource\": 76,\n\t\"./cdb/datasource.ts\": 76,\n\t\"./cdb/query.ts\": 132,\n\t\"./cdb/query_def.ts\": 42,\n\t\"./cdn/datasource\": 77,\n\t\"./cdn/datasource.ts\": 77,\n\t\"./cdn/query.ts\": 133,\n\t\"./cdn/query_def.ts\": 62,\n\t\"./cdn_province/datasource\": 78,\n\t\"./cdn_province/datasource.ts\": 78,\n\t\"./cdn_province/query.ts\": 134,\n\t\"./cdn_province/query_def.ts\": 33,\n\t\"./ceip_summary/datasource\": 79,\n\t\"./ceip_summary/datasource.ts\": 79,\n\t\"./ceip_summary/query.ts\": 135,\n\t\"./ceip_summary/query_def.ts\": 34,\n\t\"./ces/datasource\": 80,\n\t\"./ces/datasource.ts\": 80,\n\t\"./ces/query.ts\": 136,\n\t\"./ces/query_def.ts\": 43,\n\t\"./cfs/datasource\": 81,\n\t\"./cfs/datasource.ts\": 81,\n\t\"./cfs/query.ts\": 137,\n\t\"./cfs/query_def.ts\": 55,\n\t\"./ckafka/datasource\": 82,\n\t\"./ckafka/datasource.ts\": 82,\n\t\"./ckafka/query.ts\": 138,\n\t\"./ckafka/query_def.ts\": 10,\n\t\"./clb/datasource\": 83,\n\t\"./clb/datasource.ts\": 83,\n\t\"./clb/query.ts\": 139,\n\t\"./clb/query_def.ts\": 12,\n\t\"./cls/datasource\": 84,\n\t\"./cls/datasource.ts\": 84,\n\t\"./cls/query.ts\": 140,\n\t\"./cls/query_def.ts\": 27,\n\t\"./cmq/datasource\": 85,\n\t\"./cmq/datasource.ts\": 85,\n\t\"./cmq/query.ts\": 141,\n\t\"./cmq/query_def.ts\": 56,\n\t\"./cmq_topic/datasource\": 86,\n\t\"./cmq_topic/datasource.ts\": 86,\n\t\"./cmq_topic/query.ts\": 142,\n\t\"./cmq_topic/query_def.ts\": 35,\n\t\"./cos/datasource\": 87,\n\t\"./cos/datasource.ts\": 87,\n\t\"./cos/query_def.ts\": 143,\n\t\"./cpm/datasource\": 88,\n\t\"./cpm/datasource.ts\": 88,\n\t\"./cpm/query.ts\": 144,\n\t\"./cpm/query_def.ts\": 36,\n\t\"./cvm/datasource\": 89,\n\t\"./cvm/datasource.ts\": 89,\n\t\"./cvm/query.ts\": 145,\n\t\"./cvm/query_def.ts\": 57,\n\t\"./cynosdb_mysql/datasource\": 90,\n\t\"./cynosdb_mysql/datasource.ts\": 90,\n\t\"./cynosdb_mysql/query.ts\": 146,\n\t\"./cynosdb_mysql/query_def.ts\": 24,\n\t\"./dc/datasource\": 91,\n\t\"./dc/datasource.ts\": 91,\n\t\"./dc/query.ts\": 147,\n\t\"./dc/query_def.ts\": 44,\n\t\"./dcdb/datasource\": 92,\n\t\"./dcdb/datasource.ts\": 92,\n\t\"./dcdb/query.ts\": 148,\n\t\"./dcdb/query_def.ts\": 15,\n\t\"./dcg/datasource\": 93,\n\t\"./dcg/datasource.ts\": 93,\n\t\"./dcg/query.ts\": 149,\n\t\"./dcg/query_def.ts\": 45,\n\t\"./dcx/datasource\": 94,\n\t\"./dcx/datasource.ts\": 94,\n\t\"./dcx/query.ts\": 150,\n\t\"./dcx/query_def.ts\": 46,\n\t\"./ecdn/datasource\": 95,\n\t\"./ecdn/datasource.ts\": 95,\n\t\"./ecdn/query.ts\": 151,\n\t\"./ecdn/query_def.ts\": 37,\n\t\"./ecm/datasource\": 96,\n\t\"./ecm/datasource.ts\": 96,\n\t\"./ecm/query.ts\": 152,\n\t\"./ecm/query_def.ts\": 38,\n\t\"./ecm_block_storage/datasource\": 97,\n\t\"./ecm_block_storage/datasource.ts\": 97,\n\t\"./ecm_block_storage/query.ts\": 153,\n\t\"./ecm_block_storage/query_def.ts\": 20,\n\t\"./ecm_lb/datasource\": 98,\n\t\"./ecm_lb/datasource.ts\": 98,\n\t\"./ecm_lb/query.ts\": 154,\n\t\"./ecm_lb/query_def.ts\": 47,\n\t\"./gse/datasource\": 99,\n\t\"./gse/datasource.ts\": 99,\n\t\"./gse/query.ts\": 155,\n\t\"./gse/query_def.ts\": 14,\n\t\"./lb/datasource\": 100,\n\t\"./lb/datasource.ts\": 100,\n\t\"./lb/query.ts\": 156,\n\t\"./lb/query_def.ts\": 63,\n\t\"./lighthouse/datasource\": 101,\n\t\"./lighthouse/datasource.ts\": 101,\n\t\"./lighthouse/query.ts\": 157,\n\t\"./lighthouse/query_def.ts\": 54,\n\t\"./mongodb/datasource\": 102,\n\t\"./mongodb/datasource.ts\": 102,\n\t\"./mongodb/query.ts\": 158,\n\t\"./mongodb/query_def.ts\": 48,\n\t\"./mr/datasource\": 103,\n\t\"./mr/datasource.ts\": 103,\n\t\"./mr/query.ts\": 159,\n\t\"./mr/query_def.ts\": 22,\n\t\"./nat_gateway/datasource\": 104,\n\t\"./nat_gateway/datasource.ts\": 104,\n\t\"./nat_gateway/query.ts\": 160,\n\t\"./nat_gateway/query_def.ts\": 64,\n\t\"./ov_cdn/datasource\": 105,\n\t\"./ov_cdn/datasource.ts\": 105,\n\t\"./ov_cdn/query.ts\": 161,\n\t\"./ov_cdn/query_def.ts\": 65,\n\t\"./pcx/datasource\": 106,\n\t\"./pcx/datasource.ts\": 106,\n\t\"./pcx/query.ts\": 162,\n\t\"./pcx/query_def.ts\": 58,\n\t\"./postgresql/datasource\": 107,\n\t\"./postgresql/datasource.ts\": 107,\n\t\"./postgresql/query.ts\": 163,\n\t\"./postgresql/query_def.ts\": 39,\n\t\"./qaap/datasource\": 108,\n\t\"./qaap/datasource.ts\": 108,\n\t\"./qaap/query.ts\": 164,\n\t\"./qaap/query_def.ts\": 49,\n\t\"./redis/datasource\": 109,\n\t\"./redis/datasource.ts\": 109,\n\t\"./redis/query.ts\": 165,\n\t\"./redis/query_def.ts\": 59,\n\t\"./redis_mem/datasource\": 110,\n\t\"./redis_mem/datasource.ts\": 110,\n\t\"./redis_mem/query.ts\": 166,\n\t\"./redis_mem/query_def.ts\": 16,\n\t\"./scf/datasource\": 111,\n\t\"./scf/datasource.ts\": 111,\n\t\"./scf/query.ts\": 167,\n\t\"./scf/query_def.ts\": 25,\n\t\"./sqlserver/datasource\": 112,\n\t\"./sqlserver/datasource.ts\": 112,\n\t\"./sqlserver/query.ts\": 168,\n\t\"./sqlserver/query_def.ts\": 28,\n\t\"./tcaplus/datasource\": 113,\n\t\"./tcaplus/datasource.ts\": 113,\n\t\"./tcaplus/query.ts\": 169,\n\t\"./tcaplus/query_def.ts\": 50,\n\t\"./tdmq/datasource\": 114,\n\t\"./tdmq/datasource.ts\": 114,\n\t\"./tdmq/query.ts\": 170,\n\t\"./tdmq/query_def.ts\": 13,\n\t\"./tdmq_rabbitmq/datasource\": 115,\n\t\"./tdmq_rabbitmq/datasource.ts\": 115,\n\t\"./tdmq_rabbitmq/query.ts\": 171,\n\t\"./tdmq_rabbitmq/query_def.ts\": 17,\n\t\"./tdmq_rocketmq/datasource\": 116,\n\t\"./tdmq_rocketmq/datasource.ts\": 116,\n\t\"./tdmq_rocketmq/query.ts\": 172,\n\t\"./tdmq_rocketmq/query_def.ts\": 18,\n\t\"./tke/datasource\": 117,\n\t\"./tke/datasource.ts\": 117,\n\t\"./tke/query.ts\": 173,\n\t\"./tke/query_def.ts\": 69,\n\t\"./tsf/datasource\": 118,\n\t\"./tsf/datasource.ts\": 118,\n\t\"./tsf/query.ts\": 174,\n\t\"./tsf/query_def.ts\": 60,\n\t\"./v_clb/datasource\": 119,\n\t\"./v_clb/datasource.ts\": 119,\n\t\"./v_clb/query.ts\": 175,\n\t\"./v_clb/query_def.ts\": 23,\n\t\"./vbc/datasource\": 120,\n\t\"./vbc/datasource.ts\": 120,\n\t\"./vbc/query.ts\": 176,\n\t\"./vbc/query_def.ts\": 51,\n\t\"./vpc_net_detect/datasource\": 121,\n\t\"./vpc_net_detect/datasource.ts\": 121,\n\t\"./vpc_net_detect/query.ts\": 177,\n\t\"./vpc_net_detect/query_def.ts\": 40,\n\t\"./vpngw/datasource\": 122,\n\t\"./vpngw/datasource.ts\": 122,\n\t\"./vpngw/query.ts\": 178,\n\t\"./vpngw/query_def.ts\": 52,\n\t\"./vpnx/datasource\": 123,\n\t\"./vpnx/datasource.ts\": 123,\n\t\"./vpnx/query.ts\": 179,\n\t\"./vpnx/query_def.ts\": 53,\n\t\"./waf/datasource\": 124,\n\t\"./waf/datasource.ts\": 124,\n\t\"./waf/query.ts\": 180,\n\t\"./waf/query_def.ts\": 41\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 191;","import { PluginMeta } from '@grafana/data';\nimport { config, getBackendSrv } from '@grafana/runtime';\nimport { TcDataSourceId } from '../datasource/common/constants';\n\nconst backendSrv = getBackendSrv();\n\nconst tcFolder = {\n uid: 'tencent-cloud-monitor',\n title: '腾讯云监控',\n folderId: null,\n};\n\nconst tcFolder_EN = {\n uid: 'tencent-cloud-monitor-english',\n title: 'Tencent Cloud Monitor',\n folderId: null,\n};\n\n/**\n * 生成腾讯云专用目录\n * @returns\n */\nasync function getFolderId() {\n if (tcFolder.folderId && tcFolder_EN.folderId) {\n return [tcFolder.folderId, tcFolder_EN.folderId];\n }\n const folders: any[] = await backendSrv.get('/api/folders');\n let folderId = folders.find((item) => item.uid === tcFolder.uid)?.id;\n let folderEnId = folders.find((item) => item.uid === tcFolder_EN.uid)?.id;\n if (!folderId) {\n const folder = await backendSrv.post('/api/folders', tcFolder);\n folderId = folder?.id || 0;\n }\n if (!folderEnId) {\n const folderEn = await backendSrv.post('/api/folders', tcFolder_EN);\n folderEnId = folderEn?.id || 0;\n }\n tcFolder.folderId = folderId;\n tcFolder_EN.folderId = folderEnId;\n return [folderId, folderEnId];\n}\n\n/**\n * 请求拦截器,拦截导入按钮的接口请求\n */\nfunction backendInterceptor() {\n const oldPost = backendSrv.post.bind(getBackendSrv());\n const pluginId = window.location.pathname.split('/').filter((item) => item)[1];\n backendSrv.post = async (url, data) => {\n // 拦截判断:拦截指定接口\n if (url === '/api/dashboards/import' && data.pluginId === pluginId) {\n const [folderId, folderEnId] = await getFolderId();\n data.folderId = data.path.endsWith('_en_dashboard.json') ? folderEnId : folderId;\n }\n return oldPost(url, data);\n };\n}\n\nbackendInterceptor();\n\nexport class MonitorAppConfigCtrl {\n static templateUrl = 'components/config.html';\n appEditCtrl: any;\n appModel?: PluginMeta;\n $q: any;\n configured: boolean;\n\n /** @ngInject */\n constructor($scope: any, $injector: any, $q: any) {\n this.appEditCtrl.setPostUpdateHook(this.postUpdate.bind(this));\n this.$q = $q;\n // Make sure it has a JSON Data spot\n if (!this.appModel) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n this.appModel = {} as PluginMeta;\n }\n\n // Required until we get the types sorted on appModel :(\n const appModel = this.appModel as any;\n if (!appModel.jsonData) {\n appModel.jsonData = {};\n }\n this.configured = false;\n if (this.appModel?.enabled) {\n const datasources = Object.values(config.datasources).filter((ds) => {\n return ds.type === TcDataSourceId;\n });\n if (datasources.length > 0) {\n this.configured = true;\n }\n }\n }\n\n async moveToFolder(dashbaordUid: string, folderId: number) {\n // 获取dashboard\n const { dashboard } = await backendSrv.get(`/api/dashboards/uid/${dashbaordUid}`);\n // 移动目录\n await backendSrv.post('/api/dashboards/db/', {\n dashboard,\n folderId,\n message: '',\n overwrite: true,\n });\n }\n\n async reviseDashboard() {\n // 1. 生成腾讯云目录\n const [folderId, folderEnId] = await getFolderId();\n // 2. 获取所有腾讯云插件下的dashboard\n const rs = await backendSrv.get(`/api/plugins/${this.appModel?.id}/dashboards`);\n\n // 3. 调用api更新dashboard\n const pmlist = rs.map((item) => {\n const { importedUrl, path } = item;\n const uid = importedUrl.split('/')[2];\n if (uid) {\n return this.moveToFolder(uid, path.endsWith('_en_dashboard.json') ? folderEnId : folderId);\n } else {\n return Promise.resolve();\n }\n });\n\n return Promise.all(pmlist);\n }\n\n async postUpdate() {\n if (!this.appModel?.enabled) {\n return;\n }\n // enable或者update时,对预设dashboard进行修改\n await this.reviseDashboard();\n return this.$q.resolve(true);\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://TencentCloudMonitorGrafanaApp/webpack/bootstrap","webpack://TencentCloudMonitorGrafanaApp/external \"lodash\"","webpack://TencentCloudMonitorGrafanaApp/./locale/zh_CN.ts","webpack://TencentCloudMonitorGrafanaApp/./locale/en_US.ts","webpack://TencentCloudMonitorGrafanaApp/./locale/index.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/sign.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/signV2.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/constants.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/_base/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/utils.ts","webpack://TencentCloudMonitorGrafanaApp/external \"app/core/core_module\"","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/_base/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/indexedDB.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/common/datasourceStorage.ts","webpack://TencentCloudMonitorGrafanaApp/external \"@grafana/data\"","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ckafka/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/clb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/gse/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcdb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis_mem/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rabbitmq/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rocketmq/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/index.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_block_storage/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/apigateway/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mr/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/v_clb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cynosdb_mysql/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/scf/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/external \"@grafana/runtime\"","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cls/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/sqlserver/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bmIntraLb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_lb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_pcx/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cbs/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn_province/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ceip_summary/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq_topic/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cpm/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecdn/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/postgresql/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpc_net_detect/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/waf/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ces/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dc/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcg/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcx/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_lb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mongodb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/qaap/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tcaplus/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vbc/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpngw/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpnx/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lighthouse/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cfs/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cvm/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/pcx/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tsf/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bwp/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lb/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/nat_gateway/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ov_cdn/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/external \"moment\"","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tke/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/apigateway/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bmIntraLb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_lb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_pcx/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bwp/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cbs/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn_province/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ceip_summary/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ces/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cfs/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ckafka/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/clb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cls/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq_topic/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cos/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cpm/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cvm/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cynosdb_mysql/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dc/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcdb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcg/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcx/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecdn/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_block_storage/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_lb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/gse/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lighthouse/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mongodb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mr/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/nat_gateway/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ov_cdn/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/pcx/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/postgresql/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/qaap/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis_mem/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/scf/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/sqlserver/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tcaplus/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rabbitmq/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rocketmq/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tke/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tsf/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/v_clb/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vbc/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpc_net_detect/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpngw/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpnx/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/waf/datasource.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/apigateway/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bmIntraLb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_lb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bm_pcx/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/bwp/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cbs/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cdn_province/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ceip_summary/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ces/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cfs/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ckafka/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/clb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cls/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cmq_topic/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cos/query_def.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cpm/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cvm/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/cynosdb_mysql/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dc/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcdb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcg/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/dcx/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecdn/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_block_storage/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ecm_lb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/gse/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/lighthouse/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mongodb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/mr/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/nat_gateway/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/ov_cdn/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/pcx/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/postgresql/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/qaap/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/redis_mem/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/scf/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/sqlserver/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tcaplus/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rabbitmq/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tdmq_rocketmq/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tke/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/tsf/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/v_clb/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vbc/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpc_net_detect/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpngw/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/vpnx/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/waf/query.ts","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor sync ^.*$","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/MonitorDatasource.ts","webpack://TencentCloudMonitorGrafanaApp/../node_modules/qs/lib/utils.js","webpack://TencentCloudMonitorGrafanaApp/../node_modules/qs/lib/formats.js","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor/_base/query_filter.ts","webpack://TencentCloudMonitorGrafanaApp/../node_modules/qs/lib/index.js","webpack://TencentCloudMonitorGrafanaApp/../node_modules/qs/lib/stringify.js","webpack://TencentCloudMonitorGrafanaApp/../node_modules/qs/lib/parse.js","webpack://TencentCloudMonitorGrafanaApp/./datasource/tc_monitor sync ^\\.\\/[a-zA-Z]\\w+\\/(datasource)|(query(_def)","webpack://TencentCloudMonitorGrafanaApp/./components/config.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__0__","language","enable_intranet_API_mode","cloud_database","cloud_load_balancer","virtual_private_cloud","content_delivery_network","message_queue","direct_connect","cloud_physical_machine","elastic_mapReduce","edge_computing_machine","RUM","CLS","CVM","CDB","CMONGO","POSTGRES","REDIS","REDIS_MEM","SQLSERVER","CYNOSDB_MYSQL","TCAPLUS","TDMYSQL","PCX","BWP","NAT_GATEWAY","VPNGW","VPNX","DCG","CEIP_SUMMARY","VPC_NET_DETECT","VBC","LB","LB_PUBLIC","LB_PRIVATE","LOADBALANCE","CDN","CDN_LOG_DATA","OV_CDN","SCF_V2","CFS","COS","CKAFKA","CMQ","CMQTOPIC","TDMQ","TDMQ_ROCKETMQ","TDMQ_RABBITMQ","DCX","DC","CPM","BM_PCX","BM_LB","BM_INTRA_LB","CES","BLOCK_STORAGE","APIGATEWAY","QAAP","ECM","ECM_BLOCK_STORAGE","ECM_LB","GSE","TKE","ECDN","WAF","multi_scene","lite","cloud_monitor","cloud_log_service","real_user_monitoring","region","log_topic","syntax_rule","max_result_num","search_statement","time_unit","seconds","search_description","Language","locale_language","Chinese","setLanguage","getLanguage","options","secretId","service","action","host","version","payload","backendSrv","datasourceId","this","JSON","stringify","nowDate","utc","timestamp","unix","date","format","getHeader","getResourceHeader","res","datasourceRequest","url","method","headers","data","Host","Service","Version","Action","Region","Timestamp","Method","Uri","Query","Body","Headers","resp","authorization","token","intranet","grafanaVersion","window","grafanaBootData","settings","buildInfo","Authorization","toString","defaults","path","generateQueryString","getResourceQueryString","assign","secretKey","querystring","queryString","TcDataSourceId","id","FINACE_REGIONS","SERVICES_API_INFO","api","monitor","cls","cvm","cdb","pcx","vpc","mongodb","clb","postgres","cdn","redis","scf","cfs","ckafka","dc","cynosdb","sqlserver","bm","bmeip","bmvpc","bmlb","es","emr","cmq","cbs","tcaplusdb","dcdb","apigateway","tdmq","tdmq_rabbitmq","tdmq_rocketmq","gaap","ecm","gse","lighthouse","tsf","rum","tke","ecdn","waf","FINACE_HOST","GetServiceAPIInfo","indexOf","find","__","getHostAndPath","GetServiceFromNamespace","namespace","ParseMetricQuery","query","result","queries","split","forEach","item","str","trim","val","parse","e","toLower","ReplaceVariable","templateSrv","scopedVars","field","multiple","varname","varFlag","regResult1","String","match","regResult2","parseVariableFormat","replaceVar","replace","error","isArray","GetDimensions","obj","isEmpty","dimensions","Value","undefined","push","Name","ParseQueryResult","response","instances","timeshift","instanceList","cloneDeep","dataPoints","map","dataPoint","instanceAliasValue","length","isInstanceMatch","_InstanceAliasValue","splice","target","MetricName","datapoints","parseDataPoint","timestamps","values","index","instance","isVariable","GetRequestParams","signObj","signParams","pick","headerSigned","GetRequestParamsV2","sign","SliceLength","total","len","num","Math","ceil","Offset","CoreApp","IS_DEVELOPMENT_ENVIRONMENT","instanceSettings","instanceListCache","extraMetricDims","checkKeys","MetricReqConfig","extrasAlias","queryMonitorExtraConfg","CandiateDimensions","jsonData","Namespace","getOtherAlias","alias","extra","extraAlia","getVariable","getAliasValue","Array","join","formatVarDisplay","displayTpl","instanceAlias","a","b","InstanceAliasList","includes","metricFindQuery","regex","display","instancealias","templateQueryIdMap","isObject","isString","getRegions","getVariableInstances","flatMap","insAlias","text","setInstance","getInstance","instanceCache","fetchMetricData","Promise","resolve","dimensionsFormat","dimKeys","ins","dimensionObject","keyTmp","invalidDim","InvalidDimensions","getInvalidDimensions","extraDimValue","dim_KeyInStorage","dim_KeyInTarget","dim_KeyInMap","dim_KeyInIns","extraSourceMap","getExtraStorage","extraStorage","isStringOrNumber","isNumber","otherAlias","getDimensionsVal","Ekey","dimVal","filter","targets","hide","metricName","reduce","prev","cloneTarget","concat","inst","getDefaultInsObj","insInReq","keys","dimResult","Dimensions","StartTime","range","from","subtract","EndTime","to","Period","period","Instances","getMonitorData","all","then","responses","flatten","getInstanceReqConfig","selfIns","metric","rs","valStr","params","serviceInfo","doRequest","RegionSet","RegionName","RegionState","getMetrics","MetricSet","resFilterFn","resultFilter","getInstances","InstanceReqConfig","interceptor","Limit","request","Error","TotalCount","TotalCnt","TotalNumber","param","isValidConfigField","testDatasource","cvmErr","monitorErr","serviceErr","cvmAuthFail","monitorAuthFail","serviceAuthFail","messages","message","compact","uniq","status","title","statusText","code","getFieldsValue","fields","fetchAllFactory","fetcher","_params","omit","Result","firstLists","delta","batchCount","pmList","fill","_","isOffsetPage","acc","cur","lists","list","instanceQueryParamsBaseParse","isFilter","Values","slice","Filters","getNamesapceFromService","serviceName","serviceGroupBy","services","label","groupName","existedGroup","items","isTargetEqual","newTargetString","oldTargetString","newTarget","oldTarget","getTimeShiftInMs","timeShift","parts","exec","amount","parseInt","__WEBPACK_EXTERNAL_MODULE__6__","config","detailConfig","QueryCtrl","newQueryIns","$scope","$rootScope","getDropdown","datasource","getFilterDropdown","directive","template","controller","restrict","scope","showDetail","getDropdownOptions","onChange","store","promisify","type","reject","onsuccess","event","returnMap","msg","onerror","props","initDB","indexedDB","webkitIndexedDB","mozIndexedDB","msIndexedDB","open","onupgradeneeded","db","objectStoreNames","contains","createObjectStore","keyPath","openDB","insertData","storeName","transaction","objectStore","add","oncomplete","addData","isCover","getData","oldData","getObjectStore","newData","requestUpdate","put","seviceName","getAllData","getAll","insKey","cacheWay","setStorage","getStorage","setExtraStorage","EValue","serviceKey","storage","__WEBPACK_EXTERNAL_MODULE__9__","CKAFKAQueryDescriptor","enDescriptor","cnDescriptor","link","min","max","CKAFKA_STATE","metricUnit","topicId","topicName","consumerGroup","partition","Status","InstanceId","SearchWord","TagKey","GetInstanceQueryParams","CKAFKAInstanceAliasList","CKAFKATopicAliasList","CKAFKAInvalidDemensions","Proxy","prop","toLocaleLowerCase","keyInStorage","TopicList","GroupList","PartitionList","TopicId","TopicName","GroupName","PartitionId","queryEditorName","LOADBALANCEFieldsDescriptor","queryEditorConfig","instanceDocUrl","fieldDescriptor","LOADBALANCE_STATE","Port","Protocol","listener","servers","serverPort","LoadBalancerIds","Forward","LoadBalancerName","Domain","LoadBalancerVips","BackendPublicIps","BackendPrivateIps","ProjectId","WithRs","VpcId","SecurityGroup","MasterZone","OrderBy","OrderType","LOADBALANCEListenerAliasList","LOADBALANCEServerAliasList","LOADBALANCEVALIDDIMENSIONS","vip","loadBalancerPort","protocol","lanIp","port","CANDIATEDIMENSIONS","PrivateIpAddresses","ServerPort","TDMQInvalidDemensions","tenantId","tenant","environmentId","TDMQInstanceAliasList","TDMQFilterFieldsDescriptor","CDNPROVINCE_STATE","regionSupported","modifyDimensons","metricItem","metricTmp","EnvironmentId","fleetId","GSEInvalidDemensions","instanceid","fleetid","queuename","GSEInstanceAliasList","FleetId","fleet","queue","GSEFilterFieldsDescriptor","GSE_STATE","v","DCDBInvalidDemensions","nodeid","shardid","ShardId","DCDBInstanceAliasList","NodeId","ShardInstanceId","DCDBFilterFieldsDescriptor","DCDB_STATE","InstanceIds","SearchName","SearchKey","ProjectIds","SubnetId","OrderByType","ExclusterType","ExclusterIds","FilterInstanceType","modifyMetricConf","IsFilterVpc","IsFilterExcluster","RedisMemFieldsDescriptor","REDISMEM_STATE","VpcIds","SubnetIds","InstanceName","UniqVpcIds","UniqSubnetIds","TypeVersion","EngineName","AutoRenew","BillingMode","Type","rnodeid","pnodeid","REDISMEMInstanceAliasList","RedisMemInvalidDemensions","NodeType","node","TDMQRABBITMQInstanceAliasList","TDMQ_STATE","NodeName","group","TDMQROCKETMQInstanceAliasList","instanceIdsChecked","filtersChecked","ClusterIdList","includeVip","NamespaceId","SERVICES","href","hideRegion","Datasources","InitStates","hackModuleName","postgresql","mr","filePath","moduleName","fileName","prefix","toUpperCase","getParams","ECMBLOCKSTORAGEInvalidDemensions","uuid","diskId","ECMBLOCKSTORAGEInstanceAliasList","ECMBLOCKSTORAGEFilterFieldsDescriptor","ECMBLOCKSTORAGE_STATE","DiskId","APIGATEWAYInvalidDemensions","serviceId","environmentName","apiid","apiId","APIGATEWAYInstanceAliasList","environmentList","EnvironmentName","APIGATEWAYFilterFieldsDescriptor","APIGATEWAY_STATE","ServiceId","ServiceName","NotUsagePlanId","Environment","IpVersion","InstanceQueryDescriptor","InvalidDemensions","k","receiver","startsWith","Reflect","has","propKey","Ip","nodeIP","DisplayStrategy","Order","OrderField","Asc","VCLBInvalidDemensions","VCLBInstanceAliasList","VCLBFilterFieldsDescriptor","VCLB_STATE","clbNamespaceMap","public","private","cynosdbMysqlFilterFieldsDescriptor","CYNOSDB_STATE","DbType","CYNOSDBMYSQLInstanceAliasList","CYNOSDBInvalidDemensions","instanceId","SCFQueryDescriptor","SCF_STATE","Description","SCFInstanceAliasList","SCFInvalidDemensions","functionName","SCFDefaultDimensionList","__WEBPACK_EXTERNAL_MODULE__26__","CLSInvalidDemensions","CLSInstanceAliasList","CLSFilterFieldsDescriptor","CLS_STATE","uin","logsetName","logsetId","tagKey","storageType","SQLSERVERInvalidDemensions","resourceId","SQLSERVERInstanceAliasList","SQLSERVERNETFilterFieldsDescriptor","SQLSERVER_STATE","InstanceIdSet","PayMode","VipSet","InstanceNameSet","VersionSet","Zone","BMINTRALBInvalidDemensions","vpcId","BMINTRALBInstanceAliasList","BMINTRALBFilterFieldsDescriptor","BMINTRALB_STATE","BMLBValidMetricsT","isValidMetric","validMetrics","toUpper","CPMInvalidDemensions","BMLBInstanceAliasList","CPMFilterFieldsDescriptor","CPM_STATE","BMPCXInvalidDemensions","peeringConnectionId","BMPCXInstanceAliasList","BMPCXFilterFieldsDescriptor","BMPCX_STATE","VpcPeerConnectionIds","CBSInvalidDemensions","diskname","unInstanceId","CBSInstanceAliasList","CBSFilterFieldsDescriptor","CBS_STATE","DiskIds","ReturnBindAutoSnapshotPolicy","metricObj","dimension","CDNPROVINCEInvalidDemensions","domain","projectid","province","appid","CDNPROVINCEInstanceAliasList","CDNPROVINCEFilterFieldsDescriptor","isp","district","origin","serviceType","projectId","domainType","fullUrlCache","https","originPullProtocol","CEIPInvalidDemensions","eip","CEIPSUMMARYInstanceAliasList","CEIPFilterFieldsDescriptor","CEIP_STATE","subscription","subscriptionId","CPMInstanceAliasList","DeviceClassCode","WanIps","LanIps","Alias","VagueIp","AutoRenewFlag","DeviceType","IsLuckyDevice","ECDNInstanceAliasList","ECDNInvalidDemensions","ECDN_STATE","disable","area","ECDNFilterFieldsDescriptor","_queries","Fuzzy","ECMInvalidDemensions","ECMInstanceAliasList","ECMFilterFieldsDescriptor","ECM_STATE","zone","PostgresFieldsDescriptor","POSTGRESInstanceAliasList","POSTGRES_STATE","PostgreInvalidDemensions","uid","VPCNETInvalidDemensions","netdetectid","netDetectId","VPCNETDETECTInstanceAliasList","VPCNETFilterFieldsDescriptor","VPCNET_STATE","WAFFilterFieldsDescriptor","WAF_STATE","WAFInstanceAliasList","WAFInvalidDemensions","CDBFieldsDescriptor","CDB_STATE","InstanceTypes","Vips","SecurityGroupId","PayTypes","InstanceNames","TaskStatus","EngineVersions","ZoneIds","CdbErrors","OrderDirection","InitFlag","CDBInstanceAliasList","CDBInvalidDemensions","insttype","CESInvalidDemensions","uInstanceId","CESInstanceAliasList","CESFilterFieldsDescriptor","CES_STATE","OrderByKey","IpList","DCFilterFieldsDescriptor","DC_STATE","DirectConnectIds","DCInstanceAliasList","DCInvalidDemensions","directConnectId","directconnectid","DCGInvalidDemensions","directConnectGatewayId","DCGInstanceAliasList","DCGFilterFieldsDescriptor","DCG_STATE","DCXFilterFieldsDescriptor","DCX_STATE","DCXInstanceAliasList","DCXInvalidDemensions","directconnectconnid","directConnectConnId","ECMLBInvalidDemensions","ECMLBInstanceAliasList","ECMLBFilterFieldsDescriptor","MONGODBFieldsDescriptor","MONGODB_STATE","InstanceType","ClusterType","MONGODBInstanceAliasList","MONGODBInvalidDemensions","replica","Replica","Node","QAAPInvalidDemensions","channelId","QAAPInstanceAliasList","QAAPFilterFieldsDescriptor","QAAP_STATE","AccessRegion","RealServerRegion","GroupId","TCAPLUSInvalidDemensions","TCAPLUSInstanceAliasList","TCAPLUSFilterFieldsDescriptor","TCAPLUS_STATE","ClusterId","TableGroupIds","TableName","TableInstanceId","TableIdlType","TableType","ListElementNum","ReservedVolume","ReservedReadQps","ReservedWriteQps","Memo","FileName","FileExtType","FileSize","FileContent","SelectedTables","regonsMap","VBCInvalidDemensions","VBCInstanceAliasList","VBCFilterFieldsDescriptor","VBC_STATE","DRegion","SRegion","state","VPNGWInvalidDemensions","vpnGwId","VPNGWInstanceAliasList","VPNGWFilterFieldsDescriptor","VPNGW_STATE","VPNXInvalidDemensions","vpnConnId","VPNXInstanceAliasList","VPNXFilterFieldsDescriptor","VPNX_STATE","LighthouseFilterFieldsDescriptor","LIGHTHOUSE_STATE","LIGHTHOUSEInstanceAliasList","LighthouseInvalidDemensions","CFSQueryDescriptor","CFS_STATE","FileSystemId","CFSInstanceAliasList","CFSInvalidDemensions","queueId","queueName","QueueName","CVMFilterFieldsDescriptor","CVM_STATE","CVMInstanceAliasList","CVMValidMetricsT","CVMValidMetrics","PCX_STATE","limit","offset","peeringConnectionName","PCXFieldsDescriptor","PCXInstanceAliasList","RedisFieldsDescriptor","REDIS_STATE","REDISInstanceAliasList","RedisInvalidDemensions","redis_uuid","TSFFieldsDescriptor","TSF_STATE","ApplicationType","MicroserviceType","ApplicationResourceTypeList","ApplicationIdList","TSFInstanceAliasList","TSFInvalidDemensions","applicationid","BWPFilterFieldsDescriptor","BWP_STATE","BandwidthPackageIds","BWPInstanceAliasList","BWPInvalidDemensions","bandwidthPackageId","CDNFilterFieldsDescriptor","CDN_STATE","CDNInstanceAliasList","CDNInvalidDemensions","LBFilterDescriptor","LB_STATE","LBInstanceAliasList","LBInvalidDemensions","NATGATEWAYInstanceAliasList","NATGatewayFilterFieldsDescriptor","NATGATEWAY_STATE","NatGatewayIds","NATInvalidDemensions","natId","OVCDNFilterFieldsDescriptor","OVCDN_STATE","OVCDNInstanceAliasList","OVCDNInvalidDemensions","__WEBPACK_EXTERNAL_MODULE__67__","TKE_STATE","conditions","groupBys","ClusterIds","ClusterName","ClusterStatus","TKEFilterFieldsDescriptor","TKEInstanceAliasList","responseField","getEnvironmentNameList","LoadBalancerType","RegionMap","keyBy","RegionInfoSet","rawSet","getZones","ZoneSet","ZoneName","ZoneId","ZoneState","getConsumerList","MapInfoList","TopicAliasList","consumerGroupCache","getConsumerGroups","groupname","topicid","consumerGoup","GroupDetailList","uniqBy","SubscribedInfos","ConsumerGroupName","SubscribedInfo","partitions","sub","Partition","formatTopicVarDisplay","topic","topicAlias","topicalias","par","ListenerAliasList","ServerAliasList","tagret","getListenerList","LoadBalancerId","formatVariableDisplay","aliasList","getServerList","listenerId","ListenerIds","Listeners","Rules","Targets","elem","listenAlias","lisId","listenerid","serverprivateip","serveralias","serversList","chain","dims","Set","fetchAllSubscription","SubscriptionId","cosURL","Buckets","BucketName","bucket","DeviceClassSet","Product","extraActionMap","DescribeDCDBShards","pickKey","DescribeDCDBInstanceNodeInfo","RegionList","act","getDiskList","instanceObj","getQueueNameList","getFleetList","ReplicaAliasList","replicaAlias","ReplicaSetId","replicasetid","times","SecondaryNum","nodeId","fetchAllNodes","NodeFlag","resultT","doRequestV2","totalCount","getVpcId","VpcSet","getVpcIds","MonitorVersion","getInstanceNodeInfo","nodetype","ndoeTypeIndex","getVersions","Versions","FunctionName","RegionInfos","DescribeTopics","DescribeEnvironments","DescribeRabbitMQNodeList","DescribeRocketMQNamespaces","DescribeRocketMQGroups","variableToArray","variable","tke_cluster_instance_id","Key","Operator","MetricNames","Module","Conditions","GroupBys","Data","Points","point","dimensionSort","dimensionString","timeshiftString","getAllMetrics","public_metrics","private_metrics","init","getInstanceId","getServiceFn","getExtraDropdown","sQuery","onRefresh","onChecked","srcField","dstField","bwpQuery","BWPQueryCtrl","cdbQuery","CDBQueryCtrl","cdnQuery","CDNQueryCtrl","ExtraFields","scfQuery","SCFQueryCtrl","onInstanceChange","getExtraFields","CKAFKAQueryCtrl","element","attrs","$watch","newValue","oldValue","onFieldChange","getVariableId","variableData","getServersDropdown","getServerPortDropdown","serverPortList","cacheMap","getTopicName","onExtraFieldChange","datas","CmqTopicQueryCtrl","cvmQuery","CVMQueryCtrl","dropdownTextConfig","actionMaps","lbQuery","LBQueryCtrl","lighthouseQuery","LighthouseQueryCtrl","replicaId","mongodbQuery","MongoDBQueryCtrl","some","dataT","mrQuery","MrQueryCtrl","natGatewayQuery","NatGatewayQueryCtrl","ovCdnQuery","OVCDNQueryCtrl","pcxQuery","PCXQueryCtrl","redisQuery","RedisQueryCtrl","clearExtrasAlias","redisMemQuery","RedisMemQueryCtrl","evId","tdmqRocketmqQuery","TdmqRocketmqQueryCtrl","addCondition","deleteCondition","targetCondition","getOperator","tsfQuery","TSFQueryCtrl","VBCQueryCtrl","webpackContext","req","webpackContextResolve","_class","getNamespaces","namespaces","getCascaderNamespaces","validServices","getSelectedServices","promises","optionsTemp","promiseTemp","Done","results","getListeners","errorMsg","upperFirst","fnName","argu","hexTable","array","arrayToObject","source","plainObjects","refs","j","pop","compacted","compactQueue","decode","decodeURIComponent","encode","string","out","charCodeAt","charAt","isBuffer","constructor","isRegExp","merge","allowPrototypes","mergeTarget","percentTwenties","formatters","RFC1738","RFC3986","SPQueryCtrl","_config","queryDDO","formats","utils","arrayPrefixGenerators","brackets","indices","repeat","toISO","Date","toISOString","delimiter","encoder","encodeValuesOnly","serializeDate","skipNulls","strictNullHandling","generateArrayPrefix","sort","allowDots","formatter","objKeys","opts","TypeError","arrayFormat","joined","addQueryPrefix","arrayLimit","decoder","depth","parameterLimit","parseKeys","givenKey","child","segment","parent","leaf","root","cleanRoot","isNaN","parseArrays","parseObject","ignoreQueryPrefix","tempObj","cleanStr","Infinity","part","bracketEqualsPos","pos","parseValues","newObj","tcFolder","folderId","tcFolder_EN","getFolderId","folders","folderEnId","post","folder","folderEn","oldPost","pluginId","location","pathname","endsWith","backendInterceptor","$injector","$q","appEditCtrl","setPostUpdateHook","postUpdate","appModel","configured","enabled","datasources","ds","moveToFolder","dashbaordUid","dashboard","overwrite","reviseDashboard","pmlist","importedUrl","templateUrl"],"mappings":"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","file":"components/config.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 195);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","const zh_CN = {\n language: '语言',\n enable_intranet_API_mode: '开启内网API模式',\n cloud_database: '云数据库',\n cloud_load_balancer: '负载均衡',\n virtual_private_cloud: '私有网络',\n content_delivery_network: '内容分发网络',\n message_queue: '消息队列',\n direct_connect: '专线接入',\n cloud_physical_machine: '黑石物理服务器',\n elastic_mapReduce: '弹性 MapReduce',\n edge_computing_machine: '边缘计算机器',\n // namespace\n RUM: '前端性能监控(RUM)',\n CLS: '日志服务(CLS)',\n CVM: '云服务器(CVM)',\n CDB: '云数据库 MySQL(CDB)',\n CMONGO: '云数据库 MongoDB(CMONGO)',\n POSTGRES: '云数据库 PostgreSQL(POSTGRES)',\n REDIS: '云数据库 Redis(REDIS)',\n REDIS_MEM: '云数据库 Redis内存版(5s)(REDIS_MEM)',\n SQLSERVER: '云数据库 SQL Server(SQLSERVER)',\n CYNOSDB_MYSQL: '云数据库 CYNOSDB_MYSQL(CYNOSDB_MYSQL)',\n TCAPLUS: '云数据库 TcaplusDB(TCAPLUS)',\n TDMYSQL: '分布式数据库 TDSQL MySQL(TDMYSQL)',\n PCX: '私有网络-对等连接(PCX)',\n BWP: '私有网络-带宽包(BWP)',\n NAT_GATEWAY: '私有网络-NAT 网关(NAT_GATEWAY)',\n VPNGW: '私有网络-VPN 网关(VPNGW)',\n VPNX: '私有网络-VPN 通道(VPNX)',\n DCG: '私有网络-专线网关(DCG)',\n CEIP_SUMMARY: '私有网络-Anycast 弹性公网IP(CEIP_SUMMARY)',\n VPC_NET_DETECT: '私有网络-网络探测(VPC_NET_DETECT)',\n VBC: '私有网络-云联网(VBC)',\n LB: '私有网络-弹性公网IP(LB)',\n LB_PUBLIC: '公网负载均衡监控指标(LB_PUBLIC)',\n LB_PRIVATE: '内网负载均衡四层协议监控指标(LB_PRIVATE)',\n LOADBALANCE: '内网负载均衡七层协议监控指标(LOADBALANCE)',\n CDN: '国内域名(CDN)',\n CDN_LOG_DATA: '省份域名(CDN_LOG_DATA)',\n OV_CDN: '国外域名(OV_CDN)',\n SCF_V2: '云函数(SCF)',\n CFS: '文件存储(CFS)',\n COS: '对象存储(COS)',\n CKAFKA: '消息队列 CKafka(CKAFKA)',\n CMQ: '消息队列-队列服务监控(CMQ)',\n CMQTOPIC: '消息队列-主题订阅监控(CMQTOPIC)',\n TDMQ: '消息队列 Pulsar 版(TDMQ)',\n TDMQ_ROCKETMQ: '消息队列 RocketMQ 版(ROCKETMQ)',\n TDMQ_RABBITMQ: '消息队列 RabbitMQ 版(RABBITMQ)',\n DCX: '专线接入-专用通道(DCX)',\n DC: '专线接入-物理专线(DC)',\n CPM: '黑石物理服务器(CPM)',\n BM_PCX: '黑石对等连接(BM_PCX)',\n BM_LB: '黑石外网负载均衡(BM_LB)',\n BM_INTRA_LB: '黑石内网负载均衡(BM_INTRA_LB)',\n CES: 'Elasticsearch指标(CES)',\n BLOCK_STORAGE: '云硬盘(BLOCK_STORAGE)',\n APIGATEWAY: 'API 网关(APIGATEWAY)',\n QAAP: '全球应用加速(GAAP)',\n ECM: '边缘计算和网络监控(ECM)',\n ECM_BLOCK_STORAGE: '边缘计算存储监控(ECM_BLOCK_STORAGE)',\n ECM_LB: '边缘计算负载均衡(ECM_LB)',\n GSE: '游戏服务器伸缩(GSE)',\n TKE: '容器服务(TKE)',\n ECDN: '全站加速网络(ECDN)',\n WAF: 'Web 应用防火墙(WAF)',\n // others\n multi_scene: '多场景版',\n lite: '精简版',\n cloud_monitor: '云监控',\n cloud_log_service: '日志服务',\n real_user_monitoring: '前端性能监控',\n region: '地域',\n log_topic: '日志主题',\n syntax_rule: '语法规则',\n max_result_num: '最大结果条数',\n search_statement: '检索语句',\n time_unit: 'Time unit',\n seconds: 'seconds',\n search_description: '按照具体的查询条件搜索实例,默认拉取前 20 条实例',\n // region\n 'ap-guangzhou': '华南地区(广州)',\n 'ap-shenzhen-fsi': '华南地区(深圳金融)',\n 'ap-guangzhou-open': '华南地区(广州OPEN)',\n 'ap-shenzhen': '华南地区(深圳)',\n 'ap-qingyuan': '华南地区(清远)',\n 'ap-shanghai': '华东地区(上海)',\n 'ap-shanghai-fsi': '华东地区(上海金融)',\n 'ap-jinan-ec': '华东地区(济南)',\n 'ap-hangzhou-ec': '华东地区(杭州)',\n 'ap-nanjing': '华东地区(南京)',\n 'ap-fuzhou-ec': '华东地区(福州)',\n 'ap-hefei-ec': '华东地区(合肥)',\n 'ap-beijing': '华北地区(北京)',\n 'ap-tianjin': '华北地区(天津)',\n 'ap-beijing-fsi': '华北地区(北京金融)',\n 'ap-shijiazhuang-ec': '华北地区(石家庄)',\n 'ap-wuhan-ec': '华中地区(武汉)',\n 'ap-changsha-ec': '华中地区(长沙)',\n 'ap-zhengzhou-ec': '华中地区(郑州)',\n 'ap-chengdu': '西南地区(成都)',\n 'ap-chongqing': '西南地区(重庆)',\n 'ap-xian-ec': '西北地区(西安)',\n 'ap-shenyang-ec': '东北地区(沈阳)',\n 'ap-taipei': '港澳台地区(中国台北)',\n 'ap-hongkong': '港澳台地区(中国香港)',\n 'ap-seoul': '亚太东北(首尔)',\n 'ap-tokyo': '亚太东北(东京)',\n 'ap-singapore': '亚太东南(新加坡)',\n 'ap-bangkok': '亚太东南(曼谷)',\n 'ap-jakarta': '亚太东南(雅加达)',\n 'na-siliconvalley': '美国西部(硅谷)',\n 'eu-frankfurt': '欧洲地区(法兰克福)',\n 'eu-moscow': '欧洲地区(莫斯科)',\n 'ap-mumbai': '亚太南部(孟买)',\n 'na-ashburn': '美国东部(弗吉尼亚)',\n 'sa-saopaulo': '南美地区(圣保罗)',\n 'na-toronto': '北美地区(多伦多)',\n};\nexport default zh_CN;\n","const en_US = {\n language: 'Language',\n enable_intranet_API_mode: 'Enable Intranet API Mode',\n cloud_database: 'Cloud Database',\n cloud_load_balancer: 'Cloud Load Balancer',\n virtual_private_cloud: 'Virtual Private Cloud',\n content_delivery_network: 'Content Delivery Network',\n message_queue: 'Message Queue',\n direct_connect: 'Direct Connect',\n cloud_physical_machine: 'Cloud Physical Machine',\n elastic_mapReduce: 'Elastic MapReduce',\n edge_computing_machine: 'Edge Computing Machine',\n // namespace\n RUM: 'Real User Monitoring(RUM)',\n CLS: 'Cloud Log Service(CLS)',\n CVM: 'Cloud Virtual Machine(CVM)',\n CDB: 'TencentDB for MySQL(CDB)',\n CMONGO: 'TencentDB for MongoDB(CMONGO)',\n POSTGRES: 'TencentDB for PostgreSQL(POSTGRES)',\n REDIS: 'TencentDB for Redis(REDIS)',\n REDIS_MEM: 'TencentDB for Redis(Memory Edition, 5-Second)(REDIS_MEM)',\n SQLSERVER: 'TencentDB for SQL Server(SQLSERVER)',\n CYNOSDB_MYSQL: 'TencentDB for CYNOSDB_MYSQL(CYNOSDB_MYSQL)',\n TCAPLUS: 'TencentDB for TcaplusDB(TCAPLUS)',\n TDMYSQL: 'TDSQL for MySQL(TDMYSQL)',\n PCX: 'Peering Connection(PCX)',\n BWP: 'Bandwidth Packet(BWP)',\n NAT_GATEWAY: 'NAT Gateway(NAT_GATEWAY)',\n VPNGW: 'VPN Gateway(VPNGW)',\n VPNX: 'VPN Tunnel(VPNX)',\n DCG: 'Direct Connect Gateway(DCG)',\n CEIP_SUMMARY: 'Anycast EIP(CEIP_SUMMARY)',\n VPC_NET_DETECT: 'Network Detection(VPC_NET_DETECT)',\n VBC: 'Cloud Connect Network(VBC)',\n LB: 'Elastic IP(LB)',\n LB_PUBLIC: 'Public Network CLB(LB_PUBLIC)',\n LB_PRIVATE: 'Private Network CLB Layer-4 Protocol(LB_PRIVATE)',\n LOADBALANCE: 'Private Network CLB Layer-7 Protocol(LOADBALANCE)',\n CDN: 'Chinese Mainland Domain(CDN)',\n CDN_LOG_DATA: 'Province(CDN_LOG_DATA)',\n OV_CDN: 'Overseas Domain(OV_CDN)',\n SCF_V2: 'Serverless Cloud Function(SCF)',\n CFS: 'Cloud File Storage(CFS)',\n COS: 'Cloud Object Storage(COS)',\n CKAFKA: 'Message Queue CKafka(CKAFKA)',\n CMQ: 'Message Queue for Queue Service(CMQ)',\n CMQTOPIC: 'Message Queue for Topic Subscription(CMQTOPIC)',\n TDMQ: 'Tencent Distributed Message Queue for Pulsar(TDMQ)',\n TDMQ_ROCKETMQ: 'Tencent Distributed Message Queue for RocketMQ(ROCKETMQ)',\n TDMQ_RABBITMQ: 'Tencent Distributed Message Queue for RabbitMQ(RABBITMQ)',\n DCX: 'Direct Connect for Dedicated Tunnel(DCX)',\n DC: 'Direct Connect for Connection(DC)',\n CPM: 'Cloud Physical Machine(CPM)',\n BM_PCX: 'Cloud Physical Machine for Peering Connection(BM_PCX)',\n BM_LB: 'Cloud Physical Machine for Public Network CLB(BM_LB)',\n BM_INTRA_LB: 'Cloud Physical Machine for Private Network CLB(BM_INTRA_LB)',\n CES: 'Elasticsearch Service(CES)',\n BLOCK_STORAGE: 'Cloud Block Storage(BLOCK_STORAGE)',\n APIGATEWAY: 'API Gateway(APIGATEWAY)',\n QAAP: 'Global Application Acceleration Platform(GAAP)',\n ECM: 'Edge Computing Machine for Computation and Networking(ECM)',\n ECM_BLOCK_STORAGE: 'Edge Computing Machine for Block Storage(ECM_BLOCK_STORAGE)',\n ECM_LB: 'Edge Computing Machine for Layer-4 CLB(ECM_LB)',\n GSE: 'Game Server Elastic-scaling(GSE)',\n TKE: 'Tencent Kubernetes Engine(TKE)',\n ECDN: 'Enterprise Content Delivery Network(ECDN)',\n WAF: 'Web Application Firewall(WAF)',\n // others\n multi_scene: 'Multi-Scene',\n lite: 'Lite',\n cloud_monitor: 'Cloud Monitor',\n cloud_log_service: 'Cloud Log Service',\n real_user_monitoring: 'Real User Monitoring',\n region: 'Region',\n log_topic: 'Log Topic',\n syntax_rule: 'Syntax Rule',\n max_result_num: 'Maximum result number',\n search_statement: 'Search Statement',\n time_unit: 'Time unit',\n seconds: 'seconds',\n search_description:\n 'Search for instances according to specific query conditions, and pull the first 20 instances by default',\n // region\n 'ap-guangzhou': 'South China(Guangzhou)',\n 'ap-shenzhen-fsi': 'South China(Shenzhen Finance)',\n 'ap-guangzhou-open': 'South China(Guangzhou OPEN)',\n 'ap-shenzhen': 'South China(Shenzhen)',\n 'ap-qingyuan': 'South China(Qingyuan)',\n 'ap-shanghai': 'East China(Shanghai)',\n 'ap-shanghai-fsi': 'East China(Shanghai Finance)',\n 'ap-jinan-ec': 'East China(Jinan)',\n 'ap-hangzhou-ec': 'East China(Hangzhou)',\n 'ap-nanjing': 'East China(Nanjing)',\n 'ap-fuzhou-ec': 'East China(Fuzhou)',\n 'ap-hefei-ec': 'East China(Hefei)',\n 'ap-beijing': 'North China region(Beijing)',\n 'ap-tianjin': 'North China region(Tianjin)',\n 'ap-beijing-fsi': 'North China region(Beijing Finance)',\n 'ap-shijiazhuang-ec': 'North China region(Shijiazhuang)',\n 'ap-wuhan-ec': 'Central China(Wuhan)',\n 'ap-changsha-ec': 'Central China(Changsha)',\n 'ap-zhengzhou-ec': 'Central China(Zhengzhou)',\n 'ap-chengdu': 'Southwest China(Chengdu)',\n 'ap-chongqing': 'Southwest China(Chongqing)',\n 'ap-xian-ec': \"Northwest region(Xi'an)\",\n 'ap-shenyang-ec': 'Northeast China(Shenyang)',\n 'ap-taipei': 'Hong Kong, Macau and Taiwan (China)(Taipei, China)',\n 'ap-hongkong': 'Hong Kong, Macau and Taiwan (China)(Hong Kong, China)',\n 'ap-seoul': 'Northeast Asia(Seoul)',\n 'ap-tokyo': 'Northeast Asia(Tokyo)',\n 'ap-singapore': 'Southeast Asia(Singapore)',\n 'ap-bangkok': 'Southeast Asia(Bangkok)',\n 'ap-jakarta': 'Southeast Asia(Jakarta)',\n 'na-siliconvalley': 'US West(Silicon Valley)',\n 'eu-frankfurt': 'Europe(Frankfurt)',\n 'eu-moscow': 'Europe(Northeastern Europe)',\n 'ap-mumbai': 'South Asia(Mumbai)',\n 'na-ashburn': 'US East(Virginia)',\n 'sa-saopaulo': 'South America(São Paulo)',\n 'na-toronto': 'North America(Toronto)',\n};\nexport default en_US;\n","import zh_CN from './zh_CN';\nimport en_US from './en_US';\n\nlet locale_language = 'zh-CN'\n\nexport enum Language {\n Chinese = 'zh-CN',\n English = 'en-US',\n}\n\nexport const t = (key: string) => {\n if (locale_language === Language.Chinese) {\n return zh_CN[key]\n }\n return en_US[key];\n}\n\nexport const setLanguage = (language: Language) => {\n locale_language = language;\n}\n\nexport const getLanguage = () => locale_language;","import moment from 'moment';\n\nconst HttpRequestMethod = 'POST';\nconst CanonicalUri = '/';\nconst CanonicalQueryString = '';\nconst ContentType = 'application/json';\n\nexport default class Sign {\n /**\n * Tencent Cloud API Signature v3 reference: https://cloud.tencent.com/document/api/213/30654\n * secretId: SecretId for identifying identity that is applied for on Cloud API Key.\n * A SecretId corresponds to a unique SecretKey, which is used to generate the request Signature.\n * secretKey: SecretKey is used to encrypt the signature string and verify the signature string on the server\n * service: the name of service, which must be consistent with the request domain, such as cvm\n * action: The name of the API for the desired operation\n * host: the domain of service,which must be consistent with the request domain, such as cvm.tencentcloudapi.com\n * version: PI version, such as 2017-03-12\n * payload: The request parameters\n */\n\n secretId: string;\n\n service: string;\n action: string;\n host: string;\n version: string;\n payload: Record | string;\n region: string;\n timestamp: number;\n date: string;\n backendSrv: any;\n datasourceId: Number;\n constructor(options) {\n const { secretId, service, action, host, version, payload = '', region, backendSrv, datasourceId } = options;\n this.secretId = secretId;\n // this.secretKey = secretKey;\n this.service = service;\n this.action = action;\n this.host = host;\n this.version = version;\n this.payload = typeof payload === 'string' ? payload : JSON.stringify(payload);\n this.region = region;\n const nowDate = moment().utc();\n this.timestamp = nowDate.unix();\n this.date = nowDate.format('YYYY-MM-DD');\n this.backendSrv = backendSrv;\n this.datasourceId = datasourceId;\n }\n\n async getHeader() {\n return this.getResourceHeader();\n }\n\n async getResourceHeader() {\n let res: { authorization?: string; token?: string; intranet?: boolean } = {};\n try {\n const resp = await this.backendSrv.datasourceRequest({\n url: `/api/datasources/${this.datasourceId}/resources/sign_v3`,\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n data: {\n Host: this.host,\n Service: this.service,\n Version: this.version,\n Action: this.action,\n Region: this.region,\n Timestamp: this.timestamp,\n Method: HttpRequestMethod,\n Uri: CanonicalUri,\n Query: CanonicalQueryString,\n Body: this.payload,\n Headers: {\n 'content-type': ContentType,\n host: this.host,\n },\n },\n });\n res = resp.data;\n } catch (err) {}\n const { authorization, token, intranet } = res;\n const grafanaVersion = (window as any).grafanaBootData?.settings?.buildInfo?.version || '0.0.0';\n const headers = {\n Authorization: authorization,\n 'Content-Type': ContentType,\n 'X-TC-Action': this.action,\n 'X-TC-Timestamp': this.timestamp.toString(),\n 'X-TC-Version': this.version,\n 'X-TC-RequestClient': `GF_${grafanaVersion}_PL_CM_${process.env.TENCENT_CLOUD_MONITOR_GRAFANA_PLUGIN_VERSION}`,\n ...(this.region && {\n 'X-TC-Region': this.region,\n }),\n ...(token && {\n 'X-TC-Token': token,\n }),\n intranet: intranet,\n };\n return headers;\n }\n}\n","/**\n *\n * @param defaults 为对象\n * secretId\n * secretKey\n * action\n * region\n * host\n */\n\nexport default class SignV2 {\n defaults: any = {\n path: '/v2/index.php',\n method: 'POST',\n };\n backendSrv: any;\n datasourceId: Number;\n constructor(defaults: any = {}) {\n this.defaults = Object.assign(this.defaults, defaults);\n this.defaults.secretKey = '';\n this.backendSrv = defaults.backendSrv;\n this.datasourceId = defaults.datasourceId;\n }\n\n generateQueryString = async () => {\n return this.getResourceQueryString();\n };\n\n async getResourceQueryString() {\n let res: { path?: string; querystring?: any; host?: string; intranet?: boolean } = {};\n try {\n const { data } = this.defaults;\n const payload = typeof data === 'string' ? data : JSON.stringify(data);\n const resp = await this.backendSrv.datasourceRequest({\n url: `/api/datasources/${this.datasourceId}/resources/sign_v2`,\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n data: {\n Host: this.defaults.host,\n Action: this.defaults.action,\n Version: this.defaults.version,\n Region: this.defaults.region,\n Method: this.defaults.method,\n Uri: this.defaults.path,\n Query: '',\n Body: payload,\n },\n });\n res = resp.data;\n } catch (err) {}\n const { path, querystring, host, intranet } = res;\n return { queryString: querystring, path: path, host: host, intranet: intranet };\n }\n}\n","import _ from 'lodash';\nimport qs from 'qs';\nimport { SERVICES } from '../tc_monitor';\nimport Sign from './sign';\nimport SignV2 from './signV2';\nimport { toDataQueryResponse } from '@grafana/runtime';\nimport { getLanguage } from '../../locale';\n\nimport packageInfo from '../plugin.json';\nexport const TcDataSourceId = packageInfo.id;\n\n// the services of tencentcloud monitor api\nconst FINACE_REGIONS = ['ap-shanghai-fsi', 'ap-shenzhen-fsi'];\nconst SERVICES_API_INFO = {\n api: {\n service: 'api',\n version: '2020-11-06',\n path: '/api',\n host: 'api.tencentcloudapi.com',\n },\n // monitor api info\n monitor: {\n service: 'monitor',\n version: '2018-07-24',\n path: '/monitor',\n host: 'monitor.tencentcloudapi.com',\n },\n // cls api info\n cls: {\n service: 'cls',\n version: '2020-10-16',\n path: '/cls',\n host: 'cls.tencentcloudapi.com',\n },\n // cvm api info\n cvm: {\n service: 'cvm',\n version: '2017-03-12',\n path: '/cvm',\n host: 'cvm.tencentcloudapi.com',\n },\n // cdb api info\n cdb: {\n service: 'cdb',\n version: '2017-03-20',\n path: '/cdb',\n host: 'cdb.tencentcloudapi.com',\n },\n // pcx api info\n pcx: {\n service: 'pcx',\n version: '',\n path: '/pcx',\n host: 'vpc.api.qcloud.com',\n },\n // vpc api info\n vpc: {\n service: 'vpc',\n version: '2017-03-12',\n path: '/vpc',\n host: 'vpc.tencentcloudapi.com',\n },\n // mongodb api info\n mongodb: {\n service: 'mongodb',\n version: '2019-07-25',\n path: '/mongodb',\n host: 'mongodb.tencentcloudapi.com',\n },\n // 负载均衡 clb\n clb: {\n service: 'clb',\n version: '2018-03-17',\n path: '/clb',\n host: 'clb.tencentcloudapi.com',\n },\n // postgresql api info\n postgres: {\n service: 'postgres',\n version: '2017-03-12',\n path: '/postgres',\n host: 'postgres.tencentcloudapi.com',\n },\n // cdn info\n cdn: {\n service: 'cdn',\n version: '2018-06-06',\n path: '/cdn',\n host: 'cdn.tencentcloudapi.com',\n },\n // redis info\n redis: {\n service: 'redis',\n version: '2018-04-12',\n path: '/redis',\n host: 'redis.tencentcloudapi.com',\n },\n scf: {\n service: 'scf',\n version: '2018-04-16',\n path: '/scf',\n host: 'scf.tencentcloudapi.com',\n },\n cfs: {\n service: 'cfs',\n version: '2019-07-19',\n path: '/cfs',\n host: 'cfs.tencentcloudapi.com',\n },\n ckafka: {\n service: 'ckafka',\n version: '2019-08-19',\n path: '/ckafka',\n host: 'ckafka.tencentcloudapi.com',\n },\n // 专线接入实例列表\n dc: {\n service: 'dc',\n version: '2018-04-10',\n path: '/dc',\n host: 'dc.tencentcloudapi.com',\n },\n // cynosdb实例列表\n cynosdb: {\n service: 'cynosdb',\n version: '2019-01-07',\n path: '/cynosdb',\n host: 'cynosdb.tencentcloudapi.com',\n },\n // sqlserver实例列表\n sqlserver: {\n service: 'sqlserver',\n version: '2018-03-28',\n path: '/sqlserver',\n host: 'sqlserver.tencentcloudapi.com',\n },\n // bm实例列表\n bm: {\n service: 'bm',\n version: '2018-04-23',\n path: '/bm',\n host: 'bm.tencentcloudapi.com',\n },\n bmeip: {\n service: 'bmeip',\n version: '2018-06-25',\n path: '/bmeip',\n host: 'bmeip.tencentcloudapi.com',\n },\n bmvpc: {\n service: 'bmvpc',\n version: '2018-06-25',\n path: '/bmvpc',\n host: 'bmvpc.tencentcloudapi.com',\n },\n bmlb: {\n service: 'bmlb',\n version: '2018-06-25',\n path: '/bmlb',\n host: 'bmlb.tencentcloudapi.com',\n },\n // ES集群实例\n es: {\n service: 'es',\n version: '2018-04-16',\n path: '/es',\n host: 'es.tencentcloudapi.com',\n },\n // MapReduce\n emr: {\n service: 'emr',\n version: '2019-01-03',\n path: '/emr',\n host: 'emr.tencentcloudapi.com',\n },\n // CMQ消息队列\n cmq: {\n service: 'cmq',\n version: '2019-03-04',\n path: '/cmq',\n host: 'cmq.tencentcloudapi.com',\n },\n cbs: {\n service: 'cbs',\n version: '2017-03-12',\n path: '/cbs',\n host: 'cbs.tencentcloudapi.com',\n },\n // tcaplus实例\n tcaplusdb: {\n service: 'tcaplusdb',\n version: '2019-08-23',\n path: '/tcaplusdb',\n host: 'tcaplusdb.tencentcloudapi.com',\n },\n // tcaplus实例\n dcdb: {\n service: 'dcdb',\n version: '2018-04-11',\n path: '/dcdb',\n host: 'dcdb.tencentcloudapi.com',\n },\n // apigateway实例\n apigateway: {\n service: 'apigateway',\n version: '2018-08-08',\n path: '/apigateway',\n host: 'apigateway.tencentcloudapi.com',\n },\n tdmq: {\n service: 'tdmq',\n version: '2020-02-17',\n path: '/tdmq',\n host: 'tdmq.tencentcloudapi.com',\n },\n tdmq_rabbitmq: {\n service: 'tdmq',\n version: '2020-02-17',\n path: '/tdmq',\n host: 'tdmq.tencentcloudapi.com',\n },\n tdmq_rocketmq: {\n service: 'tdmq',\n version: '2020-02-17',\n path: '/tdmq',\n host: 'tdmq.tencentcloudapi.com',\n },\n gaap: {\n service: 'gaap',\n version: '2018-05-29',\n path: '/gaap',\n host: 'gaap.tencentcloudapi.com',\n },\n ecm: {\n service: 'ecm',\n version: '2019-07-19',\n path: '/ecm',\n host: 'ecm.tencentcloudapi.com',\n },\n gse: {\n service: 'gse',\n version: '2019-11-12',\n path: '/gse',\n host: 'gse.tencentcloudapi.com',\n },\n lighthouse: {\n service: 'lighthouse',\n version: '2020-03-24',\n path: '/lighthouse',\n host: 'lighthouse.tencentcloudapi.com',\n },\n tsf: {\n service: 'tsf',\n version: '2018-03-26',\n path: '/tsf',\n host: 'tsf.tencentcloudapi.com',\n },\n rum: {\n service: 'rum',\n version: '2021-06-22',\n path: '/rum',\n host: 'rum.tencentcloudapi.com',\n },\n tke: {\n service: 'tke',\n version: '2018-05-25',\n path: '/tke',\n host: 'tke.tencentcloudapi.com',\n },\n ecdn: {\n service: 'ecdn',\n version: '2019-10-12',\n path: '/ecdn',\n host: 'ecdn.tencentcloudapi.com',\n },\n waf: {\n service: 'waf',\n version: '2018-01-25',\n path: '/waf',\n host: 'waf.tencentcloudapi.com',\n },\n region: {\n service: 'region',\n version: '2022-06-27',\n path: '/region',\n host: 'region.tencentcloudapi.com',\n },\n // 不单独定义lb,因为lb同样用的是vpc的配置,同上\n // lb: {\n // service: 'lb',\n // version: '2017-03-12',\n // path: '/lb',\n // host: 'vpc.tencentcloudapi.com'\n // }\n // 负载均衡四层协议 lbPrivate\n // lbPrivate: {\n // service: 'lbPrivate',\n // version: '2018-03-17',\n // path: '/clb',\n // host: 'clb.tencentcloudapi.com',\n // },\n};\n\nconst FINACE_HOST = {\n scf: {\n 'ap-shanghai-fsi': {\n path: '/fsi/scf/shanghai',\n host: 'scf.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/scf/shenzhen',\n host: 'scf.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cfs: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cfs/shanghai',\n host: 'cfs.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cfs/shenzhen',\n host: 'cfs.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n ckafka: {\n 'ap-shanghai-fsi': {\n path: '/fsi/ckafka/shanghai',\n host: 'ckafka.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/ckafka/shenzhen',\n host: 'ckafka.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n clb: {\n 'ap-shanghai-fsi': {\n path: '/fsi/clb/shanghai',\n host: 'clb.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/clb/shenzhen',\n host: 'clb.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n mongodb: {\n 'ap-shanghai-fsi': {\n path: '/fsi/mongodb/shanghai',\n host: 'mongodb.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/mongodb/shenzhen',\n host: 'mongodb.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n vpc: {\n 'ap-shanghai-fsi': {\n path: '/fsi/vpc/shanghai',\n host: 'vpc.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/vpc/shenzhen',\n host: 'vpc.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cvm: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cvm/shanghai',\n host: 'cvm.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cvm/shenzhen',\n host: 'cvm.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cdb: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cdb/shanghai',\n host: 'cdb.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cdb/shenzhen',\n host: 'cdb.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n monitor: {\n 'ap-shanghai-fsi': {\n path: '/fsi/monitor/shanghai',\n host: 'monitor.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/monitor/shenzhen',\n host: 'monitor.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n postgres: {\n 'ap-shanghai-fsi': {\n path: '/fsi/postgres/shanghai',\n host: 'postgres.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/postgres/shenzhen',\n host: 'postgres.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n emr: {\n 'ap-shanghai-fsi': {\n path: '/fsi/emr/shanghai',\n host: 'emr.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/emr/shenzhen',\n host: 'emr.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cmq: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cmq/shanghai',\n host: 'cmq.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cmq/shenzhen',\n host: 'cmq.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cls: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cls/shanghai',\n host: 'cls.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cls/shenzhen',\n host: 'cls.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n};\n\n// 获取对应业务的 API 接口信息\nexport function GetServiceAPIInfo(region, service) {\n return { ...(SERVICES_API_INFO[service] || {}), ...getHostAndPath(region, service) };\n}\n\n// get host and path for finance regions\nfunction getHostAndPath(region, service) {\n if (_.indexOf(FINACE_REGIONS, region) === -1) {\n return {};\n }\n return (\n _.find(\n _.find(FINACE_HOST, (__, key) => key === service),\n (__, key) => key === region\n ) || {}\n );\n}\n\n// 变量替换指定实例按照那个字段展示\nexport const VARIABLE_ALIAS = 'instancealias';\n\nexport function GetServiceFromNamespace(namespace) {\n return _.get(\n _.find(SERVICES, (service) => service.namespace === namespace),\n 'service'\n );\n}\n// 处理存量target中保存的qce/cvm\nexport function GetLabelFromNamespace(namespace) {\n return _.get(\n _.find(SERVICES, (service) => service.namespace === namespace || service.label === namespace),\n 'label'\n );\n}\n// parse template variable query params\nexport function ParseMetricQuery(query = '') {\n if (!query) {\n return {};\n }\n const result = {};\n const queries = _.split(query, '&');\n _.forEach(queries, (item) => {\n const str = _.split(item, '=');\n if (_.trim(_.get(str, '0', ''))) {\n let val = _.trim(_.get(str, '1', ''));\n try {\n val = JSON.parse(val);\n } catch (e) {\n // console.log({ val });\n }\n result[_.toLower(_.trim(_.get(str, '0', '')))] = val;\n }\n });\n return result;\n}\n\n// parse template variable regex params\nexport function ParseMetricRegex(regex = '') {\n if (!regex) {\n return [];\n }\n regex = regex.replace(/:/g, ':');\n regex = regex.replace(/,/g, ',');\n const regexParams = ParseMetricQuery(regex);\n const result: any[] = [];\n _.forEach(regexParams, (value, key) => {\n if (key === 'tag:tag-key') {\n const valuesArr = _.split(value, ',');\n _.forEach(valuesArr, (item) => {\n const temp = _.split(item, ':');\n if (temp.length === 2) {\n result.push({ Name: `tag:${temp[0]}`, Values: temp.slice(1) });\n }\n });\n } else {\n result.push({ Name: key, Values: _.split(value, ',') });\n }\n });\n return result;\n}\n\n// get the actual value of template variable\nfunction parseVariableFormat(varname: string) {\n varname = String(varname || '');\n // $varname\n let varFlag = false;\n const regResult1 = varname.match(/^\\${?(\\w+)}?/);\n if (regResult1) {\n varFlag = true;\n varname = `\\$\\{${regResult1[1]}\\:json\\}`;\n }\n // [[varname]]\n const regResult2 = varname.match(/^\\[\\[(\\w+)(\\:\\w+)?\\]\\]/);\n if (regResult2) {\n varFlag = true;\n varname = `\\$\\{${regResult2[1]}\\:json\\}`;\n }\n return { varname, varFlag };\n}\n\nexport function ReplaceVariable(templateSrv, scopedVars, field, multiple = false) {\n const { varname, varFlag } = parseVariableFormat(field);\n let replaceVar = templateSrv.replace(varname, scopedVars);\n if (varFlag) {\n try {\n replaceVar = JSON.parse(replaceVar);\n } catch (error) {}\n }\n if (!multiple && _.isArray(replaceVar)) {\n replaceVar = _.get(replaceVar, '0', '');\n }\n return replaceVar;\n}\n\n// get dimensions for instance query param\nexport function GetDimensions(obj) {\n if (_.isEmpty(obj)) {\n return [];\n }\n const dimensions: any[] = [];\n _.forEach(obj, (item) => {\n if (item.Value !== null && item.Value !== undefined && item.Value !== '') {\n dimensions.push({ Name: item.Name, Value: typeof item.Value === 'string' ? item.Value : `${item.Value}` });\n }\n });\n return dimensions;\n}\n\n// parse query data result for panel\nexport function ParseQueryResult(response, instances: any[] = [], timeshift = 0) {\n const instanceList = _.cloneDeep(instances);\n\n const dataPoints = _.get(response, 'DataPoints', []);\n return _.map(dataPoints, (dataPoint) => {\n let instanceAliasValue = _.get(dataPoint, 'Dimensions[0].Value');\n for (let i = 0; i < instanceList.length; i++) {\n if (isInstanceMatch(instanceList[i], _.get(dataPoint, 'Dimensions', []))) {\n instanceAliasValue = instanceList[i]._InstanceAliasValue;\n instanceList.splice(i, 1);\n break;\n }\n }\n return {\n target: `${response.MetricName} - ${instanceAliasValue}`,\n datapoints: parseDataPoint(dataPoint, timeshift),\n };\n });\n}\n\n// parse tencent cloud monitor response data to grafana panel data\nfunction parseDataPoint(dataPoint, timeshift = 0) {\n const timestamps = _.get(dataPoint, 'Timestamps', []);\n const values = _.get(dataPoint, 'Values', []);\n const result = timestamps.map((timestamp, index) => {\n return [values[index], timestamp * 1000 + timeshift];\n });\n\n return result;\n}\n\n// check whether instance is match or not\nfunction isInstanceMatch(instance, dimensions) {\n let match = true;\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < dimensions.length; i++) {\n if (_.get(instance, dimensions[i].Name, '').toString() !== dimensions[i].Value.toString()) {\n match = false;\n break;\n }\n }\n return match;\n}\n\n/**\n * 检查某个变量是否模板变量,即是否匹配 ${varnam} 或 [[varname]]\n *\n * @param field 变量字段名\n */\nexport function isVariable(value) {\n if (value && (value.match(/^\\${?(\\w+)}?/) || value.match(/^\\[\\[(\\w+)(\\:\\w+)?\\]\\]/))) {\n return true;\n }\n return false;\n}\n\n/**\n * 腾讯云 API 3.0 接口协议\n * @param options 接口请求对象 { url: string, data?: object }\n * @param service 产品名字 'cvm'\n * @param signObj 接口请求相关信息 { region?: string, action: string }\n * @param secretId\n * @param secretKey\n */\nexport async function GetRequestParams(options, service, signObj: any = {}, secretId, datasourceId, backendSrv) {\n const signParams = {\n secretId,\n payload: options.data || '',\n ...signObj,\n ...(_.pick(GetServiceAPIInfo(signObj.region || '', service), ['service', 'host', 'version']) || {}),\n backendSrv,\n datasourceId,\n };\n const sign = new Sign(signParams);\n const { intranet, ...headerSigned } = await sign.getHeader();\n // 传入x-tc-language实现国际化\n // zh-CN en-US ko-KR ja-JP\n options.headers = Object.assign(options.headers || {}, { ...headerSigned }, { 'x-tc-language': getLanguage() });\n options.method = 'POST';\n if (intranet) {\n options.url += '-internal';\n }\n return options;\n}\n\n/**\n * 腾讯云 API 2.0 接口协议\n * @param options 接口请求对象 { url: string, data?: object }\n * @param service 产品名字 'cvm'\n * @param signObj 接口请求相关信息 { region?: string, action: string }\n * @param secretId\n * @param secretKey\n */\nexport async function GetRequestParamsV2(\n options: any = {},\n service,\n signObj: any = {},\n secretId,\n datasourceId,\n backendSrv\n) {\n const data = options.data || {};\n const signParams = {\n secretId,\n data,\n ...signObj,\n ...(_.pick(GetServiceAPIInfo(signObj.region || '', service), ['host', 'version']) || {}),\n backendSrv,\n datasourceId,\n };\n options.method = 'POST';\n const sign = new SignV2(signParams);\n options.headers = Object.assign(options.headers || {}, { 'Content-Type': 'application/x-www-form-urlencoded' });\n const { queryString, path, host, intranet } = await sign.generateQueryString();\n options.data = qs.stringify({\n ...options.data,\n ...queryString,\n ...(host && { host: host }),\n });\n if (intranet) {\n // TODO: qcloud.com intranet host\n console.log('got intranet for sign v2');\n }\n options.url += path;\n return options;\n}\n\nexport function SliceLength(total = 0, len = 1) {\n const result: any[] = [];\n const num = Math.ceil(total / len);\n for (let i = 1; i < num; i++) {\n result.push({ Offset: len * i });\n }\n return result;\n}\n\nexport const FilterKeys = ['Namespace', 'Offset', 'Limit', 'SearchKey', 'Description', 'OrderBy', 'Order'];\n\nexport function parseDataFromBackendPlugin(res) {\n const { data } = toDataQueryResponse(res);\n return {\n authorization: _.get(data, '[0].meta.custom', ''),\n };\n}\n\n/** 当前环境是否为非生产环境 */\nexport const IS_DEVELOPMENT_ENVIRONMENT = !(process.env.NODE_ENV === 'production');\n\n/**\n * @link https://github.com/grafana/grafana/blob/3c6e0e8ef85048af952367751e478c08342e17b4/packages/grafana-data/src/types/app.ts#L12\n */\nexport enum CoreApp {\n CloudAlerting = 'cloud-alerting',\n UnifiedAlerting = 'unified-alerting',\n Dashboard = 'dashboard',\n Explore = 'explore',\n Unknown = 'unknown',\n PanelEditor = 'panel-editor',\n PanelViewer = 'panel-viewer',\n}\n","import _ from 'lodash';\nimport moment from 'moment';\nimport DatasourceInterface from '../MonitorDatasource';\nimport {\n GetRequestParams,\n GetServiceAPIInfo,\n ReplaceVariable,\n GetDimensions,\n ParseQueryResult,\n SliceLength,\n} from '../../common/constants';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { MetricQuery } from './types';\nimport { getNamesapceFromService, getTimeShiftInMs } from '../../common/utils';\nimport { Language, setLanguage } from '../../../locale';\n\nexport interface TemplateQueryIdType {\n instance: string;\n listener?: string;\n}\n\ninterface queryConfigType {\n dim_KeyInStorage: string;\n dim_KeyInTarget?: string;\n dim_KeyInIns?: string;\n dim_KeyInMap: string;\n}\n\nexport abstract class BaseDatasource implements DatasourceInterface {\n Namespace?: string;\n service: string;\n instanceListCache: any[] = [];\n extraMetricDims: string[] = [];\n url: string;\n instanceSettings: any;\n backendSrv: any;\n templateSrv: any;\n secretId: string;\n checkKeys: string[] = [];\n MetricReqConfig: {\n resultFilter?: Function;\n } = {};\n extrasAlias?: string[] = [];\n /*\n 一个配置:(用于处理除了InstanceId之外的)(Record中的key是指标修正之后的维度,即通过InvalidDemsion处理后)\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。为空则取即通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。即:templateQueryIdMap中内容。联合上面2的内容筛选出原始sourceMap\n 4 通过这个dim和sourceMap获取维度值。即sourceMap[dim]\n */\n queryMonitorExtraConfg: Record = {};\n CandiateDimensions?: Record = {};\n\n InstanceReqConfig?: {\n service?: string;\n action: string;\n responseField: string;\n interceptor?: {\n request?: (params: unknown) => unknown;\n response?: (data: unknown) => unknown;\n };\n };\n InvalidDimensions?: Record;\n\n abstract InstanceAliasList: string[];\n abstract templateQueryIdMap: TemplateQueryIdType; // 必须为标识\n\n /** @ngInject */\n constructor(instanceSettings, backendSrv, templateSrv) {\n this.instanceSettings = instanceSettings;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n this.url = instanceSettings.url;\n this.secretId = (instanceSettings.jsonData || {}).secretId || '';\n setLanguage(instanceSettings.jsonData.language || Language.Chinese);\n }\n\n get namespace() {\n // 需要注意的是this.service来自于原型上,在实例中导入时注入\n return this.Namespace || getNamesapceFromService(this.service);\n }\n\n // 获取额外要显示到图例里的内容\n getOtherAlias(instance: any, target: any): string {\n let result = '';\n const alias = instance._InstanceAliasValue;\n this.extrasAlias?.forEach((extra) => {\n const extraAlia = this.getVariable(target[extra]);\n if (extraAlia && alias.indexOf(extraAlia) === -1) {\n result += ` - ${extraAlia}`;\n }\n });\n return result;\n }\n\n /* 格式化模板变量上的显示 */\n getAliasValue(instance: Record, alias: string) {\n const result = instance[alias];\n return Array.isArray(result) ? result.join() : result;\n }\n\n formatVarDisplay(instance: Record, displayTpl: string | undefined, instanceAlias: string) {\n // 获取display=aaa${InstanceName}bbb${InstanceId}ccc\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !this.InstanceAliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(instance, b);\n });\n }\n return this.getAliasValue(instance, instanceAlias);\n }\n /**\n * @param query 模板变量配置填写的 Query 参数对象,由顶层将字符串转换为了对象\n */\n async metricFindQuery(query: MetricQuery, regex?: string) {\n const { action, namespace, display, payload = {} } = query;\n let { region, instancealias = this.templateQueryIdMap.instance } = query;\n if (!action || !namespace) {\n return [];\n }\n // 支持payload里传入模板变量\n if (_.isObject(payload)) {\n _.forEach(payload, (value, key) => {\n payload[key] = _.isString(value) ? this.getVariable(value) : value;\n });\n }\n\n // 查询地域列表\n const regionQuery = action.match(/^DescribeRegions$/i);\n if (regionQuery) {\n return this.getRegions();\n }\n\n region = this.getVariable(region); // 将模板region转换为真实值\n\n // 查询实例列表\n if (region && action.match(/^DescribeInstances/i)) {\n const result = await this.getVariableInstances(region, payload);\n instancealias = this.InstanceAliasList.includes(instancealias) ? instancealias : this.templateQueryIdMap.instance;\n\n const res = result.flatMap((item) => {\n const insAlias = this.formatVarDisplay(item, display, instancealias);\n\n item._InstanceAliasValue = insAlias; // FIXME:\n\n if (!item[instancealias]) return [];\n return [\n {\n text: insAlias,\n value: item[this.templateQueryIdMap.instance],\n },\n ];\n });\n\n // 缓存全量实例列表\n await instanceStorage.setInstance(this.service, result);\n return res;\n }\n\n // 在instance实例的基础上查询其他数据\n let instance = this.getVariable(query['instance']);\n if (_.isArray(instance)) instance = instance[0]; // 有额外维度,仅支持实例单选情况\n if (region && action && instance) {\n try {\n // instance = JSON.parse(instance);\n const instanceCache = await instanceStorage.getInstance(this.service);\n\n instance = _.cloneDeep(instanceCache.find((item) => item[this.templateQueryIdMap.instance] === instance)) ?? {};\n // eslint-disable-next-line no-empty\n } catch (error) {}\n return this.fetchMetricData(action, region, instance, query);\n }\n\n return Promise.resolve([]);\n }\n // 获取指标数据\n async fetchMetricData(action: string, region: string, instance: any, query?: any) {\n return [];\n }\n\n /**\n * 根据 Panel 的配置项,获取相应的监控数据\n *\n * @param options Panel 的配置参数\n * @return 返回数据数组,示例如下\n * [\n * {\n * \"target\": \"AccOuttraffic - ins-123\",\n * \"datapoints\": [\n * [861, 1450754160000],\n * [767, 1450754220000]\n * ]\n * }\n * ]\n */\n async dimensionsFormat(dimKeys, ins, dimensionObject, target, service, options) {\n for (let key of dimKeys) {\n let keyTmp = key;\n const invalidDim = this.InvalidDimensions || this.getInvalidDimensions(this, target[service]);\n if (invalidDim[key]) {\n // 从【维度中】的字段到【实例中】字段的映射。 { functionName: FunctionName }\n keyTmp = invalidDim[key];\n ins[key] = ins[keyTmp];\n }\n\n let extraDimValue = this.getVariable(target[service][keyTmp]);\n if (this.queryMonitorExtraConfg[keyTmp]) {\n const {\n dim_KeyInStorage,\n dim_KeyInTarget = keyTmp,\n dim_KeyInMap,\n dim_KeyInIns,\n } = this.queryMonitorExtraConfg[keyTmp];\n let extraIns = ReplaceVariable(this.templateSrv, options.scopedVars, target[service][dim_KeyInTarget], true);\n let extraSourceMap: any = {};\n try {\n extraSourceMap = JSON.parse(extraIns); // 兼容json字符串的 形式\n } catch (error) {\n if (_.isArray(extraIns)) extraIns = extraIns[0]; // 如果多个,取第一个。除了实例ID 暂不支持其他纬度多选\n const extraStorage = await instanceStorage.getExtraStorage(this.service, dim_KeyInStorage);\n\n extraSourceMap =\n extraStorage?.find((item) => {\n if (_.isArray(item[dim_KeyInMap])) {\n return item[dim_KeyInMap][0] === extraIns;\n }\n return item[dim_KeyInMap] === extraIns;\n }) ?? {};\n }\n const isStringOrNumber = _.isString(extraSourceMap) || _.isNumber(extraSourceMap);\n // 增加ins实例之外的alias,填入到ins._InstanceAliasValue\n const insAlias = ins._InstanceAliasValue;\n const otherAlias = isStringOrNumber ? extraSourceMap : extraSourceMap._InstanceAliasValue;\n if (otherAlias && insAlias.indexOf(otherAlias) === -1) {\n ins._InstanceAliasValue += ` - ${otherAlias}`;\n }\n\n extraDimValue = isStringOrNumber ? extraSourceMap : extraSourceMap?.[dim_KeyInIns || keyTmp];\n } else {\n ins._InstanceAliasValue += this.getOtherAlias(ins, target[service]);\n }\n\n if (\n getTimeShiftInMs(target[service].timeshift) > 0 &&\n ins._InstanceAliasValue.indexOf(target[service].timeshift) === -1\n ) {\n ins._InstanceAliasValue += `_${target[service].timeshift}`;\n }\n // 设置instance,针对额外的维度,需要注意模板变量的值\n // ins[key] = ins[keyTmp] ?? extraDimValue;\n ins[key] = this.getDimensionsVal(ins, keyTmp, extraDimValue);\n // cynosdb产品接口返回维度和入参不一致\n if (this.checkKeys.length > 0) {\n this.checkKeys.forEach((Ekey) => {\n ins[Ekey] = ins[key];\n });\n }\n dimensionObject[key] = { Name: key, Value: ins[key] };\n }\n return dimensionObject;\n }\n getDimensionsVal(ins: Record, key: string, extraDimValue: string) {\n let dimVal = ins[key];\n if (_.isEmpty(dimVal) && this.CandiateDimensions[key]) {\n dimVal = ins[this.CandiateDimensions[key]];\n }\n return dimVal ?? extraDimValue;\n }\n query(options: any) {\n const service = this.service!; // 强制声明非空\n\n const queries = _.filter(options.targets, (item) => {\n // 过滤无效的查询 target\n return (\n item.hide !== true &&\n !!item.namespace &&\n !!item[service].metricName &&\n !_.isEmpty(ReplaceVariable(this.templateSrv, options.scopedVars, item[service].region, false)) &&\n !_.isEmpty(ReplaceVariable(this.templateSrv, options.scopedVars, item[service].instance, true))\n );\n })\n .reduce((prev, target) => {\n if (getTimeShiftInMs(target[service].timeshift) > 0) {\n const cloneTarget = _.cloneDeep(target);\n cloneTarget[service].timeshift = '';\n return [...prev, cloneTarget, target];\n }\n return [...prev, target];\n }, [])\n .map(async (target) => {\n // 实例 instances 可能为模板变量,需先获取实际值\n // 针对JSON字符串和id的形式,分开做处理\n let instances = ReplaceVariable(this.templateSrv, options.scopedVars, target[service].instance, true);\n const instanceCache = await instanceStorage.getInstance(this.service);\n const timeshift = getTimeShiftInMs(target[service].timeshift);\n\n instances = [].concat(instances).map((inst) => {\n try {\n return JSON.parse(inst); // 兼容json字符串的 形式\n } catch (error) {\n // 如果没拿到缓存,取默认实例组\n if (!instanceCache) return this.getDefaultInsObj?.(inst);\n return _.cloneDeep(instanceCache.find((item) => item[this.templateQueryIdMap.instance] === inst)) ?? {};\n }\n });\n const region = ReplaceVariable(this.templateSrv, options.scopedVars, target[service].region, false);\n const insInReq: any = [];\n for (let ins of instances) {\n const dimensionObject = target[service].dimensionObject;\n // 处理dimensions的值\n const dimKeys = Object.keys(dimensionObject);\n const dimResult = await this.dimensionsFormat(dimKeys, ins, dimensionObject, target, service, options);\n\n insInReq.push([{ Dimensions: GetDimensions(dimResult) }]);\n }\n const data = {\n StartTime: moment(options.range.from).subtract(timeshift).format(),\n EndTime: moment(options.range.to).subtract(timeshift).format(),\n Period: target[service].period || 300,\n Instances: _.flatMap(insInReq),\n Namespace: target.namespace,\n MetricName: target[service].metricName,\n };\n return this.getMonitorData(data, region, instances, target[service], options);\n });\n\n if (queries.length === 0) {\n return [];\n }\n\n return Promise.all(queries)\n .then((responses) => {\n return _.flatten(responses);\n })\n .catch((error) => {\n return [];\n });\n }\n getDefaultInsObj(ins: string) {\n return {} as any;\n }\n getInstanceReqConfig(selfIns: any) {\n return {} as any;\n }\n getInvalidDimensions(selfIns: any, target?: any) {\n return {} as any;\n }\n // 获取某个变量的实际值,this.templateSrv.replace() 函数返回实际值的字符串\n getVariable(metric?: string) {\n const rs = this.templateSrv.replace((metric || '').trim());\n const valStr = rs.match(/\\{([\\w-,]+)\\}/);\n // 判断是否为多选\n if (valStr) {\n return valStr[1].split(',');\n }\n return rs;\n }\n\n /**\n * 获取 监控数据\n * @param params 获取监控数据的请求参数\n * @param region 地域信息\n * @param instances 实例列表,用于对返回结果的匹配解析\n */\n getMonitorData(params, region, instances, target, options) {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n const timeshift = getTimeShiftInMs(target.timeshift);\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { action: 'GetMonitorData', region }\n ).then((response) => {\n return ParseQueryResult(response, instances, timeshift);\n });\n }\n\n getRegions(): any {\n return this.doRequest(\n {\n url: this.url + '/cvm',\n },\n 'cvm',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n\n getMetrics(region = 'ap-guangzhou'): Promise {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Namespace: this.namespace,\n },\n },\n serviceInfo.service,\n { region, action: 'DescribeBaseMetrics' }\n ).then((response) => {\n const res = _.filter(\n _.filter(response.MetricSet || [], (item) => !(item.Namespace !== this.namespace || !item.MetricName))\n );\n const resFilterFn = this.MetricReqConfig.resultFilter;\n if (resFilterFn) {\n return res.map((item) => resFilterFn(item));\n }\n return res;\n });\n }\n\n getInstances(region, params = {}) {\n const {\n service = this.service,\n action,\n responseField: field,\n interceptor,\n } = this.InstanceReqConfig || this.getInstanceReqConfig(this);\n params = { Offset: 0, Limit: 100, ...params };\n const serviceInfo = GetServiceAPIInfo(region, service);\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: interceptor?.request ? interceptor.request(params) : params,\n },\n serviceInfo.service,\n { region, action }\n ).then((response) => {\n // 处理异常,则不按正常的情况处理,直接抛出错误\n if (response?.Error) {\n console.error(response.Error);\n return response;\n }\n\n let result;\n // 先,field处理\n if (field) {\n result = _.get(response, field) ?? _.get(response, `Result.${field}`) ?? [];\n }\n\n // 后,拦截器处理\n if (interceptor?.response) {\n result = interceptor.response(result);\n }\n return result;\n });\n }\n\n getVariableInstances(region, query = {}): Promise {\n let result: any[] = [];\n const params = { ...{ Offset: 0, Limit: 100 }, ...query };\n\n const {\n service = this.service,\n action,\n responseField: field,\n interceptor,\n } = this.InstanceReqConfig || this.getInstanceReqConfig(this);\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: interceptor?.request ? interceptor.request(params) : params,\n },\n serviceInfo.service,\n { region, action }\n ).then((response) => {\n result = _.get(response, field) ?? _.get(response, `Result.${field}`) ?? [];\n const total =\n response.TotalCount ?? response.TotalCnt ?? response.TotalNumber ?? _.get(response, `Result.TotalCount`) ?? 0;\n if (result.length >= total) {\n return interceptor?.response ? interceptor.response(result) : result;\n } else {\n const param = SliceLength(total, params?.Limit || 100);\n const promises: any[] = [];\n _.forEach(param, (item) => {\n promises.push(this.getInstances(region, { ...item, ...query }));\n });\n return Promise.all(promises)\n .then((responses) => {\n _.forEach(responses, (item) => {\n result = _.concat(result, item);\n });\n return interceptor?.response ? interceptor.response(result) : result;\n })\n .catch((error) => {\n return interceptor?.response ? interceptor.response(result) : result;\n });\n }\n });\n }\n\n // 检查某变量字段是否有值\n isValidConfigField(field: string) {\n return field && field.length > 0;\n }\n\n testDatasource() {\n // const { service = this.service, action } = this.InstanceReqConfig;\n // const serviceInfo = GetServiceAPIInfo('ap-guangzhou', service);\n\n if (!this.isValidConfigField(this.secretId)) {\n return {\n service: this.service,\n status: 'error',\n message: 'The SecretId/SecretKey field is required.',\n };\n }\n\n return Promise.all([\n this.getRegions(),\n this.getMetrics(),\n // this.doRequest(\n // {\n // url: this.url + serviceInfo.path,\n // data: {\n // Offset: 0,\n // Limit: 1,\n // },\n // },\n // service,\n // { region: 'ap-guangzhou', action },\n // ),\n this.getInstances('ap-guangzhou', {\n Offset: 0,\n Limit: 1,\n }),\n ])\n .then((responses) => {\n const cvmErr = _.get(responses, '[0].Error', {});\n const monitorErr = _.get(responses, '[1].Error', {});\n const serviceErr = _.get(responses, '[2].Error', {});\n // const cvmAuthFail = _.get(cvmErr, 'Code', '').indexOf('AuthFailure') !== -1;\n // const monitorAuthFail = _.get(monitorErr, 'Code', '').indexOf('AuthFailure') !== -1;\n // const serviceAuthFail = _.get(serviceErr, 'Code', '').indexOf('AuthFailure') !== -1;\n const cvmAuthFail = _.get(cvmErr, 'Code', '');\n const monitorAuthFail = _.get(monitorErr, 'Code', '');\n const serviceAuthFail = _.get(serviceErr, 'Code', '');\n if (cvmAuthFail || monitorAuthFail || serviceAuthFail) {\n const messages: any[] = [];\n if (cvmAuthFail) {\n messages.push(_.get(cvmErr, 'Code'));\n }\n if (monitorAuthFail) {\n messages.push(_.get(monitorErr, 'Code'));\n }\n if (serviceAuthFail) {\n messages.push(_.get(serviceErr, 'Code'));\n }\n const message = _.join(_.compact(_.uniq(messages)), '; ');\n return {\n service: this.service,\n status: 'error',\n message,\n };\n } else {\n return {\n namespace: this.namespace,\n service: this.service,\n status: 'success',\n message: `Successfully queried the ${this.service} service.`,\n title: 'Success',\n };\n }\n })\n .catch((error) => {\n let message = `${this.service} service:`;\n message += error.statusText ? error.statusText + '; ' : '';\n if (_.get(error, 'data.error.code', '')) {\n message += error.data.error.code + '. ' + error.data.error.message;\n } else if (_.get(error, 'data.error', '')) {\n message += error.data.error;\n } else if (_.get(error, 'data', '')) {\n message += error.data;\n } else {\n message += `Cannot connect to ${this.service} service.`;\n }\n return {\n service: this.service,\n status: 'error',\n message: message,\n };\n });\n }\n\n async doRequest(options, service, signObj: any = {}) {\n options = await GetRequestParams(\n options,\n service,\n signObj,\n this.secretId,\n this.instanceSettings.id,\n this.backendSrv\n );\n return this.backendSrv\n .datasourceRequest(options)\n .then((response) => {\n return _.get(response, 'data.Response', {});\n })\n .catch((error) => {\n throw error;\n });\n }\n}\n","import _ from 'lodash';\nimport { SERVICES } from '../tc_monitor';\n\n/* 从分页数据获取全量数据 */\nconst PageSize = 50;\nfunction getFieldsValue(value, fields) {\n return fields.map((item) => _.get(value, item, _.get(value, `Result.${item}`, [])));\n}\n\nexport async function fetchAllFactory(fetcher: (args: any) => Promise, _params: any, field: string | string[]) {\n const params = { ..._.omit(_params, ['isOffsetPage']) };\n params.Limit = params.Limit || PageSize; // 默认给个Limit大小为50\n params.Offset = params.Offset ?? 0; // 默认给个Offset为0\n\n // 第一次请求,获取总数\n const rs = (await fetcher(params)) ?? {};\n const fields = Array.isArray(field) ? field : [field];\n\n // rs.TotalCount = rs.TotalCount ?? rs.Result.TotalCount ?? [];\n // const { TotalCount } = rs;\n const TotalCount = rs.TotalCount ?? rs.Result?.TotalCount ?? rs.TotalCnt ?? rs.Result?.TotalCnt ?? 0;\n const firstLists = getFieldsValue(rs, fields);\n\n if (TotalCount === 0 || firstLists[0].length === TotalCount) {\n // 只有一页,结束\n return firstLists;\n }\n\n // 批量请求\n const delta = TotalCount - firstLists[0].length;\n const batchCount = Math.ceil(delta / PageSize);\n const pmList = new Array(batchCount).fill(0).map((_, index) => {\n params.Offset = _params.isOffsetPage ? 1 + index : (1 + index) * params.Limit;\n return fetcher(params);\n });\n\n // 合并\n const resultList = await Promise.all(pmList); // [ {a: [], b[] }, { a: [], b:[] }]\n\n return resultList.reduce((acc, cur) => {\n const lists = getFieldsValue(cur, fields);\n // [[], [], []] + [[], [], []]\n acc.forEach((list, index) => list.push(...lists[index]));\n return acc;\n }, firstLists);\n}\n\n/**\n * 实例列表接口入参处理\n *\n * @param queries 表单键入内容\n * @param isFilter 是否需要设置为Filters格式\n */\nexport function instanceQueryParamsBaseParse(queries: any, isFilter: boolean) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n const Filters: any[] = [];\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n if (isFilter) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n } else {\n params[key] = _.uniq(item);\n }\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n if (isFilter) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n } else {\n params[key] = _.get(item, 'value');\n }\n }\n } else if (item !== null && item !== undefined && item !== '') {\n if (isFilter) {\n Filters.push({ Name: key, Values: item });\n } else {\n params[key] = item;\n }\n }\n });\n if (isFilter && Filters.length > 0) {\n params.Filters = Filters;\n return params;\n }\n }\n return params;\n}\n\nexport function getNamesapceFromService(serviceName: string) {\n return _.get(\n _.find(SERVICES, (service) => service.service === serviceName),\n 'namespace'\n );\n}\n\nexport function serviceGroupBy(\n services: { service: string; label: string; namespace: string; href: string; groupName?: string }[]\n) {\n const result = services.reduce((acc, cur) => {\n const { namespace, label, groupName = label } = cur;\n\n const existedGroup = acc.find((item) => item.label === groupName);\n if (!existedGroup) {\n acc.push({ label: groupName, value: groupName, items: [{ label, value: namespace }] });\n return acc;\n }\n\n existedGroup.items.push({ label, value: namespace });\n return acc;\n }, [] as any[]);\n\n // 将只有一个子元素的项目进行特殊处理\n const rs = result.map((item) =>\n item.items.length === 1 ? { label: item.items[0].label, value: item.items[0].value } : item\n );\n return rs;\n}\n\nexport const isTargetEqual = (newTargetString: string, oldTargetString: string, key: string) => {\n try{\n const newTarget = JSON.parse(newTargetString);\n const oldTarget = JSON.parse(oldTargetString);\n return newTarget[key] === oldTarget[key];\n }catch(e){\n return newTargetString === oldTargetString;\n }\n}\n\nexport const getTimeShiftInMs = (timeShift: any) => {\n const parts = /^(\\d+)([d|h|m|s])$/.exec(timeShift);\n if (!parts) {\n return 0;\n }\n const amount = parseInt(parts[1], 10);\n const unit = parts[2];\n switch (unit) {\n case 'd':\n return amount * 86400 * 1000;\n case 'h':\n return amount * 3600 * 1000;\n case 'm':\n return amount * 60 * 1000;\n case 's':\n return amount * 1000;\n }\n return 0;\n}","module.exports = __WEBPACK_EXTERNAL_MODULE__6__;","import coreModule from 'grafana/app/core/core_module';\nimport { DetailQueryConfig } from './types';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nfunction classFactory(detailConfig) {\n return class QueryCtrl {\n static _config: DetailQueryConfig;\n\n /** @ngInject */\n constructor($scope, $rootScope) {\n Object.assign($scope, detailConfig);\n\n $scope.getDropdown = (field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n return $scope.datasource.getFilterDropdown(service, { field, region: $scope.region });\n };\n }\n };\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n`;\nfunction queryDDOFactory(QueryCtrl) {\n return function queryDDO() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n };\n}\n\nexport default (name: string, config: DetailQueryConfig) => {\n // QueryCtrl._config = config;\n const newQueryIns = classFactory(config);\n coreModule.directive(name, queryDDOFactory(newQueryIns));\n};\n","interface DBEvent {\n target: { result: any; error: any };\n}\n// 数据库结构\ninterface DBTypes {\n store: StoreType;\n name?: string;\n version?: number;\n}\n// store表结构\ninterface StoreType {\n name: string; // 表名\n key: string; // 主键名\n cursorIndex?: { name: string; unique: boolean }[]; // 索引列表\n}\n\n// 数据结构\n// {service: 'cvm', instance: [{ins: 23}]}\ninterface DataType {\n service: string;\n [x: string]: any; // 有产品需缓存其他列表\n}\n\n// interface UpdateProps {\n// storeName: string;\n// cursorKey: string;\n// cursorValue?: any;\n// data: any;\n// }\n\nconst store: StoreType = {\n name: 'grafanaInstanceList',\n key: 'service',\n};\nconst promisify = (request: any, type?: string) => {\n return new Promise((resolve, reject) => {\n request.onsuccess = (event: DBEvent) => {\n const returnMap: any = {\n event: event.target.result,\n request: request.result,\n msg: '操作成功',\n };\n resolve(returnMap[type || 'msg']);\n };\n request.onerror = (event: DBEvent) => reject(event.target.error || '操作失败');\n });\n};\n// 固定表名和数据库名\nclass IndexedDB {\n name = 'grafanaDatabase';\n version = 1;\n\n constructor(props: DBTypes) {\n const { name = 'database', version = 1, store } = props;\n this.name = name;\n this.version = version;\n\n this.initDB(store);\n }\n\n /**\n * 初始化数据库\n * @param store 库表的结构\n */\n initDB(store: StoreType) {\n const indexeddb = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;\n const request = indexeddb.open(this.name, this.version);\n\n request.onupgradeneeded = (event: IDBVersionChangeEvent) => {\n const db = (event.target as IDBOpenDBRequest).result;\n if (db.objectStoreNames.contains(store.name)) {\n // 存在表store\n }\n\n // 遍历store,设置数据表结构\n db.createObjectStore(store.name, {\n keyPath: store.key,\n });\n };\n request.onerror = () => Promise.reject(new Error('初始化数据库失败'));\n request.onsuccess = () => Promise.resolve('初始化数据库成功');\n }\n\n openDB() {\n const indexeddb = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;\n const request = indexeddb.open(this.name, this.version);\n\n return promisify(request, 'event');\n }\n\n /**\n * 新增数据\n * @param storeName 表名\n * @param data 添加的数据\n */\n async insertData(storeName: string, data: any) {\n try {\n // console.time('insertData');\n const db = await this.openDB();\n const transaction = db.transaction(storeName, 'readwrite');\n const objectStore = transaction.objectStore(storeName);\n\n objectStore.add(data);\n // console.timeEnd('insertData');\n\n return new Promise((resolve, reject) => {\n transaction.oncomplete = function () {\n // console.timeEnd('insertData');\n resolve('所有数据插入成功');\n };\n\n transaction.onerror = function (event) {\n reject(event);\n };\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n /**\n * 更新数据\n * @param props 查询数据的参数以及要修改的值的参数\n */\n async addData(data: DataType, isCover?: boolean) {\n try {\n // console.log('addData');\n const storeName = store.name; // 表名\n const oldData = await this.getData(data.service);\n const objectStore = await this.getObjectStore(storeName, 'readwrite');\n\n if (!oldData) {\n // 不存在则新建\n this.insertData(storeName, data);\n }\n // 存在则更新\n let newData: any = { ...oldData, ...data };\n if (isCover) newData = data; // 需要覆盖之前内容\n // 把更新过的对象放回数据库\n const requestUpdate = objectStore.put(newData);\n // console.timeEnd('updateData');\n return promisify(requestUpdate);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n /**\n * 获取数据库的值,返回查询到的第一项\n * @param storeName 表名/存储对象的键\n * @param cursorKey key\n * @param cursorValue 要查询索引的值\n */\n async getData(seviceName: string) {\n try {\n // console.time('getData');\n const storeName = store.name;\n const objectStore = await this.getObjectStore(storeName);\n const request = objectStore.get(seviceName);\n // console.timeEnd('getData');\n return promisify(request, 'request');\n } catch (error) {\n return Promise.reject(error);\n }\n }\n async getAllData(storeName: string) {\n try {\n // console.time('getAllData');\n const objectStore = await this.getObjectStore(storeName);\n const request = objectStore.getAll();\n const result = await promisify(request, 'request');\n // console.timeEnd('getAllData');\n return result ? result : [];\n } catch (error) {\n return Promise.reject(error);\n }\n }\n /**\n * 获取对象仓库\n * @param storeName 表名\n * @param type readonly 或者 readwrite等\n */\n private async getObjectStore(storeName: string, type?: any): Promise {\n try {\n const db = await this.openDB();\n return db.transaction(storeName, type).objectStore(storeName);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n}\n// console.log('testDDB')\n// const indexDB = new IndexedDB({store});\n// indexDB.addData({service: 'cvm', instance: [{ins: 23}]}).then(e=>{\n// indexDB.getData('cvm').then(dd=>{console.log({dd})})\n// })\nexport default new IndexedDB({ store });\n","import indexedDB from './indexedDB';\nclass InstanceStorage {\n // prefix = 'Datasource';\n // storageKey = 'grafanaInstanceCache';\n insKey = 'Instances';\n cacheWay = '';\n constructor() {}\n setInstance(service: string, value: Record) {\n return this.setStorage(service, this.insKey, value, true);\n }\n async getInstance(service: string) {\n return this.getStorage(service, this.insKey);\n }\n setExtraStorage(service: string, Ekey: string, EValue: Record) {\n return this.setStorage(service, Ekey, EValue, false);\n }\n async getExtraStorage(service: string, Ekey: string) {\n return this.getStorage(service, Ekey);\n }\n private setStorage(serviceKey: string, key: string, value: Record, isCover = false) {\n // console.log('set', serviceKey, key, value);\n return indexedDB.addData(\n {\n service: serviceKey,\n [key]: value,\n },\n isCover\n );\n }\n // 获取到模版变量信息\n private async getStorage(service: string, key?: string) {\n const storage = await indexedDB.getData(service);\n // console.log('get', key, storage);\n return key ? storage?.[key] : storage;\n }\n}\nexport default new InstanceStorage();\n","module.exports = __WEBPACK_EXTERNAL_MODULE__9__;","import _ from 'lodash';\n\nexport const CKAFKAQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'InstanceId',\n cnDescriptor: '按照实例ID过滤',\n link: '',\n type: 'input',\n },\n {\n key: 'SearchWord',\n enDescriptor: 'SearchWord',\n cnDescriptor: '按照实例名称过滤,支持模糊查询',\n link: '',\n type: 'input',\n },\n {\n key: 'TagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '匹配标签key值',\n link: '',\n type: 'input',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例的状态,不填默认返回全部',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '创建中', value: 0 },\n { text: '运行中', value: 1 },\n { text: '删除中', value: 2 },\n ],\n },\n];\n\nconst CKAFKA_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n topicId: '',\n topicName: '',\n consumerGroup: '',\n partition: '',\n queries: {\n Offset: 0,\n Limit: 10,\n Status: [],\n InstanceId: '',\n SearchWord: '',\n TagKey: '',\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst CKAFKAInstanceAliasList = ['InstanceId', 'InstanceName'];\nconst CKAFKATopicAliasList = ['TopicId', 'TopicName'];\n// 保存在模板变量value中的key\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n topicId: 'TopicId',\n groupName: 'GroupName',\n partition: 'PartitionId',\n};\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nconst CKAFKAInvalidDemensions = new Proxy(\n {\n topicId: 'TopicId',\n topicName: 'TopicName',\n consumerGroup: 'GroupName',\n partition: 'PartitionId',\n },\n {\n get: (obj, prop) => {\n if (String(prop).toLocaleLowerCase() === 'instanceid') return 'InstanceId';\n return obj[prop];\n },\n }\n);\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n TopicList: 'TopicList',\n GroupList: 'GroupList',\n PartitionList: 'PartitionList',\n};\n\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n TopicId: {\n dim_KeyInStorage: keyInStorage.TopicList,\n dim_KeyInTarget: 'topicId',\n dim_KeyInMap: templateQueryIdMap.topicId,\n },\n // topicName和topicId是同一个storage中的source,所以根据topicId帅选\n TopicName: {\n dim_KeyInStorage: keyInStorage.TopicList,\n dim_KeyInTarget: 'topicId',\n dim_KeyInMap: templateQueryIdMap.topicId,\n },\n GroupName: {\n dim_KeyInStorage: keyInStorage.GroupList,\n dim_KeyInTarget: 'consumerGroup',\n dim_KeyInMap: templateQueryIdMap.groupName,\n },\n PartitionId: {\n dim_KeyInStorage: keyInStorage.PartitionList,\n dim_KeyInTarget: 'partition',\n dim_KeyInMap: templateQueryIdMap.partition,\n },\n};\nexport default CKAFKA_STATE;\nexport {\n CKAFKAInstanceAliasList,\n CKAFKATopicAliasList,\n CKAFKAInvalidDemensions,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n GetInstanceQueryParams as CKAFKAGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/LOADBALANCE';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'loadBalanceQuery';\n\nconst ForwardTypes = [\n { text: '通用的负载均衡', value: 1 },\n { text: '传统的负载均衡', value: 0 },\n];\n\nconst OrderBy = [\n { text: 'LoadBalancerName', value: 'LoadBalancerName' },\n { text: 'CreateTime', value: 'CreateTime' },\n { text: 'Domain', value: 'Domain' },\n { text: 'LoadBalancerType', value: 'LoadBalancerType' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\n\nconst WithRs = [\n { text: '没有绑定后端服务', value: 0 },\n { text: '绑定后端服务', value: 1 },\n { text: '查询全部', value: -1 },\n];\nconst LOADBALANCEFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1',\n link: '',\n type: 'inputNumber',\n min: 1,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancer ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancer Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'Forward',\n enDescriptor: 'Forward',\n cnDescriptor: '负载均衡实例类型',\n link: '',\n type: 'select',\n list: ForwardTypes,\n },\n {\n key: 'Domain',\n enDescriptor: 'Domain',\n cnDescriptor: '域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义',\n link: '',\n type: 'input',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancer Vips',\n cnDescriptor: '负载均衡实例的 VIP 地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPrivateIps',\n enDescriptor: 'BackendPrivate Ips',\n cnDescriptor: '负载均衡绑定的后端服务的内网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPublicIps',\n enDescriptor: 'BackendPublic Ips',\n cnDescriptor: '负载均衡绑定的后端服务的外网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ProjectId',\n enDescriptor: 'Project ID',\n cnDescriptor: '负载均衡实例所属的项目 ID',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'VpcId',\n enDescriptor: 'Vpc ID',\n cnDescriptor: '负载均衡实例所属私有网络',\n link: '',\n type: 'input',\n },\n {\n key: 'SecurityGroup',\n enDescriptor: 'Security Group',\n cnDescriptor: '安全组ID',\n link: '',\n type: 'input',\n },\n {\n key: 'MasterZone',\n enDescriptor: 'Master Zone',\n cnDescriptor: '主可用区ID',\n link: '',\n type: 'input',\n },\n {\n key: 'WithRs',\n enDescriptor: 'WithRs',\n cnDescriptor: '负载均衡是否绑定后端服务',\n link: '',\n type: 'select',\n list: WithRs,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderType,\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/214/30685',\n namespace,\n fieldDescriptor: LOADBALANCEFieldsDescriptor,\n};\nconst LBFields = {\n LoadBalancerIds: [],\n Forward: undefined,\n LoadBalancerName: '',\n Domain: '',\n LoadBalancerVips: [],\n BackendPublicIps: [],\n BackendPrivateIps: [],\n Limit: 20,\n Offset: 0,\n ProjectId: undefined,\n WithRs: {},\n VpcId: '',\n SecurityGroup: '',\n MasterZone: '',\n OrderBy: {},\n OrderType: {},\n};\n\nconst LOADBALANCE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n Port: '',\n Protocol: '',\n listener: '',\n servers: '',\n serverPort: '',\n // listenerAlias: 'ListenerId',\n queries: LBFields,\n};\n\n// function GetInstanceQueryParams(queries: any = {}) {\n// const params: any = {};\n// if (!_.isEmpty(queries)) {\n// params.Limit = _.get(queries, 'Limit', 20) || 20;\n// params.Offset = _.get(queries, 'Offset', 0) || 0;\n// queries = _.omit(queries, ['Offset', 'Limit']);\n// _.forEach(queries, (item: any, key) => {\n// if (_.isArray(item)) {\n// item = _.compact(item);\n// if (item.length > 0) {\n// params[key] = _.uniq(item);\n// }\n// } else if (_.isObject(item)) {\n// if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n// params[key] = _.get(item, 'value');\n// }\n// } else if (_.isNumber(item) || !_.isEmpty(item)) {\n// params[key] = item;\n// }\n// });\n// }\n// return params;\n// }\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nconst InstanceAliasList = ['LoadBalancerId', 'LoadBalancerName', 'LoadBalancerVips'];\nconst LOADBALANCEListenerAliasList = ['ListenerId', 'ListenerName', 'Port'];\nconst LOADBALANCEServerAliasList = ['PrivateIpAddresses', 'InstanceId'];\nconst LOADBALANCEVALIDDIMENSIONS = {\n vip: 'LoadBalancerVips',\n // vpcId: 'NumericalVpcId',\n loadBalancerPort: 'Port',\n protocol: 'Protocol',\n lanIp: 'PrivateIpAddresses',\n port: 'ServerPort',\n};\n// 对于ipv6类型,vip应该取AddressIPv6。\nconst CANDIATEDIMENSIONS = {\n LoadBalancerVips: 'AddressIPv6',\n};\n// dimensionObject[item] = { Name: item, Value: '' };\n// const LOADBALANCE_INSTANCE_DIMENSIONOBJECTS = {\n// vip: { Name: 'vip', Value: '' },\n// };\n// const LOADBALANCE_LISTENER_DIMENSIONOBJECTS = {\n// vip: { Name: 'vip', Value: '' },\n// loadBalancerPort: { Name: 'loadBalancerPort', Value: '' },\n// protocol: { Name: 'protocol', Value: '' },\n// };\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n listener: 'ListenerId',\n servers: 'PrivateIpAddresses',\n port: 'Port',\n};\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n listener: 'ListenerList',\n servers: 'ServersList',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n Port: {\n dim_KeyInStorage: keyInStorage.listener,\n dim_KeyInTarget: 'listener',\n dim_KeyInMap: templateQueryIdMap.listener,\n },\n Protocol: {\n dim_KeyInStorage: keyInStorage.listener,\n dim_KeyInTarget: 'listener',\n dim_KeyInMap: templateQueryIdMap.listener,\n },\n PrivateIpAddresses: {\n dim_KeyInStorage: keyInStorage.servers,\n dim_KeyInTarget: 'servers',\n dim_KeyInMap: templateQueryIdMap.servers,\n },\n ServerPort: {\n dim_KeyInStorage: keyInStorage.servers,\n dim_KeyInTarget: 'serverPort',\n dim_KeyInIns: 'Port',\n dim_KeyInMap: templateQueryIdMap.port,\n },\n};\nexport default LOADBALANCE_STATE;\nexport {\n LOADBALANCEFieldsDescriptor,\n InstanceAliasList,\n LOADBALANCEListenerAliasList,\n LOADBALANCEServerAliasList,\n LOADBALANCEVALIDDIMENSIONS,\n templateQueryIdMap,\n CANDIATEDIMENSIONS,\n // LOADBALANCE_LISTENER_DIMENSIONOBJECTS,\n // LOADBALANCE_INSTANCE_DIMENSIONOBJECTS,\n queryMonitorExtraConfg,\n keyInStorage,\n queryEditorConfig,\n namespace,\n queryEditorName,\n GetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/TDMQ';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'tdmqQuery';\n\nconst TDMQInvalidDemensions = {\n tenantId: 'ClusterId',\n tenant: 'ClusterId',\n topicName: 'TopicName',\n environmentId: 'EnvironmentId',\n};\n\n// 需和文件名对应\nconst TDMQInstanceAliasList = ['ClusterId', 'ClusterName'];\n\nconst templateQueryIdMap = {\n instance: 'ClusterId',\n topicName: 'TopicName',\n environmentId: 'EnvironmentId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst TDMQFilterFields = {\n Limit: 20,\n Offset: 0,\n};\n\nconst TDMQFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n];\n\nconst CDNPROVINCE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n // 此处key应该是经过TDMQInvalidDemensions处理后的\n topicName: '',\n environmentId: '',\n queries: TDMQFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-nanjing' },\n { value: 'ap-hongkong' },\n { value: 'ap-tokyo' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n { value: 'ap-bangkok' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n if (item.Dimensions.indexOf('topicName') !== -1 && item.Dimensions.indexOf('environmentId') === -1) {\n item.Dimensions.push('environmentId');\n }\n });\n return metricTmp;\n}\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n topicName: 'topicName',\n environmentId: 'environmentId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n TopicName: {\n dim_KeyInStorage: keyInStorage.topicName,\n dim_KeyInTarget: 'topicName',\n dim_KeyInMap: templateQueryIdMap.topicName,\n },\n EnvironmentId: {\n dim_KeyInStorage: keyInStorage.environmentId,\n dim_KeyInTarget: 'environmentId',\n dim_KeyInMap: templateQueryIdMap.environmentId,\n },\n};\nexport default CDNPROVINCE_STATE;\nexport {\n TDMQFilterFieldsDescriptor,\n templateQueryIdMap,\n TDMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n queryEditorName,\n queryMonitorExtraConfg,\n keyInStorage,\n modifyDimensons,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TDMQGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/GSE';\nconst fleetId = 'FleetId'; // 为和cvm其他产品保持一致,即将string[]改为Array<{fleetid: xxx}>,在此声明key\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'gseQuery';\n\nconst GSEInvalidDemensions = {\n instanceid: 'InstanceId',\n fleetid: 'FleetId',\n queuename: 'Name',\n};\n\n// 需和文件名对应\nconst GSEInstanceAliasList = ['InstanceId', 'PrivateIpAddress', 'IpAddress'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n Name: 'Name',\n FleetId: fleetId,\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n fleet: 'fleet', // 实例队列\n queue: 'queueName', // 会话队列\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n FleetId: {\n dim_KeyInStorage: keyInStorage.fleet,\n dim_KeyInTarget: 'FleetId',\n dim_KeyInMap: templateQueryIdMap.FleetId,\n },\n Name: {\n dim_KeyInStorage: keyInStorage.queue,\n dim_KeyInTarget: 'Name',\n dim_KeyInMap: templateQueryIdMap.Name,\n },\n};\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst GSEFilterFields = {\n Limit: 20,\n Offset: 0,\n InstanceId: '',\n FleetId: '',\n};\n\nconst GSEFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'resourceName',\n cnDescriptor: '资源名称',\n link: '',\n type: 'input',\n },\n {\n key: 'FleetId',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'input',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1165/42604',\n namespace,\n fieldDescriptor: GSEFilterFieldsDescriptor,\n};\n\nconst GSE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n FleetId: '', // 服务器实例\n Name: '', // 队列名称\n queries: GSEFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-bangkok' },\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n // { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-seoul' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n // { value: 'ap-shanghai-fsi' },\n // { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n // { value: 'na-toronto' },\n];\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = item.Dimensions.map((v) => GSEInvalidDemensions[v] || v);\n });\n return metricTmp;\n}\nexport default GSE_STATE;\nexport {\n GSEFilterFieldsDescriptor,\n templateQueryIdMap,\n GSEInstanceAliasList,\n GSEInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n queryMonitorExtraConfg,\n fleetId,\n keyInStorage,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as GSEGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { isArray, cloneDeep } from 'lodash';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/TDMYSQL';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'dcdbQuery';\n\nconst DCDBInvalidDemensions = {\n nodeid: 'NodeId',\n instanceid: 'InstanceId',\n shardid: 'ShardInstanceId',\n ShardId: 'ShardInstanceId',\n};\n\n// 需和文件名对应\nconst DCDBInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n NodeId: 'NodeId',\n ShardInstanceId: 'ShardInstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst DCDBFilterFields = {\n Limit: 20,\n Offset: 0,\n InstanceIds: [],\n SearchName: '',\n SearchKey: '',\n ProjectIds: [],\n // IsFilterVpc\n VpcId: '',\n SubnetId: '',\n\n OrderBy: {},\n OrderByType: {},\n // IsFilterExcluster: {},\n ExclusterType: {},\n\n ExclusterIds: [],\n FilterInstanceType: {},\n};\n\nconst DCDBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '实例 ID 查询',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'SearchName',\n enDescriptor: 'SearchName',\n cnDescriptor: '搜索的字段名,当前支持的值有:instancename、vip、all',\n link: '',\n type: 'input',\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '搜索的关键字',\n link: '',\n type: 'input',\n },\n {\n key: 'ProjectIds',\n enDescriptor: 'ProjectIds',\n cnDescriptor: '按项目 ID 查询',\n link: '',\n type: 'inputNumberMulti',\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '私有网络的子网 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: 'projectId', value: 'projectId' },\n { text: 'createtime', value: 'createtime' },\n { text: 'instancename', value: 'instancename' },\n ],\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '私有网络 ID',\n link: '',\n type: 'select',\n list: [\n { text: 'desc', value: 'desc' },\n { text: 'asc', value: 'asc' },\n ],\n },\n {\n key: 'ExclusterType',\n enDescriptor: 'ExclusterType',\n cnDescriptor: '集群类型',\n link: '',\n type: 'select',\n list: [\n { text: '非独享集群', value: 1 },\n { text: '独享集群', value: 2 },\n { text: '全部', value: 0 },\n { text: 'asc', value: 'asc' },\n ],\n },\n {\n key: 'ExclusterIds',\n enDescriptor: 'ExclusterIds',\n cnDescriptor: '独享集群ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'FilterInstanceType',\n enDescriptor: 'FilterInstanceType',\n cnDescriptor: '实例类型过滤',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '独享实例', value: 1 },\n { text: '主实例', value: 2 },\n { text: '灾备实例', value: 3 },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/557/16140',\n namespace,\n fieldDescriptor: DCDBFilterFieldsDescriptor,\n};\n\nconst DCDB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n ShardId: '',\n NodeId: '',\n queries: DCDBFilterFields,\n};\nconst modifyMetricConf = {\n shardid: 'ShardId',\n instanceid: 'InstanceId',\n nodeid: 'NodeId',\n};\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = item.Dimensions.map((v) => modifyMetricConf[v] || v);\n });\n return metricTmp;\n}\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params = instanceQueryParamsBaseParse(queries, false);\n // 特殊处理\n params.IsFilterVpc = false;\n params.IsFilterExcluster = false;\n if (params.VpcId || params.SubnetId) params.IsFilterVpc = true;\n if (params.ExclusterType) params.IsFilterExcluster = true;\n if (isArray(params.FilterInstanceType)) params.FilterInstanceType = params.FilterInstanceType.join(',');\n return params;\n}\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n NodeId: 'NodeId',\n ShardInstanceId: 'ShardId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n NodeId: {\n dim_KeyInStorage: keyInStorage.NodeId,\n dim_KeyInTarget: 'NodeId',\n dim_KeyInMap: templateQueryIdMap.NodeId,\n },\n ShardInstanceId: {\n dim_KeyInStorage: keyInStorage.ShardInstanceId,\n dim_KeyInTarget: 'ShardId',\n dim_KeyInMap: templateQueryIdMap.ShardInstanceId,\n },\n};\n// 和其他产品的展示保持一致\nconst regionSupported = [\n { text: '华北地区(北京)', value: 'ap-beijing' },\n { text: '西南地区(成都)', value: 'ap-chengdu' },\n { text: '西南地区(重庆)', value: 'ap-chongqing' },\n { text: '华南地区(广州)', value: 'ap-guangzhou' },\n { text: '港澳台地区(中国香港)', value: 'ap-hongkong' },\n { text: '亚太南部(孟买)', value: 'ap-mumbai' },\n { text: '华东地区(南京)', value: 'ap-nanjing' },\n { text: '华东地区(上海)', value: 'ap-shanghai' },\n { text: '华东地区(上海金融)', value: 'ap-shanghai-fsi' },\n { text: '华南地区(深圳金融)', value: 'ap-shenzhen-fsi' },\n { text: '亚太东南(新加坡)', value: 'ap-singapore' },\n { text: '亚太东北(东京)', value: 'ap-tokyo' },\n { text: '欧洲地区(法兰克福)', value: 'eu-frankfurt' },\n { text: '美国东部(弗吉尼亚)', value: 'na-ashburn' },\n { text: '美国西部(硅谷)', value: 'na-siliconvalley' },\n { text: '北美地区(多伦多)', value: 'na-toronto' },\n];\nexport default DCDB_STATE;\nexport {\n DCDBFilterFieldsDescriptor,\n templateQueryIdMap,\n DCDBInstanceAliasList,\n DCDBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n keyInStorage,\n modifyDimensons,\n queryMonitorExtraConfg,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as DCDBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nconst namespace = 'QCE/REDIS_MEM';\nconst BillingMode = [\n { text: '按量计费', value: 'postpaid' },\n { text: '包年包月', value: 'prepaid' },\n];\n\nconst AutoRenew = [\n { text: '手动续费', value: 0 },\n { text: '自动续费', value: 1 },\n { text: '明确不自动续费', value: 2 },\n];\n\nconst Status = [\n { text: '待初始化', value: 0 },\n { text: '流程执行中', value: 1 },\n { text: '运行中', value: 2 },\n { text: '已隔离', value: -2 },\n { text: '待删除', value: -3 },\n];\n\nconst TypeVersion = [\n { text: '单机版', value: 1 },\n { text: '主从版', value: 2 },\n { text: '集群版', value: 3 },\n];\n\nconst OrderBy = [\n { text: 'projectId', value: 'projectId' },\n { text: 'instancename', value: 'instancename' },\n { text: 'createtime', value: 'createtime' },\n { text: 'type', value: 'type' },\n { text: 'curDeadline', value: 'curDeadline' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\nconst Type = [\n { text: 'Redis老集群版', value: 1 },\n { text: 'Redis 2.8主从版', value: 2 },\n { text: 'CKV主从版', value: 3 },\n { text: 'CKV集群版', value: 4 },\n { text: 'Redis 2.8单机版', value: 5 },\n { text: 'Redis 4.0主从版', value: 6 },\n { text: 'Redis 4.0集群版', value: 7 },\n { text: 'Redis5.0主从版', value: 8 },\n { text: 'Redis5.0集群版', value: 9 },\n];\n\nconst RedisFields = {\n InstanceId: '',\n OrderBy: '',\n OrderType: null,\n VpcIds: [],\n SubnetIds: [],\n ProjectIds: [],\n SearchKey: '',\n InstanceName: '',\n UniqVpcIds: [],\n UniqSubnetIds: [],\n Status: [],\n TypeVersion: null,\n EngineName: '',\n AutoRenew: null,\n BillingMode: '',\n Type: null,\n};\n\nconst RedisMemFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'InstancesId',\n cnDescriptor: '实例id',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderType',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderType,\n },\n {\n key: 'VpcIds',\n enDescriptor: 'VpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:47525',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SubnetIds',\n enDescriptor: 'SubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:56854',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ProjectIds',\n enDescriptor: 'ProjectIds',\n cnDescriptor: '项目ID 组成的数组',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '查找实例的ID',\n link: '',\n type: 'input',\n },\n {\n key: 'InstanceName',\n enDescriptor: 'InstanceName',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'UniqVpcIds',\n enDescriptor: 'UniqVpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:vpc-sad23jfdfk',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'UniqSubnetIds',\n enDescriptor: 'UniqSubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:subnet-fdj24n34j2',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'TypeVersion',\n enDescriptor: 'TypeVersion',\n cnDescriptor: '类型版本',\n link: '',\n type: 'select',\n list: TypeVersion,\n },\n {\n key: 'EngineName',\n enDescriptor: 'EngineName',\n cnDescriptor: '引擎信息:Redis-2.8,Redis-4.0,CKV',\n link: '',\n type: 'input',\n },\n {\n key: 'AutoRenew',\n enDescriptor: 'AutoRenew',\n cnDescriptor: '续费模式',\n multiple: true,\n type: 'select',\n list: AutoRenew,\n },\n {\n key: 'BillingMode',\n enDescriptor: 'BillingMode',\n cnDescriptor: '计费模式:postpaid-按量计费;prepaid-包年包月',\n link: '',\n type: 'select',\n list: BillingMode,\n },\n {\n key: 'Type',\n enDescriptor: 'Type',\n cnDescriptor: '实例类型',\n link: '',\n type: 'select',\n list: Type,\n },\n];\n\nconst REDISMEM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...RedisFields },\n rnodeid: '',\n pnodeid: '',\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n // select 单选\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst REDISMEMInstanceAliasList = ['InstanceId', 'InstanceName', 'WanIp'];\n\nconst RedisMemInvalidDemensions = {\n instanceid: 'InstanceId',\n rnodeid: 'rnodeid',\n pnodeid: 'pnodeid',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n rnodeid: 'rnodeid',\n pnodeid: 'pnodeid',\n};\n\nconst NodeType = ['Redis', 'Proxy'];\n\nexport default REDISMEM_STATE;\nexport {\n RedisMemFieldsDescriptor,\n RedisMemInvalidDemensions,\n REDISMEMInstanceAliasList,\n templateQueryIdMap,\n namespace,\n NodeType,\n GetInstanceQueryParams as REDISMEMGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/RABBITMQ';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'tdmqQuery';\n\nconst TDMQInvalidDemensions = {\n instanceid: 'InstanceId',\n node: 'NodeName',\n};\n\n// 需和文件名对应\nconst TDMQRABBITMQInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n node: 'NodeName',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst TDMQFilterFields = {\n Limit: 20,\n Offset: 0,\n};\n\nconst TDMQFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n];\n\nconst TDMQ_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n // 此处key应该是经过TDMQInvalidDemensions处理后的\n node: '',\n queries: TDMQFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-nanjing' },\n { value: 'ap-hongkong' },\n { value: 'ap-tokyo' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n { value: 'ap-bangkok' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n node: 'NodeName',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n NodeName: {\n dim_KeyInStorage: keyInStorage.node,\n dim_KeyInTarget: 'node',\n dim_KeyInMap: templateQueryIdMap.node,\n },\n};\nexport default TDMQ_STATE;\nexport {\n TDMQFilterFieldsDescriptor,\n templateQueryIdMap,\n TDMQRABBITMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n queryEditorName,\n queryMonitorExtraConfg,\n keyInStorage,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TDMQGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/ROCKETMQ';\n\nconst TDMQInvalidDemensions = {\n tenant: 'ClusterId',\n namespace: 'NamespaceId',\n group: 'Name',\n};\n\n// 需和文件名对应\nconst TDMQROCKETMQInstanceAliasList = ['ClusterId', 'ClusterName'];\n\nconst templateQueryIdMap = {\n instance: 'ClusterId',\n namespace: 'NamespaceId',\n group: 'Name',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst TDMQFilterFields = {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: true,\n ClusterIdList: [''],\n Filters: {\n includeVip: { text: '是', value: 'true' },\n },\n};\n\nconst TDMQFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'includeVip',\n enDescriptor: 'includeVip',\n cnDescriptor: '包含专享集群',\n link: '',\n type: 'select',\n list: [\n { text: '是', value: 'true' },\n { text: '否', value: 'false' },\n ],\n },\n];\n\nconst TDMQ_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n // 此处key应该是经过TDMQInvalidDemensions处理后的\n namespace: '',\n group: '',\n queries: TDMQFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.ClusterIdList)) {\n const ClusterIdList = _.compact(queries.ClusterIdList);\n if (_.uniq(ClusterIdList).length > 0) {\n params.ClusterIdList = _.uniq(ClusterIdList).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: [_.get(item, 'value', [])].slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-nanjing' },\n { value: 'ap-hongkong' },\n { value: 'ap-tokyo' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n { value: 'ap-bangkok' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n namespace: 'NamespaceId',\n group: 'Name',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n NamespaceId: {\n dim_KeyInStorage: keyInStorage.namespace,\n dim_KeyInTarget: 'namespace',\n dim_KeyInMap: templateQueryIdMap.namespace,\n },\n Name: {\n dim_KeyInStorage: keyInStorage.group,\n dim_KeyInTarget: 'group',\n dim_KeyInMap: templateQueryIdMap.group,\n },\n};\nexport default TDMQ_STATE;\nexport {\n TDMQFilterFieldsDescriptor,\n templateQueryIdMap,\n TDMQROCKETMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n queryMonitorExtraConfg,\n keyInStorage,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TDMQROCKETMQGetInstanceQueryParams,\n};\n","import { t } from '../../locale';\n// name (产品名称), service(对应的真实service)\ninterface ServiceType {\n service: string;\n label: string;\n namespace: string;\n href: string;\n groupName?: string;\n hideRegion?: boolean;\n}\nconst SERVICES: ServiceType[] = [\n {\n service: 'cvm',\n get label() {\n return t('CVM');\n },\n namespace: 'QCE/CVM',\n href: 'https://cloud.tencent.com/document/api/213/15688',\n },\n {\n service: 'cdb',\n get label() {\n return t('CDB');\n },\n namespace: 'QCE/CDB',\n href: 'https://cloud.tencent.com/document/api/236/15829',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'mongoDB',\n get label() {\n return t('CMONGO');\n },\n namespace: 'QCE/CMONGO',\n href: 'https://cloud.tencent.com/document/api/240/38568',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'postgres',\n get label() {\n return t('POSTGRES');\n },\n namespace: 'QCE/POSTGRES',\n href: 'https://cloud.tencent.com/document/product/248/45105',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'redis',\n get label() {\n return t('REDIS');\n },\n namespace: 'QCE/REDIS',\n href: 'https://cloud.tencent.com/document/product/248/45110',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'redisMem',\n get label() {\n return t('REDIS_MEM');\n },\n namespace: 'QCE/REDIS_MEM',\n href: 'https://cloud.tencent.com/document/product/248/49729',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'sqlserver',\n get label() {\n return t('SQLSERVER');\n },\n namespace: 'QCE/SQLSERVER',\n href: 'https://cloud.tencent.com/document/product/248/45146',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'cynosdbMysql',\n get label() {\n return t('CYNOSDB_MYSQL');\n },\n namespace: 'QCE/CYNOSDB_MYSQL',\n href: 'https://cloud.tencent.com/document/product/248/45106',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'tcaplus',\n get label() {\n return t('TCAPLUS');\n },\n namespace: 'QCE/TCAPLUS',\n href: 'https://cloud.tencent.com/document/product/248/45107',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'dcdb',\n get label() {\n return t('TDMYSQL');\n },\n namespace: 'QCE/TDMYSQL',\n href: 'https://cloud.tencent.com/document/product/248/45108',\n },\n {\n service: 'pcx',\n get label() {\n return t('PCX');\n },\n namespace: 'QCE/PCX',\n href: 'https://cloud.tencent.com/document/product/215/5181',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'bwp',\n get label() {\n return t('BWP');\n },\n namespace: 'QCE/BWP',\n href: 'https://cloud.tencent.com/document/api/215/19209',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'natGateway',\n get label() {\n return t('NAT_GATEWAY');\n },\n namespace: 'QCE/NAT_GATEWAY',\n href: 'https://cloud.tencent.com/document/api/215/36034',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vpngw',\n get label() {\n return t('VPNGW');\n },\n namespace: 'QCE/VPNGW',\n href: 'https://cloud.tencent.com/document/product/248/45070',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vpnx',\n get label() {\n return t('VPNX');\n },\n namespace: 'QCE/VPNX',\n href: 'https://cloud.tencent.com/document/product/248/45071',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'dcg',\n get label() {\n return t('DCG');\n },\n namespace: 'QCE/DCG',\n href: 'https://cloud.tencent.com/document/product/248/45072',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'ceipSummary',\n get label() {\n return t('CEIP_SUMMARY');\n },\n namespace: 'QCE/CEIP_SUMMARY',\n href: 'https://cloud.tencent.com/document/product/248/50381',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vpcNetDetect',\n get label() {\n return t('VPC_NET_DETECT');\n },\n namespace: 'QCE/VPC_NET_DETECT',\n href: 'https://cloud.tencent.com/document/product/248/50384',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vbc',\n get label() {\n return t('VBC');\n },\n namespace: 'QCE/VBC',\n href: 'https://cloud.tencent.com/document/product/248/45073',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'lb',\n get label() {\n return t('LB');\n },\n namespace: 'QCE/LB',\n href: 'https://cloud.tencent.com/document/product/248/45099',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'lbPublic',\n get label() {\n return t('LB_PUBLIC');\n },\n namespace: 'QCE/LB_PUBLIC',\n href: 'https://cloud.tencent.com/document/product/248/51898',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('multi_scene')})`;\n },\n },\n {\n service: 'lbPrivate',\n get label() {\n return t('LB_PRIVATE');\n },\n namespace: 'QCE/LB_PRIVATE',\n href: 'https://cloud.tencent.com/document/product/248/51899',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('multi_scene')})`;\n },\n },\n {\n service: 'loadBalance',\n get label() {\n return t('LOADBALANCE');\n },\n namespace: 'QCE/LOADBALANCE',\n href: 'https://cloud.tencent.com/document/product/248/51901',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('multi_scene')})`;\n },\n },\n {\n service: 'vClb',\n get label() {\n return `${t('cloud_load_balancer')}(${t('lite')})`;\n },\n namespace: 'QCE/V_CLB',\n href: 'https://cloud.tencent.com/document/product/248/51901',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('lite')})`;\n },\n },\n {\n service: 'cdn',\n get label() {\n return t('CDN');\n },\n namespace: 'QCE/CDN',\n hideRegion: true,\n href: 'https://cloud.tencent.com/document/product/248/50386',\n get groupName() {\n return t('content_delivery_network');\n },\n },\n {\n service: 'cdnProvince',\n get label() {\n return t('CDN_LOG_DATA');\n },\n namespace: 'QCE/CDN_LOG_DATA',\n hideRegion: true,\n href: 'https://cloud.tencent.com/document/product/248/50388',\n get groupName() {\n return t('content_delivery_network');\n },\n },\n {\n service: 'ovCdn',\n get label() {\n return t('OV_CDN');\n },\n namespace: 'QCE/OV_CDN',\n hideRegion: true,\n href: 'https://cloud.tencent.com/document/product/248/50387',\n get groupName() {\n return t('content_delivery_network');\n },\n },\n {\n service: 'scf',\n get label() {\n return t('SCF_V2');\n },\n namespace: 'QCE/SCF_V2',\n href: 'https://cloud.tencent.com/document/product/248/45130',\n },\n {\n service: 'cfs',\n get label() {\n return t('CFS');\n },\n namespace: 'QCE/CFS',\n href: 'https://cloud.tencent.com/document/product/248/45143',\n },\n {\n service: 'cos',\n get label() {\n return t('COS');\n },\n namespace: 'QCE/COS',\n href: 'https://cloud.tencent.com/document/product/248/45140',\n },\n {\n service: 'ckafka',\n get label() {\n return t('CKAFKA');\n },\n namespace: 'QCE/CKAFKA',\n href: 'https://cloud.tencent.com/document/product/248/45121',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'cmq',\n get label() {\n return t('CMQ');\n },\n namespace: 'QCE/CMQ',\n href: 'https://cloud.tencent.com/document/product/248/45114',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'cmqTopic',\n get label() {\n return t('CMQTOPIC');\n },\n namespace: 'QCE/CMQTOPIC',\n href: 'https://cloud.tencent.com/document/product/248/45113',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'tdmq',\n get label() {\n return t('TDMQ');\n },\n namespace: 'QCE/TDMQ',\n href: 'https://cloud.tencent.com/document/product/248/51450',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'tdmqRocketmq',\n get label() {\n return t('TDMQ_ROCKETMQ');\n },\n namespace: 'QCE/ROCKETMQ',\n href: 'https://cloud.tencent.com/document/product/248/51450',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'tdmqRabbitmq',\n get label() {\n return t('TDMQ_RABBITMQ');\n },\n namespace: 'QCE/RABBITMQ',\n href: 'https://cloud.tencent.com/document/product/248/51450',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'dcx',\n get label() {\n return t('DCX');\n },\n namespace: 'QCE/DCX',\n href: 'https://cloud.tencent.com/document/product/248/45101',\n get groupName() {\n return t('direct_connect');\n },\n },\n {\n service: 'dc',\n get label() {\n return t('DC');\n },\n namespace: 'QCE/DC',\n href: 'https://cloud.tencent.com/document/product/248/45102',\n get groupName() {\n return t('direct_connect');\n },\n },\n {\n service: 'cpm',\n get label() {\n return t('CPM');\n },\n namespace: 'QCE/CPM',\n href: 'https://cloud.tencent.com/document/product/248/45881',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'bmPcx',\n get label() {\n return t('BM_PCX');\n },\n namespace: 'QCE/BM_PCX',\n href: 'https://cloud.tencent.com/document/product/248/45884',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'bmLb',\n get label() {\n return t('BM_LB');\n },\n namespace: 'QCE/BM_LB',\n href: 'https://cloud.tencent.com/document/product/248/45886',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'bmIntraLb',\n get label() {\n return t('BM_INTRA_LB');\n },\n namespace: 'QCE/BM_INTRA_LB',\n href: 'https://cloud.tencent.com/document/product/248/45885',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'ces',\n get label() {\n return t('CES');\n },\n namespace: 'QCE/CES',\n href: 'https://cloud.tencent.com/document/product/248/45129',\n },\n {\n service: 'mrHDFS',\n get label() {\n return `${t('elastic_mapReduce')}(HDFS)`;\n },\n namespace: 'QCE/TXMR_HDFS',\n href: 'https://cloud.tencent.com/document/product/248/44797',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrHBASE',\n get label() {\n return `${t('elastic_mapReduce')}(HBASE)`;\n },\n namespace: 'QCE/TXMR_HBASE',\n href: 'https://cloud.tencent.com/document/product/248/45567',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrHIVE',\n get label() {\n return `${t('elastic_mapReduce')}(HIVE)`;\n },\n namespace: 'QCE/TXMR_HIVE',\n href: 'https://cloud.tencent.com/document/product/248/45569',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrNODE',\n get label() {\n return `${t('elastic_mapReduce')}(NODE)`;\n },\n namespace: 'QCE/TXMR_NODE',\n href: 'https://cloud.tencent.com/document/product/248/45570',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrPRESTO',\n get label() {\n return `${t('elastic_mapReduce')}(PRESTO)`;\n },\n namespace: 'QCE/TXMR_PRESTO',\n href: 'https://cloud.tencent.com/document/product/248/45571',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrSPARK',\n get label() {\n return `${t('elastic_mapReduce')}(SPARK)`;\n },\n namespace: 'QCE/TXMR_SPARK',\n href: 'https://cloud.tencent.com/document/product/248/45572',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrYARN',\n get label() {\n return `${t('elastic_mapReduce')}(YARN)`;\n },\n namespace: 'QCE/TXMR_YARN',\n href: 'https://cloud.tencent.com/document/product/248/45573',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrZOOKEEPER',\n get label() {\n return `${t('elastic_mapReduce')}(ZOOKEEPER)`;\n },\n namespace: 'QCE/TXMR_ZOOKEEPER',\n href: 'https://cloud.tencent.com/document/product/248/45574',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'cbs',\n get label() {\n return t('BLOCK_STORAGE');\n },\n namespace: 'QCE/BLOCK_STORAGE',\n href: 'https://cloud.tencent.com/document/product/362/2345',\n },\n {\n service: 'apigateway',\n get label() {\n return t('APIGATEWAY');\n },\n namespace: 'QCE/APIGATEWAY',\n href: 'https://cloud.tencent.com/document/product/248/45127',\n },\n {\n service: 'qaap',\n get label() {\n return t('QAAP');\n },\n namespace: 'QCE/QAAP',\n href: 'https://cloud.tencent.com/document/product/608',\n },\n {\n service: 'ecm',\n get label() {\n return t('ECM');\n },\n hideRegion: true,\n namespace: 'QCE/ECM',\n href: 'https://cloud.tencent.com/document/product/1108',\n get groupName() {\n return t('edge_computing_machine');\n },\n },\n {\n service: 'ecmBlockStorage',\n get label() {\n return t('ECM_BLOCK_STORAGE');\n },\n hideRegion: true,\n namespace: 'QCE/ECM_BLOCK_STORAGE',\n href: 'https://cloud.tencent.com/document/product/1108',\n get groupName() {\n return t('edge_computing_machine');\n },\n },\n {\n service: 'ecmLb',\n get label() {\n return t('ECM_LB');\n },\n hideRegion: true,\n namespace: 'QCE/ECM_LB',\n href: 'https://cloud.tencent.com/document/product/1108',\n get groupName() {\n return t('edge_computing_machine');\n },\n },\n {\n service: 'gse',\n get label() {\n return t('GSE');\n },\n namespace: 'QCE/GSE',\n href: 'https://cloud.tencent.com/document/product/1165',\n },\n {\n service: 'cls',\n get label() {\n return t('CLS');\n },\n namespace: 'QCE/CLS',\n href: 'https://cloud.tencent.com/document/product/614',\n },\n {\n service: 'tke',\n get label() {\n return t('TKE');\n },\n namespace: 'QCE/TKE2',\n href: 'https://cloud.tencent.com/document/product/457',\n },\n {\n service: 'ecdn',\n get label() {\n return t('ECDN');\n },\n namespace: 'QCE/DSA',\n href: 'https://cloud.tencent.com/document/product/570',\n },\n // {\n // service: 'lighthouse',\n // label: '轻量应用服务器(LIGHTHOUSE)',\n // namespace: 'QCE/LIGHTHOUSE',\n // href: 'https://cloud.tencent.com/document/product/1207',\n // },\n // {\n // service: 'tsf',\n // label: ' 微服务平台(TSF)',\n // namespace: 'QCE/TSF',\n // href: 'https://cloud.tencent.com/document/product/649',\n // },\n {\n service: 'waf',\n get label() {\n return t('WAF');\n },\n // hideRegion: true,\n namespace: 'QCE/WAF',\n href: 'https://cloud.tencent.com/document/product/627',\n },\n];\nconst Datasources = {};\nconst InitStates = {};\nconst InstanceAliasList = {};\nconst GetInstanceQueryParams = {};\n\n/**\n * 由于目录命名不规范,导致需要使用额外逻辑保证正确性。从目录到具体service的映射\n */\nconst hackModuleName = {\n // lb_loadBalance: 'loadBalance',\n postgresql: 'postgres',\n mongodb: 'mongoDB',\n clb: ['lbPrivate', 'lbPublic', 'loadBalance'],\n mr: ['mrHDFS', 'mrHBASE', 'mrHIVE', 'mrNODE', 'mrPRESTO', 'mrSPARK', 'mrYARN', 'mrZOOKEEPER'],\n};\n\nconst requireModule = (require as any).context('./', true, /^\\.\\/[a-zA-Z]\\w+\\/(datasource)|(query(_def)?)\\.ts$/);\n\nrequireModule.keys().forEach((filePath) => {\n let [, moduleName, fileName] = filePath.split('/');\n\n // hack: 这里是由于产品目录命名不规范,所以才会多这么一段代码\n moduleName = hackModuleName[moduleName] ?? moduleName;\n\n // 目录与模块的映射关系,不管是一对一还是一对多,均按数组进行统一处理\n [].concat(moduleName).forEach((module: string) => {\n // 这个service就是产品配置中的service,需要注意这里的service是根据目录名称算出来的,因此目录名称一定要和service对应\n const service = module.replace(/_([a-zA-Z])/g, (_, b) => b.toUpperCase());\n const prefix = service.toUpperCase(); // 命名规则\n\n // datasource\n if (fileName === 'datasource.ts') {\n const Cls = require(`${filePath}`).default;\n\n // 想办法为实例注入service,不能为prototype或则类本身注入,因为会造成互相污染,详尽mrDatasource\n Datasources[`${prefix}Datasource`] = class {\n constructor(...params) {\n const target = new Cls(...params, service);\n target.service = service;\n // eslint-disable-next-line no-constructor-return\n return target;\n }\n };\n }\n // query\n if (fileName === 'query.ts') {\n require(`${filePath}`);\n }\n // query_def\n if (fileName === 'query_def.ts') {\n const alias = `${prefix}InstanceAliasList`;\n const getParams = `${prefix}GetInstanceQueryParams`;\n\n const target = require(`${filePath}`);\n\n InitStates[service] = target.default; // FIXME: 这里需不需要深拷贝?\n InstanceAliasList[alias] = target[alias] ?? target['InstanceAliasList'];\n GetInstanceQueryParams[getParams] = target[getParams] ?? target['GetInstanceQueryParams'];\n }\n });\n});\n\nexport {\n InitStates as InitServiceState,\n SERVICES,\n Datasources,\n InstanceAliasList,\n GetInstanceQueryParams,\n // DefaultDimensions\n};\n\n// console.log(Datasources, InitStates, InstanceAliasList, GetInstanceQueryParams);\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/ECM_BLOCK_STORAGE';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'ecmBlockStorageQuery';\n\nconst ECMBLOCKSTORAGEInvalidDemensions = {\n uuid: 'UUID',\n diskId: 'DiskId',\n};\n\n// 需和文件名对应\nconst ECMBLOCKSTORAGEInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n diskId: 'DiskId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst ECMBLOCKSTORAGEFilterFields = {\n Limit: 20,\n Offset: 0,\n 'zone-name': [],\n 'module-id': [],\n 'module-name': [],\n 'instance-id': [],\n 'instance-name': [],\n 'ip-address': [],\n 'instance-uuid': [],\n 'instance-state': {},\n 'internet-service-provider': [],\n 'instance-family': [],\n 'image-id': [],\n 'vpc-id': [],\n 'subnet-id': [],\n};\n\nconst ECMBLOCKSTORAGEFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'zone-name',\n enDescriptor: 'zone-name',\n cnDescriptor: '排列顺序',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-id',\n enDescriptor: 'module-id',\n cnDescriptor: '模块ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-name',\n enDescriptor: 'module-name',\n cnDescriptor: '模块名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-id',\n enDescriptor: 'instance-id',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-name',\n enDescriptor: 'instance-name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ip-address',\n enDescriptor: 'ip-address',\n cnDescriptor: '内网/公网IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-uuid',\n enDescriptor: 'instance-uuid',\n cnDescriptor: '实例uuid',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-state',\n enDescriptor: 'instance-state',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '创建中', value: 'PENDING' },\n { text: '创建失败', value: 'LAUNCH_FAILED' },\n { text: '运行中', value: 'RUNNING' },\n { text: '关机', value: 'STOPPED' },\n { text: '开机中', value: 'STARTING' },\n { text: '关机中', value: 'STOPPING' },\n { text: '重启中', value: 'REBOOTING' },\n { text: '停止待销毁', value: 'SHUTDOWN' },\n { text: '销毁中', value: 'TERMINATING' },\n ],\n },\n {\n key: 'internet-service-provider',\n enDescriptor: 'internet-service-provider',\n cnDescriptor: '公网IP所属的运营商',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-family',\n enDescriptor: 'instance-family',\n cnDescriptor: '机型family',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'image-id',\n enDescriptor: 'image-id',\n cnDescriptor: '镜像ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: '实例的vpc id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'subnet-id',\n cnDescriptor: '实例的subnet id',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1108/42565',\n namespace,\n fieldDescriptor: ECMBLOCKSTORAGEFilterFieldsDescriptor,\n};\n\nconst ECMBLOCKSTORAGE_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n diskId: '',\n queries: ECMBLOCKSTORAGEFilterFields,\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n diskId: 'diskId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n DiskId: {\n dim_KeyInStorage: keyInStorage.diskId,\n dim_KeyInTarget: 'diskId',\n dim_KeyInMap: templateQueryIdMap.diskId,\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default ECMBLOCKSTORAGE_STATE;\nexport {\n ECMBLOCKSTORAGEFilterFieldsDescriptor,\n templateQueryIdMap,\n ECMBLOCKSTORAGEInstanceAliasList,\n ECMBLOCKSTORAGEInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n keyInStorage,\n queryMonitorExtraConfg,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as ECMBLOCKSTORAGEGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/APIGATEWAY';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'apigatewayQuery';\n\nconst APIGATEWAYInvalidDemensions = {\n serviceId: 'ServiceId',\n environmentName: 'EnvironmentName',\n apiid: 'Apiid',\n apiId: 'Apiid',\n};\n\n// 需和文件名对应\nconst APIGATEWAYInstanceAliasList = ['ServiceId', 'ServiceName'];\n\nconst templateQueryIdMap = {\n instance: 'ServiceId',\n environmentName: 'EnvironmentName',\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n environmentList: 'EnvironmentList',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n EnvironmentName: {\n dim_KeyInStorage: keyInStorage.environmentList,\n dim_KeyInTarget: 'EnvironmentName',\n dim_KeyInMap: templateQueryIdMap.environmentName,\n },\n};\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst APIGATEWAYFilterFields = {\n Limit: 20,\n Offset: 0,\n ServiceId: [],\n ServiceName: [],\n NotUsagePlanId: [],\n Environment: [],\n IpVersion: [],\n};\n\nconst APIGATEWAYFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ServiceId',\n enDescriptor: 'ServiceId',\n cnDescriptor: '服务id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ServiceName',\n enDescriptor: 'ServiceName',\n cnDescriptor: '服务名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'NotUsagePlanId',\n enDescriptor: 'NotUsagePlanId',\n cnDescriptor: 'NotUsagePlanId',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Environment',\n enDescriptor: 'Environment',\n cnDescriptor: '环境名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'IpVersion',\n enDescriptor: 'IpVersion',\n cnDescriptor: 'IP版本',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/628/45198',\n namespace,\n fieldDescriptor: APIGATEWAYFilterFieldsDescriptor,\n};\n\nconst APIGATEWAY_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ServiceId',\n EnvironmentName: '',\n queries: APIGATEWAYFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nexport default APIGATEWAY_STATE;\nexport {\n APIGATEWAYFilterFieldsDescriptor,\n templateQueryIdMap,\n APIGATEWAYInstanceAliasList,\n APIGATEWAYInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as APIGATEWAYGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nexport const InstanceQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '按照一个或者多个实例ID查询。实例ID形如: emr-xxxxxxxx ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'OrderField',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: '实例ID', value: 'clusterId' },\n { text: '创建时间', value: 'addTime' },\n { text: '状态', value: 'status' },\n ],\n },\n {\n key: 'Asc',\n enDescriptor: 'Order Direction',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: [\n { text: '降序', value: 0 },\n { text: '升序', value: 1 },\n ],\n },\n {\n key: 'ProjectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '实例所属项目ID',\n link: '',\n type: 'inputnumber',\n },\n {\n key: 'DisplayStrategy',\n enDescriptor: 'DisplayStrategy',\n cnDescriptor: '集群筛选策略',\n link: '',\n type: 'select',\n list: [\n { text: '未销毁的实例', value: 'clusterList' },\n { text: '正常运行的实例', value: 'monitorManage' },\n ],\n },\n];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nexport const InvalidDemensions = new Proxy(\n {},\n {\n get(target, k, receiver) {\n if (typeof k === 'string') {\n if (k.startsWith('id4')) return 'ClusterId'; // id4****\n if (k.startsWith('host4')) return 'Ip'; // host4***\n }\n return Reflect.get(target, k, receiver);\n },\n has(target, propKey) {\n return true;\n },\n }\n);\n\nexport const templateQueryIdMap = {\n instance: 'ClusterId',\n node: 'Ip',\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n node: 'nodeIP',\n};\n\n/**\n * 如果有InstanceId额外的维度,原则上都需要传入此map结构配置\n *\n * `key` 的含义:\n * 经过InvalidDemensions处理后的string。topicId => TopicId。\n * 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\n *\n * `value` 的含义:\n * @param {1} dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n * @param {2} dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n * 默认取通过InvalidDemsion处理后的key\n * @param {3} dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n * 即:templateQueryIdMap中内容。\n * 联合上面 2 的内容筛选出原始sourceMap\n */\nconst queryMonitorExtraConfg = {\n Ip: {\n dim_KeyInStorage: keyInStorage.node,\n dim_KeyInTarget: 'nodeIP',\n dim_KeyInMap: templateQueryIdMap.node,\n },\n};\n\n// 与名称挂钩的变量\nconst InstanceAliasList = ['ClusterId', 'ClusterName'];\nexport { InstanceAliasList, GetInstanceQueryParams, queryMonitorExtraConfg, keyInStorage };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n nodeIP: '',\n queries: {\n Offset: 0,\n Limit: 10,\n DisplayStrategy: '',\n OrderBy: {},\n Order: {},\n InstanceIds: [],\n ProjectId: -1,\n OrderField: '',\n Asc: '',\n },\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/V_CLB';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'vClbQuery';\n\nconst VCLBInvalidDemensions = {\n InstanceId: 'LoadBalancerId',\n // vip: 'LoadBalancerVips',\n // loadBalancerPort: 'Port',\n // protocol: 'Protocol',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst VCLBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerVips', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\nconst ForwardTypes = [\n { text: '通用的负载均衡', value: 1 },\n { text: '传统的负载均衡', value: 0 },\n];\n\nconst OrderBy = [\n { text: 'LoadBalancerName', value: 'LoadBalancerName' },\n { text: 'CreateTime', value: 'CreateTime' },\n { text: 'Domain', value: 'Domain' },\n { text: 'LoadBalancerType', value: 'LoadBalancerType' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\n\nconst WithRs = [\n { text: '没有绑定后端服务', value: 0 },\n { text: '绑定后端服务', value: 1 },\n { text: '查询全部', value: -1 },\n];\nconst VCLBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1',\n link: '',\n type: 'inputNumber',\n min: 1,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancer ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancer Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'Forward',\n enDescriptor: 'Forward',\n cnDescriptor: '负载均衡实例类型',\n link: '',\n type: 'select',\n list: ForwardTypes,\n },\n {\n key: 'Domain',\n enDescriptor: 'Domain',\n cnDescriptor: '域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义',\n link: '',\n type: 'input',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancer Vips',\n cnDescriptor: '负载均衡实例的 VIP 地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPrivateIps',\n enDescriptor: 'BackendPrivate Ips',\n cnDescriptor: '负载均衡绑定的后端服务的内网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPublicIps',\n enDescriptor: 'BackendPublic Ips',\n cnDescriptor: '负载均衡绑定的后端服务的外网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ProjectId',\n enDescriptor: 'Project ID',\n cnDescriptor: '负载均衡实例所属的项目 ID',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'VpcId',\n enDescriptor: 'Vpc ID',\n cnDescriptor: '负载均衡实例所属私有网络',\n link: '',\n type: 'input',\n },\n {\n key: 'SecurityGroup',\n enDescriptor: 'Security Group',\n cnDescriptor: '安全组ID',\n link: '',\n type: 'input',\n },\n {\n key: 'MasterZone',\n enDescriptor: 'Master Zone',\n cnDescriptor: '主可用区ID',\n link: '',\n type: 'input',\n },\n {\n key: 'WithRs',\n enDescriptor: 'WithRs',\n cnDescriptor: '负载均衡是否绑定后端服务',\n link: '',\n type: 'select',\n list: WithRs,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderType,\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/214/30685',\n namespace,\n fieldDescriptor: VCLBFilterFieldsDescriptor,\n};\nconst LBFields = {\n LoadBalancerIds: [],\n Forward: undefined,\n LoadBalancerName: '',\n Domain: '',\n LoadBalancerVips: [],\n BackendPublicIps: [],\n BackendPrivateIps: [],\n Limit: 20,\n Offset: 0,\n ProjectId: undefined,\n WithRs: {},\n VpcId: '',\n SecurityGroup: '',\n MasterZone: '',\n OrderBy: {},\n OrderType: {},\n};\n\nconst VCLB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n Port: '',\n Protocol: '',\n listener: '',\n // listenerAlias: 'ListenerId',\n queries: LBFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-bangkok' },\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'ap-seoul' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nconst clbNamespaceMap = {\n public: 'QCE/LB_PUBLIC',\n private: 'QCE/LB_PRIVATE',\n};\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\nexport default VCLB_STATE;\nexport {\n VCLBFilterFieldsDescriptor,\n templateQueryIdMap,\n VCLBInstanceAliasList,\n VCLBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n clbNamespaceMap,\n modifyDimensons,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMLBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CYNOSDB_MYSQL';\n\n// 按照驼峰方式命名,和SERVICES保持一致,abcDeF会成为angular组件名字\nconst queryEditorName = 'cynosdbMysqlQuery';\n\nconst cynosdbMysqlFilterFields = {\n Limit: 20,\n Offset: 0,\n OrderBy: {},\n OrderByType: {},\n InstanceIds: [],\n DbType: {},\n // Status: '',\n};\n\nconst cynosdbMysqlFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 1000,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '实例id列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: '创建时间', value: 'CREATETIME' },\n { text: '过期时间', value: 'PERIODENDTIME' },\n ],\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序类型',\n link: '',\n type: 'select',\n list: [\n { text: '升序', value: 'ASC' },\n { text: '降序', value: 'DESC' },\n ],\n },\n {\n key: 'DbType',\n enDescriptor: 'DbType',\n cnDescriptor: '引擎类型',\n link: '',\n type: 'select',\n list: [\n { text: 'MYSQL', value: 'MYSQL' },\n { text: 'POSTGRESQL', value: 'POSTGRESQL' },\n ],\n },\n // {\n // key: 'Status',\n // enDescriptor: 'Status',\n // cnDescriptor: '实例状态',\n // link: '',\n // type: 'input',\n // },\n];\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n];\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1003/48334',\n namespace,\n fieldDescriptor: cynosdbMysqlFilterFieldsDescriptor,\n};\n\nconst CYNOSDB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: cynosdbMysqlFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n// 和文件名字一样CYNOSDBMYSQL\nconst CYNOSDBMYSQLInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\nconst CYNOSDBInvalidDemensions = {\n instanceid: 'InstanceId',\n instanceId: 'InstanceId',\n};\nconst checkKeys = ['instanceId'];\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\n\nexport default CYNOSDB_STATE;\nexport {\n cynosdbMysqlFilterFieldsDescriptor,\n templateQueryIdMap,\n CYNOSDBMYSQLInstanceAliasList,\n CYNOSDBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n checkKeys,\n // params前缀为service的全大写\n GetInstanceQueryParams as CYNOSDBMYSQLGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nexport const SCFQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '支持FunctionName模糊匹配',\n link: '',\n type: 'input',\n },\n {\n key: 'Namespace',\n enDescriptor: 'Namespace',\n cnDescriptor: '云函数命名空间',\n link: '',\n type: 'input',\n },\n {\n key: 'Description',\n enDescriptor: 'Description',\n cnDescriptor: '函数描述,支持模糊搜索',\n link: '',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: 'AddTime', value: 'AddTime' },\n { text: 'ModTime', value: 'ModTime' },\n { text: 'FunctionName', value: 'FunctionName' },\n ],\n },\n {\n key: 'Order',\n enDescriptor: 'Order Direction',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: [\n { text: 'ASC', value: 'ASC' },\n { text: 'DESC', value: 'DESC' },\n ],\n },\n // {\n // key: 'Filters',\n // enDescriptor: 'Filters',\n // cnDescriptor: '按照标签键值对进行过滤',\n // link: '',\n // type: 'dropdownmulti',\n // },\n];\n\nconst SCF_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'FunctionName',\n version: '',\n queries: {\n Offset: 0,\n Limit: 20,\n OrderBy: {},\n Order: {},\n SearchKey: '',\n Namespace: '',\n Description: '',\n // Filters: {},\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst SCFInstanceAliasList = ['FunctionId', 'FunctionName'];\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nconst SCFInvalidDemensions = {\n functionName: 'FunctionName',\n namespace: 'Namespace',\n version: 'Version',\n};\n\nconst templateQueryIdMap = {\n instance: 'FunctionName',\n version: 'Version',\n};\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n version: 'version',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n Version: {\n dim_KeyInStorage: keyInStorage.version,\n dim_KeyInTarget: 'version',\n dim_KeyInMap: templateQueryIdMap.version,\n },\n};\nexport default SCF_STATE;\nexport {\n SCFInstanceAliasList,\n SCFInvalidDemensions,\n queryMonitorExtraConfg,\n regionSupported,\n templateQueryIdMap,\n keyInStorage,\n GetInstanceQueryParams as SCFGetInstanceQueryParams,\n};\n\n// monitor监控数据默认支持的维度\nexport const SCFDefaultDimensionList = ['functionName', 'namespace', 'version'];\n","module.exports = __WEBPACK_EXTERNAL_MODULE__26__;","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/CLS';\nconst queryEditorName = 'clsQuery';\n\nconst CLSInvalidDemensions = {\n // instanceid: 'TopicId',\n};\n\n// 需和文件名对应\nconst CLSInstanceAliasList = ['TopicId', 'TopicName'];\n\nconst templateQueryIdMap = {\n instance: 'TopicId',\n};\n\n// 需要缓存到storage的内容的key列表\n// const keyInStorage = {\n// fleet: 'fleet', // 实例队列\n// queue: 'queueName', // 会话队列\n// };\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\n// const queryMonitorExtraConfg = {\n// FleetId: {\n// dim_KeyInStorage: keyInStorage.fleet,\n// dim_KeyInTarget: 'FleetId',\n// dim_KeyInMap: templateQueryIdMap.FleetId,\n// },\n// Name: {\n// dim_KeyInStorage: keyInStorage.queue,\n// dim_KeyInTarget: 'Name',\n// dim_KeyInMap: templateQueryIdMap.Name,\n// },\n// };\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst CLSFilterFields = {\n Limit: 20,\n Offset: 0,\n topicName: [],\n topicId: [],\n logsetName: [],\n logsetId: [],\n tagKey: [],\n 'tag:tagKey': [],\n storageType: {},\n};\n\nconst CLSFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'topicName',\n enDescriptor: 'topicName',\n cnDescriptor: '日志主题名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'topicId',\n enDescriptor: 'topicId',\n cnDescriptor: '日志主题ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'logsetName',\n enDescriptor: 'logsetName',\n cnDescriptor: '日志集名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'logsetId',\n enDescriptor: 'logsetId',\n cnDescriptor: '日志集ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'tag:tagKey',\n enDescriptor: 'tag - tagKey',\n cnDescriptor: '标签键值对',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'storageType',\n enDescriptor: 'storageType',\n cnDescriptor: '日志主题的存储类型',\n link: '',\n type: 'select',\n list: [\n { text: '实时存储', value: 'hot' },\n { text: '离线存储', value: 'cold' },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/614/56454',\n namespace,\n fieldDescriptor: CLSFilterFieldsDescriptor,\n};\n\nconst CLS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'TopicId',\n uin: '',\n queries: CLSFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-bangkok' },\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'ap-seoul' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n // item.Dimensions = item.Dimensions.map((v) => CLSInvalidDemensions[v] || v);\n item.Dimensions = ['uin', 'TopicId'];\n });\n return metricTmp;\n}\nexport default CLS_STATE;\nexport {\n CLSFilterFieldsDescriptor,\n templateQueryIdMap,\n CLSInstanceAliasList,\n CLSInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n // queryMonitorExtraConfg,\n // fleetId,\n // keyInStorage,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CLSGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/SQLSERVER';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'sqlserverQuery';\n\nconst SQLSERVERInvalidDemensions = {\n resourceId: 'InstanceId',\n};\n\nconst SQLSERVERInstanceAliasList = ['InstanceId', 'Name'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst SQLSERVERNETFilterFields = {\n Limit: 20,\n Offset: 0,\n ProjectId: null,\n Status: {},\n InstanceIdSet: [],\n PayMode: {},\n VpcId: '',\n SubnetId: '',\n VipSet: [],\n InstanceNameSet: [],\n VersionSet: [],\n Zone: '',\n};\n\nconst SQLSERVERNETFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ProjectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n list: [\n { text: '申请中', value: 1 },\n { text: '运行中', value: 2 },\n { text: '受限运行中 (主备切换中)', value: 3 },\n { text: '已隔离', value: 4 },\n { text: '回收中', value: 5 },\n { text: '已回收', value: 6 },\n { text: '任务执行中', value: 7 },\n { text: '已下线', value: 8 },\n { text: '实例扩容中', value: 9 },\n { text: '实例迁移中', value: 10 },\n { text: '只读', value: 11 },\n { text: '重启中', value: 12 },\n ],\n },\n {\n key: 'InstanceIdSet',\n enDescriptor: 'InstanceIdSet',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'PayMode',\n enDescriptor: 'PayMode',\n cnDescriptor: '子网实例ID',\n link: '',\n type: 'select',\n list: [\n { text: '包年包月', value: 1 },\n { text: '按量计费', value: 0 },\n ],\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '实例所属VPC的唯一字符串ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '实例所属子网的唯一字符串ID',\n link: '',\n type: 'input',\n },\n {\n key: 'VipSet',\n enDescriptor: 'VipSet',\n cnDescriptor: '实例内网地址列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'InstanceNameSet',\n enDescriptor: 'InstanceNameSet',\n cnDescriptor: '实例名称列表, 模糊查询',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'VersionSet',\n enDescriptor: 'VersionSet',\n cnDescriptor: '实例版本代号列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Zone',\n enDescriptor: 'Zone',\n cnDescriptor: '实例可用区',\n link: '',\n type: 'dropdown',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/238/19969',\n namespace,\n fieldDescriptor: SQLSERVERNETFilterFieldsDescriptor,\n};\n\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-nanjing' },\n { value: 'ap-seoul' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-moscow' },\n { value: 'na-siliconvalley' },\n];\nconst SQLSERVER_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: SQLSERVERNETFilterFields,\n};\n\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['resourceId'];\n });\n return metricTmp;\n}\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nexport default SQLSERVER_STATE;\nexport {\n SQLSERVERNETFilterFieldsDescriptor,\n templateQueryIdMap,\n SQLSERVERInstanceAliasList,\n SQLSERVERInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n // 对应产品的service的全大写拼接InstanceQueryParams\n GetInstanceQueryParams as SQLSERVERGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/BM_INTRA_LB';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'bmIntraLbQuery';\n\nconst BMINTRALBInvalidDemensions = {\n vip: 'LoadBalancerVips',\n vpcId: 'VpcId',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst BMINTRALBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerVips', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst BMINTRALBFilterFields = {\n Limit: 20,\n Offset: 0,\n LoadBalancerIds: [],\n LoadBalancerName: [],\n LoadBalancerVips: [],\n};\n\nconst BMINTRALBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancerIds',\n cnDescriptor: '负载均衡器ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancerName',\n cnDescriptor: '负载均衡器名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancerVips',\n cnDescriptor: '负载均衡获得的公网IP地址',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1027/33280',\n namespace,\n fieldDescriptor: BMINTRALBFilterFieldsDescriptor,\n};\n\nconst BMINTRALB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n queries: BMINTRALBFilterFields,\n};\nconst BMLBValidMetricsT = ['Inpkg', 'Outpkg', 'Intraffic', 'Outtraffic', 'Connum', 'Req'];\nfunction isValidMetric(metric) {\n const validMetrics = _.map(BMLBValidMetricsT, _.toUpper);\n return _.indexOf(validMetrics, _.toUpper(metric.MetricName)) !== -1;\n}\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nexport default BMINTRALB_STATE;\nexport {\n BMINTRALBFilterFieldsDescriptor,\n templateQueryIdMap,\n BMINTRALBInstanceAliasList,\n BMINTRALBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n isValidMetric,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMINTRALBGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/BM_LB';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'bmLbQuery';\n\nconst CPMInvalidDemensions = {\n vip: 'LoadBalancerVips',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst BMLBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerVips', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst CPMFilterFields = {\n Limit: 20,\n Offset: 0,\n LoadBalancerIds: [],\n LoadBalancerName: [],\n LoadBalancerVips: [],\n};\n\nconst CPMFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancerIds',\n cnDescriptor: '负载均衡器ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancerName',\n cnDescriptor: '负载均衡器名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancerVips',\n cnDescriptor: '负载均衡获得的公网IP地址',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1027/33280',\n namespace,\n fieldDescriptor: CPMFilterFieldsDescriptor,\n};\n\nconst CPM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n queries: CPMFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nconst BMLBValidMetricsT = ['Inpkg', 'Outpkg', 'Intraffic', 'Outtraffic', 'Connum', 'Req'];\nfunction isValidMetric(metric) {\n const validMetrics = _.map(BMLBValidMetricsT, _.toUpper);\n return _.indexOf(validMetrics, _.toUpper(metric.MetricName)) !== -1;\n}\nexport default CPM_STATE;\nexport {\n CPMFilterFieldsDescriptor,\n templateQueryIdMap,\n BMLBInstanceAliasList,\n CPMInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n isValidMetric,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMLBGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/BM_PCX';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'bmPcxQuery';\n\nconst BMPCXInvalidDemensions = {\n peeringConnectionId: 'VpcPeerConnectionId',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst BMPCXInstanceAliasList = ['VpcPeerConnectionId', 'VpcPeerConnectionName'];\n\nconst templateQueryIdMap = {\n instance: 'VpcPeerConnectionId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst BMPCXFilterFields = {\n Limit: 20,\n Offset: 0,\n VpcPeerConnectionIds: [],\n};\n\nconst BMPCXFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'VpcPeerConnectionIds',\n enDescriptor: 'VpcPeerConnectionIds',\n cnDescriptor: '对等连接实例ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/product/1024/36903',\n namespace,\n fieldDescriptor: BMPCXFilterFieldsDescriptor,\n};\n\nconst BMPCX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'VpcPeerConnectionId',\n queries: BMPCXFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['peeringConnectionId'];\n });\n return metricTmp;\n}\nexport default BMPCX_STATE;\nexport {\n BMPCXFilterFieldsDescriptor,\n templateQueryIdMap,\n BMPCXInstanceAliasList,\n BMPCXInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMPCXGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/BLOCK_STORAGE';\nconst queryEditorName = 'cbsQuery';\n\nconst CBSInvalidDemensions = {\n diskId: 'DiskId',\n InstanceId: 'InstanceId',\n diskname: 'DiskName',\n unInstanceId: 'InstanceId',\n};\n\nconst CBSInstanceAliasList = ['DiskId', 'DiskName'];\n\nconst templateQueryIdMap = {\n instance: 'DiskId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst CBSFilterFields = {\n Limit: 20,\n Offset: 0,\n DiskIds: [],\n OrderField: [],\n Order: [],\n ReturnBindAutoSnapshotPolicy: false,\n};\n\nconst CBSFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'DiskIds',\n enDescriptor: 'DiskIds',\n cnDescriptor: '云硬盘ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Order',\n enDescriptor: 'Order',\n cnDescriptor: '排列顺序',\n link: '',\n type: 'select',\n list: [\n { text: '升序排列', value: 'ASC' },\n { text: '降序排列', value: 'DESC' },\n ],\n },\n {\n key: 'OrderField',\n enDescriptor: 'OrderField',\n cnDescriptor: '排序的依据字段',\n link: '',\n type: 'select',\n list: [\n { text: '云盘的创建时间排序', value: 'CREATE_TIME' },\n { text: '云盘的到期时间排序', value: 'DEADLINE' },\n ],\n },\n {\n key: 'ReturnBindAutoSnapshotPolicy',\n enDescriptor: 'ReturnBindAutoSnapshotPolicy',\n cnDescriptor: '否需要返回云盘绑定的定期快照策略ID',\n link: '',\n type: 'switch',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/362/16315',\n namespace,\n fieldDescriptor: CBSFilterFieldsDescriptor,\n};\n\nconst CBS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DiskId',\n queries: CBSFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nfunction isValidMetric(metricObj: any = {}) {\n const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n // console.log('dimension', dimension, dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1);\n return dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1;\n}\nexport default CBS_STATE;\nexport {\n CBSFilterFieldsDescriptor,\n templateQueryIdMap,\n CBSInstanceAliasList,\n CBSInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n isValidMetric,\n GetInstanceQueryParams as CBSGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CDN_LOG_DATA';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'cdnProvinceQuery';\n\nconst CDNPROVINCEInvalidDemensions = {\n domain: 'Domain',\n // isp: 'Isp',\n projectid: 'ProjectId',\n province: 'district',\n appid: 'AppId',\n};\n\n// 需和文件名对应\nconst CDNPROVINCEInstanceAliasList = ['Domain', 'ProjectId'];\n\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst CDNPROVINCEFilterFields = {\n Limit: 20,\n Offset: 0,\n origin: [],\n domain: [],\n resourceId: [],\n status: {},\n serviceType: {},\n projectId: [],\n domainType: {},\n fullUrlCache: {},\n https: {},\n originPullProtocol: {},\n tagKey: [],\n};\n\nconst CDNPROVINCEFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumberMulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst CDNPROVINCE_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n // Isp Province分别在两个接口,单独保存在state\n isp: '',\n district: '',\n queries: CDNPROVINCEFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// const regionSupported = [\n// { text: '华北地区(北京)', value: 'ap-beijing' },\n// { text: '西南地区(成都)', value: 'ap-chengdu' },\n// { text: '西南地区(重庆)', value: 'ap-chongqing' },\n// { text: '华南地区(广州)', value: 'ap-guangzhou' },\n// { text: '港澳台地区(中国香港)', value: 'ap-hongkong' },\n// { text: '亚太南部(孟买)', value: 'ap-mumbai' },\n// { text: '华东地区(南京)', value: 'ap-nanjing' },\n// { text: '华东地区(上海)', value: 'ap-shanghai' },\n// { text: '华东地区(上海金融)', value: 'ap-shanghai-fsi' },\n// { text: '华南地区(深圳金融)', value: 'ap-shenzhen-fsi' },\n// { text: '亚太东南(新加坡)', value: 'ap-singapore' },\n// { text: '亚太东北(东京)', value: 'ap-tokyo' },\n// { text: '欧洲地区(法兰克福)', value: 'eu-frankfurt' },\n// { text: '美国东部(弗吉尼亚)', value: 'na-ashburn' },\n// { text: '美国西部(硅谷)', value: 'na-siliconvalley' },\n// { text: '北美地区(多伦多)', value: 'na-toronto' },\n// ];\nexport default CDNPROVINCE_STATE;\nexport {\n CDNPROVINCEFilterFieldsDescriptor,\n templateQueryIdMap,\n CDNPROVINCEInstanceAliasList,\n CDNPROVINCEInvalidDemensions,\n namespace,\n queryEditorName,\n // regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CDNPROVINCEGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CEIP_SUMMARY';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'ceipSummaryQuery';\n\nconst CEIPInvalidDemensions = {\n vip: 'AddressIp',\n eip: 'AddressIp',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst CEIPSUMMARYInstanceAliasList = ['AddressId', 'AddressName', 'AddressIp'];\n\nconst templateQueryIdMap = {\n instance: 'AddressId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst CEIPFilterFields = {\n Limit: 20,\n Offset: 0,\n 'address-id': [],\n 'address-name': [],\n 'address-ip': [],\n 'address-status': {},\n 'is-arrears': {},\n 'address-isp': {},\n 'instance-id': [],\n 'private-ip-address': [],\n 'network-interface-id': [],\n};\n\nconst CEIPFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'address-id',\n enDescriptor: 'address-id',\n cnDescriptor: ' EIP 的唯一 ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'address-name',\n enDescriptor: 'address-name',\n cnDescriptor: 'EIP 名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'address-ip',\n enDescriptor: 'address-ip',\n cnDescriptor: 'EIP 的 IP 地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'address-status',\n enDescriptor: 'address-status',\n cnDescriptor: 'EIP 的状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: 'CREATING', value: 'CREATING' },\n { text: 'BINDING', value: 'BINDING' },\n { text: 'BIND', value: 'BIND' },\n { text: 'UNBINDING', value: 'UNBINDING' },\n { text: 'UNBIND', value: 'UNBIND' },\n { text: 'OFFLINING', value: 'OFFLINING' },\n { text: 'BIND_ENI', value: 'BIND_ENI' },\n ],\n },\n {\n key: 'instance-id',\n enDescriptor: 'instance-id',\n cnDescriptor: 'EIP 绑定的实例 ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'private-ip-address',\n cnDescriptor: 'EIP 绑定的内网 IP ',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'network-interface-id',\n enDescriptor: 'network-interface-id',\n cnDescriptor: ' EIP 绑定的弹性网卡 ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'is-arrears',\n enDescriptor: 'is-arrears',\n cnDescriptor: 'EIP 是否欠费',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '欠费状态', value: 'TRUE' },\n { text: '费用状态正常', value: 'FALSE' },\n ],\n },\n {\n key: 'address-isp',\n enDescriptor: 'address-isp',\n cnDescriptor: '运营商类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: 'BGP', value: 'BGP' },\n { text: 'CMCC', value: 'CMCC' },\n { text: 'CUCC', value: 'CUCC' },\n { text: 'CTCC', value: 'CTCC' },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/16702',\n namespace,\n fieldDescriptor: CEIPFilterFieldsDescriptor,\n};\n\nconst CEIP_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'AddressId',\n queries: CEIPFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['eip'];\n });\n return metricTmp;\n}\nexport default CEIP_STATE;\nexport {\n CEIPFilterFieldsDescriptor,\n templateQueryIdMap,\n CEIPSUMMARYInstanceAliasList,\n CEIPInvalidDemensions,\n namespace,\n queryEditorName,\n modifyDimensons,\n queryEditorConfig,\n GetInstanceQueryParams as CEIPSUMMARYGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { FildDescriptorType } from '../_base/types';\n\nexport const InstanceQueryDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 50,\n },\n {\n key: 'TopicName',\n enDescriptor: 'TopicName',\n cnDescriptor: '精确匹配TopicName',\n link: '',\n type: 'input',\n },\n {\n key: 'TagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '标签搜索',\n link: '',\n type: 'input',\n },\n];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nexport const InvalidDemensions = {\n topicId: 'TopicId',\n};\n\n// 因为cmq那边,以TopciName为主键\nexport const templateQueryIdMap = {\n instance: 'TopicName',\n subscription: 'SubscriptionId',\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n subscriptionId: 'subscriptionId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n subscriptionId: {\n dim_KeyInStorage: keyInStorage.subscriptionId,\n dim_KeyInTarget: 'subscriptionId',\n dim_KeyInMap: templateQueryIdMap.subscription,\n },\n};\n// 与名称挂钩的变量\nconst InstanceAliasList = ['TopicName', 'TopicId'];\nexport { InstanceAliasList, GetInstanceQueryParams, queryMonitorExtraConfg, keyInStorage };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'TopicName',\n subscriptionId: '',\n queries: {\n Offset: 0,\n Limit: 20,\n TopicName: '',\n TagKey: '',\n },\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/CPM';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'cpmQuery';\n\nconst CPMInvalidDemensions = {\n instanceId: 'InstanceId',\n // uniqid: 'InstanceId',\n};\n\nconst CPMInstanceAliasList = ['InstanceId', 'Name'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst CPMFilterFields = {\n Limit: 20,\n Offset: 0,\n DeviceClassCode: '',\n InstanceIds: [],\n WanIps: [],\n LanIps: [],\n Alias: '',\n VagueIp: '',\n AutoRenewFlag: {},\n VpcId: '',\n SubnetId: '',\n DeviceType: {},\n IsLuckyDevice: {},\n};\n\nconst CPMFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'DeviceClassCode',\n enDescriptor: 'DeviceClassCode',\n cnDescriptor: '机型ID',\n link: '',\n type: 'dropdown',\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '设备ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'WanIps',\n enDescriptor: 'WanIps',\n cnDescriptor: '外网IP数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LanIps',\n enDescriptor: 'LanIps',\n cnDescriptor: '内网IP数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Alias',\n enDescriptor: 'Alias',\n cnDescriptor: '设备名称',\n link: '',\n type: 'input',\n },\n {\n key: 'VagueIp',\n enDescriptor: 'VagueIp',\n cnDescriptor: '模糊IP查询',\n link: '',\n type: 'input',\n },\n {\n key: 'AutoRenewFlag',\n enDescriptor: 'AutoRenewFlag',\n cnDescriptor: '自动续费标志',\n link: '',\n type: 'select',\n list: [\n { text: '不自动续费', value: 0 },\n { text: '自动续费', value: 1 },\n ],\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络唯一ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '子网唯一ID',\n link: '',\n type: 'input',\n },\n {\n key: 'DeviceType',\n enDescriptor: 'DeviceType',\n cnDescriptor: '子网实例ID',\n link: '',\n type: 'select',\n list: [\n { text: '计算型', value: 'compute' },\n { text: '标准型', value: 'standard' },\n { text: '存储型', value: 'storage' },\n ],\n },\n {\n key: 'IsLuckyDevice',\n enDescriptor: 'IsLuckyDevice',\n cnDescriptor: '竞价实例机器过滤',\n link: '',\n type: 'select',\n list: [\n { text: '非竞价实例机器', value: 0 },\n { text: '竞价实例的机器', value: 1 },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/386/32904',\n namespace,\n fieldDescriptor: CPMFilterFieldsDescriptor,\n};\n\nconst CPM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: CPMFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['instanceId'];\n });\n return metricTmp;\n}\nexport default CPM_STATE;\nexport {\n CPMFilterFieldsDescriptor,\n templateQueryIdMap,\n CPMInstanceAliasList,\n CPMInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CPMGetInstanceQueryParams,\n};\n","import { cloneDeep, compact, forEach, get, isArray, isEmpty, isObject, omit, uniq } from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\n\nconst namespace = 'QCE/DSA';\nconst queryEditorName = 'ecdnQuery';\n\nconst ECDNInstanceAliasList = ['Domain'];\n\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\n\nconst ECDNInvalidDemensions = {\n domain: 'Domain',\n projectid: 'ProjectId',\n};\n\nconst ECDN_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: {\n Limit: 100,\n Offset: 0,\n origin: [],\n domain: [],\n resourceId: [],\n status: [],\n disable: [],\n projectId: [],\n fullUrlCache: [],\n https: [],\n originPullProtocol: [],\n area: [],\n tagKey: [],\n },\n};\n\nconst ECDNFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'origin',\n enDescriptor: 'Origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'domain',\n enDescriptor: 'Domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'ResourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'status',\n enDescriptor: 'Status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'disable',\n enDescriptor: 'Disable',\n cnDescriptor: '域名封禁状态',\n link: '',\n type: 'select',\n list: [\n { text: 'normal', value: 'normal' },\n { text: 'unlicensed', value: 'unlicensed' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'FullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'Https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'OriginPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'https', value: 'https' },\n { text: 'follow', value: 'follow' },\n ],\n },\n {\n key: 'area',\n enDescriptor: 'Area',\n cnDescriptor: '加速区域',\n link: '',\n type: 'select',\n list: [\n { text: 'mainland', value: 'mainland' },\n { text: 'overseas', value: 'overseas' },\n { text: 'global', value: 'global' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/570/42462',\n namespace,\n fieldDescriptor: ECDNFilterFieldsDescriptor,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!isEmpty(queries)) {\n params.Limit = get(queries, 'Limit', 20) || 20;\n params.Offset = get(queries, 'Offset', 0) || 0;\n const _queries = omit(queries, ['Offset', 'Limit']);\n const Filters: any[] = [];\n forEach(_queries, (item: any, key) => {\n if (isArray(item)) {\n item = compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Value: uniq(item).slice(0, 5) });\n }\n } else if (isObject(item)) {\n if (!isEmpty(get(item, 'value', []))) {\n Filters.push({ Name: key, Value: [get(item, 'value', [])].slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters.map((item) => {\n if (item.Name === 'domain') {\n return { ...item, Fuzzy: true };\n }\n return item;\n });\n return params;\n }\n }\n return params;\n}\n\nfunction modifyDimensons(metricItem) {\n const metricTmp = cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['domain', 'projectid'];\n });\n return metricTmp;\n}\n\nexport default ECDN_STATE;\n\nexport {\n ECDNFilterFieldsDescriptor,\n templateQueryIdMap,\n ECDNInstanceAliasList,\n ECDNInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as ECDNGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/ECM';\nconst queryEditorName = 'ecmQuery';\n\nconst ECMInvalidDemensions = {\n // diskId: 'InstanceId',\n uuid: 'UUID',\n // unInstanceId: 'InstanceId',\n};\n\nconst ECMInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst ECMFilterFields = {\n Limit: 20,\n Offset: 0,\n zone: [],\n 'zone-name': [],\n 'module-id': [],\n 'module-name': [],\n 'instance-id': [],\n 'instance-name': [],\n 'ip-address': [],\n 'instance-uuid': [],\n 'instance-state': {},\n 'internet-service-provider': [],\n 'instance-family': [],\n 'image-id': [],\n 'vpc-id': [],\n 'subnet-id': [],\n};\n\nconst ECMFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'zone',\n enDescriptor: 'zone',\n cnDescriptor: '可用区英文标识',\n link: '',\n type: 'dropdownMulti',\n },\n {\n key: 'zone-name',\n enDescriptor: 'zone-name',\n cnDescriptor: '排列顺序',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-id',\n enDescriptor: 'module-id',\n cnDescriptor: '模块ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-name',\n enDescriptor: 'module-name',\n cnDescriptor: '模块名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-id',\n enDescriptor: 'instance-id',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-name',\n enDescriptor: 'instance-name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ip-address',\n enDescriptor: 'ip-address',\n cnDescriptor: '内网/公网IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-uuid',\n enDescriptor: 'instance-uuid',\n cnDescriptor: '实例uuid',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-state',\n enDescriptor: 'instance-state',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '创建中', value: 'PENDING' },\n { text: '创建失败', value: 'LAUNCH_FAILED' },\n { text: '运行中', value: 'RUNNING' },\n { text: '关机', value: 'STOPPED' },\n { text: '开机中', value: 'STARTING' },\n { text: '关机中', value: 'STOPPING' },\n { text: '重启中', value: 'REBOOTING' },\n { text: '停止待销毁', value: 'SHUTDOWN' },\n { text: '销毁中', value: 'TERMINATING' },\n ],\n },\n {\n key: 'internet-service-provider',\n enDescriptor: 'internet-service-provider',\n cnDescriptor: '公网IP所属的运营商',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-family',\n enDescriptor: 'instance-family',\n cnDescriptor: '机型family',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'image-id',\n enDescriptor: 'image-id',\n cnDescriptor: '镜像ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: '实例的vpc id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'subnet-id',\n cnDescriptor: '实例的subnet id',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1108/42565',\n namespace,\n fieldDescriptor: ECMFilterFieldsDescriptor,\n};\n\nconst ECM_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: ECMFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// function isValidMetric(metricObj: any = {}) {\n// const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n// // console.log('dimension', dimension, dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1);\n// return dimension.length === 1 &&( _.indexOf(dimension, 'UUID') !== -1 || _.indexOf(dimension, 'uuid') !== -1);\n// }\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['UUID'];\n });\n return metricTmp;\n}\nexport default ECM_STATE;\nexport {\n ECMFilterFieldsDescriptor,\n templateQueryIdMap,\n ECMInstanceAliasList,\n ECMInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as ECMGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nconst namespace = 'QCE/POSTGRES';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'postgresQuery';\n\nconst PostgresFields = {\n 'db-instance-id': [],\n 'db-instance-name': [],\n};\n\nconst PostgresFieldsDescriptor: FildDescriptorType = [\n {\n key: 'db-instance-id',\n enDescriptor: 'DB Instance ID',\n cnDescriptor: 'DB 实例ID',\n link: '',\n type: 'inputMulti',\n min: 0,\n },\n {\n key: 'db-instance-name',\n enDescriptor: 'DB Instance Name',\n cnDescriptor: 'DB 实例名称',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/409/16773',\n namespace,\n fieldDescriptor: PostgresFieldsDescriptor,\n};\nconst POSTGRESInstanceAliasList = ['DBInstanceId', 'DBInstanceName'];\n\nconst POSTGRES_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DBInstanceId',\n queries: {\n Limit: 20,\n Offset: 0,\n Filters: { ...PostgresFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['resourceId'];\n });\n return metricTmp;\n}\nconst PostgreInvalidDemensions = {\n uid: 'DBInstanceId',\n resourceId: 'DBInstanceId',\n};\nconst templateQueryIdMap = {\n instance: 'DBInstanceId',\n};\nexport default POSTGRES_STATE;\n\nexport {\n PostgresFieldsDescriptor,\n POSTGRESInstanceAliasList,\n templateQueryIdMap,\n modifyDimensons,\n namespace,\n queryEditorName,\n queryEditorConfig,\n PostgreInvalidDemensions,\n GetInstanceQueryParams as POSTGRESGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VPC_NET_DETECT';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'vpcNetDetectQuery';\n\nconst VPCNETInvalidDemensions = {\n netdetectid: 'NetDetectId',\n netDetectId: 'NetDetectId',\n};\n\nconst VPCNETDETECTInstanceAliasList = ['NetDetectId', 'NetDetectName'];\n\nconst templateQueryIdMap = {\n instance: 'NetDetectId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst VPCNETFilterFields = {\n Limit: 20,\n Offset: 0,\n 'vpc-id': [],\n 'net-detect-id': [],\n 'subnet-id': [],\n 'net-detect-name': [],\n};\n\nconst VPCNETFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: 'VPC实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'net-detect-id',\n enDescriptor: 'net-detect-id',\n cnDescriptor: '网络探测实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'subnet-id',\n cnDescriptor: '子网实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'net-detect-name',\n enDescriptor: 'net-detect-name',\n cnDescriptor: '网络探测名称',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/38696',\n namespace,\n fieldDescriptor: VPCNETFilterFieldsDescriptor,\n};\n\nconst VPCNET_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'NetDetectId',\n queries: VPCNETFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['netDetectId'];\n });\n return metricTmp;\n}\nexport default VPCNET_STATE;\nexport {\n VPCNETFilterFieldsDescriptor,\n templateQueryIdMap,\n VPCNETDETECTInstanceAliasList,\n VPCNETInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as VPCNETDETECTGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/WAF';\nconst queryEditorName = 'wafQuery';\nconst WAFFilterFields = {\n Limit: 20,\n Offset: 0,\n origin: [],\n domain: [],\n resourceId: [],\n status: {},\n serviceType: {},\n projectId: [],\n domainType: {},\n fullUrlCache: {},\n https: {},\n originPullProtocol: {},\n tagKey: [],\n};\n\nconst WAFFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumberMulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/228/41118',\n namespace,\n fieldDescriptor: WAFFilterFieldsDescriptor,\n};\nconst WAF_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: WAFFilterFields,\n};\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n];\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n\nconst WAFInstanceAliasList = ['Domain', 'ProjectId'];\n\nconst WAFInvalidDemensions = {\n projectId: 'ProjectId',\n domain: 'Domain',\n};\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\nexport default WAF_STATE;\nexport {\n WAFFilterFieldsDescriptor,\n templateQueryIdMap,\n WAFInstanceAliasList,\n WAFInvalidDemensions,\n namespace,\n regionSupported,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as WAFGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nconst InstanceTypes = [\n { text: '主实例', value: 1 },\n { text: '备灾实例', value: 2 },\n { text: '只读实例', value: 3 },\n];\n\nconst Status = [\n { text: '创建中', value: 0 },\n { text: '运行中', value: 1 },\n { text: '隔离中', value: 4 },\n { text: '已隔离', value: 5 },\n];\n\nconst PayTypes = [\n { text: '包年包月', value: 0 },\n { text: '小时计费', value: 1 },\n];\n\nconst TaskStatus = [\n { text: '没有任务', value: 0 },\n { text: '升级中', value: 1 },\n { text: '数据导入中', value: 2 },\n { text: '开放Slave中', value: 3 },\n { text: '外网访问开通中', value: 4 },\n { text: '批量操作执行中', value: 5 },\n { text: '回档中', value: 6 },\n { text: '外网访问关闭中', value: 7 },\n { text: '密码修改中', value: 8 },\n { text: '实例名修改中', value: 9 },\n { text: '重启中', value: 10 },\n { text: '自建迁移中', value: 12 },\n { text: '删除库表中', value: 13 },\n { text: '灾备实例创建同步中', value: 14 },\n { text: '升级待切换', value: 15 },\n { text: '升级切换中', value: 16 },\n { text: '升级切换完成', value: 17 },\n];\n\nconst EngineVersions = [\n { text: '5.1', value: '5.1' },\n { text: '5.5', value: '5.5' },\n { text: '5.6', value: '5.6' },\n { text: '5.7', value: '5.7' },\n];\n\nconst OrderBy = [\n { text: 'InstanceId', value: 'InstanceId' },\n { text: 'InstanceName', value: 'InstanceName' },\n { text: 'CreateTime', value: 'CreateTime' },\n { text: 'DeadlineTime', value: 'DeadlineTime' },\n];\n\nconst OrderDirection = [\n { text: 'ASC', value: 'ASC' },\n { text: 'DESC', value: 'DESC' },\n];\n\nconst InitFlag = [\n { text: '未初始化', value: 0 },\n { text: '初始化', value: 1 },\n];\n\nconst CdbErrors = [\n { text: '未锁定', value: 0 },\n { text: '锁定', value: 1 },\n];\n\nconst CDBFields = {\n ProjectId: '',\n InstanceTypes: {},\n Vips: [],\n Status: {},\n Offset: 0,\n Limit: 20,\n SecurityGroupId: '',\n PayTypes: {},\n InstanceNames: [],\n TaskStatus: {},\n EngineVersions: {},\n VpcIds: [],\n ZoneIds: [],\n SubnetIds: [],\n CdbErrors: {},\n OrderBy: {},\n OrderDirection: {},\n InstanceIds: [],\n InitFlag: {},\n};\n\nconst CDBFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceNames',\n enDescriptor: 'Instance Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'Instance ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ZoneIds',\n enDescriptor: 'Zone ID',\n cnDescriptor: '可用区的ID',\n link: '',\n type: 'dropdownmulti',\n },\n {\n key: 'InstanceTypes',\n enDescriptor: 'Instance Type',\n cnDescriptor: '实例类型',\n link: '',\n multiple: true,\n type: 'select',\n list: InstanceTypes,\n },\n {\n key: 'EngineVersions',\n enDescriptor: 'Engine Version',\n cnDescriptor: '实例数据库引擎版本',\n link: '',\n multiple: true,\n type: 'select',\n list: EngineVersions,\n },\n {\n key: 'TaskStatus',\n enDescriptor: 'Task Status',\n cnDescriptor: '实例任务',\n link: '',\n multiple: true,\n type: 'select',\n list: TaskStatus,\n },\n {\n key: 'InitFlag',\n enDescriptor: 'Init Flag',\n cnDescriptor: '实例初始化状态',\n link: '',\n multiple: true,\n type: 'select',\n list: InitFlag,\n },\n {\n key: 'PayTypes',\n enDescriptor: 'Pay Type',\n cnDescriptor: '付费类型',\n link: '',\n multiple: true,\n type: 'select',\n list: PayTypes,\n },\n {\n key: 'CdbErrors',\n enDescriptor: 'CDB Errors',\n cnDescriptor: '实例锁定标记',\n link: '',\n multiple: true,\n type: 'select',\n list: CdbErrors,\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n link: '',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderDirection',\n enDescriptor: 'Order Direction',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderDirection,\n },\n {\n key: 'Vips',\n enDescriptor: 'Vip',\n cnDescriptor: '实例内网IP地址',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'VpcIds',\n enDescriptor: 'Vpc ID',\n cnDescriptor: '私有网络ID',\n link: 'https://cloud.tencent.com/document/api/215/15778',\n type: 'inputmulti',\n },\n {\n key: 'SubnetIds',\n enDescriptor: 'Subnet ID',\n cnDescriptor: '子网ID',\n link: 'https://cloud.tencent.com/document/api/215/15784',\n type: 'inputmulti',\n },\n {\n key: 'ProjectId',\n enDescriptor: 'Project ID',\n cnDescriptor: '项目ID',\n link: 'https://cloud.tencent.com/document/product/378/4400',\n type: 'input',\n },\n { \n key: 'SecurityGroupId',\n enDescriptor: 'Security Group ID',\n cnDescriptor: '安全组ID',\n link: 'https://cloud.tencent.com/document/api/236/15854',\n type: 'input',\n },\n];\n\nconst CDB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...CDBFields },\n};\n\nconst CDBInstanceAliasList = ['InstanceId', 'InstanceName', 'Vip'];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\nfunction isValidMetric(metricObj: any = {}) {\n const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n return (\n dimension.length === 2 &&\n ((_.indexOf(dimension, 'instanceid') !== -1 && _.indexOf(dimension, 'insttype') !== -1) ||\n (_.indexOf(dimension, 'InstanceId') !== -1 && _.indexOf(dimension, 'InstanceType') !== -1))\n );\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = item.Dimensions.map((i) => CDBInvalidDemensions[i] || i);\n });\n return metricTmp;\n}\nconst CDBInvalidDemensions = {\n instanceid: 'InstanceId',\n insttype: 'InstanceType',\n region: 'Region',\n};\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nexport default CDB_STATE;\n\nexport {\n CDBFieldsDescriptor,\n CDBInstanceAliasList,\n templateQueryIdMap,\n CDBInvalidDemensions,\n isValidMetric,\n modifyDimensons,\n GetInstanceQueryParams as CDBGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CES';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'cesQuery';\n\nconst CESInvalidDemensions = {\n uInstanceId: 'InstanceId',\n};\n\nconst CESInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst CESFilterFields = {\n Limit: 20,\n Offset: 0,\n InstanceIds: [],\n InstanceNames: [],\n OrderByKey: {},\n OrderByType: {},\n IpList: [],\n};\n\nconst CESFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '集群实例ID列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'InstanceNames',\n enDescriptor: 'InstanceNames',\n cnDescriptor: '集群实例名称列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'OrderByKey',\n enDescriptor: 'OrderByKey',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: '实例ID', value: 1 },\n { text: '实例名称', value: 2 },\n { text: '可用区', value: 3 },\n { text: '创建时间', value: 4 },\n ],\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n ],\n },\n {\n key: 'IpList',\n enDescriptor: 'IpList',\n cnDescriptor: '私有网络vip列表',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/845/30631',\n namespace,\n fieldDescriptor: CESFilterFieldsDescriptor,\n};\n\nconst CES_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: CESFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nexport default CES_STATE;\nexport {\n CESFilterFieldsDescriptor,\n templateQueryIdMap,\n CESInstanceAliasList,\n CESInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CESGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/DC';\nconst queryEditorName = 'dcQuery';\n\nconst DCFilterFields = {\n Limit: 20,\n Offset: 0,\n DirectConnectIds: [],\n};\n\nconst DCFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'DirectConnectIds',\n enDescriptor: 'DirectConnectIds',\n cnDescriptor: '物理专线 ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/216/34826',\n namespace,\n fieldDescriptor: DCFilterFieldsDescriptor,\n};\n\nconst DC_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DirectConnectId',\n queries: DCFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\nconst DCInstanceAliasList = ['DirectConnectId', 'DirectConnectName'];\n\nconst templateQueryIdMap = {\n instance: 'DirectConnectId',\n};\n\nconst DCInvalidDemensions = {\n directConnectId: 'DirectConnectId',\n directconnectid: 'DirectConnectId',\n};\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['directConnectId'];\n });\n return metricTmp;\n}\nexport default DC_STATE;\nexport {\n DCFilterFieldsDescriptor,\n templateQueryIdMap,\n DCInstanceAliasList,\n DCInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as DCGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/DCG';\nconst queryEditorName = 'dcgQuery';\n\nconst DCGInvalidDemensions = {\n directConnectGatewayId: 'DirectConnectGatewayId',\n};\n\nconst DCGInstanceAliasList = ['DirectConnectGatewayId', 'DirectConnectGatewayName'];\n\nconst templateQueryIdMap = {\n instance: 'DirectConnectGatewayId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst DCGFilterFields = {\n Limit: 20,\n Offset: 0,\n 'direct-connect-gateway-id': [],\n 'direct-connect-gateway-name': [],\n 'direct-connect-gateway-ip': [],\n 'gateway-type': {},\n 'network-type': {},\n 'ccn-id': [],\n 'vpc-id': [],\n};\n\nconst DCGFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'direct-connect-gateway-id',\n enDescriptor: 'direct-connect-gateway-id',\n cnDescriptor: '专线网关唯一ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-gateway-name',\n enDescriptor: 'direct-connect-gateway-name',\n cnDescriptor: '专线网关名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-gateway-ip',\n enDescriptor: 'direct-connect-gateway-ip',\n cnDescriptor: '专线网关IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'gateway-type',\n enDescriptor: 'gateway-type',\n cnDescriptor: '网关类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '普通型', value: 'NORMAL' },\n { text: 'NAT型', value: 'NAT' },\n ],\n },\n {\n key: 'network-type',\n enDescriptor: 'network-type',\n cnDescriptor: '网络类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '私有网络类型', value: 'VPC' },\n { text: '云联网类型', value: 'CCN' },\n ],\n },\n {\n key: 'ccn-id',\n enDescriptor: 'ccn-id',\n cnDescriptor: '专线网关所在云联网ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: '专线网关所在私有网络ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/30644',\n namespace,\n fieldDescriptor: DCGFilterFieldsDescriptor,\n};\n\nconst DCG_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DirectConnectGatewayId',\n queries: DCGFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default DCG_STATE;\nexport {\n DCGFilterFieldsDescriptor,\n templateQueryIdMap,\n DCGInstanceAliasList,\n DCGInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as DCGGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/DCX';\nconst queryEditorName = 'dcxQuery';\n\nconst DCXFilterFields = {\n 'direct-connect-tunnel-name': [],\n 'direct-connect-tunnel-id': [],\n 'direct-connect-id': [],\n};\n\nconst DCXFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'direct-connect-tunnel-name',\n enDescriptor: 'direct-connect-tunnel-name',\n cnDescriptor: '专用通道名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-tunnel-id',\n enDescriptor: 'direct-connect-tunnel-id',\n cnDescriptor: '专用通道实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-id',\n enDescriptor: 'direct-connect-id',\n cnDescriptor: '物理专线实例ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/216/19819',\n namespace,\n fieldDescriptor: DCXFilterFieldsDescriptor,\n};\n\nconst DCX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DirectConnectTunnelId',\n queries: {\n Limit: 20,\n Offset: 0,\n ...DCXFilterFields,\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n\nconst DCXInstanceAliasList = ['DirectConnectTunnelId', 'DirectConnectTunnelName'];\n\nconst templateQueryIdMap = {\n instance: 'DirectConnectTunnelId',\n};\n\nconst DCXInvalidDemensions = {\n directconnectconnid: 'DirectConnectTunnelId',\n directConnectConnId: 'DirectConnectTunnelId',\n};\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['directConnectConnId'];\n });\n return metricTmp;\n}\nexport default DCX_STATE;\nexport {\n DCXFilterFieldsDescriptor,\n templateQueryIdMap,\n DCXInstanceAliasList,\n DCXInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as DCXGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/ECM_LB';\nconst queryEditorName = 'ecmLbQuery';\n\nconst ECMLBInvalidDemensions = {\n vip: 'LoadBalancerVips',\n};\n\nconst ECMLBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst ECMLBFilterFields = {\n Limit: 20,\n Offset: 0,\n LoadBalancerIds: [],\n LoadBalancerName: [],\n LoadBalancerVips: [],\n BackendPrivateIps: [],\n VpcId: '',\n};\n\nconst ECMLBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancerIds',\n cnDescriptor: '负载均衡器ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancerName',\n cnDescriptor: '负载均衡器名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancerVips',\n cnDescriptor: '负载均衡获得的公网IP地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPrivateIps',\n enDescriptor: 'BackendPrivateIps',\n cnDescriptor: '绑定的后端服务的内网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '实例所属私有网络唯一ID',\n link: '',\n type: 'input',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1108/48459',\n namespace,\n fieldDescriptor: ECMLBFilterFieldsDescriptor,\n};\n\nconst ECM_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n queries: ECMLBFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n// function isValidMetric(metricObj: any = {}) {\n// const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n// // console.log('dimension', dimension, dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1);\n// return dimension.length === 1 &&( _.indexOf(dimension, 'UUID') !== -1 || _.indexOf(dimension, 'uuid') !== -1);\n// }\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n // item.Dimensions = ['UUID'];\n });\n return metricTmp;\n}\nexport default ECM_STATE;\nexport {\n ECMLBFilterFieldsDescriptor,\n templateQueryIdMap,\n ECMLBInstanceAliasList,\n ECMLBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as ECMLBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst InstanceTypes = [\n { text: '所有实例', value: 0 },\n { text: '正式实例', value: 1 },\n { text: '临时实例', value: 2 },\n { text: '只读实例', value: 3 },\n { text: '正式,只读,灾备实例', value: -1 },\n];\n\nconst ClusterTypes = [\n { text: '副本集实例', value: 0 },\n { text: '分片实例', value: 1 },\n { text: '所有实例', value: -1 },\n];\n\nconst Status = [\n { text: '待初始化', value: 0 },\n { text: '流程执行中', value: 1 },\n { text: '实例有效', value: 2 },\n { text: '实例已过期', value: -2 },\n];\n\nconst PayMode = [\n { text: '按量计费', value: 0 },\n { text: '包年包月', value: 1 },\n { text: '按量包年包月计费', value: -1 },\n];\n\nconst OrderBy = [\n { text: 'ProjectId', value: 'ProjectId' },\n { text: 'InstanceName', value: 'InstanceName' },\n { text: 'CreateTime', value: 'CreateTime' },\n];\n\nconst OrderByType = [\n { text: '升序', value: 'ASC' },\n { text: '降序', value: 'DESC' },\n];\n\nconst MongoDBFields = {\n InstanceIds: [],\n InstanceType: {},\n ClusterType: {},\n Status: [],\n VpcId: '',\n SubnetId: '',\n PayMode: {},\n Limit: 20,\n Offset: 0,\n OrderBy: '',\n OrderByType: '',\n};\n\nconst MONGODBFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstancesIds',\n cnDescriptor: '实例名称',\n type: 'inputmulti',\n },\n {\n key: 'InstanceType',\n enDescriptor: 'InstanceType',\n cnDescriptor: '实例类型',\n link: '',\n type: 'select',\n list: InstanceTypes,\n },\n {\n key: 'ClusterType',\n enDescriptor: 'ClusterType',\n cnDescriptor: '集群类型',\n link: '',\n type: 'select',\n list: ClusterTypes,\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n link: '',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络的ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '私有网络的子网ID,基础网络则不传该参数。入参设置该参数的同时,必须设置相应的VpcId',\n link: '',\n type: 'input',\n },\n {\n key: 'PayMode',\n enDescriptor: 'PayMode',\n cnDescriptor: '付费类型',\n link: '',\n type: 'select',\n list: PayMode,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderByType,\n },\n];\n\nconst MONGODB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...MongoDBFields },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n // select 单选\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst MONGODBInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst MONGODBInvalidDemensions = {\n target: 'InstanceId',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n replica: 'ReplicaSetId',\n};\n\nconst queryMonitorExtraConfg = {\n Replica: {\n dim_KeyInStorage: 'ReplicaSets',\n dim_KeyInTarget: 'replica',\n dim_KeyInMap: 'ReplicaSetId',\n dim_KeyInIns: 'ReplicaSetId',\n },\n Node: {\n dim_KeyInStorage: 'ReplicaNodeSets',\n dim_KeyInTarget: 'node',\n dim_KeyInMap: 'NodeId',\n dim_KeyInIns: 'NodeId',\n },\n};\nexport default MONGODB_STATE;\nexport {\n MONGODBFieldsDescriptor,\n MONGODBInvalidDemensions,\n MONGODBInstanceAliasList,\n templateQueryIdMap,\n queryMonitorExtraConfg,\n GetInstanceQueryParams as MONGODBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/QAAP';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'qaapQuery';\n\nconst QAAPInvalidDemensions = {\n channelId: 'InstanceId',\n};\n\nconst QAAPInstanceAliasList = ['InstanceId'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst QAAPFilterFields = {\n Limit: 20,\n Offset: 0,\n ProjectId: [],\n AccessRegion: [],\n RealServerRegion: [],\n GroupId: [],\n};\n\nconst QAAPFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ProjectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'AccessRegion',\n enDescriptor: 'AccessRegion',\n cnDescriptor: '接入地域',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'RealServerRegion',\n enDescriptor: 'RealServerRegion',\n cnDescriptor: '源站地域',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'GroupId',\n enDescriptor: 'GroupId',\n cnDescriptor: '通道组ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/608/36963',\n namespace,\n fieldDescriptor: QAAPFilterFieldsDescriptor,\n};\n\nconst QAAP_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: QAAPFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n // metricTmp.Dimensions.forEach((item) => {\n // item.Dimensions = ['netDetectId'];\n // });\n return metricTmp;\n}\nexport default QAAP_STATE;\nexport {\n QAAPFilterFieldsDescriptor,\n templateQueryIdMap,\n QAAPInstanceAliasList,\n QAAPInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as QAAPGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/TCAPLUS';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'tcaplusQuery';\n\nconst TCAPLUSInvalidDemensions = {\n // TableInstanceId: 'TableInstanceId',\n // ClusterId: 'ClusterId',\n};\n\n// 需和文件名对应\nconst TCAPLUSInstanceAliasList = ['TableInstanceId', 'TableName'];\n\nconst templateQueryIdMap = {\n instance: 'TableInstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst TCAPLUSFilterFields = {\n Limit: 20,\n Offset: 0,\n ClusterId: '',\n TableGroupIds: [],\n\n TableName: '',\n TableInstanceId: '',\n TableIdlType: {},\n TableType: {},\n ListElementNum: null,\n ReservedVolume: null,\n ReservedReadQps: null,\n ReservedWriteQps: null,\n Memo: '',\n FileName: '',\n FileExtType: '',\n FileSize: null,\n FileContent: '',\n};\n\nconst TCAPLUSFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ClusterId',\n enDescriptor: 'ClusterId',\n cnDescriptor: '表格所属集群ID',\n link: '',\n type: 'input',\n },\n {\n key: 'TableGroupIds',\n enDescriptor: 'TableGroupIds',\n cnDescriptor: '表格组ID列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'TableName',\n enDescriptor: 'TableName',\n cnDescriptor: '表格名称',\n link: '',\n type: 'input',\n },\n {\n key: 'TableInstanceId',\n enDescriptor: 'TableInstanceId',\n cnDescriptor: '表实例ID',\n link: '',\n type: 'input',\n },\n {\n key: 'TableIdlType',\n enDescriptor: 'TableIdlType',\n cnDescriptor: '表格描述语言类型',\n link: '',\n type: 'select',\n list: [\n { text: 'PROTO', value: 'PROTO' },\n { text: 'TDR', value: 'TDR' },\n ],\n },\n {\n key: 'TableType',\n enDescriptor: 'TableType',\n cnDescriptor: '表格数据结构类型',\n link: '',\n type: 'select',\n list: [\n { text: 'GENERIC', value: 'GENERIC' },\n { text: 'LIST', value: 'LIST' },\n ],\n },\n {\n key: 'ListElementNum',\n enDescriptor: 'ListElementNum',\n cnDescriptor: 'LIST表元素个数',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'ReservedVolume',\n enDescriptor: 'ReservedVolume',\n cnDescriptor: '表格预留容量(GB)',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'ReservedReadQps',\n enDescriptor: 'ReservedReadQps',\n cnDescriptor: '表格预留读CU',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'ReservedWriteQps',\n enDescriptor: 'ReservedWriteQps',\n cnDescriptor: '表格预留写CU',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'Memo',\n enDescriptor: 'Memo',\n cnDescriptor: '表格备注信息',\n link: '',\n type: 'input',\n },\n {\n key: 'FileName',\n enDescriptor: 'FileName',\n cnDescriptor: 'Key回档文件名,回档专用',\n link: '',\n type: 'input',\n },\n {\n key: 'FileExtType',\n enDescriptor: 'FileExtType',\n cnDescriptor: 'Key回档文件扩展名,回档专用',\n link: '',\n type: 'input',\n },\n {\n key: 'FileSize',\n enDescriptor: 'FileSize',\n cnDescriptor: 'Key回档文件大小,回档专用',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'FileContent',\n enDescriptor: 'FileContent',\n cnDescriptor: 'Key回档文件内容,回档专用',\n link: '',\n type: 'input',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/596/39664',\n namespace,\n fieldDescriptor: TCAPLUSFilterFieldsDescriptor,\n};\n\nconst TCAPLUS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'TableInstanceId',\n queries: TCAPLUSFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n params.ClusterId = _.get(queries, 'ClusterId', '') || '';\n params.TableGroupIds = _.get(queries, 'TableGroupIds', []) || [];\n queries = _.omit(queries, ['Offset', 'Limit', 'TableGroupIds', 'ClusterId']);\n const SelectedTables: any[] = [];\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n SelectedTables[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n SelectedTables[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n SelectedTables[key] = item;\n }\n });\n params.SelectedTables = SelectedTables;\n return params;\n}\n// 和其他产品的展示保持一致\nconst regonsMap = {\n 'ap-beijing': '华北地区(北京)',\n 'ap-guangzhou': '华南地区(广州)',\n 'ap-hongkong': '港澳台地区(中国香港)',\n 'ap-seoul': '亚太东北(首尔)',\n 'ap-shanghai': '华东地区(上海)',\n 'ap-singapore': '亚太东南(新加坡)',\n 'ap-tokyo': '亚太东北(东京)',\n 'eu-frankfurt': '欧洲地区(法兰克福)',\n 'na-ashburn': '美国东部(弗吉尼亚)',\n 'na-siliconvalley': '美国西部(硅谷)',\n};\nexport default TCAPLUS_STATE;\nexport {\n TCAPLUSFilterFieldsDescriptor,\n templateQueryIdMap,\n TCAPLUSInstanceAliasList,\n TCAPLUSInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regonsMap,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TCAPLUSGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VBC';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'vbcQuery';\n\nconst VBCInvalidDemensions = {\n // CcnId: 'CcnId',\n};\n\n// 需和文件名对应\nconst VBCInstanceAliasList = ['CcnId', 'CcnName'];\n\nconst templateQueryIdMap = {\n instance: 'CcnId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst VBCFilterFields = {\n Limit: 20,\n Offset: 0,\n 'ccn-id': [],\n 'ccn-name': [],\n 'ccn-description': [],\n state: {},\n};\n\nconst VBCFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ccn-id',\n enDescriptor: 'ccn-id',\n cnDescriptor: 'CCN实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ccn-name',\n enDescriptor: 'ccn-name',\n cnDescriptor: 'CCN名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ccn-description',\n enDescriptor: 'ccn-description',\n cnDescriptor: 'CCN描述',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'state',\n enDescriptor: 'state',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '隔离中', value: 'ISOLATED' },\n { text: '运行中', value: 'AVAILABLE' },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/19199',\n namespace,\n fieldDescriptor: VBCFilterFieldsDescriptor,\n};\n\nconst VBC_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'CcnId',\n DRegion: '',\n SRegion: '',\n queries: VBCFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n// const regionSupported = [\n// { text: '华北地区(北京)', value: 'ap-beijing' },\n// { text: '西南地区(成都)', value: 'ap-chengdu' },\n// { text: '西南地区(重庆)', value: 'ap-chongqing' },\n// { text: '华南地区(广州)', value: 'ap-guangzhou' },\n// { text: '港澳台地区(中国香港)', value: 'ap-hongkong' },\n// { text: '亚太南部(孟买)', value: 'ap-mumbai' },\n// { text: '华东地区(南京)', value: 'ap-nanjing' },\n// { text: '华东地区(上海)', value: 'ap-shanghai' },\n// { text: '华东地区(上海金融)', value: 'ap-shanghai-fsi' },\n// { text: '华南地区(深圳金融)', value: 'ap-shenzhen-fsi' },\n// { text: '亚太东南(新加坡)', value: 'ap-singapore' },\n// { text: '亚太东北(东京)', value: 'ap-tokyo' },\n// { text: '欧洲地区(法兰克福)', value: 'eu-frankfurt' },\n// { text: '美国东部(弗吉尼亚)', value: 'na-ashburn' },\n// { text: '美国西部(硅谷)', value: 'na-siliconvalley' },\n// { text: '北美地区(多伦多)', value: 'na-toronto' },\n// ];\nexport default VBC_STATE;\nexport {\n VBCFilterFieldsDescriptor,\n templateQueryIdMap,\n VBCInstanceAliasList,\n VBCInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n // regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as VBCGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VPNGW';\nconst queryEditorName = 'vpngwQuery';\n\nconst VPNGWInvalidDemensions = {\n vpnGwId: 'VpnGatewayId',\n};\n\nconst VPNGWInstanceAliasList = ['VpnGatewayId', 'VpnGatewayName'];\n\nconst templateQueryIdMap = {\n instance: 'VpnGatewayId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst VPNGWFilterFields = {\n Limit: 20,\n Offset: 0,\n 'vpc-id': [],\n 'vpn-gateway-id': [],\n 'vpn-gateway-name': [],\n type: {},\n 'public-ip-address': [],\n 'renew-flag': {},\n zone: [],\n};\n\nconst VPNGWFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: 'VPC实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-gateway-id',\n enDescriptor: 'vpn-gateway-id',\n cnDescriptor: 'VPN实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-gateway-name',\n enDescriptor: 'vpn-gateway-name',\n cnDescriptor: 'VPN实例名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'type',\n enDescriptor: 'type',\n cnDescriptor: 'VPN网关类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: 'IPSEC', value: 'IPSEC' },\n { text: 'SSL', value: 'SSL' },\n ],\n },\n {\n key: 'public-ip-address',\n enDescriptor: 'public-ip-address',\n cnDescriptor: '公网IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'renew-flag',\n enDescriptor: 'renew-flag',\n cnDescriptor: '网关续费类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '手动续费', value: 'NOTIFY_AND_MANUAL_RENEW' },\n { text: '自动续费', value: 'NOTIFY_AND_AUTO_RENEW' },\n ],\n },\n {\n key: 'zone',\n enDescriptor: 'zone',\n cnDescriptor: 'VPN所在可用区',\n link: '',\n type: 'dropdownMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/17514',\n namespace,\n fieldDescriptor: VPNGWFilterFieldsDescriptor,\n};\n\nconst VPNGW_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'VpnGatewayId',\n queries: VPNGWFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default VPNGW_STATE;\nexport {\n VPNGWFilterFieldsDescriptor,\n templateQueryIdMap,\n VPNGWInstanceAliasList,\n VPNGWInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as VPNGWGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VPNX';\nconst queryEditorName = 'vpnxQuery';\n\nconst VPNXInvalidDemensions = {\n vpnConnId: 'VpnConnectionId',\n};\n\nconst VPNXInstanceAliasList = ['VpnConnectionId', 'VpnConnectionName'];\n\nconst templateQueryIdMap = {\n instance: 'VpnConnectionId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst VPNXFilterFields = {\n Limit: 20,\n Offset: 0,\n 'vpc-id': [],\n 'vpn-gateway-id': [],\n 'customer-gateway-id': [],\n 'vpn-connection-name': [],\n 'vpn-connection-id': [],\n};\n\nconst VPNXFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: 'VPC实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-gateway-id',\n enDescriptor: 'vpn-gateway-id',\n cnDescriptor: 'VPN实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'customer-gateway-id ',\n enDescriptor: 'customer-gateway-id ',\n cnDescriptor: '对端网关实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-connection-name',\n enDescriptor: 'vpn-connection-name',\n cnDescriptor: '通道名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-connection-id',\n enDescriptor: 'vpn-connection-id',\n cnDescriptor: '通道实例ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/17515',\n namespace,\n fieldDescriptor: VPNXFilterFieldsDescriptor,\n};\n\nconst VPNX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'VpnConnectionId',\n queries: VPNXFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default VPNX_STATE;\nexport {\n VPNXFilterFieldsDescriptor,\n templateQueryIdMap,\n VPNXInstanceAliasList,\n VPNXInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as VPNXGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nconst LighthouseStateType = [\n { text: '创建中', value: 'PENDING' },\n { text: '创建失败', value: 'LAUNCH_FAILED' },\n { text: '运行中', value: 'RUNNING' },\n { text: '关机', value: 'STOPPED' },\n { text: '开机中', value: 'STARTING' },\n { text: '关机中', value: 'STOPPING' },\n { text: '重启中', value: 'REBOOTING' },\n { text: '停止待销毁', value: 'SHUTDOWN' },\n { text: '销毁中', value: 'TERMINATING' },\n];\n\nconst LighthouseFilterFields = {\n zone: [],\n 'instance-name': [],\n 'instance-state': {},\n 'private-ip-address': [],\n 'public-ip-address': [],\n};\n\nconst LighthouseFilterFieldsDescriptor = [\n {\n key: 'instance-name',\n enDescriptor: 'Instance Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'Private IP Address',\n cnDescriptor: '实例主网卡的内网IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'public-ip-address',\n enDescriptor: 'Public IP Address',\n cnDescriptor: '实例主网卡的公网IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'zone',\n enDescriptor: 'Zone',\n cnDescriptor: '可用区',\n link: '',\n type: 'dropdownmulti',\n },\n {\n key: 'instance-state',\n enDescriptor: 'Instance State',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n list: LighthouseStateType,\n },\n];\n\nconst LIGHTHOUSE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n InstanceIds: [''],\n Filters: { ...LighthouseFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.InstanceIds)) {\n const InstanceIds = _.compact(queries.InstanceIds);\n if (_.uniq(InstanceIds).length > 0) {\n params.InstanceIds = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst LIGHTHOUSEInstanceAliasList = ['InstanceId', 'InstanceName', 'PrivateIpAddresses', 'PublicIpAddresses'];\n\nconst LighthouseInvalidDemensions = {\n instanceid: 'InstanceId',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\n\nexport default LIGHTHOUSE_STATE;\n\nexport {\n LighthouseFilterFieldsDescriptor,\n LIGHTHOUSEInstanceAliasList,\n LighthouseInvalidDemensions,\n templateQueryIdMap,\n modifyDimensons,\n GetInstanceQueryParams as LIGHTHOUSEGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nexport const CFSQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'FileSystemId',\n enDescriptor: 'File System Id',\n cnDescriptor: '文件系统 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络(VPC) ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '子网 ID',\n link: '',\n type: 'input',\n },\n];\n\nconst CFS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'FileSystemId',\n version: '',\n queries: {\n Offset: 0,\n Limit: 20,\n FileSystemId: '',\n VpcId: '',\n SubnetId: '',\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst CFSInstanceAliasList = ['FileSystemId', 'FsName'];\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nconst CFSInvalidDemensions = {\n // functionName: 'FunctionName',\n // namespace: 'Namespace'\n};\n\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-nanjing' },\n { value: 'ap-seoul' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nexport default CFS_STATE;\nexport {\n CFSInstanceAliasList,\n CFSInvalidDemensions,\n templateQueryIdMap,\n regionSupported,\n GetInstanceQueryParams as CFSGetInstanceQueryParams,\n};\n\n// monitor监控数据默认支持的维度\n// export const SCFDefaultDimensionList = ['functionName', 'namespace', 'version'];\n","import _ from 'lodash';\nimport { FildDescriptorType } from '../_base/types';\n\nexport const InstanceQueryDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 50,\n },\n {\n key: 'QueueName',\n enDescriptor: 'QueueName',\n cnDescriptor: '精确匹配QueueName',\n link: '',\n type: 'input',\n },\n {\n key: 'TagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '标签搜索',\n link: '',\n type: 'input',\n },\n];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nexport const InvalidDemensions = {\n queueId: 'QueueId',\n queueName: 'QueueName',\n};\n\nexport const templateQueryIdMap = {\n instance: 'QueueName',\n};\n\n// 与名称挂钩的变量\nconst InstanceAliasList = ['QueueName', 'QueueId'];\nexport { InstanceAliasList, GetInstanceQueryParams };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'QueueName',\n queries: {\n Offset: 0,\n Limit: 20,\n QueueName: '',\n TagKey: '',\n },\n};\n","import _ from 'lodash';\nconst instanceChargeTypes = [\n { text: '预付费', value: 'PREPAID' },\n { text: '后付费', value: 'POSTPAID_BY_HOUR' },\n { text: 'CDH付费', value: 'CDHPAID' },\n];\n\nconst CVMFilterFields = {\n zone: [],\n 'project-id': [],\n 'host-id': [],\n 'vpc-id': [],\n 'subnet-id': [],\n 'instance-id': [],\n 'security-group-id': [],\n 'instance-name': [],\n 'instance-charge-type': {},\n 'private-ip-address': [],\n 'public-ip-address': [],\n 'tag-key': [],\n};\n\nconst CVMFilterFieldsDescriptor = [\n {\n key: 'zone',\n enDescriptor: 'Zone',\n cnDescriptor: '可用区',\n link: '',\n type: 'dropdownmulti',\n },\n {\n key: 'project-id',\n enDescriptor: 'Project ID',\n cnDescriptor: '项目ID',\n link: 'https://cloud.tencent.com/document/api/378/4400',\n type: 'inputNumbermulti',\n },\n {\n key: 'host-id',\n enDescriptor: 'CDH ID',\n cnDescriptor: 'CDH ID',\n link: 'https://cloud.tencent.com/document/product/416/19730',\n type: 'inputmulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'VPC ID',\n cnDescriptor: 'VPC ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'Subnet ID',\n cnDescriptor: '子网ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'instance-id',\n enDescriptor: 'Instance ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'security-group-id',\n enDescriptor: 'Security Group ID',\n cnDescriptor: '安全组ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'instance-name',\n enDescriptor: 'Instance Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'tag-key',\n enDescriptor: '标签简',\n cnDescriptor: '标签简',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'instance-charge-type',\n enDescriptor: 'Instance Charge Type',\n cnDescriptor: '实例计费模式',\n link: '',\n type: 'select',\n list: instanceChargeTypes,\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'Private IP Address',\n cnDescriptor: '实例主网卡的内网IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'public-ip-address',\n enDescriptor: 'Public IP Address',\n cnDescriptor: '实例主网卡的公网IP,包含实例创建时自动分配的IP和实例创建后手动绑定的弹性IP',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst CVM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n InstanceIds: [''],\n Filters: { ...CVMFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.InstanceIds)) {\n const InstanceIds = _.compact(queries.InstanceIds);\n if (_.uniq(InstanceIds).length > 0) {\n params.InstanceIds = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst CVMInstanceAliasList = ['InstanceId', 'InstanceName', 'PrivateIpAddresses', 'PublicIpAddresses'];\n\nconst CVMValidMetricsT = [\n 'CPUUsage',\n 'CpuLoadavg',\n 'Cpuloadavg5m',\n 'Cpuloadavg15m',\n 'BaseCpuUsage',\n 'GpuMemTotal',\n 'GpuMemUsage',\n 'GpuMemUsed',\n 'GpuPowDraw',\n 'GpuPowLimit',\n 'GpuPowUsage',\n 'GpuTemp',\n 'GpuUtil',\n 'LanOuttraffic',\n 'LanIntraffic',\n 'LanOutpkg',\n 'LanInpkg',\n 'WanOuttraffic',\n 'WanIntraffic',\n 'WanOutpkg',\n 'WanInpkg',\n 'AccOuttraffic',\n 'TcpCurrEstab',\n 'TimeOffset',\n 'MemUsed',\n 'MemUsage',\n 'CvmDiskUsage',\n 'BaseCpuUsage',\n 'VmDiskReadIops',\n];\n// const CVMInvalidDemensions = {\n// 'vm_uuid': 'InstanceId',\n// 'vmUuid': 'InstanceId',\n// };\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nfunction isValidMetric(metric) {\n const CVMValidMetrics = _.map(CVMValidMetricsT, _.toUpper);\n return _.indexOf(CVMValidMetrics, _.toUpper(metric.MetricName)) !== -1;\n}\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\nexport default CVM_STATE;\nexport {\n CVMFilterFieldsDescriptor,\n CVMInstanceAliasList,\n isValidMetric,\n modifyDimensons,\n templateQueryIdMap,\n // CVMInvalidDemensions,\n GetInstanceQueryParams as CVMGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst namespace = 'QCE/PCX';\n\nconst PCXFields = {\n limit: 20,\n offset: 0,\n peeringConnectionId: '',\n peeringConnectionName: '',\n vpcId: '',\n state: undefined,\n};\n\nconst PCX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'peeringConnectionId',\n queries: { ...PCXFields },\n};\n\nconst StateTypes = [\n { text: '申请中', value: 0 },\n { text: '连接成功', value: 1 },\n { text: '已过期', value: 2 },\n { text: '对端已拒绝', value: 3 },\n { text: '对端已删除', value: 4 },\n];\n\nconst PCXFieldsDescriptor = [\n {\n key: 'offset',\n enDescriptor: 'offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'limit',\n enDescriptor: 'limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为50',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 50,\n },\n {\n key: 'peeringConnectionId',\n enDescriptor: 'PeeringConnection Id',\n cnDescriptor: '私有网络对等连接 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'peeringConnectionName',\n enDescriptor: 'PeeringConnection Name',\n cnDescriptor: '对等连接名称',\n link: '',\n type: 'input',\n },\n {\n key: 'vpcId',\n enDescriptor: 'vpcId',\n cnDescriptor: '发起方私有网络 ID 值',\n link: 'https://cloud.tencent.com/document/api/215/1372',\n type: 'dropdown',\n },\n {\n key: 'state',\n enDescriptor: 'state',\n cnDescriptor: '连接状态',\n link: '',\n type: 'select',\n list: StateTypes,\n },\n];\n\nconst PCXInstanceAliasList = ['peeringConnectionId', 'peeringConnectionName'];\n\nconst templateQueryIdMap = {\n instance: 'peeringConnectionId',\n};\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.limit = _.get(queries, 'limit', 20) || 20;\n params.offset = _.get(queries, 'offset', 0) || 0;\n queries = _.omit(queries, ['offset', 'limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nexport default PCX_STATE;\n\nexport {\n PCXInstanceAliasList,\n PCXFieldsDescriptor,\n templateQueryIdMap,\n namespace,\n GetInstanceQueryParams as PCXGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst BillingMode = [\n { text: '按量计费', value: 'postpaid' },\n { text: '包年包月', value: 'prepaid' },\n];\n\nconst AutoRenew = [\n { text: '手动续费', value: 0 },\n { text: '自动续费', value: 1 },\n { text: '明确不自动续费', value: 2 },\n];\n\nconst Status = [\n { text: '待初始化', value: 0 },\n { text: '流程执行中', value: 1 },\n { text: '运行中', value: 2 },\n { text: '已隔离', value: -2 },\n { text: '待删除', value: -3 },\n];\n\nconst TypeVersion = [\n { text: '单机版', value: 1 },\n { text: '主从版', value: 2 },\n { text: '集群版', value: 3 },\n];\n\nconst OrderBy = [\n { text: 'projectId', value: 'projectId' },\n { text: 'instancename', value: 'instancename' },\n { text: 'createtime', value: 'createtime' },\n { text: 'type', value: 'type' },\n { text: 'curDeadline', value: 'curDeadline' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\nconst Type = [\n { text: 'Redis老集群版', value: 1 },\n { text: 'Redis 2.8主从版', value: 2 },\n { text: 'CKV主从版', value: 3 },\n { text: 'CKV集群版', value: 4 },\n { text: 'Redis 2.8单机版', value: 5 },\n { text: 'Redis 4.0主从版', value: 6 },\n { text: 'Redis 4.0集群版', value: 7 },\n { text: 'Redis5.0主从版', value: 8 },\n { text: 'Redis5.0集群版', value: 9 },\n];\n\nconst RedisFields = {\n InstanceId: '',\n OrderBy: '',\n OrderType: null,\n VpcIds: [],\n SubnetIds: [],\n ProjectIds: [],\n SearchKey: '',\n InstanceName: '',\n UniqVpcIds: [],\n UniqSubnetIds: [],\n Status: [],\n TypeVersion: null,\n EngineName: '',\n AutoRenew: null,\n BillingMode: '',\n Type: null,\n};\n\nconst RedisFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'InstancesId',\n cnDescriptor: '实例id',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderType',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderType,\n },\n {\n key: 'VpcIds',\n enDescriptor: 'VpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:47525',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SubnetIds',\n enDescriptor: 'SubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:56854',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ProjectIds',\n enDescriptor: 'ProjectIds',\n cnDescriptor: '项目ID 组成的数组',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '查找实例的ID',\n link: '',\n type: 'input',\n },\n {\n key: 'InstanceName',\n enDescriptor: 'InstanceName',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'UniqVpcIds',\n enDescriptor: 'UniqVpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:vpc-sad23jfdfk',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'UniqSubnetIds',\n enDescriptor: 'UniqSubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:subnet-fdj24n34j2',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'TypeVersion',\n enDescriptor: 'TypeVersion',\n cnDescriptor: '类型版本',\n link: '',\n type: 'select',\n list: TypeVersion,\n },\n {\n key: 'EngineName',\n enDescriptor: 'EngineName',\n cnDescriptor: '引擎信息:Redis-2.8,Redis-4.0,CKV',\n link: '',\n type: 'input',\n },\n {\n key: 'AutoRenew',\n enDescriptor: 'AutoRenew',\n cnDescriptor: '续费模式',\n multiple: true,\n type: 'select',\n list: AutoRenew,\n },\n {\n key: 'BillingMode',\n enDescriptor: 'BillingMode',\n cnDescriptor: '计费模式:postpaid-按量计费;prepaid-包年包月',\n link: '',\n type: 'select',\n list: BillingMode,\n },\n {\n key: 'Type',\n enDescriptor: 'Type',\n cnDescriptor: '实例类型',\n link: '',\n type: 'select',\n list: Type,\n },\n];\n\nconst REDIS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...RedisFields },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n // select 单选\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nfunction isValidMetric(metricObj: any = {}) {\n const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n return dimension.length === 1 && _.indexOf(dimension, 'instanceid') !== -1;\n}\n\nconst REDISInstanceAliasList = ['InstanceId', 'InstanceName', 'WanIp'];\n\nconst RedisInvalidDemensions = {\n redis_uuid: 'InstanceId',\n instanceid: 'InstanceId',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nexport default REDIS_STATE;\nexport {\n RedisFieldsDescriptor,\n RedisInvalidDemensions,\n templateQueryIdMap,\n REDISInstanceAliasList,\n isValidMetric,\n GetInstanceQueryParams as REDISGetInstanceQueryParams,\n};\n","import { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst ApplicationType = [\n { text: '所有', value: '' },\n { text: '容器应用', value: 'C' },\n { text: '普通应用/虚拟机应用', value: 'V' },\n];\n\nconst MicroserviceType = [\n { text: '所有', value: '' },\n { text: '普通应用', value: 'N' },\n { text: 'Mesh应用', value: 'M' },\n { text: '微服务网关应用', value: 'G' },\n { text: '原生应用', value: 'NATIVE' },\n];\n\nconst ApplicationResourceType = [\n { text: '默认资源类型', value: 'DEF' },\n { text: '微服务网关资源', value: 'GW' },\n];\n\nconst TSFFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'SearchWord',\n enDescriptor: 'SearchWord',\n cnDescriptor: '搜索关键字',\n link: '',\n type: 'input',\n },\n {\n key: 'ApplicationIdList',\n enDescriptor: 'ApplicationIdList',\n cnDescriptor: '应用ID 组成的数组',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ApplicationType',\n enDescriptor: 'ApplicationType',\n cnDescriptor: '应用类型',\n link: '',\n type: 'select',\n list: ApplicationType,\n },\n {\n key: 'MicroserviceType',\n enDescriptor: 'MicroserviceType',\n cnDescriptor: '应用的微服务类型',\n link: '',\n type: 'select',\n list: MicroserviceType,\n },\n {\n key: 'ApplicationResourceTypeList',\n enDescriptor: 'ApplicationResourceTypeList',\n cnDescriptor: '应用资源类型数组',\n link: '',\n type: 'select',\n multiple: true,\n list: ApplicationResourceType,\n },\n];\n\nconst TSF_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ApplicationId',\n queries: {\n Limit: 20,\n Offset: 0,\n SearchWord: '',\n OrderBy: '',\n OrderType: null,\n ApplicationType: '',\n MicroserviceType: '',\n ApplicationResourceTypeList: [],\n ApplicationIdList: [],\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\nconst TSFInstanceAliasList = ['ApplicationId', 'ApplicationName'];\n\nconst TSFInvalidDemensions = {\n applicationid: 'ApplicationId',\n};\n\nconst templateQueryIdMap = {\n instance: 'ApplicationId',\n};\n\nexport default TSF_STATE;\nexport {\n TSFInvalidDemensions,\n templateQueryIdMap,\n TSFInstanceAliasList,\n TSFFieldsDescriptor,\n GetInstanceQueryParams as TSFGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst networkTypes = [\n { text: 'BGP', value: 'BGP' },\n { text: 'SINGLEISP', value: 'SINGLEISP' },\n { text: 'ANYCAST', value: 'ANYCAST' },\n];\n\nconst chargeTypes = [\n { text: 'top5计费', value: 'TOP5_POSTPAID_BY_MONTH' },\n { text: '月95计费', value: 'PERCENT95_POSTPAID_BY_MONTH' },\n];\nconst BWPFilterFields = {\n 'bandwidth-package_id': [],\n 'bandwidth-package-name': [],\n 'network-type': [],\n 'charge-type': [],\n};\n\nconst BWPFilterFieldsDescriptor = [\n {\n key: 'bandwidth-package_id',\n enDescriptor: 'BandwidthPackage Id',\n cnDescriptor: '带宽包ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'bandwidth-package-name',\n enDescriptor: 'BandwidthPackage Name',\n cnDescriptor: '带宽包名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'network-type',\n enDescriptor: 'network type',\n cnDescriptor: '带宽包类型',\n link: '',\n type: 'select',\n list: networkTypes,\n },\n {\n key: 'charge-type',\n enDescriptor: 'charge type',\n cnDescriptor: '带宽包计费类型',\n link: '',\n type: 'select',\n list: chargeTypes,\n },\n];\n\nconst BWP_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'BandwidthPackageId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n BandwidthPackageIds: [''],\n Filters: { ...BWPFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.BandwidthPackageIds)) {\n const BandwidthPackageIds = _.compact(queries.BandwidthPackageIds);\n if (_.uniq(BandwidthPackageIds).length > 0) {\n params.BandwidthPackageIds = _.uniq(BandwidthPackageIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst BWPInstanceAliasList = ['BandwidthPackageId', 'BandwidthPackageName'];\n\nconst templateQueryIdMap = {\n instance: 'BandwidthPackageId',\n};\n\nconst BWPInvalidDemensions = {\n bandwidthPackageId: 'BandwidthPackageId',\n};\nexport default BWP_STATE;\nexport {\n BWPFilterFieldsDescriptor,\n templateQueryIdMap,\n BWPInstanceAliasList,\n BWPInvalidDemensions,\n GetInstanceQueryParams as BWPGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst CDNFilterFields = {\n origin: [],\n domain: [],\n resourceId: [],\n status: {},\n serviceType: {},\n projectId: [],\n domainType: {},\n fullUrlCache: {},\n https: {},\n originPullProtocol: {},\n tagKey: [],\n};\n\nconst CDNFilterFieldsDescriptor = [\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumbermulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst CDN_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: {\n Limit: 20,\n Offset: 0,\n Filters: { ...CDNFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n // console.log('item', item, queries);\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Value: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Value: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n return params;\n}\n\nconst CDNInstanceAliasList = ['Domain', 'ProjectId'];\n\nconst CDNInvalidDemensions = {\n projectId: 'ProjectId',\n domain: 'Domain',\n};\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\nexport default CDN_STATE;\nexport {\n CDNFilterFieldsDescriptor,\n templateQueryIdMap,\n CDNInstanceAliasList,\n CDNInvalidDemensions,\n GetInstanceQueryParams as CDNGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\n// export const LBQueryDescriptor = [{\n// key: 'Offset',\n// enDescriptor: 'Offset',\n// cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n// link: '',\n// type: 'inputnumber',\n// min: 0,\n// },\n// {\n// key: 'Limit',\n// enDescriptor: 'Limit',\n// cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为2000',\n// link: '',\n// type: 'inputnumber',\n// min: 1,\n// max: 2000,\n// },\n// {\n// key: 'AddressId',\n// enDescriptor: 'Address Id',\n// cnDescriptor: '标识 EIP 的唯一 ID ',\n// link: '',\n// type: 'inputmulti',\n// }\n// ];\n\nexport const LBFilterDescriptor = [\n {\n key: 'address-id',\n enDescriptor: 'Address ID',\n cnDescriptor: 'EIP 的唯一 ID ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'address-name',\n enDescriptor: 'Address Name',\n cnDescriptor: 'EIP 名称 ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'address-ip',\n enDescriptor: 'Address IP',\n cnDescriptor: 'EIP 的 IP 地址 ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'address-status',\n enDescriptor: 'Address Status',\n cnDescriptor: 'EIP 的状态',\n link: '',\n type: 'select',\n list: [\n { value: 'CREATING', text: 'CREATING' },\n { value: 'BINDING', text: 'BINDING' },\n { value: 'BIND', text: 'BIND' },\n { value: 'UNBINDING', text: 'UNBINDING' },\n { value: 'UNBIND', text: 'UNBIND' },\n { value: 'OFFLINING', text: 'OFFLINING' },\n { value: 'BIND_ENI', text: 'BIND_ENI' },\n ],\n },\n {\n key: 'instance-id',\n enDescriptor: 'Instance ID',\n cnDescriptor: '实例ID ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'Private IP Address',\n cnDescriptor: 'EIP 绑定的内网 IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'network-interface-id',\n enDescriptor: 'Network Interface ID',\n cnDescriptor: 'EIP 绑定的弹性网卡 ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'is-arrears',\n enDescriptor: 'Arrears',\n cnDescriptor: 'EIP 是否欠费 ',\n link: '',\n type: 'select',\n list: [\n { text: '正常', value: 'FALSE' },\n { text: '欠费', value: 'TRUE' },\n ],\n },\n];\n\n// const LBFilterFields = {\n// \"address-id\": [],\n// \"address-name\": [],\n// \"address-ip\": [],\n// \"address-status \": [],\n// \"instance-id \": [],\n// \"private-ip-address\": [],\n// \"network-interface-id \": [],\n// \"is-arrears \": [],\n// };\n\nconst InstanceKey = 'AddressIds';\nconst LB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'AddressId',\n version: '',\n queries: {\n Offset: 0,\n Limit: 20,\n [InstanceKey]: [''],\n Filters: {\n 'address-id': [],\n 'address-name': [],\n 'address-ip': [],\n 'address-status ': [],\n 'instance-id ': [],\n 'private-ip-address': [],\n 'network-interface-id ': [],\n 'is-arrears ': [],\n },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries[InstanceKey])) {\n const InstanceIds = _.compact(queries[InstanceKey]);\n if (_.uniq(InstanceIds).length > 0) {\n params[InstanceKey] = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst LBInstanceAliasList = ['AddressId', 'AddressName', 'AddressIp'];\n\n// 维度eip对应于实例中的哪个字段?映射\nconst LBInvalidDemensions = {\n eip: 'AddressIp',\n};\n\nconst templateQueryIdMap = {\n instance: 'AddressId',\n};\n// 从monitor维度到LB实例对应字段的映射\n// export const metric2Instance = {\n// functionName: 'FunctionName',\n// namespace: 'Namespace'\n// };\n\nexport default LB_STATE;\nexport {\n LBInstanceAliasList,\n LBInvalidDemensions,\n templateQueryIdMap,\n GetInstanceQueryParams as LBGetInstanceQueryParams,\n};\n\n// monitor监控数据默认支持的维度\n// export const LBDefaultDimensionList = ['functionName', 'namespace', 'version'];\n","import _ from 'lodash';\n\nconst NATGATEWAYInstanceAliasList = ['NatGatewayId', 'NatGatewayName'];\n\nconst NATGatewayFilterFields = {\n 'nat-gateway-id': [],\n 'nat-gateway-name': [],\n 'vpc-id': [],\n};\n\nconst NATGatewayFilterFieldsDescriptor = [\n {\n key: 'nat-gateway-id',\n enDescriptor: 'NatGateway ID',\n cnDescriptor: 'NAT网关统一 ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'nat-gateway-name',\n enDescriptor: 'NatGateway Name',\n cnDescriptor: 'NatGateway Name',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'VPC ID',\n cnDescriptor: '私有网络 ID',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst NATGATEWAY_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'NatGatewayId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n NatGatewayIds: [''],\n Filters: { ...NATGatewayFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.NatGatewayIds)) {\n const NatGatewayIds = _.compact(queries.NatGatewayIds);\n if (_.uniq(NatGatewayIds).length > 0) {\n params.InstanceIds = _.uniq(NatGatewayIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst templateQueryIdMap = {\n instance: 'NatGatewayId',\n};\n\nconst NATInvalidDemensions = {\n natId: 'NatGatewayId',\n};\n\nexport default NATGATEWAY_STATE;\nexport {\n NATGatewayFilterFieldsDescriptor,\n NATGATEWAYInstanceAliasList,\n templateQueryIdMap,\n NATInvalidDemensions,\n GetInstanceQueryParams as NATGATEWAYGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst CDNFilterFields = {\n origin: [],\n domain: [],\n resourceId: [],\n status: [],\n serviceType: [],\n projectId: [],\n domainType: [],\n fullUrlCache: [],\n https: [],\n originPullProtocol: [],\n tagKey: [],\n};\n\nconst OVCDNFilterFieldsDescriptor = [\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumbermulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst OVCDN_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: {\n Limit: 20,\n Offset: 0,\n Filters: { ...CDNFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Value: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Value: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n return params;\n}\n\nconst OVCDNInstanceAliasList = ['Domain', 'ResourceId'];\n\nconst OVCDNInvalidDemensions = {\n projectId: 'ProjectId',\n domain: 'Domain',\n};\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\nexport default OVCDN_STATE;\nexport {\n OVCDNFilterFieldsDescriptor,\n OVCDNInstanceAliasList,\n templateQueryIdMap,\n OVCDNInvalidDemensions,\n GetInstanceQueryParams as OVCDNGetInstanceQueryParams,\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__67__;","import _ from 'lodash';\n\nconst TKE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n conditions: [],\n groupBys: '',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: true,\n ClusterIds: [''],\n Filters: {\n ClusterName: [],\n ClusterType: [],\n ClusterStatus: [],\n 'tag-key': [],\n },\n },\n};\n\nconst TKEFilterFieldsDescriptor = [\n {\n key: 'ClusterName',\n enDescriptor: 'Cluster Name',\n cnDescriptor: '集群名',\n link: '',\n type: 'input',\n },\n {\n key: 'ClusterType',\n enDescriptor: 'Cluster Type',\n cnDescriptor: '集群类型',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ClusterStatus',\n enDescriptor: 'Cluster Status',\n cnDescriptor: '集群状态',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'Tags',\n enDescriptor: 'Tags',\n cnDescriptor: '标签键值对',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'VPC',\n cnDescriptor: 'VPC',\n link: '',\n type: 'input',\n },\n {\n key: 'tag-key',\n enDescriptor: 'Tag Key',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'tag-value',\n enDescriptor: 'Tag Value',\n cnDescriptor: '标签值',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst TKEInstanceAliasList = ['ClusterId', 'ClusterName'];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.InstanceIds)) {\n const InstanceIds = _.compact(queries.InstanceIds);\n if (_.uniq(InstanceIds).length > 0) {\n params.InstanceIds = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nexport default TKE_STATE;\n\nexport { TKEFilterFieldsDescriptor, TKEInstanceAliasList, GetInstanceQueryParams as TKEGetInstanceQueryParams };\n","import {\n APIGATEWAYInstanceAliasList,\n APIGATEWAYInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = APIGATEWAYInstanceAliasList;\n InvalidDimensions = APIGATEWAYInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'apigateway',\n action: 'DescribeServicesStatus',\n responseField: 'ServiceSet',\n };\n\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n async getEnvironmentNameList(params: any) {\n const { region, instanceId } = params;\n const serviceInfo = GetServiceAPIInfo(region, this.service);\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeServiceEnvironmentList' }\n );\n },\n {\n ServiceId: instanceId,\n },\n 'EnvironmentList'\n );\n const [rs] = res;\n return rs;\n }\n async fetchMetricData(action: string, region: string, instance: any) {\n // console.log({ action, region, instance });\n if (action === 'DescribeServiceEnvironmentList') {\n const rs = await this.getEnvironmentNameList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.environmentName];\n return {\n text: o[this.templateQueryIdMap.environmentName],\n value: o[this.templateQueryIdMap.environmentName],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.environmentList, rs);\n return result;\n }\n return [];\n }\n}\n","import {\n BMINTRALBInstanceAliasList,\n BMINTRALBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n isValidMetric,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = BMINTRALBInstanceAliasList;\n InvalidDimensions = BMINTRALBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bmlb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n interceptor: {\n request: (params) => ({\n ...params,\n LoadBalancerType: 'internal',\n }), // 设置一些请求参数的 默认值\n },\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return item;\n }\n return null;\n })\n );\n }\n}\n","import { BMLBInstanceAliasList, CPMInvalidDemensions, namespace, templateQueryIdMap, isValidMetric } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = BMLBInstanceAliasList;\n InvalidDimensions = CPMInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bmlb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n interceptor: {\n request: (params) => ({\n ...params,\n LoadBalancerType: 'open',\n }), // 设置一些请求参数的 默认值\n },\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return item;\n }\n return null;\n })\n );\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n}\n","import {\n BMPCXInstanceAliasList,\n BMPCXInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = BMPCXInstanceAliasList;\n InvalidDimensions = BMPCXInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bmvpc',\n action: 'DescribeVpcPeerConnections',\n responseField: 'VpcPeerConnectionSet',\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n}\n","import { BWPInstanceAliasList, BWPInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class BWPDatasource extends BaseDatasource {\n Namespace = 'QCE/BWP';\n InstanceAliasList = BWPInstanceAliasList;\n InvalidDimensions = BWPInvalidDemensions;\n templateQueryIdMap = {\n instance: 'BandwidthPackageId',\n };\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeBandwidthPackages',\n responseField: 'BandwidthPackageSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { CBSInstanceAliasList, CBSInvalidDemensions, namespace, templateQueryIdMap, isValidMetric } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CBSInstanceAliasList;\n InvalidDimensions = CBSInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cbs',\n action: 'DescribeDisks',\n responseField: 'DiskSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.filter(rawSet, isValidMetric);\n }\n}\n","import _ from 'lodash';\nimport { CDBInstanceAliasList, CDBInvalidDemensions, isValidMetric, modifyDimensons, templateQueryIdMap } from './query_def';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CDBDatasource extends BaseDatasource {\n Namespace = 'QCE/CDB';\n InstanceAliasList = CDBInstanceAliasList;\n InvalidDimensions = CDBInvalidDemensions;\n templateQueryIdMap = {\n instance: 'InstanceId',\n };\n InstanceReqConfig = {\n service: 'cdb',\n action: 'DescribeDBInstances',\n responseField: 'Items',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return modifyDimensons(item);\n }\n return null;\n })\n );\n }\n /**\n * 获取 可用区\n * @param region 地域信息\n */\n getZones(region) {\n const serviceInfo = GetServiceAPIInfo(region, 'cvm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.ZoneId, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n // 仅对维度组合是InstanceId和InstanceType的指标,其他指标不支持\n getDefaultInsObj(ins: string) {\n return {\n [templateQueryIdMap.instance]: ins,\n InstanceType: 1,\n }\n }\n}\n","import _ from 'lodash';\nimport { CDNInstanceAliasList, CDNInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CDNDatasource extends BaseDatasource {\n Namespace = 'QCE/CDN';\n InstanceAliasList = CDNInstanceAliasList;\n InvalidDimensions = CDNInvalidDemensions;\n templateQueryIdMap = {\n instance: 'Domain',\n };\n InstanceReqConfig = {\n service: 'cdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import { CDNPROVINCEInstanceAliasList, CDNPROVINCEInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CDNPROVINCEInstanceAliasList;\n InvalidDimensions = CDNPROVINCEInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n extrasAlias = ['isp', 'district'];\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n async getConsumerList(params: any) {\n const { region, field } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'cdn');\n\n // 从分页数据,获取全量数据\n const rs = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Name: field,\n },\n },\n serviceInfo.service,\n { action: 'DescribeMapInfo' }\n );\n return (rs.MapInfoList || []).map((o) => {\n return {\n text: o.Name,\n value: o.Name,\n };\n });\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n if (action === 'DescribeMapInfo') {\n const { name: field } = query;\n const rs = await this.getConsumerList({ region, field });\n return rs;\n }\n return [];\n }\n}\n","import {\n CEIPSUMMARYInstanceAliasList,\n CEIPInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CEIPSUMMARYInstanceAliasList;\n InvalidDimensions = CEIPInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeAddresses',\n responseField: 'AddressSet',\n interceptor: {\n request: (params) => {\n const { Filters } = params;\n if (!Filters) {\n params.Filters = [];\n }\n params.Filters.push({\n Name: 'address-type',\n Values: ['AnycastEIP'],\n });\n return params;\n }, // 设置一些请求参数的 默认值\n // response: (data: unknown[]) =>[\n // {\n // AddressId: 'AddressId',\n // AddressIp: '111.22.3.4'\n // },\n // ],\n },\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n // async getInstances(region, params = {}) {\n // const rawSet = await super.getInstances(region, params);\n // return rawSet.filter((item) => item.AddressType === 'AnycastEIP');\n // }\n\n // async getVariableInstances(region, query = {}) {\n // const rawSet = await super.getVariableInstances(region, query);\n // return rawSet.filter((item) => item.AddressType === 'AnycastEIP');\n // }\n}\n","import { CESInstanceAliasList, CESInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CESInstanceAliasList;\n InvalidDimensions = CESInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'es',\n action: 'DescribeInstances',\n responseField: 'InstanceList',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import _ from 'lodash';\nimport { BaseDatasource } from '../_base/datasource';\nimport { CFSInstanceAliasList, CFSInvalidDemensions, regionSupported } from './query_def';\nimport { t } from '../../../locale'\nexport default class CFSDatasource extends BaseDatasource {\n InstanceKey: string;\n Namespace: string;\n InstanceAliasList: string[];\n InvalidDimensions: Record;\n templateQueryIdMap = {\n instance: 'FileSystemId',\n };\n extrasAlias = ['version'];\n InstanceReqConfig: { service?: string | undefined; action: string; responseField: string };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n\n this.Namespace = 'QCE/CFS';\n this.InstanceAliasList = CFSInstanceAliasList;\n this.InvalidDimensions = CFSInvalidDemensions;\n this.InstanceReqConfig = {\n service: 'cfs',\n action: 'DescribeCfsFileSystems',\n responseField: 'FileSystems',\n };\n }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n}\n","import _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n CKAFKAInstanceAliasList,\n CKAFKATopicAliasList,\n CKAFKAInvalidDemensions,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\n\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class CKFKADatasource extends BaseDatasource {\n Namespace = 'QCE/CKAFKA';\n InstanceAliasList = CKAFKAInstanceAliasList;\n TopicAliasList = CKAFKATopicAliasList;\n InvalidDimensions = CKAFKAInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'ckafka',\n action: 'DescribeInstances',\n responseField: 'InstanceList',\n };\n extraMetricDims = ['topicId'];\n // extrasAlias = ['topicId', 'consumerGroup', 'partition'];\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n consumerGroupCache = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getConsumerGroups(region, params) {\n const serviceInfo = GetServiceAPIInfo(region, 'ckafka');\n let { InstanceId, groupname = '', topicid = '' } = params;\n groupname = this.getVariable(groupname); // 将模板转换为真实值\n topicid = this.getVariable(topicid); // 将模板转换为真实值\n try {\n groupname = JSON.parse(groupname)[templateQueryIdMap.groupName];\n topicid = JSON.parse(topicid)[templateQueryIdMap.topicId];\n } catch (e) {}\n let consumerGoup = this.consumerGroupCache[InstanceId];\n if (!consumerGoup) {\n // 从分页数据,获取全量数据\n consumerGoup = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeConsumerGroup' }\n );\n },\n _.pick(params, 'InstanceId'),\n ['GroupListForMonitor', 'TopicListForMonitor', 'PartitionListForMonitor', 'GroupList']\n );\n this.consumerGroupCache[InstanceId] = consumerGoup;\n }\n\n let [GroupList, TopicList, PartitionList, GroupDetailList] = consumerGoup;\n // 无重复数组\n TopicList = _.uniqBy(TopicList, (item) => (item as any).TopicId);\n GroupList = _.uniqBy(GroupList, (item) => (item as any).GroupName);\n PartitionList = _.uniqBy(PartitionList, (item) => (item as any).PartitionId);\n GroupDetailList = _.uniqBy(GroupDetailList, (item) => (item as any).ConsumerGroupName);\n // 如果传入消费者信息,consumergroupname,获取该用户的订阅信息列表\n const SubscribedInfos = GroupDetailList.find((d) => d.ConsumerGroupName === groupname)?.SubscribedInfo || [];\n // 这里为了兼容PartitonList格式,最后转化为数组对象的方式\n const partitions =\n SubscribedInfos.find((sub) => sub.TopicId === topicid)?.Partition?.map((p) => ({\n [templateQueryIdMap.partition]: p,\n })) || [];\n return {\n GroupList,\n TopicList:\n SubscribedInfos.length > 0\n ? SubscribedInfos.map(({ TopicId, TopicName }) => ({ TopicId, TopicName }))\n : TopicList,\n PartitionList: partitions.length > 0 ? partitions : PartitionList,\n };\n }\n formatTopicVarDisplay(topic: Record, displayTpl: string | undefined, topicAlias: string) {\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !this.TopicAliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(topic, b);\n });\n }\n return this.getAliasValue(topic, topicAlias);\n }\n // 查询指标下的数据\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n let { topicalias, groupname, topicid } = query;\n const result = await this.getConsumerGroups(region, {\n InstanceId: instance.InstanceId,\n groupname,\n topicid,\n });\n let { display } = query;\n const { TopicList, GroupList, PartitionList } = result;\n topicalias = this.TopicAliasList.includes(topicalias) ? topicalias : this.templateQueryIdMap.topicId;\n\n const rs = {\n GroupList: GroupList.map((group) => {\n group._InstanceAliasValue = group.GroupName;\n return {\n text: group.GroupName,\n value: group[templateQueryIdMap.groupName],\n };\n }),\n TopicList: TopicList.map((topic) => {\n const topicAlias = this.formatTopicVarDisplay(topic, display, topicalias);\n topic._InstanceAliasValue = topicAlias || topic[templateQueryIdMap.topicId];\n return {\n text: topicAlias || topic[templateQueryIdMap.topicId],\n value: topic[templateQueryIdMap.topicId], // 为了获取多维度的值,这里完全可以使用JSON.stringify()将整个对象放进去\n TopicName: topic.TopicName,\n };\n }),\n PartitionList: PartitionList.map((par) => {\n par._InstanceAliasValue = par[templateQueryIdMap.partition];\n return {\n text: par[templateQueryIdMap.partition],\n value: par[templateQueryIdMap.partition],\n };\n }),\n };\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.TopicList, TopicList);\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.GroupList, GroupList);\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.PartitionList, PartitionList);\n // console.log({ res1, res2, res3 });\n // console.log({rs});\n // 根据action返回指定的维度数据列表\n switch (action) {\n case 'DescribeTopicList':\n return rs.TopicList;\n case 'DescribeGroup':\n return rs.GroupList;\n case 'DescribePartion':\n return rs.PartitionList;\n default:\n return [];\n }\n }\n\n // async getOtherAlias(datapoints) {\n // let dimension;\n // for(let j = 0; j < datapoints.Dimensions.length; j++){\n // if(datapoints.Dimensions[j] !== 'InstanceName'){\n // dimension.push(datapoints.Dimensions[j])\n // }\n // }\n // console.log(dimension);\n\n // return dimension\n // }\n}\n","import {\n InstanceAliasList,\n LOADBALANCEListenerAliasList,\n LOADBALANCEServerAliasList,\n LOADBALANCEVALIDDIMENSIONS,\n templateQueryIdMap,\n keyInStorage,\n CANDIATEDIMENSIONS,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class DCDatasource extends BaseDatasource {\n // Namespace = namespace;\n InstanceAliasList = InstanceAliasList;\n ListenerAliasList = LOADBALANCEListenerAliasList;\n ServerAliasList = LOADBALANCEServerAliasList;\n CandiateDimensions = CANDIATEDIMENSIONS;\n // InvalidDimensions = LOADBALANCEVALIDDIMENSIONS;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n // InstanceReqConfig = {\n // service: 'clb',\n // action: 'DescribeLoadBalancers',\n // responseField: 'LoadBalancerSet',\n // };\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getInvalidDimensions(selfIns: any, tagret: any) {\n if (selfIns.service === 'lbPrivate' || (selfIns.service === 'lbPublic' && tagret.servers))\n return { ...LOADBALANCEVALIDDIMENSIONS, vpcId: 'NumericalVpcId' };\n return LOADBALANCEVALIDDIMENSIONS;\n }\n getInstanceReqConfig(selfIns: any) {\n const res: any = {\n service: 'clb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n };\n if (selfIns.service === 'lbPrivate' || selfIns.service === 'loadBalance') {\n res.interceptor = {\n request: (param) => ({ ...param, LoadBalancerType: 'INTERNAL' }),\n };\n }\n if (selfIns.service === 'lbPublic') {\n res.interceptor = {\n request: (param) => ({ ...param, LoadBalancerType: 'OPEN' }),\n };\n }\n return res;\n }\n async getListenerList(params: any) {\n const { region, instanceId } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'clb');\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeListeners' }\n );\n },\n {\n LoadBalancerId: instanceId,\n },\n 'Listeners'\n );\n const [rs] = res;\n return rs;\n }\n formatVariableDisplay(data: Record, displayTpl: string | undefined, alias: string, aliasList: string[]) {\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !aliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(data, b);\n });\n }\n return this.getAliasValue(data, alias);\n }\n async getServerList(params: any) {\n const { region, instanceId, listenerId } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'clb');\n\n const res = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: { LoadBalancerId: instanceId, ListenerIds: [listenerId] },\n },\n serviceInfo.service,\n { region, action: 'DescribeTargets' }\n );\n const { Listeners } = res;\n const serversList = _.reduce(\n Listeners,\n (prev, item) => {\n const { Rules, Targets } = item;\n if (!_.isEmpty(Rules)) {\n return _.concat(prev, _.flatten(_.map(Rules, (elem) => (_.isEmpty(elem.Targets) ? [] : elem.Targets))));\n }\n if (!_.isEmpty(Targets)) {\n return _.concat(prev, Targets);\n }\n return prev;\n },\n []\n );\n return serversList;\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const { display } = query;\n if (action === 'DescribeListeners') {\n const rs = await this.getListenerList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n let { listeneralias } = query;\n listeneralias = this.ListenerAliasList.includes(listeneralias) ? listeneralias : this.templateQueryIdMap.listener;\n const result = rs.flatMap((o) => {\n const listenAlias = this.formatVariableDisplay(o, display, listeneralias, this.ListenerAliasList);\n const lisId = o[this.templateQueryIdMap.listener];\n o._InstanceAliasValue = listenAlias || lisId;\n // if (!o[listeneralias]) return [];\n return {\n text: listenAlias || lisId,\n value: lisId,\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.listener, rs);\n return result;\n }\n if (action === 'DescribeServer' || action === 'DescribeServerPort') {\n const { listenerid, serverprivateip, serveralias } = query;\n const serverPrivateIp = this.getVariable(serverprivateip);\n const serversList = await this.getServerList({\n region,\n instanceId: instance[this.templateQueryIdMap.instance],\n listenerId: this.getVariable(listenerid),\n });\n const serverAlias = this.ServerAliasList.includes(serveralias) ? serveralias : this.templateQueryIdMap.servers;\n const result = _.chain(serversList)\n .filter((item) => {\n if (action === 'DescribeServer') {\n return true;\n }\n return serverPrivateIp === _.get(item, 'PrivateIpAddresses.0');\n })\n .map((item) => {\n const alias = this.formatVariableDisplay(item, display, serverAlias, this.ServerAliasList);\n const id = item[this.templateQueryIdMap.servers][0];\n item._InstanceAliasValue = alias || id;\n return action === 'DescribeServer'\n ? {\n text: alias || id,\n value: id,\n }\n : {\n text: `${_.get(item, 'Port')}`,\n value: _.get(item, 'Port'),\n };\n })\n .value();\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.servers, serversList);\n return action === 'DescribeServer' ? result : _.uniqBy(result, 'text');\n }\n return [];\n }\n}\n","import {\n CLSInstanceAliasList,\n CLSInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CLSInstanceAliasList;\n InvalidDimensions = CLSInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cls',\n action: 'DescribeTopics',\n responseField: 'Topics',\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n // async getInstances(region, params = {}) {\n // const superRes = await super.getInstances(region, params);\n // console.log({ superRes });\n // }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n}\n","import { BaseDatasource } from '../_base/datasource';\nimport { InvalidDemensions, InstanceAliasList, templateQueryIdMap } from './query_def';\n\nexport default class CmqDatasource extends BaseDatasource {\n InvalidDimensions: Record = InvalidDemensions;\n InstanceAliasList: string[] = InstanceAliasList;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'cmq',\n action: 'DescribeQueueDetail',\n responseField: 'QueueSet',\n };\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawMetric = await super.getMetrics(region);\n return rawMetric.map((metric) => {\n let dims = metric.Dimensions[0].Dimensions;\n dims = Array.from(new Set([...dims, 'queueId', 'queueName']));\n metric.Dimensions[0].Dimensions = dims;\n return metric;\n });\n }\n}\n","import { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n InvalidDemensions,\n InstanceAliasList,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class CmqTopicDatasource extends BaseDatasource {\n Namespace = 'QCE/CMQTOPIC';\n InvalidDimensions: Record = InvalidDemensions;\n InstanceAliasList: string[] = InstanceAliasList;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'cmq',\n action: 'DescribeTopicDetail',\n responseField: 'TopicSet',\n };\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n extraMetricDims = ['subscriptionId']; // 多选\n\n async fetchAllSubscription(region: string, params: any) {\n const serviceInfo = GetServiceAPIInfo(region, 'cmq');\n // console.log(serviceInfo, 'serviceinfo');\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeSubscriptionDetail' }\n );\n },\n params,\n 'SubscriptionSet'\n );\n\n return rs[0];\n }\n\n async fetchMetricData(action: string, region: string, instance: any) {\n let result;\n switch (action) {\n case 'DescribeSubscriptionDetail':\n result = await this.fetchAllSubscription(region, { TopicName: instance.TopicName });\n // eslint-disable-next-line no-case-declarations\n const rs = result.map((item) => {\n item._InstanceAliasValue = item.SubscriptionId;\n return { text: item.SubscriptionId, value: item[templateQueryIdMap.subscription] };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.subscriptionId, result);\n return rs;\n default:\n return [];\n }\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawMetric = await super.getMetrics(region);\n return rawMetric.map((metric) => {\n let dims = metric.Dimensions[0].Dimensions;\n dims.push('topicId');\n if (['NumOfNotify', 'NumOfSuccNotify'].includes(metric.MetricName)) {\n dims.push('subscriptionId');\n }\n\n dims = Array.from(new Set(dims));\n metric.Dimensions[0].Dimensions = dims;\n return metric;\n });\n }\n}\n","import { BaseDatasource } from '../_base/datasource';\n\ninterface BucketListResult {\n Owner: { ID: 'string'; DisplayName: 'string' };\n Buckets: { Name: string; Region: string }[];\n}\n\nexport default class CosDatasource extends BaseDatasource {\n InvalidDimensions: Record = {};\n InstanceAliasList: string[] = ['BucketName'];\n templateQueryIdMap = {\n instance: 'BucketName',\n };\n InstanceReqConfig = {} as any; // 不必要的配置\n cosURL: string;\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n this.cosURL = `/api/datasources/${this.instanceSettings.id}/resources/tc_cos_list`;\n }\n async getInstances(region: string) {\n return this.backendSrv\n .datasourceRequest({\n url: this.cosURL,\n method: 'GET',\n params: { region },\n headers: { 'Content-Type': 'application/json' },\n })\n .then((res) => {\n let { data }: { data: BucketListResult } = res;\n data = data || ({} as any);\n let { Buckets } = data;\n Buckets = Buckets || [];\n\n // name contains appid,see detail https://cloud.tencent.com/document/product/436/8291\n return Buckets.map((item) => ({\n ...item,\n BucketName: item.Name,\n bucket: item.Name,\n appid: item.Name.split('-').slice(-1)[0],\n }));\n });\n }\n\n async getVariableInstances(region) {\n return this.getInstances(region);\n }\n}\n","import {\n CPMInstanceAliasList,\n CPMInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CPMInstanceAliasList;\n InvalidDimensions = CPMInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bm',\n action: 'DescribeDevices',\n responseField: 'DeviceInfoSet',\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n\n getFilterDropdown({ field, region }) {\n if (field === 'DeviceClassCode') {\n const serviceInfo = GetServiceAPIInfo(region, 'bm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n 'bm',\n { region, action: 'DescribeDeviceClass' }\n ).then((response) => {\n return _.map(response.DeviceClassSet || [], (item) => {\n return { text: item.DeviceClassCode, value: item.DeviceClassCode };\n });\n });\n }\n return [];\n }\n}\n","import _ from 'lodash';\nimport { CVMInstanceAliasList, isValidMetric, modifyDimensons } from './query_def';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CVMDatasource extends BaseDatasource {\n Namespace = 'QCE/CVM';\n InstanceAliasList = CVMInstanceAliasList;\n InvalidDimensions = {};\n templateQueryIdMap = {\n instance: 'InstanceId',\n };\n InstanceReqConfig = {\n service: 'cvm',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return modifyDimensons(item);\n }\n return null;\n })\n );\n }\n\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/api',\n data: { Product: 'cvm' },\n },\n 'api',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n\n getZones(region) {\n const serviceInfo = GetServiceAPIInfo(region, 'api');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: { Product: 'cvm' },\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n}\n","import {\n CYNOSDBMYSQLInstanceAliasList,\n CYNOSDBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n checkKeys,\n} from './query_def';\nimport _ from 'lodash';\nimport { BaseDatasource } from '../_base/datasource';\n// import { t } from '../../../locale';\n\nexport default class CYNOSDBMYSQLDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CYNOSDBMYSQLInstanceAliasList;\n InvalidDimensions = CYNOSDBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n checkKeys = checkKeys;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cynosdb',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n // getRegions() {\n // return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n // }\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/api',\n data: { Product: 'cynosdbmysql' },\n },\n 'api',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n // 仅对维度组合是InstanceId的指标,其他指标不支持\n getDefaultInsObj(ins: string) {\n return {\n [templateQueryIdMap.instance]: ins,\n }\n }\n}\n","import { DCInstanceAliasList, DCInvalidDemensions, namespace, modifyDimensons } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCInstanceAliasList;\n InvalidDimensions = DCInvalidDemensions;\n templateQueryIdMap = {\n instance: 'DirectConnectId',\n };\n InstanceReqConfig = {\n service: 'dc',\n action: 'DescribeDirectConnects',\n responseField: 'DirectConnectSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n}\n","import {\n DCDBInstanceAliasList,\n DCDBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCDBInstanceAliasList;\n InvalidDimensions = DCDBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'dcdb',\n action: 'DescribeDCDBInstances',\n responseField: 'Instances',\n };\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n extraActionMap = {\n DescribeDCDBShards: {\n service: 'dcdb',\n action: 'DescribeDCDBShards',\n responseField: 'Shards',\n pickKey: 'ShardInstanceId',\n },\n DescribeDCDBInstanceNodeInfo: {\n service: 'dcdb',\n action: 'DescribeDCDBInstanceNodeInfo',\n responseField: 'NodesInfo',\n pickKey: 'NodeId',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion, 入参的region用广州\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/dcdb',\n },\n 'dcdb',\n { action: 'DescribeDCDBSaleInfo', region: 'ap-guangzhou' }\n ).then((response) => {\n return _.map(response.RegionList || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n RegionState: item.RegionState,\n };\n });\n });\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n InstanceId: instance[this.templateQueryIdMap.instance],\n Limit: 100,\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import { DCGInstanceAliasList, DCGInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCGInstanceAliasList;\n InvalidDimensions = DCGInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeDirectConnectGateways',\n responseField: 'DirectConnectGatewaySet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { DCXInstanceAliasList, DCXInvalidDemensions, namespace, modifyDimensons } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCXDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCXInstanceAliasList;\n InvalidDimensions = DCXInvalidDemensions;\n templateQueryIdMap = {\n instance: 'DirectConnectTunnelId',\n };\n InstanceReqConfig = {\n service: 'dc',\n action: 'DescribeDirectConnectTunnels',\n responseField: 'DirectConnectTunnelSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n}\n","import { BaseDatasource } from '../_base/datasource';\nimport {\n ECDNInstanceAliasList,\n ECDNInvalidDemensions,\n modifyDimensons,\n namespace,\n templateQueryIdMap,\n} from './query_def';\n\nexport default class ECDNDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECDNInstanceAliasList;\n InvalidDimensions = ECDNInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'ecdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n}\n","import {\n ECMInstanceAliasList,\n ECMInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECMInstanceAliasList;\n InvalidDimensions = ECMInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'ecm',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import {\n ECMBLOCKSTORAGEInstanceAliasList,\n ECMBLOCKSTORAGEInvalidDemensions,\n namespace,\n templateQueryIdMap,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECMBLOCKSTORAGEInstanceAliasList;\n InvalidDimensions = ECMBLOCKSTORAGEInvalidDemensions;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n templateQueryIdMap = templateQueryIdMap;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'ecm',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getDiskList(params: any) {\n const { payload } = params;\n const { InstanceId } = payload;\n const instanceCache = await instanceStorage.getInstance(this.service);\n const instanceObj: any =\n _.cloneDeep(instanceCache.find((item) => item[this.templateQueryIdMap.instance] === InstanceId)) ?? {};\n const { DataDisks: dataDisks } = instanceObj;\n return dataDisks;\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n InstanceId: instance,\n Limit: 100,\n };\n const rs = await this.getDiskList({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.diskId];\n return {\n text: o[this.templateQueryIdMap.diskId],\n value: o[this.templateQueryIdMap.diskId],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.diskId, rs);\n return result;\n }\n}\n","import { ECMLBInstanceAliasList, ECMLBInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECMLBInstanceAliasList;\n InvalidDimensions = ECMLBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'ecm',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import {\n GSEInstanceAliasList,\n GSEInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n keyInStorage,\n queryMonitorExtraConfg,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = GSEInstanceAliasList;\n InvalidDimensions = GSEInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'gse',\n action: 'DescribeInstances',\n responseField: 'Instances',\n };\n\n keyInStorage = keyInStorage;\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n async getQueueNameList(params: any) {\n const { region } = params;\n const serviceInfo = GetServiceAPIInfo(region, this.service);\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeGameServerSessionQueues' }\n );\n },\n {},\n 'GameServerSessionQueues'\n );\n const [rs] = res;\n return rs;\n }\n async getFleetList(params: any) {\n const { region } = params;\n const serviceInfo = GetServiceAPIInfo(region, this.service);\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'ListFleets' }\n );\n },\n {},\n 'FleetIds'\n );\n const [rs] = res;\n return rs.map((r) => ({ [this.templateQueryIdMap.FleetId]: r }));\n }\n async fetchMetricData(action: string, region: string, instance: any) {\n // console.log({ action, region, instance });\n if (action === 'DescribeGameServerSessionQueues') {\n const rs = await this.getQueueNameList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.Name];\n return {\n text: o[this.templateQueryIdMap.Name],\n value: o[this.templateQueryIdMap.Name],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.queue, rs);\n return result;\n }\n if (action === 'ListFleets') {\n const rs = await this.getFleetList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.FleetId];\n return {\n text: o[this.templateQueryIdMap.FleetId],\n value: o[this.templateQueryIdMap.FleetId],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.fleet, rs);\n return result;\n }\n return [];\n }\n}\n","import _ from 'lodash';\nimport { BaseDatasource } from '../_base/datasource';\nimport { LBInstanceAliasList, LBInvalidDemensions } from './query_def';\n\nexport default class SCFDatasource extends BaseDatasource {\n Namespace = 'QCE/LB';\n InstanceAliasList = LBInstanceAliasList;\n InvalidDimensions = LBInvalidDemensions;\n templateQueryIdMap = {\n instance: 'AddressId',\n };\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeAddresses',\n responseField: 'AddressSet',\n interceptor: {\n request: (params) => {\n const { Filters } = params;\n if (!Filters) {\n params.Filters = [];\n }\n params.Filters.push({\n Name: 'address-type',\n Values: ['EIP'],\n });\n return params;\n }, // 设置一些请求参数的 默认值\n },\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter((item) =>\n /* hack:这里多加了筛选条件,是因为后端数据不准确,坑啊! 只拿取包含eip的指标 */\n item.Dimensions?.[0]?.Dimensions?.includes('eip')\n );\n }\n\n // async getInstances(region, params = {}) {\n // const rawSet = await super.getInstances(region, params);\n // /* hack:这里多加了筛选条件,是因为后端数据不准确,坑啊! 只拿取包含eip的指标 */\n // return rawSet.filter((item) => item.AddressType === 'EIP');\n // }\n\n // async getVariableInstances(region, query = {}) {\n // const rawSet = await super.getVariableInstances(region, query);\n // return rawSet.filter((item) => item.AddressType === 'EIP');\n // }\n}\n","import _ from 'lodash';\nimport {\n LIGHTHOUSEInstanceAliasList,\n templateQueryIdMap,\n LighthouseInvalidDemensions,\n modifyDimensons,\n} from './query_def';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class LighthouseDatasource extends BaseDatasource {\n Namespace = 'QCE/LIGHTHOUSE';\n InstanceAliasList = LIGHTHOUSEInstanceAliasList;\n InvalidDimensions = LighthouseInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'lighthouse',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/api',\n data: { Product: 'lighthouse' },\n },\n 'api',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n\n getZones(region) {\n const serviceInfo = GetServiceAPIInfo(region, 'api');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: { Product: 'lighthouse' },\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n}\n","import _ from 'lodash';\nimport {\n MONGODBInstanceAliasList,\n MONGODBInvalidDemensions,\n templateQueryIdMap,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class MONGODBDatasource extends BaseDatasource {\n Namespace = 'QCE/CMONGO';\n InstanceAliasList = MONGODBInstanceAliasList;\n ReplicaAliasList = ['ReplicaSetId', 'ReplicaSetName'];\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n\n InstanceReqConfig = {\n service: 'mongodb',\n action: 'DescribeDBInstances',\n responseField: 'InstanceDetails',\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n getInvalidDimensions(selfIns: any, target: any) {\n if (target.node && target.node !== '') {\n return { target: 'Node' };\n }\n if (target.replica && target.replica !== '') {\n return { target: 'Replica' };\n }\n return MONGODBInvalidDemensions;\n }\n formatVariableDisplay(data: Record, displayTpl: string | undefined, alias: string, aliasList: string[]) {\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !aliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(data, b);\n });\n }\n return this.getAliasValue(data, alias);\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const { display } = query;\n if (action === 'DescribeReplicas') {\n const [res] = await this.getInstances(region, { InstanceIds: [instance[this.templateQueryIdMap.instance]] });\n let { replicaalias } = query;\n replicaalias = this.ReplicaAliasList.includes(replicaalias) ? replicaalias : this.templateQueryIdMap.replica;\n const result = _.map(_.get(res, 'ReplicaSets', []), (item) => {\n const replicaAlias = this.formatVariableDisplay(item, display, replicaalias, this.ReplicaAliasList);\n item._InstanceAliasValue = replicaAlias || item[this.templateQueryIdMap.replica];\n return { text: item.ReplicaSetId, value: item.ReplicaSetId };\n });\n await instanceStorage.setExtraStorage(\n this.service,\n this.queryMonitorExtraConfg.Replica.dim_KeyInStorage,\n _.get(res, 'ReplicaSets', [])\n );\n return result;\n }\n if (action === 'DescribeReplicaNodes') {\n const [res] = await this.getInstances(region, { InstanceIds: [instance[this.templateQueryIdMap.instance]] });\n const { replicasetid } = query;\n const targetReplica = _.find(_.get(res, 'ReplicaSets', []), { ReplicaSetId: this.getVariable(replicasetid) });\n let result = _.times(targetReplica.SecondaryNum, (index) => {\n const nodeId = `${targetReplica.ReplicaSetId}-node-slave${index}`;\n return { text: nodeId, value: nodeId };\n });\n if (targetReplica) {\n result = [\n { text: `${targetReplica.ReplicaSetId}-node-primary`, value: `${targetReplica.ReplicaSetId}-node-primary` },\n ...result,\n ];\n }\n await instanceStorage.setExtraStorage(\n this.service,\n this.queryMonitorExtraConfg.Node.dim_KeyInStorage,\n result.map((item) => ({ NodeId: item.value, _InstanceAliasValue: item.value }))\n );\n return result;\n }\n\n return [];\n }\n}\n","import { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n InvalidDemensions,\n InstanceAliasList,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class MrHdfsDatasource extends BaseDatasource {\n InvalidDimensions: Record = InvalidDemensions;\n InstanceAliasList: string[] = InstanceAliasList;\n templateQueryIdMap = templateQueryIdMap;\n extrasAlias = [];\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n InstanceReqConfig = {\n service: 'emr',\n action: 'DescribeInstances',\n responseField: 'ClusterList',\n interceptor: {\n request: (params) => ({\n ...params,\n DisplayStrategy: params.DisplayStrategy || 'monitorManage',\n ProjectId: params.ProjectId || -1,\n }), // 设置一些请求参数的 默认值\n response: (data: any[]) => data.map(({ ClusterId, ClusterName }) => ({ ClusterId, ClusterName })),\n },\n };\n\n async fetchAllNodes(region: string, params: any) {\n const serviceInfo = GetServiceAPIInfo(region, 'emr');\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeClusterNodes' }\n );\n },\n { ...params, isOffsetPage: true },\n 'NodeList'\n );\n\n // return rs[0].map((item) => ({ text: item.Ip, value: item.Ip }));\n return rs[0];\n }\n\n async fetchMetricData(action: string, region: string, instance: any) {\n let result;\n switch (action) {\n case 'DescribeClusterNodes': {\n const resultT = await this.fetchAllNodes(region, { InstanceId: instance.ClusterId, NodeFlag: 'all' });\n result = resultT.map((item) => {\n item._InstanceAliasValue = item[templateQueryIdMap.node];\n return { text: item[templateQueryIdMap.node], value: item[templateQueryIdMap.node] };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.node, resultT);\n\n return result;\n }\n default:\n return [];\n }\n }\n}\n","import _ from 'lodash';\nimport { NATGATEWAYInstanceAliasList, NATInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class NATGATEWAYDatasource extends BaseDatasource {\n Namespace = 'QCE/NAT_GATEWAY';\n InstanceAliasList = NATGATEWAYInstanceAliasList;\n InvalidDimensions = NATInvalidDemensions;\n templateQueryIdMap = {\n instance: 'NatGatewayId',\n };\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeNatGateways',\n responseField: 'NatGatewaySet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import _ from 'lodash';\nimport { OVCDNInstanceAliasList, OVCDNInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class OVCDNDatasource extends BaseDatasource {\n Namespace = 'QCE/OV_CDN';\n InstanceAliasList = OVCDNInstanceAliasList;\n InvalidDimensions = OVCDNInvalidDemensions;\n templateQueryIdMap = {\n instance: 'Domain',\n };\n InstanceReqConfig = {\n service: 'cdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import { PCXInstanceAliasList, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo, GetRequestParamsV2, SliceLength } from '../../common/constants';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = PCXInstanceAliasList;\n InvalidDimensions = {};\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'xx',\n action: 'xx',\n responseField: 'xx',\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getInstances(region = 'ap-guangzhou', params = {}) {\n params = { offset: 0, limit: 50, ...params };\n const serviceInfo = GetServiceAPIInfo(region, 'pcx');\n return this.doRequestV2(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcPeeringConnections' }\n ).then((response) => {\n return response.data || [];\n });\n }\n\n /**\n * 模板变量中获取全量的 PCX 实例列表\n * @param region 地域信息\n */\n getVariableInstances(region, query) {\n let result: any[] = [];\n const params = { Offset: 0, Limit: 50, ...query };\n const serviceInfo = GetServiceAPIInfo(region, 'pcx');\n return this.doRequestV2(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcPeeringConnections' }\n ).then((response) => {\n result = response.data || [];\n const total = response.totalCount || 0;\n if (result.length >= total) {\n return result;\n } else {\n const param = SliceLength(total, 50);\n const promises: any[] = [];\n _.forEach(param, (item) => {\n promises.push(this.getInstances(region, item));\n });\n return Promise.all(promises)\n .then((responses) => {\n _.forEach(responses, (item) => {\n result = _.concat(result, item);\n });\n return result;\n })\n .catch((error) => {\n return result;\n });\n }\n });\n }\n\n getVpcId(region, params: any = {}) {\n params = { Offset: 0, Limit: 20, ...params };\n // TODO 等待腾讯云接口查问题\n params.Offset = String(params.Offset);\n params.Limit = String(params.Limit);\n const serviceInfo = GetServiceAPIInfo(region, 'vpc');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcs' }\n ).then((response) => {\n return _.map(response.VpcSet || [], (item) => ({ text: item.VpcId, value: item.VpcId }));\n });\n }\n\n getVpcIds(region) {\n let result: any[] = [];\n const params: any = { Offset: 0, Limit: 100 };\n // TODO 等待腾讯云接口查问题\n params.Offset = String(params.Offset);\n params.Limit = String(params.Limit);\n const serviceInfo = GetServiceAPIInfo(region, 'vpc');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcs' }\n ).then((response) => {\n result = _.map(response.VpcSet || [], (item) => ({ text: item.VpcId, value: item.VpcId }));\n const total = response.TotalCount || 0;\n if (result.length >= total) {\n return result;\n } else {\n const param = SliceLength(total, 100);\n const promises: any[] = [];\n _.forEach(param, (item) => {\n promises.push(this.getVpcId(region, item));\n });\n return Promise.all(promises)\n .then((responses) => {\n _.forEach(responses, (item) => {\n result = _.concat(result, item);\n });\n return result;\n })\n .catch((error) => {\n return result;\n });\n }\n });\n }\n\n /**\n * 腾讯云 API 2.0 请求接口\n * @param options\n * @param service\n * @param signObj\n */\n async doRequestV2(options, service, signObj: any = {}) {\n options = await GetRequestParamsV2(\n options,\n service,\n signObj,\n this.secretId,\n this.instanceSettings.id,\n this.backendSrv\n );\n return this.backendSrv\n .datasourceRequest(options)\n .then((response) => {\n return _.get(response, 'data', {});\n })\n .catch((error) => {\n throw error;\n });\n }\n}\n","import _ from 'lodash';\nimport {\n POSTGRESInstanceAliasList,\n PostgreInvalidDemensions,\n namespace,\n modifyDimensons,\n templateQueryIdMap,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CDBDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = POSTGRESInstanceAliasList;\n InvalidDimensions = PostgreInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'postgres',\n action: 'DescribeDBInstances',\n responseField: 'DBInstanceSet',\n };\n\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { get } from 'lodash';\nimport { QAAPInstanceAliasList, QAAPInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class QAAPDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = QAAPInstanceAliasList;\n InvalidDimensions = QAAPInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'gaap',\n action: 'DescribeProxies',\n responseField: 'ProxySet',\n interceptor: {\n // response: (data: unknown[]) =>[\n // {\n // \"NetDetectId\": \"netd-12345678\",\n // },\n // ],\n },\n };\n // MetricReqConfig = {\n // resultFilter: modifyDimensons,\n // };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter(\n (item) =>\n get(item, 'Dimensions.length') === 1 &&\n get(item, 'Dimensions[0].Dimensions.length') === 1 &&\n get(item, 'Dimensions[0].Dimensions[0]') === 'channelId'\n );\n }\n}\n","import _ from 'lodash';\nimport { REDISInstanceAliasList, RedisInvalidDemensions, isValidMetric } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class REDISDatasource extends BaseDatasource {\n Namespace = 'QCE/REDIS';\n InstanceAliasList = REDISInstanceAliasList;\n InvalidDimensions = RedisInvalidDemensions;\n templateQueryIdMap = {\n instance: 'InstanceId',\n };\n InstanceReqConfig = {\n service: 'redis',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n interceptor: {\n request: (params) => ({ ...params, MonitorVersion: '1m' }),\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter((item) => isValidMetric(item));\n }\n}\n","import _ from 'lodash';\nimport {\n REDISMEMInstanceAliasList,\n namespace,\n RedisMemInvalidDemensions,\n templateQueryIdMap,\n NodeType,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\n\nexport default class REDISDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = REDISMEMInstanceAliasList;\n InvalidDimensions = RedisMemInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n extrasAlias = [RedisMemInvalidDemensions.pnodeid, RedisMemInvalidDemensions.rnodeid];\n InstanceReqConfig = {\n service: 'redis',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n interceptor: {\n request: (params) => ({ ...params, MonitorVersion: '5s' }),\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getInstanceNodeInfo(params: any) {\n const { region, instanceId } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'redis');\n\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeInstanceNodeInfo' }\n );\n },\n {\n InstanceId: instanceId,\n },\n NodeType\n );\n\n return res;\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n if (action === 'DescribeInstanceNodeInfo') {\n const rs = await this.getInstanceNodeInfo({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const { nodetype } = query;\n const ndoeTypeIndex = NodeType.indexOf(nodetype);\n return ndoeTypeIndex === -1\n ? []\n : _.map(rs[ndoeTypeIndex], (item) => ({ text: item.NodeId, value: item.NodeId }));\n }\n return [];\n }\n}\n","import _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n SCFInstanceAliasList,\n SCFInvalidDemensions,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n templateQueryIdMap,\n} from './query_def';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class SCFDatasource extends BaseDatasource {\n InstanceKey: string;\n Namespace: string;\n InstanceAliasList: string[];\n InvalidDimensions: Record;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n InstanceReqConfig: { service?: string | undefined; action: string; responseField: string };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n\n this.Namespace = 'QCE/SCF_V2';\n this.InstanceAliasList = SCFInstanceAliasList;\n this.InvalidDimensions = SCFInvalidDemensions;\n this.InstanceReqConfig = {\n service: 'scf',\n action: 'ListFunctions',\n responseField: 'Functions',\n };\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter(\n (item) =>\n /* hack:这里多加了筛选条件,是因为后端数据不准确,坑啊! 只拿取包含functionName的指标 */\n item.Dimensions?.[0]?.Dimensions?.includes('functionName') &&\n item.Dimensions?.[0]?.Dimensions?.includes('namespace') &&\n !item.MetricName.startsWith('Name')\n );\n }\n\n getVersions(region, params) {\n const serviceInfo = GetServiceAPIInfo(region, 'scf');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'ListVersionByFunction' }\n ).then((response) => {\n return response.Versions;\n });\n }\n\n async fetchMetricData(action: string, region: string, instance: any) {\n // console.log({ action, region, instance });\n if (action === 'ListVersionByFunction') {\n const rs = await this.getVersions(region, { FunctionName: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.version];\n return {\n text: o[this.templateQueryIdMap.version],\n value: o[this.templateQueryIdMap.version],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.version, rs);\n return result;\n }\n return [];\n }\n}\n","import {\n SQLSERVERInstanceAliasList,\n SQLSERVERInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = SQLSERVERInstanceAliasList;\n InvalidDimensions = SQLSERVERInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'sqlserver',\n action: 'DescribeDBInstances',\n responseField: 'DBInstances',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(rawSet.map((item) => modifyDimensons(item)));\n }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n getFilterDropdown({ field, region }) {\n if (field === 'Zone') {\n const serviceInfo = GetServiceAPIInfo(region, 'cvm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n return [];\n }\n}\n","import {\n TCAPLUSInstanceAliasList,\n TCAPLUSInvalidDemensions,\n namespace,\n templateQueryIdMap,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TCAPLUSInstanceAliasList;\n InvalidDimensions = TCAPLUSInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tcaplusdb',\n action: 'DescribeTables',\n responseField: 'TableInfos',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/tcaplusdb',\n },\n 'tcaplusdb',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n return _.map(response.RegionInfos || [], (item) => {\n return {\n text: t(item.RegionName),\n value: item.RegionName,\n };\n });\n });\n }\n}\n","import {\n TDMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n modifyDimensons,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class TDMQDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TDMQInstanceAliasList;\n InvalidDimensions = TDMQInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tdmq',\n action: 'DescribeClusters',\n responseField: 'ClusterSet',\n };\n extraActionMap = {\n DescribeTopics: {\n service: 'tdmq',\n action: 'DescribeTopics',\n responseField: 'TopicSets',\n pickKey: 'topicName',\n },\n DescribeEnvironments: {\n service: 'tdmq',\n action: 'DescribeEnvironments',\n responseField: 'EnvironmentSet',\n pickKey: 'environmentId',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(rawSet.map((item) => modifyDimensons(item)));\n }\n\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n // console.log({ rs });\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n Limit: 100,\n ClusterId: instance[this.templateQueryIdMap.instance],\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n if (action === 'DescribeTopics') {\n payload.EnvironmentId = this.getVariable(query['environmentid']);\n }\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import {\n TDMQRABBITMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class TDMQDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TDMQRABBITMQInstanceAliasList;\n InvalidDimensions = TDMQInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tdmq',\n action: 'DescribeRabbitMQVipInstances',\n responseField: 'Instances',\n };\n extraActionMap = {\n DescribeRabbitMQNodeList: {\n service: 'tdmq',\n action: 'DescribeRabbitMQNodeList',\n responseField: 'NodeList',\n pickKey: 'node',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n Limit: 100,\n InstanceId: instance[this.templateQueryIdMap.instance],\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import {\n TDMQROCKETMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class TDMQDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TDMQROCKETMQInstanceAliasList;\n InvalidDimensions = TDMQInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tdmq',\n action: 'DescribeRocketMQClusters',\n responseField: 'ClusterList',\n interceptor: {\n response: (result) =>\n _.map(result, (item) => ({\n ...item,\n ClusterId: _.get(item, 'Info.ClusterId', ''),\n ClusterName: _.get(item, 'Info.ClusterName', ''),\n })),\n },\n };\n extraActionMap = {\n DescribeRocketMQNamespaces: {\n service: 'tdmq',\n action: 'DescribeRocketMQNamespaces',\n responseField: 'Namespaces',\n pickKey: 'namespace',\n },\n DescribeRocketMQGroups: {\n service: 'tdmq',\n action: 'DescribeRocketMQGroups',\n responseField: 'Groups',\n pickKey: 'group',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter((item) => !item.Dimensions?.[0]?.Dimensions?.includes('rmqcluster'));\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n Limit: 100,\n ClusterId: instance[this.templateQueryIdMap.instance],\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n if (action === 'DescribeRocketMQGroups') {\n payload.NamespaceId = this.getVariable(query['clusternamespace']);\n }\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import { map, flatten, reduce, isEmpty, filter, split, sortBy, findIndex, trim, isArray, isString } from 'lodash';\nimport { GetServiceAPIInfo, ReplaceVariable } from '../../common/constants';\nimport { getTimeShiftInMs } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\n\nconst variableToArray = (variable) => {\n if (isEmpty(variable)) {\n return [];\n }\n if (isArray(variable)) {\n return variable;\n }\n if (isString(variable)) {\n return split(variable, ',').map((item) => trim(item));\n }\n return [];\n};\n\nexport default class TKEDatasource extends BaseDatasource {\n InstanceAliasList = ['ClusterId', 'ClusterName'];\n templateQueryIdMap = {\n instance: 'ClusterId',\n };\n InvalidDimensions = {\n tke_cluster_instance_id: 'ClusterId',\n };\n InstanceReqConfig = {\n service: 'tke',\n action: 'DescribeClusters',\n responseField: 'Clusters',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getMonitorData(params: any, region: any, instances: any, target: any, options: any) {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n const timeshift = getTimeShiftInMs(target.timeshift);\n const conditions = reduce(\n target.conditions,\n (prev, item) => {\n if (isEmpty(item.Key) || isEmpty(item.Operator) || isEmpty(item.Value)) {\n return prev;\n }\n return [\n ...filter(prev, (e) => e.Key !== item.Key),\n {\n Key: ReplaceVariable(this.templateSrv, options.scopedVars, item.Key, false),\n Operator: ReplaceVariable(this.templateSrv, options.scopedVars, item.Operator, false),\n Value: variableToArray(ReplaceVariable(this.templateSrv, options.scopedVars, item.Value, true)),\n },\n ];\n },\n [{ Key: 'tke_cluster_instance_id', Operator: '=', Value: instances.map((item) => item['ClusterId']) }]\n );\n\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Period: params.Period,\n MetricNames: [params.MetricName],\n Module: 'monitor',\n Namespace: 'QCE/TKE',\n EndTime: params.EndTime,\n StartTime: params.StartTime,\n Conditions: conditions,\n GroupBys: variableToArray(ReplaceVariable(this.templateSrv, options.scopedVars, target.groupBys, true)),\n },\n },\n serviceInfo.service,\n { action: 'DescribeStatisticData', region }\n ).then((response) => {\n return flatten(\n map(response.Data, (data) => {\n return map(data.Points, (point) => {\n const dimensionSort = sortBy(point.Dimensions, ['Name']);\n const dimensionString = [\n ...dimensionSort.splice(findIndex(dimensionSort, { Name: 'tke_cluster_instance_id' }), 1),\n ...dimensionSort,\n ]\n .map((dimension) => dimension.Value)\n .join(' - ');\n const timeshiftString = timeshift > 0 ? `_${target.timeshift}` : '';\n return {\n target: `${data.MetricName} - ${dimensionString}${timeshiftString}`,\n datapoints: map(point.Values, (value) => [value.Value, value.Timestamp * 1000 + timeshift]),\n };\n });\n })\n );\n });\n }\n}\n","import _ from 'lodash';\nimport { TSFInvalidDemensions, TSFInstanceAliasList, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class TSFDatasource extends BaseDatasource {\n Namespace = 'QCE/TSF';\n InstanceAliasList = TSFInstanceAliasList;\n InvalidDimensions = TSFInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'tsf',\n action: 'DescribeApplications',\n responseField: 'Content',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import {\n VCLBInstanceAliasList,\n VCLBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n clbNamespaceMap,\n regionSupported,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VCLBInstanceAliasList;\n InvalidDimensions = VCLBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'clb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n async getAllMetrics(region: string) {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n const { MetricSet: public_metrics } = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Namespace: clbNamespaceMap.public,\n },\n },\n serviceInfo.service,\n { region, action: 'DescribeBaseMetrics' }\n );\n const { MetricSet: private_metrics } = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Namespace: clbNamespaceMap.private,\n },\n },\n serviceInfo.service,\n { region, action: 'DescribeBaseMetrics' }\n );\n const res = Object.values(_.keyBy(_.concat(private_metrics, public_metrics), 'MetricName'));\n return res.map((t) => modifyDimensons(t));\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await this.getAllMetrics(region);\n return _.compact(rawSet);\n }\n}\n","import { VBCInstanceAliasList, VBCInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VBCInstanceAliasList;\n InvalidDimensions = VBCInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeCcns',\n responseField: 'CcnSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n getFilterDropdown({ field }) {\n return super.getRegions();\n }\n}\n","import {\n VPCNETDETECTInstanceAliasList,\n VPCNETInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VPCNETDETECTInstanceAliasList;\n InvalidDimensions = VPCNETInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeNetDetects',\n responseField: 'NetDetectSet',\n interceptor: {\n // response: (data: unknown[]) =>[\n // {\n // \"NetDetectId\": \"netd-12345678\",\n // },\n // ],\n },\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { VPNGWInstanceAliasList, VPNGWInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VPNGWInstanceAliasList;\n InvalidDimensions = VPNGWInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeVpnGateways',\n responseField: 'VpnGatewaySet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getFilterDropdown({ field, region }) {\n if (field === 'zone') {\n const serviceInfo = GetServiceAPIInfo(region, 'cvm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n return [];\n }\n}\n","import { VPNXInstanceAliasList, VPNXInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VPNXInstanceAliasList;\n InvalidDimensions = VPNXInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeVpnConnections',\n responseField: 'VpnConnectionSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import _ from 'lodash';\nimport {\n WAFInstanceAliasList,\n WAFInvalidDemensions,\n templateQueryIdMap,\n namespace,\n regionSupported,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { t } from '../../../locale';\n\nexport default class CDNDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = WAFInstanceAliasList;\n InvalidDimensions = WAFInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n // service: 'waf',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import coreModule from 'grafana/app/core/core_module';\nimport { APIGATEWAYFilterFieldsDescriptor, templateQueryIdMap, queryEditorName, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.APIGATEWAYFilterFieldsDescriptor = APIGATEWAYFilterFieldsDescriptor;\n $scope.namespace = namespace;\n };\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n // console.log({namespace, service});\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraDropdown = async (target) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const instanceId = $scope.getInstanceId();\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getEnvironmentNameList')({ region, instanceId });\n\n const result = rs.map((o) => {\n return {\n text: o.EnvironmentName,\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { BWPFilterFieldsDescriptor } from './query_def';\n\nexport class BWPQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.BWPFilterFieldsDescriptor = BWPFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cvm', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function bwpQuery() {\n return {\n template: template,\n controller: BWPQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('bwpQuery', bwpQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CDBFieldsDescriptor } from './query_def';\n\nexport class CDBQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CDBFieldsDescriptor = CDBFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'ZoneIds':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cdb', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n`;\n\nexport function cdbQuery() {\n return {\n template: template,\n controller: CDBQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('cdbQuery', cdbQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CDNFilterFieldsDescriptor } from './query_def';\n\nexport class CDNQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CDNFilterFieldsDescriptor = CDNFilterFieldsDescriptor;\n };\n\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n`;\n\nexport function cdnQuery() {\n return {\n template: template,\n controller: CDNQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('cdnQuery', cdnQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CDNPROVINCEFilterFieldsDescriptor, queryEditorName, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'Isp',\n field: 'isp',\n },\n {\n label: 'Province',\n field: 'district',\n },\n];\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CDNPROVINCEFilterFieldsDescriptor = CDNPROVINCEFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, field });\n return rs;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CFSQueryDescriptor } from './query_def';\n\nexport class SCFQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CFSQueryDescriptor = CFSQueryDescriptor;\n };\n\n $scope.getVersions = async (target) => {\n // console.log(2222);\n\n // return [{ text: 1, value: 1 }];\n // console.log(target, 'target');\n const { instance, region } = target;\n const fetcher = $scope.datasource.getServiceFn('scf', 'getVersions');\n if (!instance || !region) return [];\n\n return fetcher(region, { FunctionName: JSON.parse(instance).FunctionName }).then((res) => {\n // console.log(res, 'res');\n\n return res;\n });\n };\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: SCFQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\ncoreModule.directive('cfsQuery', scfQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CKAFKAQueryDescriptor, templateQueryIdMap } from './query_def';\nimport { isTargetEqual } from '../../common/utils';\n\nconst ExtraFields = [\n {\n label: 'ConsumerGroup',\n field: 'consumerGroup',\n },\n {\n label: 'TopicId',\n field: 'topicId',\n },\n {\n label: 'Partition',\n field: 'partition',\n },\n];\n\nexport class CKAFKAQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CKAFKAQueryDescriptor = CKAFKAQueryDescriptor;\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n $scope.onInstanceChange = (n, o) => {\n if(isTargetEqual(n,o,'LoadBalancerId')) return;\n $scope.target.consumerGroup = '';\n $scope.target.topicId = '';\n $scope.target.topicName = '';\n $scope.target.partition = '';\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('ckafka', 'getVariable')(instance);\n if (Array.isArray(instance)) instance = instance[0];\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).InstanceId;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n const InstanceId = $scope.getInstanceId();\n const fetcher = $scope.datasource.getServiceFn('ckafka', 'getConsumerGroups');\n const region = $scope.datasource.getServiceFn('ckafka', 'getVariable')(target.region);\n const res = await fetcher(region, { InstanceId, groupname: target.consumerGroup, topicid: target.topicId });\n\n const { TopicList, GroupList, PartitionList } = res;\n const data = {\n GroupList: GroupList.map((group) => {\n group._InstanceAliasValue = group.GroupName;\n return {\n text: group.GroupName,\n value: JSON.stringify(group),\n };\n }),\n TopicList: TopicList.map((topic) => {\n topic._InstanceAliasValue = topic[templateQueryIdMap.topicId];\n return {\n text: topic[templateQueryIdMap.topicId],\n value: JSON.stringify(topic), // 为了获取多维度的值,这里完全可以使用JSON.stringify()将整个对象放进去\n };\n }),\n PartitionList: PartitionList.map((par) => {\n par._InstanceAliasValue = par[templateQueryIdMap.partition];\n return {\n text: String(par[templateQueryIdMap.partition]),\n value: JSON.stringify(par),\n };\n }),\n };\n\n switch (field) {\n case 'consumerGroup':\n return data.GroupList;\n case 'topicId':\n return data.TopicList;\n case 'partition':\n return data.PartitionList;\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: CKAFKAQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n instance: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', (newValue, oldValue) => {\n scope.onInstanceChange?.(newValue, oldValue);\n });\n },\n };\n}\ncoreModule.directive('ckafkaQuery', scfQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { get, chain } from 'lodash';\nimport { LOADBALANCEFieldsDescriptor, templateQueryIdMap, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\nimport { isTargetEqual } from '../../common/utils';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.LOADBALANCEFieldsDescriptor = LOADBALANCEFieldsDescriptor;\n $scope.serversList = [];\n };\n $scope.onFieldChange = (field) => {\n $scope.onRefresh();\n };\n $scope.onInstanceChange = (n, o) => {\n if(isTargetEqual(n,o,'InstanceId')) return;\n $scope.target.listener = '';\n $scope.target.servers = '';\n $scope.target.serverPort = '';\n };\n $scope.getVariableId = (data, type) => {\n let variableData = data;\n const service = GetServiceFromNamespace(namespace);\n\n variableData = $scope.datasource.getServiceFn(service, 'getVariable')(variableData);\n if (!variableData) {\n return '';\n }\n try {\n variableData = JSON.parse(variableData)[templateQueryIdMap[type]];\n } catch (error) {\n // console.log();\n }\n return variableData;\n };\n $scope.getExtraDropdown = async (target) => {\n const { instance } = $scope.target;\n const service = GetServiceFromNamespace(namespace);\n const instanceId = $scope.getVariableId(instance, 'instance');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getListenerList')({ region, instanceId });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap.listener];\n return {\n text: o[templateQueryIdMap.listener],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n $scope.getServersDropdown = async (target) => {\n const { instance, listener } = $scope.target;\n const service = GetServiceFromNamespace(namespace);\n const instanceId = $scope.getVariableId(instance, 'instance');\n const listenerId = $scope.getVariableId(listener, 'listener');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const serversList = await $scope.datasource.getServiceFn(\n service,\n 'getServerList'\n )({ region, instanceId, listenerId });\n $scope.serversList = serversList;\n const res = chain(serversList)\n .map((item) => {\n item._InstanceAliasValue = get(item, 'PrivateIpAddresses.0');\n return {\n text: get(item, 'PrivateIpAddresses.0'),\n value: JSON.stringify(item),\n };\n })\n .uniqBy('text')\n .value();\n return res;\n };\n $scope.getServerPortDropdown = async (target) => {\n const { servers } = $scope.target;\n let serverPortList: any[] = [];\n try {\n const serversSource = JSON.parse(servers);\n serverPortList = chain($scope.serversList)\n .filter((item) => get(serversSource, 'PrivateIpAddresses.0') === get(item, 'PrivateIpAddresses.0'))\n .map((item) => {\n item._InstanceAliasValue = get(item, 'Port');\n return {\n text: `${get(item, 'Port')}`,\n value: JSON.stringify(item),\n };\n })\n .value();\n } catch (error) {}\n return serverPortList;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n namespace: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', (newValue, oldValue) => {\n scope.onInstanceChange?.(newValue, oldValue);\n });\n },\n };\n}\ncoreModule.directive('clbQuery', sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CLSFilterFieldsDescriptor, queryEditorName } from './query_def';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.GSEFilterFieldsDescriptor = CLSFilterFieldsDescriptor;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n \n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import createQuery from '../_base/query';\nimport { InstanceQueryDescriptor } from './query_def';\n\ncreateQuery('cmqQuery', {\n fieldDescriptor: InstanceQueryDescriptor,\n instanceDocUrl: 'https://cloud.tencent.com/document/api/406/42624',\n namespace: 'QCE/CMQ',\n});\n","import coreModule from 'grafana/app/core/core_module';\nimport { InstanceQueryDescriptor } from './query_def';\n\nconst ExtraFields = [\n {\n label: 'Subscription(订阅)',\n field: 'subscriptionId',\n },\n];\n\nexport class CmqTopicQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.InstanceQueryDescriptor = InstanceQueryDescriptor;\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n // 各个实例下的订阅,由于不想每次都重复发请求,所以这里做了一层缓存,数据结构为{ [instanceId]: { } }\n $scope.cacheMap = {};\n\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getTopicName = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('cmqTopic', 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).TopicName;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.onExtraFieldChange = (field) => {\n $scope.onRefresh();\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n if (field === 'subscriptionId') {\n const TopicName = $scope.getTopicName();\n let data = $scope.cacheMap[TopicName];\n\n if (!data) {\n const region = $scope.datasource.getServiceFn('cmqTopic', 'getVariable')(target.region);\n const fetcher = $scope.datasource.getServiceFn('cmqTopic', 'fetchAllSubscription');\n const datas = await fetcher(region, { TopicName });\n data = datas.map((item) => {\n item._InstanceAliasValue = item.SubscriptionId;\n return { text: item.SubscriptionId, value: JSON.stringify(item) };\n });\n }\n\n // 缓存\n $scope.cacheMap[TopicName] = data;\n return data;\n }\n return [];\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: CmqTopicQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('cmqTopicQuery', scfQuery);\n","import _ from 'lodash';\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 与名称挂钩的变量\nconst InstanceAliasList = ['BucketName'];\nexport { InstanceAliasList, GetInstanceQueryParams };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'BucketName',\n queries: {},\n};\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CVMFilterFieldsDescriptor } from './query_def';\n\nexport class CVMQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CVMFilterFieldsDescriptor = CVMFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cvm', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function cvmQuery() {\n return {\n template: template,\n controller: CVMQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('cvmQuery', cvmQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { DCDBFilterFieldsDescriptor, queryEditorName, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'nodeid',\n field: 'NodeId',\n action: 'DescribeDCDBInstanceNodeInfo',\n },\n {\n label: 'shardid',\n field: 'ShardId',\n action: 'DescribeDCDBShards',\n },\n];\nconst dropdownTextConfig = {\n DescribeDCDBInstanceNodeInfo: 'NodeId',\n DescribeDCDBShards: 'ShardInstanceId',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.DCDBFilterFieldsDescriptor = DCDBFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const instanceId = $scope.getInstanceId();\n const payload: any = {\n InstanceId: instanceId,\n Limit: 100,\n };\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { ECMBLOCKSTORAGEFilterFieldsDescriptor, queryEditorName, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n // {\n // label: 'nodeid',\n // field: 'NodeId',\n // action: 'DescribeInstanceNodeInfo',\n // },\n {\n label: 'diskId',\n field: 'diskId',\n },\n];\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.ECMBLOCKSTORAGEFilterFieldsDescriptor = ECMBLOCKSTORAGEFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n // $scope.getInstanceId = () => {\n // let { instance } = $scope.target;\n // const service = GetServiceFromNamespace($scope.namespace);\n // instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n // if (!instance) {\n // return '';\n // }\n // try {\n // instance = JSON.parse(instance)[templateQueryIdMap.instance];\n // } catch (error) {\n // console.log();\n // }\n // return instance;\n // };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = (target, action) => {\n let { instance } = target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n try {\n instance = JSON.parse(instance);\n const { DataDisks: dataDisks } = instance;\n return dataDisks.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap.diskId];\n return {\n text: o[templateQueryIdMap.diskId],\n value: JSON.stringify(o),\n };\n });\n } catch (error) {\n // console.log('instance error', instance);\n const payload: any = {\n InstanceId: instance,\n };\n const rs = $scope.datasource.getServiceFn(service, 'getDiskList')({ payload });\n const result = rs.map((o) => {\n return {\n text: o[templateQueryIdMap.diskId],\n value: JSON.stringify(o),\n };\n });\n return result;\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { GSEFilterFieldsDescriptor, templateQueryIdMap, queryEditorName, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'fleetId',\n field: 'FleetId',\n },\n {\n label: 'queueName',\n field: 'Name',\n },\n];\nconst actionMaps = {\n FleetId: 'getFleetList',\n Name: 'getQueueNameList',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.GSEFilterFieldsDescriptor = GSEFilterFieldsDescriptor;\n $scope.namespace = namespace;\n };\n\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n // console.log({namespace, service});\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraDropdown = async (target, field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const instanceId = $scope.getInstanceId();\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n // const rs = await $scope.datasource.getServiceFn(service, 'getEnvironmentNameList')({ region, instanceId });\n let rs = await $scope.datasource.getServiceFn(service, actionMaps[field])({ region, instanceId });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[field]];\n return {\n text: o[templateQueryIdMap[field]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { LBFilterDescriptor } from './query_def';\n\nexport class LBQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n // $scope.LBQueryDescriptor = LBQueryDescriptor;\n $scope.LBFilterDescriptor = LBFilterDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cvm', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n\n\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function lbQuery() {\n return {\n template: template,\n controller: LBQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('lbQuery', lbQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { LighthouseFilterFieldsDescriptor } from './query_def';\n\nexport class LighthouseQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.LighthouseFilterFieldsDescriptor = LighthouseFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('lighthouse', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n`;\n\nexport function lighthouseQuery() {\n return {\n template: template,\n controller: LighthouseQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('lighthouseQuery', lighthouseQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { map, get, find, times } from 'lodash';\nimport { MONGODBFieldsDescriptor, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nexport class MongoDBQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.MONGODBFieldsDescriptor = MONGODBFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.onInstanceChange = (n, o) => {\n if (n === o) {\n return;\n }\n $scope.target.replica = '';\n $scope.target.node = '';\n };\n\n $scope.getVariableId = (data, type) => {\n let variableData = data;\n const service = GetServiceFromNamespace('QCE/CMONGO');\n\n variableData = $scope.datasource.getServiceFn(service, 'getVariable')(variableData);\n if (!variableData) {\n return '';\n }\n try {\n variableData = JSON.parse(variableData)[templateQueryIdMap[type]];\n } catch (error) {\n // console.log();\n }\n return variableData;\n };\n\n $scope.getExtraDropdown = async (target, type) => {\n const { instance, replica } = $scope.target;\n const service = GetServiceFromNamespace('QCE/CMONGO');\n const instanceId = $scope.getVariableId(instance, 'instance');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const [res] = await $scope.datasource.getServiceFn(service, 'getInstances')(region, {\n InstanceIds: [instanceId],\n });\n if (type === 'replica') {\n return map(get(res, 'ReplicaSets', []), (item) => {\n item._InstanceAliasValue = item.ReplicaSetId;\n return { text: item.ReplicaSetId, value: JSON.stringify(item) };\n });\n }\n if (type === 'node' && replica !== '') {\n const replicaId = $scope.getVariableId(replica, 'replica');\n const targetReplica = find(get(res, 'ReplicaSets', []), { ReplicaSetId: replicaId });\n const options = times(targetReplica.SecondaryNum, (index) => {\n const nodeId = `${targetReplica.ReplicaSetId}-node-slave${index}`;\n return {\n text: nodeId,\n value: JSON.stringify({ NodeId: nodeId, _InstanceAliasValue: `${targetReplica.ReplicaSetId} - ${nodeId}` }),\n };\n });\n return [\n {\n text: `${targetReplica.ReplicaSetId}-node-primary`,\n value: JSON.stringify({\n NodeId: `${targetReplica.ReplicaSetId}-node-primary`,\n _InstanceAliasValue: `${targetReplica.ReplicaSetId} - ${`${targetReplica.ReplicaSetId}-node-primary`}`,\n }),\n },\n ...options,\n ];\n }\n return [];\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n`;\n\nexport function mongodbQuery() {\n return {\n template: template,\n controller: MongoDBQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onRefresh: '&',\n onChange: '&',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', (newValue, oldValue) => {\n scope.onInstanceChange?.(newValue, oldValue);\n });\n },\n };\n}\n\ncoreModule.directive('mongodbQuery', mongodbQuery);\n","import { InstanceQueryDescriptor, templateQueryIdMap } from './query_def';\nimport coreModule from 'grafana/app/core/core_module';\n\nconst ExtraFields = [\n {\n label: 'NodeIP',\n field: 'nodeIP',\n },\n];\n\nexport class MrQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.InstanceQueryDescriptor = InstanceQueryDescriptor;\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n // 各个实例下的订阅,由于不想每次都重复发请求,所以这里做了一层缓存,数据结构为{ [instanceId]: { } }\n $scope.cacheMap = {};\n\n $scope.getExtraFields = () => {\n return Object.keys($scope.dims ?? {}).some((item: string) => item.startsWith('host4')) ? ExtraFields : [];\n // return ExtraFields;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('mrHDFS', 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).ClusterId;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.onExtraFieldChange = (field) => {\n $scope.onRefresh();\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n if (field === 'nodeIP') {\n const InstanceId = $scope.getInstanceId();\n let data = $scope.cacheMap[InstanceId];\n\n if (!data) {\n const region = $scope.datasource.getServiceFn('mrHDFS', 'getVariable')(target.region);\n const fetcher = $scope.datasource.getServiceFn('mrHDFS', 'fetchAllNodes');\n const dataT = await fetcher(region, { InstanceId, NodeFlag: 'all' });\n data = dataT.map((item) => {\n item._InstanceAliasValue = item[templateQueryIdMap.node];\n return {\n text: item[templateQueryIdMap.node],\n value: JSON.stringify(item),\n };\n });\n }\n\n // 缓存\n $scope.cacheMap[InstanceId] = data;\n return data;\n }\n return [];\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n
\n\n \n \n
\n
\n
\n
\n\n
\n`;\n\nexport function mrQuery() {\n return {\n template: template,\n controller: MrQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('mrQuery', mrQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { NATGatewayFilterFieldsDescriptor } from './query_def';\n\nexport class NatGatewayQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.NATGatewayFilterFieldsDescriptor = NATGatewayFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function natGatewayQuery() {\n return {\n template: template,\n controller: NatGatewayQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('natGatewayQuery', natGatewayQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { OVCDNFilterFieldsDescriptor } from './query_def';\n\nexport class OVCDNQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.OVCDNFilterFieldsDescriptor = OVCDNFilterFieldsDescriptor;\n };\n\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n`;\n\nexport function ovCdnQuery() {\n return {\n template: template,\n controller: OVCDNQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('ovCdnQuery', ovCdnQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { PCXFieldsDescriptor } from './query_def';\n\nexport class PCXQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.PCXFieldsDescriptor = PCXFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'vpcId':\n return $scope.getVpcIds();\n default:\n return [];\n }\n };\n\n $scope.getVpcIds = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getVpcIds('pcx', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function pcxQuery() {\n return {\n template: template,\n controller: PCXQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('pcxQuery', pcxQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { RedisFieldsDescriptor } from './query_def';\n\nexport class RedisQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.RedisFieldsDescriptor = RedisFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function redisQuery() {\n return {\n template: template,\n controller: RedisQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('redisQuery', redisQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { map } from 'lodash';\nimport { RedisMemFieldsDescriptor, templateQueryIdMap, NodeType, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nexport class RedisMemQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.RedisMemFieldsDescriptor = RedisMemFieldsDescriptor;\n };\n\n $scope.clearExtrasAlias = () => {\n $scope.target.rnodeid = '';\n $scope.target.pnodeid = '';\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.getVariableId = (data, type) => {\n let variableData = data;\n const service = GetServiceFromNamespace(namespace);\n\n variableData = $scope.datasource.getServiceFn(service, 'getVariable')(variableData);\n if (!variableData) {\n return '';\n }\n try {\n variableData = JSON.parse(variableData)[templateQueryIdMap[type]];\n } catch (error) {}\n return variableData;\n };\n\n $scope.getExtraDropdown = async (target, nodetype) => {\n const { instance } = $scope.target;\n const service = GetServiceFromNamespace(namespace);\n const instanceId = $scope.getVariableId(instance, 'instance');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getInstanceNodeInfo')({ region, instanceId });\n\n const ndoeTypeIndex = NodeType.indexOf(nodetype);\n return ndoeTypeIndex === -1 ? [] : map(rs[ndoeTypeIndex], (item) => ({ text: item.NodeId, value: item.NodeId }));\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n`;\n\nexport function redisMemQuery() {\n return {\n template: template,\n controller: RedisMemQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', () => {\n scope.clearExtrasAlias?.();\n });\n scope.$watch('target.metricName', () => {\n scope.clearExtrasAlias?.();\n });\n },\n };\n}\n\ncoreModule.directive('redisMemQuery', redisMemQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { SCFQueryDescriptor, templateQueryIdMap } from './query_def';\n\nexport class SCFQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.SCFQueryDescriptor = SCFQueryDescriptor;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('scf', 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).FunctionName;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.getVersions = async (target) => {\n // console.log(2222);\n\n // return [{ text: 1, value: 1 }];\n // console.log(target, 'target');\n // let { instance, region } = target;\n const FunctionName = $scope.getInstanceId();\n const region = $scope.datasource.getServiceFn('scf', 'getVariable')(target.region);\n if (!FunctionName || !region) return [];\n\n const fetcher = $scope.datasource.getServiceFn('scf', 'getVersions');\n\n return fetcher(region, { FunctionName }).then((res) => {\n // console.log(res, 'res');\n const result = res.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap.version];\n return {\n text: o[templateQueryIdMap.version],\n value: JSON.stringify(o),\n };\n });\n return result;\n });\n };\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: SCFQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n },\n };\n}\ncoreModule.directive('scfQuery', scfQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TDMQFilterFieldsDescriptor, queryEditorName, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'environmentId',\n field: 'environmentId',\n action: 'DescribeEnvironments',\n },\n {\n label: 'topicName',\n field: 'topicName',\n action: 'DescribeTopics',\n },\n];\n\nconst dropdownTextConfig = {\n DescribeTopics: 'topicName',\n DescribeEnvironments: 'environmentId',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TDMQFilterFieldsDescriptor = TDMQFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const payload: any = {\n Limit: 100,\n ClusterId: $scope.getInstanceId(),\n };\n if (action === 'DescribeTopics') {\n let evId = $scope.target.environmentId;\n try {\n evId = JSON.parse(evId);\n evId = evId[templateQueryIdMap.environmentId];\n } catch (e) {}\n payload.EnvironmentId = evId;\n }\n\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n label: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TDMQFilterFieldsDescriptor, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'Node',\n field: 'node',\n action: 'DescribeRabbitMQNodeList',\n },\n];\n\nconst dropdownTextConfig = {\n DescribeRabbitMQNodeList: 'node',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TDMQFilterFieldsDescriptor = TDMQFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.clearExtrasAlias = () => {\n $scope.target.node = '';\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const payload: any = {\n Limit: 100,\n InstanceId: $scope.getInstanceId(),\n };\n\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n label: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', () => {\n scope.clearExtrasAlias?.();\n });\n scope.$watch('target.metricName', () => {\n scope.clearExtrasAlias?.();\n });\n },\n };\n}\ncoreModule.directive('tdmqRabbitmqQuery', sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TDMQFilterFieldsDescriptor, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'Namespace',\n field: 'namespace',\n action: 'DescribeRocketMQNamespaces',\n },\n {\n label: 'Group',\n field: 'group',\n action: 'DescribeRocketMQGroups',\n },\n];\n\nconst dropdownTextConfig = {\n DescribeRocketMQNamespaces: 'namespace',\n DescribeRocketMQGroups: 'group',\n};\nexport class TdmqRocketmqQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TDMQFilterFieldsDescriptor = TDMQFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.clearExtrasAlias = () => {\n $scope.target.namespace = '';\n $scope.target.group = '';\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const payload: any = {\n Limit: 100,\n ClusterId: $scope.getInstanceId(),\n };\n if (action === 'DescribeRocketMQGroups') {\n let namespace = $scope.target.namespace;\n try {\n namespace = JSON.parse(namespace)[templateQueryIdMap.namespace];\n } catch (e) {}\n payload.NamespaceId = $scope.datasource.getServiceFn(service, 'getVariable')(namespace);\n }\n\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function tdmqRocketmqQuery() {\n return {\n template: template,\n controller: TdmqRocketmqQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', () => {\n scope.clearExtrasAlias?.();\n });\n scope.$watch('target.metricName', () => {\n scope.clearExtrasAlias?.();\n });\n },\n };\n}\ncoreModule.directive('tdmqRocketmqQuery', tdmqRocketmqQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { isEmpty } from 'lodash';\nimport { TKEFilterFieldsDescriptor } from './query_def';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TKEFilterFieldsDescriptor = TKEFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.addCondition = () => {\n $scope.target.conditions.push({ Key: '', Operator: '=', Value: '' });\n };\n\n $scope.deleteCondition = (index) => {\n const targetCondition = $scope.target.conditions[index];\n if (isEmpty(targetCondition.Key) || isEmpty(targetCondition.Operator) || isEmpty(targetCondition.Value)) {\n $scope.target.conditions.splice(index, 1);\n } else {\n $scope.target.conditions.splice(index, 1);\n $scope.onRefresh();\n }\n };\n\n $scope.getOperator = () => {\n return Promise.resolve([\n { text: '=', value: '=' },\n { text: 'in', value: 'in' },\n ]);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n \n
\n
\n \n
\n \n \n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('tkeQuery', sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TSFFieldsDescriptor } from './query_def';\n\nexport class TSFQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TSFFieldsDescriptor = TSFFieldsDescriptor;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function tsfQuery() {\n return {\n template: template,\n controller: TSFQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('tsfQuery', tsfQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { VBCFilterFieldsDescriptor, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields: any = [\n // {\n // label: 'SRegion',\n // field: 'SRegion',\n // },\n // {\n // label: 'DRegion',\n // field: 'DRegion',\n // },\n];\n\nexport class VBCQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.VBCFilterFieldsDescriptor = VBCFilterFieldsDescriptor;\n $scope.namespace = namespace;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getExtraDropdown = (field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n // return $scope.datasource.getServiceFn(service, 'getFilterDropdown')({ field })\n return $scope.datasource.getFilterDropdown(service, { field });\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: VBCQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('vbcQuery', scfQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","var map = {\n\t\".\": 19,\n\t\"./\": 19,\n\t\"./MonitorDatasource\": 182,\n\t\"./MonitorDatasource.ts\": 182,\n\t\"./_base/datasource\": 3,\n\t\"./_base/datasource.ts\": 3,\n\t\"./_base/query\": 7,\n\t\"./_base/query.ts\": 7,\n\t\"./_base/query_filter\": 185,\n\t\"./_base/query_filter.ts\": 185,\n\t\"./_base/types\": 186,\n\t\"./_base/types.ts\": 186,\n\t\"./apigateway/datasource\": 70,\n\t\"./apigateway/datasource.ts\": 70,\n\t\"./apigateway/query\": 126,\n\t\"./apigateway/query.ts\": 126,\n\t\"./apigateway/query_def\": 21,\n\t\"./apigateway/query_def.ts\": 21,\n\t\"./bmIntraLb/datasource\": 71,\n\t\"./bmIntraLb/datasource.ts\": 71,\n\t\"./bmIntraLb/query\": 127,\n\t\"./bmIntraLb/query.ts\": 127,\n\t\"./bmIntraLb/query_def\": 29,\n\t\"./bmIntraLb/query_def.ts\": 29,\n\t\"./bm_lb/datasource\": 72,\n\t\"./bm_lb/datasource.ts\": 72,\n\t\"./bm_lb/query\": 128,\n\t\"./bm_lb/query.ts\": 128,\n\t\"./bm_lb/query_def\": 30,\n\t\"./bm_lb/query_def.ts\": 30,\n\t\"./bm_pcx/datasource\": 73,\n\t\"./bm_pcx/datasource.ts\": 73,\n\t\"./bm_pcx/query\": 129,\n\t\"./bm_pcx/query.ts\": 129,\n\t\"./bm_pcx/query_def\": 31,\n\t\"./bm_pcx/query_def.ts\": 31,\n\t\"./bwp/datasource\": 74,\n\t\"./bwp/datasource.ts\": 74,\n\t\"./bwp/query\": 130,\n\t\"./bwp/query.ts\": 130,\n\t\"./bwp/query_def\": 61,\n\t\"./bwp/query_def.ts\": 61,\n\t\"./cbs/datasource\": 75,\n\t\"./cbs/datasource.ts\": 75,\n\t\"./cbs/query\": 131,\n\t\"./cbs/query.ts\": 131,\n\t\"./cbs/query_def\": 32,\n\t\"./cbs/query_def.ts\": 32,\n\t\"./cdb/datasource\": 76,\n\t\"./cdb/datasource.ts\": 76,\n\t\"./cdb/query\": 132,\n\t\"./cdb/query.ts\": 132,\n\t\"./cdb/query_def\": 42,\n\t\"./cdb/query_def.ts\": 42,\n\t\"./cdn/datasource\": 77,\n\t\"./cdn/datasource.ts\": 77,\n\t\"./cdn/query\": 133,\n\t\"./cdn/query.ts\": 133,\n\t\"./cdn/query_def\": 62,\n\t\"./cdn/query_def.ts\": 62,\n\t\"./cdn_province/datasource\": 78,\n\t\"./cdn_province/datasource.ts\": 78,\n\t\"./cdn_province/query\": 134,\n\t\"./cdn_province/query.ts\": 134,\n\t\"./cdn_province/query_def\": 33,\n\t\"./cdn_province/query_def.ts\": 33,\n\t\"./ceip_summary/datasource\": 79,\n\t\"./ceip_summary/datasource.ts\": 79,\n\t\"./ceip_summary/query\": 135,\n\t\"./ceip_summary/query.ts\": 135,\n\t\"./ceip_summary/query_def\": 34,\n\t\"./ceip_summary/query_def.ts\": 34,\n\t\"./ces/datasource\": 80,\n\t\"./ces/datasource.ts\": 80,\n\t\"./ces/query\": 136,\n\t\"./ces/query.ts\": 136,\n\t\"./ces/query_def\": 43,\n\t\"./ces/query_def.ts\": 43,\n\t\"./cfs/datasource\": 81,\n\t\"./cfs/datasource.ts\": 81,\n\t\"./cfs/query\": 137,\n\t\"./cfs/query.ts\": 137,\n\t\"./cfs/query_def\": 55,\n\t\"./cfs/query_def.ts\": 55,\n\t\"./ckafka/datasource\": 82,\n\t\"./ckafka/datasource.ts\": 82,\n\t\"./ckafka/query\": 138,\n\t\"./ckafka/query.ts\": 138,\n\t\"./ckafka/query_def\": 10,\n\t\"./ckafka/query_def.ts\": 10,\n\t\"./clb/datasource\": 83,\n\t\"./clb/datasource.ts\": 83,\n\t\"./clb/query\": 139,\n\t\"./clb/query.ts\": 139,\n\t\"./clb/query_def\": 12,\n\t\"./clb/query_def.ts\": 12,\n\t\"./cls/datasource\": 84,\n\t\"./cls/datasource.ts\": 84,\n\t\"./cls/query\": 140,\n\t\"./cls/query.ts\": 140,\n\t\"./cls/query_def\": 27,\n\t\"./cls/query_def.ts\": 27,\n\t\"./cmq/datasource\": 85,\n\t\"./cmq/datasource.ts\": 85,\n\t\"./cmq/query\": 141,\n\t\"./cmq/query.ts\": 141,\n\t\"./cmq/query_def\": 56,\n\t\"./cmq/query_def.ts\": 56,\n\t\"./cmq_topic/datasource\": 86,\n\t\"./cmq_topic/datasource.ts\": 86,\n\t\"./cmq_topic/query\": 142,\n\t\"./cmq_topic/query.ts\": 142,\n\t\"./cmq_topic/query_def\": 35,\n\t\"./cmq_topic/query_def.ts\": 35,\n\t\"./cos/datasource\": 87,\n\t\"./cos/datasource.ts\": 87,\n\t\"./cos/query_def\": 143,\n\t\"./cos/query_def.ts\": 143,\n\t\"./cpm/datasource\": 88,\n\t\"./cpm/datasource.ts\": 88,\n\t\"./cpm/query\": 144,\n\t\"./cpm/query.ts\": 144,\n\t\"./cpm/query_def\": 36,\n\t\"./cpm/query_def.ts\": 36,\n\t\"./cvm/datasource\": 89,\n\t\"./cvm/datasource.ts\": 89,\n\t\"./cvm/query\": 145,\n\t\"./cvm/query.ts\": 145,\n\t\"./cvm/query_def\": 57,\n\t\"./cvm/query_def.ts\": 57,\n\t\"./cynosdb_mysql/datasource\": 90,\n\t\"./cynosdb_mysql/datasource.ts\": 90,\n\t\"./cynosdb_mysql/query\": 146,\n\t\"./cynosdb_mysql/query.ts\": 146,\n\t\"./cynosdb_mysql/query_def\": 24,\n\t\"./cynosdb_mysql/query_def.ts\": 24,\n\t\"./dc/datasource\": 91,\n\t\"./dc/datasource.ts\": 91,\n\t\"./dc/query\": 147,\n\t\"./dc/query.ts\": 147,\n\t\"./dc/query_def\": 44,\n\t\"./dc/query_def.ts\": 44,\n\t\"./dcdb/datasource\": 92,\n\t\"./dcdb/datasource.ts\": 92,\n\t\"./dcdb/query\": 148,\n\t\"./dcdb/query.ts\": 148,\n\t\"./dcdb/query_def\": 15,\n\t\"./dcdb/query_def.ts\": 15,\n\t\"./dcg/datasource\": 93,\n\t\"./dcg/datasource.ts\": 93,\n\t\"./dcg/query\": 149,\n\t\"./dcg/query.ts\": 149,\n\t\"./dcg/query_def\": 45,\n\t\"./dcg/query_def.ts\": 45,\n\t\"./dcx/datasource\": 94,\n\t\"./dcx/datasource.ts\": 94,\n\t\"./dcx/query\": 150,\n\t\"./dcx/query.ts\": 150,\n\t\"./dcx/query_def\": 46,\n\t\"./dcx/query_def.ts\": 46,\n\t\"./ecdn/datasource\": 95,\n\t\"./ecdn/datasource.ts\": 95,\n\t\"./ecdn/query\": 151,\n\t\"./ecdn/query.ts\": 151,\n\t\"./ecdn/query_def\": 37,\n\t\"./ecdn/query_def.ts\": 37,\n\t\"./ecm/datasource\": 96,\n\t\"./ecm/datasource.ts\": 96,\n\t\"./ecm/query\": 152,\n\t\"./ecm/query.ts\": 152,\n\t\"./ecm/query_def\": 38,\n\t\"./ecm/query_def.ts\": 38,\n\t\"./ecm_block_storage/datasource\": 97,\n\t\"./ecm_block_storage/datasource.ts\": 97,\n\t\"./ecm_block_storage/query\": 153,\n\t\"./ecm_block_storage/query.ts\": 153,\n\t\"./ecm_block_storage/query_def\": 20,\n\t\"./ecm_block_storage/query_def.ts\": 20,\n\t\"./ecm_lb/datasource\": 98,\n\t\"./ecm_lb/datasource.ts\": 98,\n\t\"./ecm_lb/query\": 154,\n\t\"./ecm_lb/query.ts\": 154,\n\t\"./ecm_lb/query_def\": 47,\n\t\"./ecm_lb/query_def.ts\": 47,\n\t\"./gse/datasource\": 99,\n\t\"./gse/datasource.ts\": 99,\n\t\"./gse/query\": 155,\n\t\"./gse/query.ts\": 155,\n\t\"./gse/query_def\": 14,\n\t\"./gse/query_def.ts\": 14,\n\t\"./index\": 19,\n\t\"./index.ts\": 19,\n\t\"./lb/datasource\": 100,\n\t\"./lb/datasource.ts\": 100,\n\t\"./lb/query\": 156,\n\t\"./lb/query.ts\": 156,\n\t\"./lb/query_def\": 63,\n\t\"./lb/query_def.ts\": 63,\n\t\"./lighthouse/datasource\": 101,\n\t\"./lighthouse/datasource.ts\": 101,\n\t\"./lighthouse/query\": 157,\n\t\"./lighthouse/query.ts\": 157,\n\t\"./lighthouse/query_def\": 54,\n\t\"./lighthouse/query_def.ts\": 54,\n\t\"./mongodb/datasource\": 102,\n\t\"./mongodb/datasource.ts\": 102,\n\t\"./mongodb/query\": 158,\n\t\"./mongodb/query.ts\": 158,\n\t\"./mongodb/query_def\": 48,\n\t\"./mongodb/query_def.ts\": 48,\n\t\"./mr/datasource\": 103,\n\t\"./mr/datasource.ts\": 103,\n\t\"./mr/query\": 159,\n\t\"./mr/query.ts\": 159,\n\t\"./mr/query_def\": 22,\n\t\"./mr/query_def.ts\": 22,\n\t\"./nat_gateway/datasource\": 104,\n\t\"./nat_gateway/datasource.ts\": 104,\n\t\"./nat_gateway/query\": 160,\n\t\"./nat_gateway/query.ts\": 160,\n\t\"./nat_gateway/query_def\": 64,\n\t\"./nat_gateway/query_def.ts\": 64,\n\t\"./ov_cdn/datasource\": 105,\n\t\"./ov_cdn/datasource.ts\": 105,\n\t\"./ov_cdn/query\": 161,\n\t\"./ov_cdn/query.ts\": 161,\n\t\"./ov_cdn/query_def\": 65,\n\t\"./ov_cdn/query_def.ts\": 65,\n\t\"./pcx/datasource\": 106,\n\t\"./pcx/datasource.ts\": 106,\n\t\"./pcx/query\": 162,\n\t\"./pcx/query.ts\": 162,\n\t\"./pcx/query_def\": 58,\n\t\"./pcx/query_def.ts\": 58,\n\t\"./postgresql/datasource\": 107,\n\t\"./postgresql/datasource.ts\": 107,\n\t\"./postgresql/query\": 163,\n\t\"./postgresql/query.ts\": 163,\n\t\"./postgresql/query_def\": 39,\n\t\"./postgresql/query_def.ts\": 39,\n\t\"./qaap/datasource\": 108,\n\t\"./qaap/datasource.ts\": 108,\n\t\"./qaap/query\": 164,\n\t\"./qaap/query.ts\": 164,\n\t\"./qaap/query_def\": 49,\n\t\"./qaap/query_def.ts\": 49,\n\t\"./redis/datasource\": 109,\n\t\"./redis/datasource.ts\": 109,\n\t\"./redis/query\": 165,\n\t\"./redis/query.ts\": 165,\n\t\"./redis/query_def\": 59,\n\t\"./redis/query_def.ts\": 59,\n\t\"./redis_mem/datasource\": 110,\n\t\"./redis_mem/datasource.ts\": 110,\n\t\"./redis_mem/query\": 166,\n\t\"./redis_mem/query.ts\": 166,\n\t\"./redis_mem/query_def\": 16,\n\t\"./redis_mem/query_def.ts\": 16,\n\t\"./scf/datasource\": 111,\n\t\"./scf/datasource.ts\": 111,\n\t\"./scf/query\": 167,\n\t\"./scf/query.ts\": 167,\n\t\"./scf/query_def\": 25,\n\t\"./scf/query_def.ts\": 25,\n\t\"./sqlserver/datasource\": 112,\n\t\"./sqlserver/datasource.ts\": 112,\n\t\"./sqlserver/query\": 168,\n\t\"./sqlserver/query.ts\": 168,\n\t\"./sqlserver/query_def\": 28,\n\t\"./sqlserver/query_def.ts\": 28,\n\t\"./tcaplus/datasource\": 113,\n\t\"./tcaplus/datasource.ts\": 113,\n\t\"./tcaplus/query\": 169,\n\t\"./tcaplus/query.ts\": 169,\n\t\"./tcaplus/query_def\": 50,\n\t\"./tcaplus/query_def.ts\": 50,\n\t\"./tdmq/datasource\": 114,\n\t\"./tdmq/datasource.ts\": 114,\n\t\"./tdmq/query\": 170,\n\t\"./tdmq/query.ts\": 170,\n\t\"./tdmq/query_def\": 13,\n\t\"./tdmq/query_def.ts\": 13,\n\t\"./tdmq_rabbitmq/datasource\": 115,\n\t\"./tdmq_rabbitmq/datasource.ts\": 115,\n\t\"./tdmq_rabbitmq/query\": 171,\n\t\"./tdmq_rabbitmq/query.ts\": 171,\n\t\"./tdmq_rabbitmq/query_def\": 17,\n\t\"./tdmq_rabbitmq/query_def.ts\": 17,\n\t\"./tdmq_rocketmq/datasource\": 116,\n\t\"./tdmq_rocketmq/datasource.ts\": 116,\n\t\"./tdmq_rocketmq/query\": 172,\n\t\"./tdmq_rocketmq/query.ts\": 172,\n\t\"./tdmq_rocketmq/query_def\": 18,\n\t\"./tdmq_rocketmq/query_def.ts\": 18,\n\t\"./tke/datasource\": 117,\n\t\"./tke/datasource.ts\": 117,\n\t\"./tke/query\": 173,\n\t\"./tke/query.ts\": 173,\n\t\"./tke/query_def\": 69,\n\t\"./tke/query_def.ts\": 69,\n\t\"./tsf/datasource\": 118,\n\t\"./tsf/datasource.ts\": 118,\n\t\"./tsf/query\": 174,\n\t\"./tsf/query.ts\": 174,\n\t\"./tsf/query_def\": 60,\n\t\"./tsf/query_def.ts\": 60,\n\t\"./v_clb/datasource\": 119,\n\t\"./v_clb/datasource.ts\": 119,\n\t\"./v_clb/query\": 175,\n\t\"./v_clb/query.ts\": 175,\n\t\"./v_clb/query_def\": 23,\n\t\"./v_clb/query_def.ts\": 23,\n\t\"./vbc/datasource\": 120,\n\t\"./vbc/datasource.ts\": 120,\n\t\"./vbc/query\": 176,\n\t\"./vbc/query.ts\": 176,\n\t\"./vbc/query_def\": 51,\n\t\"./vbc/query_def.ts\": 51,\n\t\"./vpc_net_detect/datasource\": 121,\n\t\"./vpc_net_detect/datasource.ts\": 121,\n\t\"./vpc_net_detect/query\": 177,\n\t\"./vpc_net_detect/query.ts\": 177,\n\t\"./vpc_net_detect/query_def\": 40,\n\t\"./vpc_net_detect/query_def.ts\": 40,\n\t\"./vpngw/datasource\": 122,\n\t\"./vpngw/datasource.ts\": 122,\n\t\"./vpngw/query\": 178,\n\t\"./vpngw/query.ts\": 178,\n\t\"./vpngw/query_def\": 52,\n\t\"./vpngw/query_def.ts\": 52,\n\t\"./vpnx/datasource\": 123,\n\t\"./vpnx/datasource.ts\": 123,\n\t\"./vpnx/query\": 179,\n\t\"./vpnx/query.ts\": 179,\n\t\"./vpnx/query_def\": 53,\n\t\"./vpnx/query_def.ts\": 53,\n\t\"./waf/datasource\": 124,\n\t\"./waf/datasource.ts\": 124,\n\t\"./waf/query\": 180,\n\t\"./waf/query.ts\": 180,\n\t\"./waf/query_def\": 41,\n\t\"./waf/query_def.ts\": 41\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 181;","import _ from 'lodash';\nimport { Datasources, SERVICES } from './index';\nimport { GetServiceFromNamespace, ParseMetricQuery } from '../common/constants';\nimport { serviceGroupBy } from '../common/utils';\nimport { LoadingState } from '@grafana/data';\n\nexport default interface DatasourceInterface {\n instanceSettings: any;\n backendSrv: any;\n templateSrv: any;\n query: (options: any) => any;\n testDatasource: () => any;\n metricFindQuery: (query: any) => any;\n getRegions?: (service: string) => any;\n getMetrics: (service: string, region: string) => any;\n getInstances: (service: string, region: string, params: any) => any;\n getZones?: (service: string, region: string) => any;\n}\n\nexport class TCMonitorDatasource implements DatasourceInterface {\n instanceSettings: any;\n backendSrv: any;\n templateSrv: any;\n\n /** @ngInject */\n constructor(instanceSettings, backendSrv, templateSrv) {\n this.instanceSettings = instanceSettings;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n _.forEach(Datasources, (_class: any, key) => {\n this[key] = new _class(this.instanceSettings, this.backendSrv, this.templateSrv);\n });\n }\n\n // 根据 Datasource Config 配置时勾选的监控服务项,获取相应的命名空间\n getNamespaces() {\n const namespaces: any[] = [];\n _.forEach(SERVICES, (service) => {\n if (this.instanceSettings.jsonData[service.service] === true) {\n // namespaces.push(service.namespace);\n namespaces.push(service);\n }\n });\n return namespaces;\n }\n\n getCascaderNamespaces() {\n const validServices = SERVICES.filter((service) => this.instanceSettings.jsonData[service.service]);\n return serviceGroupBy(validServices);\n }\n\n getSelectedServices() {\n const namespaces = this.getNamespaces();\n return _.map(namespaces, ({ namespace }) => {\n return GetServiceFromNamespace(namespace);\n });\n }\n\n /**\n * 根据 Panel 的配置项,获取相应的监控数据\n *\n * @param options Panel 的配置参数,示例如下\n * {\n * cacheTimeout: undefined,\n * dashboardId: 41,\n * interval: \"30s\",\n * intervalMs: 30000,\n * maxDataPoints: 554,\n * panelId: 2,\n * range: {\n * from: Moment,\n * to: Moment,\n * raw: {from: \"now-6h\", to: \"now\"}\n * },\n * rangeRaw: {from: \"now-6h\", to: \"now\"},\n * scopedVars: {__interval: {…}, __interval_ms: {…}}\n * targets: [\n * {\n * namespace: \"QCE/CVM\",\n * refId: \"A\",\n * service: \"cvm\",\n * showInstanceDetails: false,\n * cvm: {\n * dimensionObject: {InstanceId: {…}}\n * instance: \"\",\n * instanceAlias: \"InstanceId\",\n * metricName: \"AccOuttraffic\",\n * metricUnit: \"MB\",\n * period: 10,\n * queries: {Filters: {…}, InstanceIds: Array(1), Limit: 20, Offset: 0, filtersChecked: false, …},\n * region: \"ap-beijing\"\n * },\n * cdb: {},\n * },\n * ],\n * timezone: \"browser\"\n * }\n * @return 返回数据对象,示例如下\n * {\n * data: [\n * {\n * \"target\": \"AccOuttraffic - ins-123\",\n * \"datapoints\": [\n * [861, 1450754160000],\n * [767, 1450754220000]\n * ]\n * }\n * ]\n * }\n */\n query(options: any) {\n const promises: any[] = [];\n const services = this.getSelectedServices();\n _.forEach(services, (service) => {\n const optionsTemp = _.cloneDeep(options);\n const targets = _.filter(optionsTemp.targets, (item) => item.service === service);\n optionsTemp.targets = targets;\n if (optionsTemp.targets.length > 0) {\n const promiseTemp = this[`${_.toUpper(service)}Datasource`].query(optionsTemp);\n if (promiseTemp) {\n promises.push(promiseTemp);\n }\n }\n });\n if (promises.length === 0) {\n return Promise.resolve({ data: [], state: LoadingState.Done });\n }\n return Promise.all(promises).then((results) => {\n return { data: _.flatten(results), state: LoadingState.Done };\n });\n }\n\n /**\n * 获取模板变量的选择项列表\n *\n * @param query 模板变量配置填写的 Query 参数字符串\n */\n metricFindQuery(query: string, options?: any) {\n const queries = ParseMetricQuery(query);\n const service = GetServiceFromNamespace(queries['namespace'] || '');\n\n if (_.isEmpty(queries) || !queries['namespace'] || !queries['action'] || !service) {\n return Promise.resolve([]);\n }\n if (this[`${_.toUpper(service)}Datasource`].metricFindQuery) {\n const result = this[`${_.toUpper(service)}Datasource`].metricFindQuery(\n queries,\n _.get(options, 'variable.regex', undefined)\n );\n if (result) {\n return result;\n }\n }\n return Promise.resolve([]);\n }\n\n /**\n * 获取地域列表\n * @param service\n */\n getRegions(service) {\n if (this[`${_.toUpper(service)}Datasource`].getRegions) {\n return this[`${_.toUpper(service)}Datasource`].getRegions();\n }\n return [];\n }\n\n /**\n * 获取监控指标列表\n * @param service\n * @param region\n */\n getMetrics(service, region) {\n return this[`${_.toUpper(service)}Datasource`].getMetrics(region);\n }\n\n /**\n * 获取可用区列表\n * @param service\n * @param region\n */\n getZones(service, region) {\n if (this[`${_.toUpper(service)}Datasource`].getZones) {\n return this[`${_.toUpper(service)}Datasource`].getZones(region);\n }\n return [];\n }\n\n /**\n * 获取filter中dropdown列表\n * @param service\n * @param param\n */\n getFilterDropdown(service, param) {\n if (this[`${_.toUpper(service)}Datasource`].getFilterDropdown) {\n return this[`${_.toUpper(service)}Datasource`].getFilterDropdown(param);\n }\n return [];\n }\n\n /**\n * 获取实例列表\n * @param service\n * @param region\n * @param params\n */\n getInstances(service, region, params) {\n return this[`${_.toUpper(service)}Datasource`].getInstances(region, params);\n }\n\n /**\n * 获取监听器列表\n * @param service\n * @param region\n * @param params\n */\n getListeners(service, region, instance) {\n if (!this[`${_.toUpper(service)}Datasource`].getListeners) {\n return [];\n }\n return this[`${_.toUpper(service)}Datasource`].getListeners(region, instance);\n }\n\n /**\n * 获取 私有网络列表\n * @param service\n */\n getVpcIds(service, region) {\n if (this[`${_.toUpper(service)}Datasource`].getVpcIds) {\n return this[`${_.toUpper(service)}Datasource`].getVpcIds(region);\n }\n }\n\n // 在 Datasource Config 配置时,验证 SerectId、SerectKey 的有效性,并测试勾选的监控服务项的对应 API 连通性\n testDatasource() {\n const promises: any[] = [];\n const services = this.getSelectedServices();\n _.forEach(services, (service) => {\n promises.push(this[`${_.toUpper(service)}Datasource`].testDatasource());\n });\n if (promises.length === 0) {\n return Promise.resolve(null);\n }\n\n return Promise.all(promises).then((results) => {\n let status = 'success';\n let message = 'DataSource Connection OK';\n\n const errorMsg = _.reduce(\n results,\n (acc, cur) => {\n if (cur.status === 'error') {\n if (acc === '') acc += 'Oops! Found an error in: ';\n acc += `${cur.service}: ${cur.message}; \\n`;\n }\n return acc;\n },\n ''\n );\n\n if (errorMsg) {\n status = 'error';\n message = errorMsg;\n }\n\n return {\n status,\n message,\n title: _.upperFirst(status),\n };\n });\n }\n\n getServiceFn(service, fnName) {\n return (...argu) => {\n if (!this[`${_.toUpper(service)}Datasource`][fnName]) {\n return [];\n }\n return this[`${_.toUpper(service)}Datasource`][fnName](...argu);\n };\n }\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (typeof target === 'object') {\n if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n if (target[i] && typeof target[i] === 'object') {\n target[i] = merge(target[i], item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return value;\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n","import coreModule from 'grafana/app/core/core_module';\nimport { DetailQueryConfig } from './types';\n\nclass SPQueryCtrl {\n static _config: DetailQueryConfig;\n\n /** @ngInject */\n constructor($scope, $rootScope) {\n Object.assign($scope, SPQueryCtrl._config);\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n`;\n\nexport function queryDDO() {\n return {\n template: template,\n controller: SPQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\nexport default (name: string, config: DetailQueryConfig) => {\n SPQueryCtrl._config = config;\n coreModule.directive(name, queryDDO);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) { // eslint-disable-line func-name-matching\n return prefix + '[]';\n },\n indices: function indices(prefix, key) { // eslint-disable-line func-name-matching\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) { // eslint-disable-line func-name-matching\n return prefix;\n }\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify( // eslint-disable-line func-name-matching\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (Array.isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (Array.isArray(obj)) {\n values = values.concat(stringify(\n obj[key],\n generateArrayPrefix(prefix, key),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n } else {\n values = values.concat(stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n }\n\n return values;\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n var sort = typeof options.sort === 'function' ? options.sort : null;\n var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n if (typeof options.format === 'undefined') {\n options.format = formats['default'];\n } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n var formatter = formats.formatters[options.format];\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (Array.isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (options.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = options.arrayFormat;\n } else if ('indices' in options) {\n arrayFormat = options.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (sort) {\n objKeys.sort(sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n keys = keys.concat(stringify(\n obj[key],\n key,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encode ? encoder : null,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n\n var joined = keys.join(delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]') {\n obj = [];\n obj = obj.concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","var map = {\n\t\"./_base/query.ts\": 7,\n\t\"./apigateway/datasource\": 70,\n\t\"./apigateway/datasource.ts\": 70,\n\t\"./apigateway/query.ts\": 126,\n\t\"./apigateway/query_def.ts\": 21,\n\t\"./bmIntraLb/datasource\": 71,\n\t\"./bmIntraLb/datasource.ts\": 71,\n\t\"./bmIntraLb/query.ts\": 127,\n\t\"./bmIntraLb/query_def.ts\": 29,\n\t\"./bm_lb/datasource\": 72,\n\t\"./bm_lb/datasource.ts\": 72,\n\t\"./bm_lb/query.ts\": 128,\n\t\"./bm_lb/query_def.ts\": 30,\n\t\"./bm_pcx/datasource\": 73,\n\t\"./bm_pcx/datasource.ts\": 73,\n\t\"./bm_pcx/query.ts\": 129,\n\t\"./bm_pcx/query_def.ts\": 31,\n\t\"./bwp/datasource\": 74,\n\t\"./bwp/datasource.ts\": 74,\n\t\"./bwp/query.ts\": 130,\n\t\"./bwp/query_def.ts\": 61,\n\t\"./cbs/datasource\": 75,\n\t\"./cbs/datasource.ts\": 75,\n\t\"./cbs/query.ts\": 131,\n\t\"./cbs/query_def.ts\": 32,\n\t\"./cdb/datasource\": 76,\n\t\"./cdb/datasource.ts\": 76,\n\t\"./cdb/query.ts\": 132,\n\t\"./cdb/query_def.ts\": 42,\n\t\"./cdn/datasource\": 77,\n\t\"./cdn/datasource.ts\": 77,\n\t\"./cdn/query.ts\": 133,\n\t\"./cdn/query_def.ts\": 62,\n\t\"./cdn_province/datasource\": 78,\n\t\"./cdn_province/datasource.ts\": 78,\n\t\"./cdn_province/query.ts\": 134,\n\t\"./cdn_province/query_def.ts\": 33,\n\t\"./ceip_summary/datasource\": 79,\n\t\"./ceip_summary/datasource.ts\": 79,\n\t\"./ceip_summary/query.ts\": 135,\n\t\"./ceip_summary/query_def.ts\": 34,\n\t\"./ces/datasource\": 80,\n\t\"./ces/datasource.ts\": 80,\n\t\"./ces/query.ts\": 136,\n\t\"./ces/query_def.ts\": 43,\n\t\"./cfs/datasource\": 81,\n\t\"./cfs/datasource.ts\": 81,\n\t\"./cfs/query.ts\": 137,\n\t\"./cfs/query_def.ts\": 55,\n\t\"./ckafka/datasource\": 82,\n\t\"./ckafka/datasource.ts\": 82,\n\t\"./ckafka/query.ts\": 138,\n\t\"./ckafka/query_def.ts\": 10,\n\t\"./clb/datasource\": 83,\n\t\"./clb/datasource.ts\": 83,\n\t\"./clb/query.ts\": 139,\n\t\"./clb/query_def.ts\": 12,\n\t\"./cls/datasource\": 84,\n\t\"./cls/datasource.ts\": 84,\n\t\"./cls/query.ts\": 140,\n\t\"./cls/query_def.ts\": 27,\n\t\"./cmq/datasource\": 85,\n\t\"./cmq/datasource.ts\": 85,\n\t\"./cmq/query.ts\": 141,\n\t\"./cmq/query_def.ts\": 56,\n\t\"./cmq_topic/datasource\": 86,\n\t\"./cmq_topic/datasource.ts\": 86,\n\t\"./cmq_topic/query.ts\": 142,\n\t\"./cmq_topic/query_def.ts\": 35,\n\t\"./cos/datasource\": 87,\n\t\"./cos/datasource.ts\": 87,\n\t\"./cos/query_def.ts\": 143,\n\t\"./cpm/datasource\": 88,\n\t\"./cpm/datasource.ts\": 88,\n\t\"./cpm/query.ts\": 144,\n\t\"./cpm/query_def.ts\": 36,\n\t\"./cvm/datasource\": 89,\n\t\"./cvm/datasource.ts\": 89,\n\t\"./cvm/query.ts\": 145,\n\t\"./cvm/query_def.ts\": 57,\n\t\"./cynosdb_mysql/datasource\": 90,\n\t\"./cynosdb_mysql/datasource.ts\": 90,\n\t\"./cynosdb_mysql/query.ts\": 146,\n\t\"./cynosdb_mysql/query_def.ts\": 24,\n\t\"./dc/datasource\": 91,\n\t\"./dc/datasource.ts\": 91,\n\t\"./dc/query.ts\": 147,\n\t\"./dc/query_def.ts\": 44,\n\t\"./dcdb/datasource\": 92,\n\t\"./dcdb/datasource.ts\": 92,\n\t\"./dcdb/query.ts\": 148,\n\t\"./dcdb/query_def.ts\": 15,\n\t\"./dcg/datasource\": 93,\n\t\"./dcg/datasource.ts\": 93,\n\t\"./dcg/query.ts\": 149,\n\t\"./dcg/query_def.ts\": 45,\n\t\"./dcx/datasource\": 94,\n\t\"./dcx/datasource.ts\": 94,\n\t\"./dcx/query.ts\": 150,\n\t\"./dcx/query_def.ts\": 46,\n\t\"./ecdn/datasource\": 95,\n\t\"./ecdn/datasource.ts\": 95,\n\t\"./ecdn/query.ts\": 151,\n\t\"./ecdn/query_def.ts\": 37,\n\t\"./ecm/datasource\": 96,\n\t\"./ecm/datasource.ts\": 96,\n\t\"./ecm/query.ts\": 152,\n\t\"./ecm/query_def.ts\": 38,\n\t\"./ecm_block_storage/datasource\": 97,\n\t\"./ecm_block_storage/datasource.ts\": 97,\n\t\"./ecm_block_storage/query.ts\": 153,\n\t\"./ecm_block_storage/query_def.ts\": 20,\n\t\"./ecm_lb/datasource\": 98,\n\t\"./ecm_lb/datasource.ts\": 98,\n\t\"./ecm_lb/query.ts\": 154,\n\t\"./ecm_lb/query_def.ts\": 47,\n\t\"./gse/datasource\": 99,\n\t\"./gse/datasource.ts\": 99,\n\t\"./gse/query.ts\": 155,\n\t\"./gse/query_def.ts\": 14,\n\t\"./lb/datasource\": 100,\n\t\"./lb/datasource.ts\": 100,\n\t\"./lb/query.ts\": 156,\n\t\"./lb/query_def.ts\": 63,\n\t\"./lighthouse/datasource\": 101,\n\t\"./lighthouse/datasource.ts\": 101,\n\t\"./lighthouse/query.ts\": 157,\n\t\"./lighthouse/query_def.ts\": 54,\n\t\"./mongodb/datasource\": 102,\n\t\"./mongodb/datasource.ts\": 102,\n\t\"./mongodb/query.ts\": 158,\n\t\"./mongodb/query_def.ts\": 48,\n\t\"./mr/datasource\": 103,\n\t\"./mr/datasource.ts\": 103,\n\t\"./mr/query.ts\": 159,\n\t\"./mr/query_def.ts\": 22,\n\t\"./nat_gateway/datasource\": 104,\n\t\"./nat_gateway/datasource.ts\": 104,\n\t\"./nat_gateway/query.ts\": 160,\n\t\"./nat_gateway/query_def.ts\": 64,\n\t\"./ov_cdn/datasource\": 105,\n\t\"./ov_cdn/datasource.ts\": 105,\n\t\"./ov_cdn/query.ts\": 161,\n\t\"./ov_cdn/query_def.ts\": 65,\n\t\"./pcx/datasource\": 106,\n\t\"./pcx/datasource.ts\": 106,\n\t\"./pcx/query.ts\": 162,\n\t\"./pcx/query_def.ts\": 58,\n\t\"./postgresql/datasource\": 107,\n\t\"./postgresql/datasource.ts\": 107,\n\t\"./postgresql/query.ts\": 163,\n\t\"./postgresql/query_def.ts\": 39,\n\t\"./qaap/datasource\": 108,\n\t\"./qaap/datasource.ts\": 108,\n\t\"./qaap/query.ts\": 164,\n\t\"./qaap/query_def.ts\": 49,\n\t\"./redis/datasource\": 109,\n\t\"./redis/datasource.ts\": 109,\n\t\"./redis/query.ts\": 165,\n\t\"./redis/query_def.ts\": 59,\n\t\"./redis_mem/datasource\": 110,\n\t\"./redis_mem/datasource.ts\": 110,\n\t\"./redis_mem/query.ts\": 166,\n\t\"./redis_mem/query_def.ts\": 16,\n\t\"./scf/datasource\": 111,\n\t\"./scf/datasource.ts\": 111,\n\t\"./scf/query.ts\": 167,\n\t\"./scf/query_def.ts\": 25,\n\t\"./sqlserver/datasource\": 112,\n\t\"./sqlserver/datasource.ts\": 112,\n\t\"./sqlserver/query.ts\": 168,\n\t\"./sqlserver/query_def.ts\": 28,\n\t\"./tcaplus/datasource\": 113,\n\t\"./tcaplus/datasource.ts\": 113,\n\t\"./tcaplus/query.ts\": 169,\n\t\"./tcaplus/query_def.ts\": 50,\n\t\"./tdmq/datasource\": 114,\n\t\"./tdmq/datasource.ts\": 114,\n\t\"./tdmq/query.ts\": 170,\n\t\"./tdmq/query_def.ts\": 13,\n\t\"./tdmq_rabbitmq/datasource\": 115,\n\t\"./tdmq_rabbitmq/datasource.ts\": 115,\n\t\"./tdmq_rabbitmq/query.ts\": 171,\n\t\"./tdmq_rabbitmq/query_def.ts\": 17,\n\t\"./tdmq_rocketmq/datasource\": 116,\n\t\"./tdmq_rocketmq/datasource.ts\": 116,\n\t\"./tdmq_rocketmq/query.ts\": 172,\n\t\"./tdmq_rocketmq/query_def.ts\": 18,\n\t\"./tke/datasource\": 117,\n\t\"./tke/datasource.ts\": 117,\n\t\"./tke/query.ts\": 173,\n\t\"./tke/query_def.ts\": 69,\n\t\"./tsf/datasource\": 118,\n\t\"./tsf/datasource.ts\": 118,\n\t\"./tsf/query.ts\": 174,\n\t\"./tsf/query_def.ts\": 60,\n\t\"./v_clb/datasource\": 119,\n\t\"./v_clb/datasource.ts\": 119,\n\t\"./v_clb/query.ts\": 175,\n\t\"./v_clb/query_def.ts\": 23,\n\t\"./vbc/datasource\": 120,\n\t\"./vbc/datasource.ts\": 120,\n\t\"./vbc/query.ts\": 176,\n\t\"./vbc/query_def.ts\": 51,\n\t\"./vpc_net_detect/datasource\": 121,\n\t\"./vpc_net_detect/datasource.ts\": 121,\n\t\"./vpc_net_detect/query.ts\": 177,\n\t\"./vpc_net_detect/query_def.ts\": 40,\n\t\"./vpngw/datasource\": 122,\n\t\"./vpngw/datasource.ts\": 122,\n\t\"./vpngw/query.ts\": 178,\n\t\"./vpngw/query_def.ts\": 52,\n\t\"./vpnx/datasource\": 123,\n\t\"./vpnx/datasource.ts\": 123,\n\t\"./vpnx/query.ts\": 179,\n\t\"./vpnx/query_def.ts\": 53,\n\t\"./waf/datasource\": 124,\n\t\"./waf/datasource.ts\": 124,\n\t\"./waf/query.ts\": 180,\n\t\"./waf/query_def.ts\": 41\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 191;","import { PluginMeta } from '@grafana/data';\nimport { config, getBackendSrv } from '@grafana/runtime';\nimport { TcDataSourceId } from '../datasource/common/constants';\n\nconst backendSrv = getBackendSrv();\n\nconst tcFolder = {\n uid: 'tencent-cloud-monitor',\n title: '腾讯云监控',\n folderId: null,\n};\n\nconst tcFolder_EN = {\n uid: 'tencent-cloud-monitor-english',\n title: 'Tencent Cloud Monitor',\n folderId: null,\n};\n\n/**\n * 生成腾讯云专用目录\n * @returns\n */\nasync function getFolderId() {\n if (tcFolder.folderId && tcFolder_EN.folderId) {\n return [tcFolder.folderId, tcFolder_EN.folderId];\n }\n const folders: any[] = await backendSrv.get('/api/folders');\n let folderId = folders.find((item) => item.uid === tcFolder.uid)?.id;\n let folderEnId = folders.find((item) => item.uid === tcFolder_EN.uid)?.id;\n if (!folderId) {\n const folder = await backendSrv.post('/api/folders', tcFolder);\n folderId = folder?.id || 0;\n }\n if (!folderEnId) {\n const folderEn = await backendSrv.post('/api/folders', tcFolder_EN);\n folderEnId = folderEn?.id || 0;\n }\n tcFolder.folderId = folderId;\n tcFolder_EN.folderId = folderEnId;\n return [folderId, folderEnId];\n}\n\n/**\n * 请求拦截器,拦截导入按钮的接口请求\n */\nfunction backendInterceptor() {\n const oldPost = backendSrv.post.bind(getBackendSrv());\n const pluginId = window.location.pathname.split('/').filter((item) => item)[1];\n backendSrv.post = async (url, data) => {\n // 拦截判断:拦截指定接口\n if (url === '/api/dashboards/import' && data.pluginId === pluginId) {\n const [folderId, folderEnId] = await getFolderId();\n data.folderId = data.path.endsWith('_en_dashboard.json') ? folderEnId : folderId;\n }\n return oldPost(url, data);\n };\n}\n\nbackendInterceptor();\n\nexport class MonitorAppConfigCtrl {\n static templateUrl = 'components/config.html';\n appEditCtrl: any;\n appModel?: PluginMeta;\n $q: any;\n configured: boolean;\n\n /** @ngInject */\n constructor($scope: any, $injector: any, $q: any) {\n this.appEditCtrl.setPostUpdateHook(this.postUpdate.bind(this));\n this.$q = $q;\n // Make sure it has a JSON Data spot\n if (!this.appModel) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n this.appModel = {} as PluginMeta;\n }\n\n // Required until we get the types sorted on appModel :(\n const appModel = this.appModel as any;\n if (!appModel.jsonData) {\n appModel.jsonData = {};\n }\n this.configured = false;\n if (this.appModel?.enabled) {\n const datasources = Object.values(config.datasources).filter((ds) => {\n return ds.type === TcDataSourceId;\n });\n if (datasources.length > 0) {\n this.configured = true;\n }\n }\n }\n\n async moveToFolder(dashbaordUid: string, folderId: number) {\n // 获取dashboard\n const { dashboard } = await backendSrv.get(`/api/dashboards/uid/${dashbaordUid}`);\n // 移动目录\n await backendSrv.post('/api/dashboards/db/', {\n dashboard,\n folderId,\n message: '',\n overwrite: true,\n });\n }\n\n async reviseDashboard() {\n // 1. 生成腾讯云目录\n const [folderId, folderEnId] = await getFolderId();\n // 2. 获取所有腾讯云插件下的dashboard\n const rs = await backendSrv.get(`/api/plugins/${this.appModel?.id}/dashboards`);\n\n // 3. 调用api更新dashboard\n const pmlist = rs.map((item) => {\n const { importedUrl, path } = item;\n const uid = importedUrl.split('/')[2];\n if (uid) {\n return this.moveToFolder(uid, path.endsWith('_en_dashboard.json') ? folderEnId : folderId);\n } else {\n return Promise.resolve();\n }\n });\n\n return Promise.all(pmlist);\n }\n\n async postUpdate() {\n if (!this.appModel?.enabled) {\n return;\n }\n // enable或者update时,对预设dashboard进行修改\n await this.reviseDashboard();\n return this.$q.resolve(true);\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/datasource/module.js b/dist/datasource/module.js index 929db56..bb8aadc 100644 --- a/dist/datasource/module.js +++ b/dist/datasource/module.js @@ -1,3 +1,3 @@ /*! For license information please see module.js.LICENSE.txt */ -define("TencentCloudMonitorGrafanaApp",["lodash","react","app/core/core_module","@grafana/data","@grafana/ui","@grafana/runtime","moment","emotion","rxjs","angular","app/core/utils/kbn","app/core/table_model","app/plugins/sdk","react-dom"],(function(e,t,n,r,i,o,a,c,s,u,l,p,d,f){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=209)}([function(t,n){t.exports=e},function(e,t,n){"use strict";var r={language:"语言",enable_intranet_API_mode:"开启内网API模式",cloud_database:"云数据库",cloud_load_balancer:"负载均衡",virtual_private_cloud:"私有网络",content_delivery_network:"内容分发网络",message_queue:"消息队列",direct_connect:"专线接入",cloud_physical_machine:"黑石物理服务器",elastic_mapReduce:"弹性 MapReduce",edge_computing_machine:"边缘计算机器",RUM:"前端性能监控(RUM)",CLS:"日志服务(CLS)",CVM:"云服务器(CVM)",CDB:"云数据库 MySQL(CDB)",CMONGO:"云数据库 MongoDB(CMONGO)",POSTGRES:"云数据库 PostgreSQL(POSTGRES)",REDIS:"云数据库 Redis(REDIS)",REDIS_MEM:"云数据库 Redis内存版(5s)(REDIS_MEM)",SQLSERVER:"云数据库 SQL Server(SQLSERVER)",CYNOSDB_MYSQL:"云数据库 CYNOSDB_MYSQL(CYNOSDB_MYSQL)",TCAPLUS:"云数据库 TcaplusDB(TCAPLUS)",TDMYSQL:"分布式数据库 TDSQL MySQL(TDMYSQL)",PCX:"私有网络-对等连接(PCX)",BWP:"私有网络-带宽包(BWP)",NAT_GATEWAY:"私有网络-NAT 网关(NAT_GATEWAY)",VPNGW:"私有网络-VPN 网关(VPNGW)",VPNX:"私有网络-VPN 通道(VPNX)",DCG:"私有网络-专线网关(DCG)",CEIP_SUMMARY:"私有网络-Anycast 弹性公网IP(CEIP_SUMMARY)",VPC_NET_DETECT:"私有网络-网络探测(VPC_NET_DETECT)",VBC:"私有网络-云联网(VBC)",LB:"私有网络-弹性公网IP(LB)",LB_PUBLIC:"公网负载均衡监控指标(LB_PUBLIC)",LB_PRIVATE:"内网负载均衡四层协议监控指标(LB_PRIVATE)",LOADBALANCE:"内网负载均衡七层协议监控指标(LOADBALANCE)",CDN:"国内域名(CDN)",CDN_LOG_DATA:"省份域名(CDN_LOG_DATA)",OV_CDN:"国外域名(OV_CDN)",SCF_V2:"云函数(SCF)",CFS:"文件存储(CFS)",COS:"对象存储(COS)",CKAFKA:"消息队列 CKafka(CKAFKA)",CMQ:"消息队列-队列服务监控(CMQ)",CMQTOPIC:"消息队列-主题订阅监控(CMQTOPIC)",TDMQ:"消息队列 Pulsar 版(TDMQ)",TDMQ_ROCKETMQ:"消息队列 RocketMQ 版(ROCKETMQ)",TDMQ_RABBITMQ:"消息队列 RabbitMQ 版(RABBITMQ)",DCX:"专线接入-专用通道(DCX)",DC:"专线接入-物理专线(DC)",CPM:"黑石物理服务器(CPM)",BM_PCX:"黑石对等连接(BM_PCX)",BM_LB:"黑石外网负载均衡(BM_LB)",BM_INTRA_LB:"黑石内网负载均衡(BM_INTRA_LB)",CES:"Elasticsearch指标(CES)",BLOCK_STORAGE:"云硬盘(BLOCK_STORAGE)",APIGATEWAY:"API 网关(APIGATEWAY)",QAAP:"全球应用加速(GAAP)",ECM:"边缘计算和网络监控(ECM)",ECM_BLOCK_STORAGE:"边缘计算存储监控(ECM_BLOCK_STORAGE)",ECM_LB:"边缘计算负载均衡(ECM_LB)",GSE:"游戏服务器伸缩(GSE)",TKE:"容器服务(TKE)",ECDN:"全站加速网络(ECDN)",WAF:"Web 应用防火墙(WAF)",multi_scene:"多场景版",lite:"精简版",cloud_monitor:"云监控",cloud_log_service:"日志服务",real_user_monitoring:"前端性能监控",region:"地域",log_topic:"日志主题",search_statement:"检索语句",time_unit:"Time unit",seconds:"seconds",search_description:"按照具体的查询条件搜索实例,默认拉取前 20 条实例","ap-guangzhou":"华南地区(广州)","ap-shenzhen-fsi":"华南地区(深圳金融)","ap-guangzhou-open":"华南地区(广州OPEN)","ap-shenzhen":"华南地区(深圳)","ap-qingyuan":"华南地区(清远)","ap-shanghai":"华东地区(上海)","ap-shanghai-fsi":"华东地区(上海金融)","ap-jinan-ec":"华东地区(济南)","ap-hangzhou-ec":"华东地区(杭州)","ap-nanjing":"华东地区(南京)","ap-fuzhou-ec":"华东地区(福州)","ap-hefei-ec":"华东地区(合肥)","ap-beijing":"华北地区(北京)","ap-tianjin":"华北地区(天津)","ap-beijing-fsi":"华北地区(北京金融)","ap-shijiazhuang-ec":"华北地区(石家庄)","ap-wuhan-ec":"华中地区(武汉)","ap-changsha-ec":"华中地区(长沙)","ap-zhengzhou-ec":"华中地区(郑州)","ap-chengdu":"西南地区(成都)","ap-chongqing":"西南地区(重庆)","ap-xian-ec":"西北地区(西安)","ap-shenyang-ec":"东北地区(沈阳)","ap-taipei":"港澳台地区(中国台北)","ap-hongkong":"港澳台地区(中国香港)","ap-seoul":"亚太东北(首尔)","ap-tokyo":"亚太东北(东京)","ap-singapore":"亚太东南(新加坡)","ap-bangkok":"亚太东南(曼谷)","ap-jakarta":"亚太东南(雅加达)","na-siliconvalley":"美国西部(硅谷)","eu-frankfurt":"欧洲地区(法兰克福)","eu-moscow":"欧洲地区(莫斯科)","ap-mumbai":"亚太南部(孟买)","na-ashburn":"美国东部(弗吉尼亚)","sa-saopaulo":"南美地区(圣保罗)","na-toronto":"北美地区(多伦多)"},i={language:"Language",enable_intranet_API_mode:"Enable Intranet API Mode",cloud_database:"Cloud Database",cloud_load_balancer:"Cloud Load Balancer",virtual_private_cloud:"Virtual Private Cloud",content_delivery_network:"Content Delivery Network",message_queue:"Message Queue",direct_connect:"Direct Connect",cloud_physical_machine:"Cloud Physical Machine",elastic_mapReduce:"Elastic MapReduce",edge_computing_machine:"Edge Computing Machine",RUM:"Real User Monitoring(RUM)",CLS:"Cloud Log Service(CLS)",CVM:"Cloud Virtual Machine(CVM)",CDB:"TencentDB for MySQL(CDB)",CMONGO:"TencentDB for MongoDB(CMONGO)",POSTGRES:"TencentDB for PostgreSQL(POSTGRES)",REDIS:"TencentDB for Redis(REDIS)",REDIS_MEM:"TencentDB for Redis(Memory Edition, 5-Second)(REDIS_MEM)",SQLSERVER:"TencentDB for SQL Server(SQLSERVER)",CYNOSDB_MYSQL:"TencentDB for CYNOSDB_MYSQL(CYNOSDB_MYSQL)",TCAPLUS:"TencentDB for TcaplusDB(TCAPLUS)",TDMYSQL:"TDSQL for MySQL(TDMYSQL)",PCX:"Peering Connection(PCX)",BWP:"Bandwidth Packet(BWP)",NAT_GATEWAY:"NAT Gateway(NAT_GATEWAY)",VPNGW:"VPN Gateway(VPNGW)",VPNX:"VPN Tunnel(VPNX)",DCG:"Direct Connect Gateway(DCG)",CEIP_SUMMARY:"Anycast EIP(CEIP_SUMMARY)",VPC_NET_DETECT:"Network Detection(VPC_NET_DETECT)",VBC:"Cloud Connect Network(VBC)",LB:"Elastic IP(LB)",LB_PUBLIC:"Public Network CLB(LB_PUBLIC)",LB_PRIVATE:"Private Network CLB Layer-4 Protocol(LB_PRIVATE)",LOADBALANCE:"Private Network CLB Layer-7 Protocol(LOADBALANCE)",CDN:"Chinese Mainland Domain(CDN)",CDN_LOG_DATA:"Province(CDN_LOG_DATA)",OV_CDN:"Overseas Domain(OV_CDN)",SCF_V2:"Serverless Cloud Function(SCF)",CFS:"Cloud File Storage(CFS)",COS:"Cloud Object Storage(COS)",CKAFKA:"Message Queue CKafka(CKAFKA)",CMQ:"Message Queue for Queue Service(CMQ)",CMQTOPIC:"Message Queue for Topic Subscription(CMQTOPIC)",TDMQ:"Tencent Distributed Message Queue for Pulsar(TDMQ)",TDMQ_ROCKETMQ:"Tencent Distributed Message Queue for RocketMQ(ROCKETMQ)",TDMQ_RABBITMQ:"Tencent Distributed Message Queue for RabbitMQ(RABBITMQ)",DCX:"Direct Connect for Dedicated Tunnel(DCX)",DC:"Direct Connect for Connection(DC)",CPM:"Cloud Physical Machine(CPM)",BM_PCX:"Cloud Physical Machine for Peering Connection(BM_PCX)",BM_LB:"Cloud Physical Machine for Public Network CLB(BM_LB)",BM_INTRA_LB:"Cloud Physical Machine for Private Network CLB(BM_INTRA_LB)",CES:"Elasticsearch Service(CES)",BLOCK_STORAGE:"Cloud Block Storage(BLOCK_STORAGE)",APIGATEWAY:"API Gateway(APIGATEWAY)",QAAP:"Global Application Acceleration Platform(GAAP)",ECM:"Edge Computing Machine for Computation and Networking(ECM)",ECM_BLOCK_STORAGE:"Edge Computing Machine for Block Storage(ECM_BLOCK_STORAGE)",ECM_LB:"Edge Computing Machine for Layer-4 CLB(ECM_LB)",GSE:"Game Server Elastic-scaling(GSE)",TKE:"Tencent Kubernetes Engine(TKE)",ECDN:"Enterprise Content Delivery Network(ECDN)",WAF:"Web Application Firewall(WAF)",multi_scene:"Multi-Scene",lite:"Lite",cloud_monitor:"Cloud Monitor",cloud_log_service:"Cloud Log Service",real_user_monitoring:"Real User Monitoring",region:"Region",log_topic:"Log Topic",search_statement:"Search Statement",time_unit:"Time unit",seconds:"seconds",search_description:"Search for instances according to specific query conditions, and pull the first 20 instances by default","ap-guangzhou":"South China(Guangzhou)","ap-shenzhen-fsi":"South China(Shenzhen Finance)","ap-guangzhou-open":"South China(Guangzhou OPEN)","ap-shenzhen":"South China(Shenzhen)","ap-qingyuan":"South China(Qingyuan)","ap-shanghai":"East China(Shanghai)","ap-shanghai-fsi":"East China(Shanghai Finance)","ap-jinan-ec":"East China(Jinan)","ap-hangzhou-ec":"East China(Hangzhou)","ap-nanjing":"East China(Nanjing)","ap-fuzhou-ec":"East China(Fuzhou)","ap-hefei-ec":"East China(Hefei)","ap-beijing":"North China region(Beijing)","ap-tianjin":"North China region(Tianjin)","ap-beijing-fsi":"North China region(Beijing Finance)","ap-shijiazhuang-ec":"North China region(Shijiazhuang)","ap-wuhan-ec":"Central China(Wuhan)","ap-changsha-ec":"Central China(Changsha)","ap-zhengzhou-ec":"Central China(Zhengzhou)","ap-chengdu":"Southwest China(Chengdu)","ap-chongqing":"Southwest China(Chongqing)","ap-xian-ec":"Northwest region(Xi'an)","ap-shenyang-ec":"Northeast China(Shenyang)","ap-taipei":"Hong Kong, Macau and Taiwan (China)(Taipei, China)","ap-hongkong":"Hong Kong, Macau and Taiwan (China)(Hong Kong, China)","ap-seoul":"Northeast Asia(Seoul)","ap-tokyo":"Northeast Asia(Tokyo)","ap-singapore":"Southeast Asia(Singapore)","ap-bangkok":"Southeast Asia(Bangkok)","ap-jakarta":"Southeast Asia(Jakarta)","na-siliconvalley":"US West(Silicon Valley)","eu-frankfurt":"Europe(Frankfurt)","eu-moscow":"Europe(Northeastern Europe)","ap-mumbai":"South Asia(Mumbai)","na-ashburn":"US East(Virginia)","sa-saopaulo":"South America(São Paulo)","na-toronto":"North America(Toronto)"};n.d(t,"a",(function(){return o})),n.d(t,"d",(function(){return c})),n.d(t,"c",(function(){return s})),n.d(t,"b",(function(){return u}));var o,a="zh-CN";!function(e){e.Chinese="zh-CN",e.English="en-US"}(o||(o={}));var c=function(e){return a===o.Chinese?r[e]:i[e]},s=function(e){a=e},u=function(){return a}},function(e,t,n){"use strict";var r=n(0),i=n.n(r),o=n(187),a=n.n(o),c=n(19),s=n(67),u=n.n(s),l=function(){return(l=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&-1===t._InstanceAliasValue.indexOf(r[o].timeshift)&&(t._InstanceAliasValue+="_".concat(r[o].timeshift)),t[e]=d.getDimensionsVal(t,p,h),d.checkKeys.length>0&&d.checkKeys.forEach((function(n){t[n]=t[e]})),n[e]={Name:e,Value:t[e]},[2]}}))},d=this,m=0,h=e,g.label=1;case 1:return m0){var r=i.a.cloneDeep(t);return r[n].timeshift="",m(m([],e,!0),[r,t],!1)}return m(m([],e,!0),[t],!1)}),[]).map((function(r){return d(t,void 0,void 0,(function(){var t,o,l,p,d,m,h,y,g,v,b,I,D=this;return f(this,(function(f){switch(f.label){case 0:return t=Object(c.j)(this.templateSrv,e.scopedVars,r[n].instance,!0),[4,s.a.getInstance(this.service)];case 1:o=f.sent(),l=Object(u.c)(r[n].timeshift),t=[].concat(t).map((function(e){var t,n;try{return JSON.parse(e)}catch(r){return o?null!==(n=i.a.cloneDeep(o.find((function(t){return t[D.templateQueryIdMap.instance]===e}))))&&void 0!==n?n:{}:null===(t=D.getDefaultInsObj)||void 0===t?void 0:t.call(D,e)}})),p=Object(c.j)(this.templateSrv,e.scopedVars,r[n].region,!1),d=[],m=0,h=t,f.label=2;case 2:return m=g)return(null==f?void 0:f.response)?f.response(r):r;var v=Object(c.k)(g,(null==o?void 0:o.Limit)||100),b=[];return i.a.forEach(v,(function(r){b.push(n.getInstances(e,p(p({},r),t)))})),Promise.all(b).then((function(e){return i.a.forEach(e,(function(e){r=i.a.concat(r,e)})),(null==f?void 0:f.response)?f.response(r):r})).catch((function(e){return(null==f?void 0:f.response)?f.response(r):r}))}))},e.prototype.isValidConfigField=function(e){return e&&e.length>0},e.prototype.testDatasource=function(){var e=this;return this.isValidConfigField(this.secretId)?Promise.all([this.getRegions(),this.getMetrics(),this.getInstances("ap-guangzhou",{Offset:0,Limit:1})]).then((function(t){var n=i.a.get(t,"[0].Error",{}),r=i.a.get(t,"[1].Error",{}),o=i.a.get(t,"[2].Error",{}),a=i.a.get(n,"Code",""),c=i.a.get(r,"Code",""),s=i.a.get(o,"Code","");if(a||c||s){var u=[];a&&u.push(i.a.get(n,"Code")),c&&u.push(i.a.get(r,"Code")),s&&u.push(i.a.get(o,"Code"));var l=i.a.join(i.a.compact(i.a.uniq(u)),"; ");return{service:e.service,status:"error",message:l}}return{namespace:e.namespace,service:e.service,status:"success",message:"Successfully queried the ".concat(e.service," service."),title:"Success"}})).catch((function(t){var n="".concat(e.service," service:");return n+=t.statusText?t.statusText+"; ":"",i.a.get(t,"data.error.code","")?n+=t.data.error.code+". "+t.data.error.message:i.a.get(t,"data.error","")?n+=t.data.error:i.a.get(t,"data","")?n+=t.data:n+="Cannot connect to ".concat(e.service," service."),{service:e.service,status:"error",message:n}})):{service:this.service,status:"error",message:"The SecretId/SecretKey field is required."}},e.prototype.doRequest=function(e,t,n){return void 0===n&&(n={}),d(this,void 0,void 0,(function(){return f(this,(function(r){switch(r.label){case 0:return[4,Object(c.c)(e,t,n,this.secretId,this.instanceSettings.id,this.backendSrv)];case 1:return e=r.sent(),[2,this.backendSrv.datasourceRequest(e).then((function(e){return i.a.get(e,"data.Response",{})})).catch((function(e){throw e}))]}}))}))},e}()},function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"d",(function(){return p})),n.d(t,"b",(function(){return d})),n.d(t,"f",(function(){return f})),n.d(t,"e",(function(){return m})),n.d(t,"c",(function(){return h}));var r=n(0),i=n.n(r),o=n(19),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(t?r.push({Name:o,Values:i.a.uniq(e).slice(0,5)}):n[o]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t?r.push({Name:o,Values:i.a.get(e,"value",[]).slice(0,5)}):n[o]=i.a.get(e,"value")):null!=e&&""!==e&&(t?r.push({Name:o,Values:e}):n[o]=e)})),t&&r.length>0)return n.Filters=r,n}return n}function d(e){return i.a.get(i.a.find(o.SERVICES,(function(t){return t.service===e})),"namespace")}function f(e){return e.reduce((function(e,t){var n=t.namespace,r=t.label,i=t.groupName,o=void 0===i?r:i,a=e.find((function(e){return e.label===o}));return a?(a.items.push({label:r,value:n}),e):(e.push({label:o,value:o,items:[{label:r,value:n}]}),e)}),[]).map((function(e){return 1===e.items.length?{label:e.items[0].label,value:e.items[0].value}:e}))}var m=function(e,t,n){try{var r=JSON.parse(e),i=JSON.parse(t);return r[n]===i[n]}catch(n){return e===t}},h=function(e){var t=/^(\d+)([d|h|m|s])$/.exec(e);if(!t)return 0;var n=parseInt(t[1],10);switch(t[2]){case"d":return 86400*n*1e3;case"h":return 3600*n*1e3;case"m":return 60*n*1e3;case"s":return 1e3*n}return 0}},function(e,n){e.exports=t},function(e,t){e.exports=n},function(e,t,n){"use strict";n.r(t);var r=n(6),i=n.n(r),o=n(2);t.default=function(e,t){var n,r,a=(n=t,function(){function e(e,t){Object.assign(e,n),e.getDropdown=function(t){var n=Object(o.f)(e.namespace);return e.datasource.getFilterDropdown(n,{field:t,region:e.region})}}return e.$inject=["$scope","$rootScope"],e}());i.a.directive(e,(r=a,function(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n',controller:r,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}))}},function(e,t,n){"use strict";var r=function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["InstanceId","InstanceName"],u=["TopicId","TopicName"],l={instance:"InstanceId",topicId:"TopicId",groupName:"GroupName",partition:"PartitionId"},p=new Proxy({topicId:"TopicId",topicName:"TopicName",consumerGroup:"GroupName",partition:"PartitionId"},{get:function(e,t){return"instanceid"===String(t).toLocaleLowerCase()?"InstanceId":e[t]}}),d={TopicList:"TopicList",GroupList:"GroupList",PartitionList:"PartitionList"},f={TopicId:{dim_KeyInStorage:d.TopicList,dim_KeyInTarget:"topicId",dim_KeyInMap:l.topicId},TopicName:{dim_KeyInStorage:d.TopicList,dim_KeyInTarget:"topicId",dim_KeyInMap:l.topicId},GroupName:{dim_KeyInStorage:d.GroupList,dim_KeyInTarget:"consumerGroup",dim_KeyInMap:l.groupName},PartitionId:{dim_KeyInStorage:d.PartitionList,dim_KeyInTarget:"partition",dim_KeyInMap:l.partition}};t.default=a},function(e,t){e.exports=i},function(e,t,n){"use strict";n.r(t),n.d(t,"LOADBALANCEFieldsDescriptor",(function(){return a})),n.d(t,"InstanceAliasList",(function(){return l})),n.d(t,"LOADBALANCEListenerAliasList",(function(){return p})),n.d(t,"LOADBALANCEServerAliasList",(function(){return d})),n.d(t,"LOADBALANCEVALIDDIMENSIONS",(function(){return f})),n.d(t,"templateQueryIdMap",(function(){return h})),n.d(t,"CANDIATEDIMENSIONS",(function(){return m})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"keyInStorage",(function(){return y})),n.d(t,"queryEditorConfig",(function(){return c})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"GetInstanceQueryParams",(function(){return u}));var r=n(4),i="QCE/LOADBALANCE",o="loadBalanceQuery",a=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1",link:"",type:"inputNumber",min:1},{key:"LoadBalancerIds",enDescriptor:"LoadBalancer ID",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancer Name",cnDescriptor:"实例名称",link:"",type:"input"},{key:"Forward",enDescriptor:"Forward",cnDescriptor:"负载均衡实例类型",link:"",type:"select",list:[{text:"通用的负载均衡",value:1},{text:"传统的负载均衡",value:0}]},{key:"Domain",enDescriptor:"Domain",cnDescriptor:"域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义",link:"",type:"input"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancer Vips",cnDescriptor:"负载均衡实例的 VIP 地址",link:"",type:"inputMulti"},{key:"BackendPrivateIps",enDescriptor:"BackendPrivate Ips",cnDescriptor:"负载均衡绑定的后端服务的内网 IP",link:"",type:"inputMulti"},{key:"BackendPublicIps",enDescriptor:"BackendPublic Ips",cnDescriptor:"负载均衡绑定的后端服务的外网 IP",link:"",type:"inputMulti"},{key:"ProjectId",enDescriptor:"Project ID",cnDescriptor:"负载均衡实例所属的项目 ID",link:"",type:"inputNumber"},{key:"VpcId",enDescriptor:"Vpc ID",cnDescriptor:"负载均衡实例所属私有网络",link:"",type:"input"},{key:"SecurityGroup",enDescriptor:"Security Group",cnDescriptor:"安全组ID",link:"",type:"input"},{key:"MasterZone",enDescriptor:"Master Zone",cnDescriptor:"主可用区ID",link:"",type:"input"},{key:"WithRs",enDescriptor:"WithRs",cnDescriptor:"负载均衡是否绑定后端服务",link:"",type:"select",list:[{text:"没有绑定后端服务",value:0},{text:"绑定后端服务",value:1},{text:"查询全部",value:-1}]},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"LoadBalancerName",value:"LoadBalancerName"},{text:"CreateTime",value:"CreateTime"},{text:"Domain",value:"Domain"},{text:"LoadBalancerType",value:"LoadBalancerType"}]},{key:"OrderType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]}],c={instanceDocUrl:"https://cloud.tencent.com/document/api/214/30685",namespace:i,fieldDescriptor:a},s={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",Port:"",Protocol:"",listener:"",servers:"",serverPort:"",queries:{LoadBalancerIds:[],Forward:void 0,LoadBalancerName:"",Domain:"",LoadBalancerVips:[],BackendPublicIps:[],BackendPrivateIps:[],Limit:20,Offset:0,ProjectId:void 0,WithRs:{},VpcId:"",SecurityGroup:"",MasterZone:"",OrderBy:{},OrderType:{}}};function u(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var l=["LoadBalancerId","LoadBalancerName","LoadBalancerVips"],p=["ListenerId","ListenerName","Port"],d=["PrivateIpAddresses","InstanceId"],f={vip:"LoadBalancerVips",loadBalancerPort:"Port",protocol:"Protocol",lanIp:"PrivateIpAddresses",port:"ServerPort"},m={LoadBalancerVips:"AddressIPv6"},h={instance:"LoadBalancerId",listener:"ListenerId",servers:"PrivateIpAddresses",port:"Port"},y={listener:"ListenerList",servers:"ServersList"},g={Port:{dim_KeyInStorage:y.listener,dim_KeyInTarget:"listener",dim_KeyInMap:h.listener},Protocol:{dim_KeyInStorage:y.listener,dim_KeyInTarget:"listener",dim_KeyInMap:h.listener},PrivateIpAddresses:{dim_KeyInStorage:y.servers,dim_KeyInTarget:"servers",dim_KeyInMap:h.servers},ServerPort:{dim_KeyInStorage:y.servers,dim_KeyInTarget:"serverPort",dim_KeyInIns:"Port",dim_KeyInMap:h.port}};t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"TDMQInstanceAliasList",(function(){return u})),n.d(t,"TDMQInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"keyInStorage",(function(){return y})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"regionSupported",(function(){return m})),n.d(t,"TDMQGetInstanceQueryParams",(function(){return f}));var r=n(4),i=n(0),o=n.n(i),a="QCE/TDMQ",c="tdmqQuery",s={tenantId:"ClusterId",tenant:"ClusterId",topicName:"TopicName",environmentId:"EnvironmentId"},u=["ClusterId","ClusterName"],l={instance:"ClusterId",topicName:"TopicName",environmentId:"EnvironmentId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100}],d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",topicName:"",environmentId:"",queries:{Limit:20,Offset:0}};function f(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var m=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}];function h(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){-1!==e.Dimensions.indexOf("topicName")&&-1===e.Dimensions.indexOf("environmentId")&&e.Dimensions.push("environmentId")})),t}var y={topicName:"topicName",environmentId:"environmentId"},g={TopicName:{dim_KeyInStorage:y.topicName,dim_KeyInTarget:"topicName",dim_KeyInMap:l.topicName},EnvironmentId:{dim_KeyInStorage:y.environmentId,dim_KeyInTarget:"environmentId",dim_KeyInMap:l.environmentId}};t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"GSEFilterFieldsDescriptor",(function(){return m})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"GSEInstanceAliasList",(function(){return l})),n.d(t,"GSEInvalidDemensions",(function(){return u})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return h})),n.d(t,"regionSupported",(function(){return v})),n.d(t,"modifyDimensons",(function(){return b})),n.d(t,"queryMonitorExtraConfg",(function(){return f})),n.d(t,"fleetId",(function(){return c})),n.d(t,"keyInStorage",(function(){return d})),n.d(t,"GSEGetInstanceQueryParams",(function(){return g}));var r=n(4),i=n(0),o=n.n(i),a="QCE/GSE",c="FleetId",s="gseQuery",u={instanceid:"InstanceId",fleetid:"FleetId",queuename:"Name"},l=["InstanceId","PrivateIpAddress","IpAddress"],p={instance:"InstanceId",Name:"Name",FleetId:c},d={fleet:"fleet",queue:"queueName"},f={FleetId:{dim_KeyInStorage:d.fleet,dim_KeyInTarget:"FleetId",dim_KeyInMap:p.FleetId},Name:{dim_KeyInStorage:d.queue,dim_KeyInTarget:"Name",dim_KeyInMap:p.Name}},m=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceId",enDescriptor:"resourceName",cnDescriptor:"资源名称",link:"",type:"input"},{key:"FleetId",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"input"}],h={instanceDocUrl:"https://cloud.tencent.com/document/api/1165/42604",namespace:a,fieldDescriptor:m},y={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",FleetId:"",Name:"",queries:{Limit:20,Offset:0,InstanceId:"",FleetId:""}};function g(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var v=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-ashburn"},{value:"na-siliconvalley"}];function b(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return u[e]||e}))})),t}t.default=y},function(e,t,n){"use strict";n.r(t),n.d(t,"DCDBFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"DCDBInstanceAliasList",(function(){return s})),n.d(t,"DCDBInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"regionSupported",(function(){return v})),n.d(t,"keyInStorage",(function(){return y})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"DCDBGetInstanceQueryParams",(function(){return h}));var r=n(0),i=n(4),o="QCE/TDMYSQL",a="dcdbQuery",c={nodeid:"NodeId",instanceid:"InstanceId",shardid:"ShardInstanceId",ShardId:"ShardInstanceId"},s=["InstanceId","InstanceName"],u={instance:"InstanceId",NodeId:"NodeId",ShardInstanceId:"ShardInstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"实例 ID 查询",link:"",type:"inputMulti"},{key:"SearchName",enDescriptor:"SearchName",cnDescriptor:"搜索的字段名,当前支持的值有:instancename、vip、all",link:"",type:"input"},{key:"SearchKey",enDescriptor:"SearchKey",cnDescriptor:"搜索的关键字",link:"",type:"input"},{key:"ProjectIds",enDescriptor:"ProjectIds",cnDescriptor:"按项目 ID 查询",link:"",type:"inputNumberMulti"},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络 ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"私有网络的子网 ID",link:"",type:"input"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"projectId",value:"projectId"},{text:"createtime",value:"createtime"},{text:"instancename",value:"instancename"}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"私有网络 ID",link:"",type:"select",list:[{text:"desc",value:"desc"},{text:"asc",value:"asc"}]},{key:"ExclusterType",enDescriptor:"ExclusterType",cnDescriptor:"集群类型",link:"",type:"select",list:[{text:"非独享集群",value:1},{text:"独享集群",value:2},{text:"全部",value:0},{text:"asc",value:"asc"}]},{key:"ExclusterIds",enDescriptor:"ExclusterIds",cnDescriptor:"独享集群ID",link:"",type:"inputMulti"},{key:"FilterInstanceType",enDescriptor:"FilterInstanceType",cnDescriptor:"实例类型过滤",link:"",type:"select",multiple:!0,list:[{text:"独享实例",value:1},{text:"主实例",value:2},{text:"灾备实例",value:3}]}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/557/16140",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",ShardId:"",NodeId:"",queries:{Limit:20,Offset:0,InstanceIds:[],SearchName:"",SearchKey:"",ProjectIds:[],VpcId:"",SubnetId:"",OrderBy:{},OrderByType:{},ExclusterType:{},ExclusterIds:[],FilterInstanceType:{}}},f={shardid:"ShardId",instanceid:"InstanceId",nodeid:"NodeId"};function m(e){var t=Object(r.cloneDeep)(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return f[e]||e}))})),t}function h(e){void 0===e&&(e={});var t=Object(i.d)(e,!1);return t.IsFilterVpc=!1,t.IsFilterExcluster=!1,(t.VpcId||t.SubnetId)&&(t.IsFilterVpc=!0),t.ExclusterType&&(t.IsFilterExcluster=!0),Object(r.isArray)(t.FilterInstanceType)&&(t.FilterInstanceType=t.FilterInstanceType.join(",")),t}var y={NodeId:"NodeId",ShardInstanceId:"ShardId"},g={NodeId:{dim_KeyInStorage:y.NodeId,dim_KeyInTarget:"NodeId",dim_KeyInMap:u.NodeId},ShardInstanceId:{dim_KeyInStorage:y.ShardInstanceId,dim_KeyInTarget:"ShardId",dim_KeyInMap:u.ShardInstanceId}},v=[{text:"华北地区(北京)",value:"ap-beijing"},{text:"西南地区(成都)",value:"ap-chengdu"},{text:"西南地区(重庆)",value:"ap-chongqing"},{text:"华南地区(广州)",value:"ap-guangzhou"},{text:"港澳台地区(中国香港)",value:"ap-hongkong"},{text:"亚太南部(孟买)",value:"ap-mumbai"},{text:"华东地区(南京)",value:"ap-nanjing"},{text:"华东地区(上海)",value:"ap-shanghai"},{text:"华东地区(上海金融)",value:"ap-shanghai-fsi"},{text:"华南地区(深圳金融)",value:"ap-shenzhen-fsi"},{text:"亚太东南(新加坡)",value:"ap-singapore"},{text:"亚太东北(东京)",value:"ap-tokyo"},{text:"欧洲地区(法兰克福)",value:"eu-frankfurt"},{text:"美国东部(弗吉尼亚)",value:"na-ashburn"},{text:"美国西部(硅谷)",value:"na-siliconvalley"},{text:"北美地区(多伦多)",value:"na-toronto"}];t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisMemFieldsDescriptor",(function(){return c})),n.d(t,"RedisMemInvalidDemensions",(function(){return p})),n.d(t,"REDISMEMInstanceAliasList",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return d})),n.d(t,"namespace",(function(){return a})),n.d(t,"NodeType",(function(){return f})),n.d(t,"REDISMEMGetInstanceQueryParams",(function(){return u}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var l=["InstanceId","InstanceName","WanIp"],p={instanceid:"InstanceId",rnodeid:"rnodeid",pnodeid:"pnodeid"},d={instance:"InstanceId",rnodeid:"rnodeid",pnodeid:"pnodeid"},f=["Redis","Proxy"];t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"TDMQRABBITMQInstanceAliasList",(function(){return c})),n.d(t,"TDMQInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryMonitorExtraConfg",(function(){return m})),n.d(t,"keyInStorage",(function(){return f})),n.d(t,"regionSupported",(function(){return d})),n.d(t,"TDMQGetInstanceQueryParams",(function(){return p}));var r=n(4),i="QCE/RABBITMQ",o="tdmqQuery",a={instanceid:"InstanceId",node:"NodeName"},c=["InstanceId","InstanceName"],s={instance:"InstanceId",node:"NodeName"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100}],l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",node:"",queries:{Limit:20,Offset:0}};function p(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var d=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],f={node:"NodeName"},m={NodeName:{dim_KeyInStorage:f.node,dim_KeyInTarget:"node",dim_KeyInMap:s.node}};t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"TDMQROCKETMQInstanceAliasList",(function(){return c})),n.d(t,"TDMQInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryMonitorExtraConfg",(function(){return m})),n.d(t,"keyInStorage",(function(){return f})),n.d(t,"regionSupported",(function(){return d})),n.d(t,"TDMQROCKETMQGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o="QCE/ROCKETMQ",a={tenant:"ClusterId",namespace:"NamespaceId",group:"Name"},c=["ClusterId","ClusterName"],s={instance:"ClusterId",namespace:"NamespaceId",group:"Name"},u=[{key:"includeVip",enDescriptor:"includeVip",cnDescriptor:"包含专享集群",link:"",type:"select",list:[{text:"是",value:"true"},{text:"否",value:"false"}]}],l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",namespace:"",group:"",queries:{Limit:20,Offset:0,instanceIdsChecked:!1,filtersChecked:!0,ClusterIdList:[""],Filters:{includeVip:{text:"是",value:"true"}}}};function p(e){void 0===e&&(e={});var t={};if(!i.a.isEmpty(e))if(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(i.a.isArray(e.ClusterIdList)){var n=i.a.compact(e.ClusterIdList);i.a.uniq(n).length>0&&(t.ClusterIdList=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:[i.a.get(e,"value",[])].slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var d=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],f={namespace:"NamespaceId",group:"Name"},m={NamespaceId:{dim_KeyInStorage:f.namespace,dim_KeyInTarget:"namespace",dim_KeyInMap:s.namespace},Name:{dim_KeyInStorage:f.group,dim_KeyInTarget:"group",dim_KeyInMap:s.group}};t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"InitServiceState",(function(){return c})),n.d(t,"SERVICES",(function(){return o})),n.d(t,"Datasources",(function(){return a})),n.d(t,"InstanceAliasList",(function(){return s})),n.d(t,"GetInstanceQueryParams",(function(){return u}));var r=n(1),i=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c=new Proxy({},{get:function(e,t,n){if("string"==typeof t){if(t.startsWith("id4"))return"ClusterId";if(t.startsWith("host4"))return"Ip"}return Reflect.get(e,t,n)},has:function(e,t){return!0}}),s={instance:"ClusterId",node:"Ip"},u={node:"nodeIP"},l={Ip:{dim_KeyInStorage:u.node,dim_KeyInTarget:"nodeIP",dim_KeyInMap:s.node}},p=["ClusterId","ClusterName"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",nodeIP:"",queries:{Offset:0,Limit:10,DisplayStrategy:"",OrderBy:{},Order:{},InstanceIds:[],ProjectId:-1,OrderField:"",Asc:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"VCLBFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"VCLBInstanceAliasList",(function(){return u})),n.d(t,"VCLBInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"clbNamespaceMap",(function(){return y})),n.d(t,"modifyDimensons",(function(){return g})),n.d(t,"regionSupported",(function(){return h})),n.d(t,"BMLBGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/V_CLB",c="vClbQuery",s={InstanceId:"LoadBalancerId"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1",link:"",type:"inputNumber",min:1},{key:"LoadBalancerIds",enDescriptor:"LoadBalancer ID",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancer Name",cnDescriptor:"实例名称",link:"",type:"input"},{key:"Forward",enDescriptor:"Forward",cnDescriptor:"负载均衡实例类型",link:"",type:"select",list:[{text:"通用的负载均衡",value:1},{text:"传统的负载均衡",value:0}]},{key:"Domain",enDescriptor:"Domain",cnDescriptor:"域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义",link:"",type:"input"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancer Vips",cnDescriptor:"负载均衡实例的 VIP 地址",link:"",type:"inputMulti"},{key:"BackendPrivateIps",enDescriptor:"BackendPrivate Ips",cnDescriptor:"负载均衡绑定的后端服务的内网 IP",link:"",type:"inputMulti"},{key:"BackendPublicIps",enDescriptor:"BackendPublic Ips",cnDescriptor:"负载均衡绑定的后端服务的外网 IP",link:"",type:"inputMulti"},{key:"ProjectId",enDescriptor:"Project ID",cnDescriptor:"负载均衡实例所属的项目 ID",link:"",type:"inputNumber"},{key:"VpcId",enDescriptor:"Vpc ID",cnDescriptor:"负载均衡实例所属私有网络",link:"",type:"input"},{key:"SecurityGroup",enDescriptor:"Security Group",cnDescriptor:"安全组ID",link:"",type:"input"},{key:"MasterZone",enDescriptor:"Master Zone",cnDescriptor:"主可用区ID",link:"",type:"input"},{key:"WithRs",enDescriptor:"WithRs",cnDescriptor:"负载均衡是否绑定后端服务",link:"",type:"select",list:[{text:"没有绑定后端服务",value:0},{text:"绑定后端服务",value:1},{text:"查询全部",value:-1}]},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"LoadBalancerName",value:"LoadBalancerName"},{text:"CreateTime",value:"CreateTime"},{text:"Domain",value:"Domain"},{text:"LoadBalancerType",value:"LoadBalancerType"}]},{key:"OrderType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/214/30685",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",Port:"",Protocol:"",listener:"",queries:{LoadBalancerIds:[],Forward:void 0,LoadBalancerName:"",Domain:"",LoadBalancerVips:[],BackendPublicIps:[],BackendPrivateIps:[],Limit:20,Offset:0,ProjectId:void 0,WithRs:{},VpcId:"",SecurityGroup:"",MasterZone:"",OrderBy:{},OrderType:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var h=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],y={public:"QCE/LB_PUBLIC",private:"QCE/LB_PRIVATE"};function g(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"cynosdbMysqlFilterFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return m})),n.d(t,"CYNOSDBMYSQLInstanceAliasList",(function(){return f})),n.d(t,"CYNOSDBInvalidDemensions",(function(){return h})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"regionSupported",(function(){return u})),n.d(t,"modifyDimensons",(function(){return g})),n.d(t,"checkKeys",(function(){return y})),n.d(t,"CYNOSDBMYSQLGetInstanceQueryParams",(function(){return d}));var r=n(0),i=n.n(r),o=n(4),a="QCE/CYNOSDB_MYSQL",c="cynosdbMysqlQuery",s=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:1e3},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"实例id列表",link:"",type:"inputMulti"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"创建时间",value:"CREATETIME"},{text:"过期时间",value:"PERIODENDTIME"}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"排序类型",link:"",type:"select",list:[{text:"升序",value:"ASC"},{text:"降序",value:"DESC"}]},{key:"DbType",enDescriptor:"DbType",cnDescriptor:"引擎类型",link:"",type:"select",list:[{text:"MYSQL",value:"MYSQL"},{text:"POSTGRESQL",value:"POSTGRESQL"}]}],u=[{value:"ap-beijing"},{value:"ap-guangzhou"},{value:"ap-nanjing"},{value:"ap-shanghai"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/1003/48334",namespace:a,fieldDescriptor:s},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,OrderBy:{},OrderByType:{},InstanceIds:[],DbType:{}}};function d(e){return void 0===e&&(e={}),Object(o.d)(e,!1)}var f=["InstanceId","InstanceName"],m={instance:"InstanceId"},h={instanceid:"InstanceId",instanceId:"InstanceId"},y=["instanceId"];function g(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryDescriptor",(function(){return o})),n.d(t,"SCFInstanceAliasList",(function(){return s})),n.d(t,"SCFInvalidDemensions",(function(){return u})),n.d(t,"queryMonitorExtraConfg",(function(){return f})),n.d(t,"regionSupported",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"keyInStorage",(function(){return d})),n.d(t,"SCFGetInstanceQueryParams",(function(){return c})),n.d(t,"SCFDefaultDimensionList",(function(){return m}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"SearchKey",enDescriptor:"SearchKey",cnDescriptor:"支持FunctionName模糊匹配",link:"",type:"input"},{key:"Namespace",enDescriptor:"Namespace",cnDescriptor:"云函数命名空间",link:"",type:"input"},{key:"Description",enDescriptor:"Description",cnDescriptor:"函数描述,支持模糊搜索",link:"",type:"input"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"AddTime",value:"AddTime"},{text:"ModTime",value:"ModTime"},{text:"FunctionName",value:"FunctionName"}]},{key:"Order",enDescriptor:"Order Direction",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"ASC",value:"ASC"},{text:"DESC",value:"DESC"}]}],a={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"FunctionName",version:"",queries:{Offset:0,Limit:20,OrderBy:{},Order:{},SearchKey:"",Namespace:"",Description:""}};function c(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["FunctionId","FunctionName"],u={functionName:"FunctionName",namespace:"Namespace",version:"Version"},l={instance:"FunctionName",version:"Version"},p=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-siliconvalley"},{value:"na-toronto"}],d={version:"version"},f={Version:{dim_KeyInStorage:d.version,dim_KeyInTarget:"version",dim_KeyInMap:l.version}};t.default=a;var m=["functionName","namespace","version"]},function(e,t){e.exports=o},function(e,t,n){"use strict";n.r(t),n.d(t,"CLSFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CLSInstanceAliasList",(function(){return u})),n.d(t,"CLSInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"regionSupported",(function(){return h})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"CLSGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/CLS",c="clsQuery",s={},u=["TopicId","TopicName"],l={instance:"TopicId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"topicName",enDescriptor:"topicName",cnDescriptor:"日志主题名称",link:"",type:"inputMulti"},{key:"topicId",enDescriptor:"topicId",cnDescriptor:"日志主题ID",link:"",type:"inputMulti"},{key:"logsetName",enDescriptor:"logsetName",cnDescriptor:"日志集名称",link:"",type:"inputMulti"},{key:"logsetId",enDescriptor:"logsetId",cnDescriptor:"日志集ID",link:"",type:"inputMulti"},{key:"tagKey",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"inputMulti"},{key:"tag:tagKey",enDescriptor:"tag - tagKey",cnDescriptor:"标签键值对",link:"",type:"inputMulti"},{key:"storageType",enDescriptor:"storageType",cnDescriptor:"日志主题的存储类型",link:"",type:"select",list:[{text:"实时存储",value:"hot"},{text:"离线存储",value:"cold"}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/614/56454",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TopicId",uin:"",queries:{Limit:20,Offset:0,topicName:[],topicId:[],logsetName:[],logsetId:[],tagKey:[],"tag:tagKey":[],storageType:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var h=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}];function y(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["uin","TopicId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"SQLSERVERNETFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"SQLSERVERInstanceAliasList",(function(){return u})),n.d(t,"SQLSERVERInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"regionSupported",(function(){return f})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"SQLSERVERGetInstanceQueryParams",(function(){return y}));var r=n(4),i=n(0),o=n.n(i),a="QCE/SQLSERVER",c="sqlserverQuery",s={resourceId:"InstanceId"},u=["InstanceId","Name"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ProjectId",enDescriptor:"ProjectId",cnDescriptor:"项目ID",link:"",type:"inputNumber"},{key:"Status",enDescriptor:"Status",cnDescriptor:"实例状态",link:"",type:"select",list:[{text:"申请中",value:1},{text:"运行中",value:2},{text:"受限运行中 (主备切换中)",value:3},{text:"已隔离",value:4},{text:"回收中",value:5},{text:"已回收",value:6},{text:"任务执行中",value:7},{text:"已下线",value:8},{text:"实例扩容中",value:9},{text:"实例迁移中",value:10},{text:"只读",value:11},{text:"重启中",value:12}]},{key:"InstanceIdSet",enDescriptor:"InstanceIdSet",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"PayMode",enDescriptor:"PayMode",cnDescriptor:"子网实例ID",link:"",type:"select",list:[{text:"包年包月",value:1},{text:"按量计费",value:0}]},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"实例所属VPC的唯一字符串ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"实例所属子网的唯一字符串ID",link:"",type:"input"},{key:"VipSet",enDescriptor:"VipSet",cnDescriptor:"实例内网地址列表",link:"",type:"inputMulti"},{key:"InstanceNameSet",enDescriptor:"InstanceNameSet",cnDescriptor:"实例名称列表, 模糊查询",link:"",type:"inputMulti"},{key:"VersionSet",enDescriptor:"VersionSet",cnDescriptor:"实例版本代号列表",link:"",type:"inputMulti"},{key:"Zone",enDescriptor:"Zone",cnDescriptor:"实例可用区",link:"",type:"dropdown"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/238/19969",namespace:a,fieldDescriptor:p},f=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-nanjing"},{value:"ap-seoul"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-moscow"},{value:"na-siliconvalley"}],m={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,ProjectId:null,Status:{},InstanceIdSet:[],PayMode:{},VpcId:"",SubnetId:"",VipSet:[],InstanceNameSet:[],VersionSet:[],Zone:""}};function h(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["resourceId"]})),t}function y(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=m},function(e,t,n){"use strict";n.r(t),n.d(t,"BMINTRALBFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMINTRALBInstanceAliasList",(function(){return u})),n.d(t,"BMINTRALBInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"isValidMetric",(function(){return h})),n.d(t,"BMINTRALBGetInstanceQueryParams",(function(){return y}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_INTRA_LB",c="bmIntraLbQuery",s={vip:"LoadBalancerVips",vpcId:"VpcId"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"LoadBalancerIds",enDescriptor:"LoadBalancerIds",cnDescriptor:"负载均衡器ID数组",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancerName",cnDescriptor:"负载均衡器名称",link:"",type:"inputMulti"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancerVips",cnDescriptor:"负载均衡获得的公网IP地址",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/1027/33280",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",queries:{Limit:20,Offset:0,LoadBalancerIds:[],LoadBalancerName:[],LoadBalancerVips:[]}},m=["Inpkg","Outpkg","Intraffic","Outtraffic","Connum","Req"];function h(e){var t=o.a.map(m,o.a.toUpper);return-1!==o.a.indexOf(t,o.a.toUpper(e.MetricName))}function y(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"CPMFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMLBInstanceAliasList",(function(){return u})),n.d(t,"CPMInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"isValidMetric",(function(){return y})),n.d(t,"BMLBGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_LB",c="bmLbQuery",s={vip:"LoadBalancerVips"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"LoadBalancerIds",enDescriptor:"LoadBalancerIds",cnDescriptor:"负载均衡器ID数组",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancerName",cnDescriptor:"负载均衡器名称",link:"",type:"inputMulti"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancerVips",cnDescriptor:"负载均衡获得的公网IP地址",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/1027/33280",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",queries:{Limit:20,Offset:0,LoadBalancerIds:[],LoadBalancerName:[],LoadBalancerVips:[]}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var h=["Inpkg","Outpkg","Intraffic","Outtraffic","Connum","Req"];function y(e){var t=o.a.map(h,o.a.toUpper);return-1!==o.a.indexOf(t,o.a.toUpper(e.MetricName))}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"BMPCXFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMPCXInstanceAliasList",(function(){return u})),n.d(t,"BMPCXInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"BMPCXGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_PCX",c="bmPcxQuery",s={peeringConnectionId:"VpcPeerConnectionId"},u=["VpcPeerConnectionId","VpcPeerConnectionName"],l={instance:"VpcPeerConnectionId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"VpcPeerConnectionIds",enDescriptor:"VpcPeerConnectionIds",cnDescriptor:"对等连接实例ID",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/product/1024/36903",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpcPeerConnectionId",queries:{Limit:20,Offset:0,VpcPeerConnectionIds:[]}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}function h(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["peeringConnectionId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"CBSFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"CBSInstanceAliasList",(function(){return s})),n.d(t,"CBSInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"isValidMetric",(function(){return m})),n.d(t,"CBSGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n(4),o="QCE/BLOCK_STORAGE",a="cbsQuery",c={diskId:"DiskId",InstanceId:"InstanceId",diskname:"DiskName",unInstanceId:"InstanceId"},s=["DiskId","DiskName"],u={instance:"DiskId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DiskIds",enDescriptor:"DiskIds",cnDescriptor:"云硬盘ID",link:"",type:"inputMulti"},{key:"Order",enDescriptor:"Order",cnDescriptor:"排列顺序",link:"",type:"select",list:[{text:"升序排列",value:"ASC"},{text:"降序排列",value:"DESC"}]},{key:"OrderField",enDescriptor:"OrderField",cnDescriptor:"排序的依据字段",link:"",type:"select",list:[{text:"云盘的创建时间排序",value:"CREATE_TIME"},{text:"云盘的到期时间排序",value:"DEADLINE"}]},{key:"ReturnBindAutoSnapshotPolicy",enDescriptor:"ReturnBindAutoSnapshotPolicy",cnDescriptor:"否需要返回云盘绑定的定期快照策略ID",link:"",type:"switch"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/362/16315",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DiskId",queries:{Limit:20,Offset:0,DiskIds:[],OrderField:[],Order:[],ReturnBindAutoSnapshotPolicy:!1}};function f(e){return void 0===e&&(e={}),Object(i.d)(e,!1)}function m(e){void 0===e&&(e={});var t=r.get(e,"Dimensions[0].Dimensions");return 1===t.length&&-1!==r.indexOf(t,"diskId")}t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNPROVINCEFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"CDNPROVINCEInstanceAliasList",(function(){return c})),n.d(t,"CDNPROVINCEInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"CDNPROVINCEGetInstanceQueryParams",(function(){return p}));var r=n(4),i="QCE/CDN_LOG_DATA",o="cdnProvinceQuery",a={domain:"Domain",projectid:"ProjectId",province:"district",appid:"AppId"},c=["Domain","ProjectId"],s={instance:"Domain"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"origin",enDescriptor:"origin",cnDescriptor:"主源站",link:"",type:"inputMulti"},{key:"domain",enDescriptor:"domain",cnDescriptor:"域名",link:"",type:"inputMulti"},{key:"resourceId",enDescriptor:"resourceId",cnDescriptor:"域名id",link:"",type:"inputMulti"},{key:"status",enDescriptor:"status",cnDescriptor:"域名状态",link:"",type:"select",list:[{text:"online",value:"online"},{text:"offline",value:"offline"},{text:"processing",value:"processing"}]},{key:"serviceType",enDescriptor:"serviceType",cnDescriptor:"业务类型",link:"",type:"select",list:[{text:"web",value:"web"},{text:"download",value:"download"},{text:"media",value:"media"}]},{key:"projectId",enDescriptor:"projectId",cnDescriptor:"项目ID",link:"",type:"inputNumberMulti"},{key:"domainType",enDescriptor:"domainType",cnDescriptor:"主源站类型",link:"",type:"select",list:[{text:"自有源",value:"cname"},{text:"cos接入",value:"cos"}]},{key:"fullUrlCache",enDescriptor:"fullUrlCache",cnDescriptor:"全路径缓存",link:"",type:"select",list:[{text:"打开",value:"on"},{text:"关闭",value:"off"}]},{key:"https",enDescriptor:"https",cnDescriptor:"是否配置https",link:"",type:"select",list:[{text:"on",value:"on"},{text:"off",value:"off"},{text:"processing",value:"processing"}]},{key:"originPullProtocol",enDescriptor:"originPullProtocol",cnDescriptor:"回源协议类型",link:"",type:"select",list:[{text:"http",value:"http"},{text:"follow",value:"follow"},{text:"https",value:"https"}]},{key:"tagKey",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"inputMulti"}],l={region:"ap-guangzhou",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"Domain",isp:"",district:"",queries:{Limit:20,Offset:0,origin:[],domain:[],resourceId:[],status:{},serviceType:{},projectId:[],domainType:{},fullUrlCache:{},https:{},originPullProtocol:{},tagKey:[]}};function p(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"CEIPFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CEIPSUMMARYInstanceAliasList",(function(){return u})),n.d(t,"CEIPInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"CEIPSUMMARYGetInstanceQueryParams",(function(){return m}));var r=n(0),i=n.n(r),o=n(4),a="QCE/CEIP_SUMMARY",c="ceipSummaryQuery",s={vip:"AddressIp",eip:"AddressIp"},u=["AddressId","AddressName","AddressIp"],l={instance:"AddressId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"address-id",enDescriptor:"address-id",cnDescriptor:" EIP 的唯一 ID",link:"",type:"inputMulti"},{key:"address-name",enDescriptor:"address-name",cnDescriptor:"EIP 名称",link:"",type:"inputMulti"},{key:"address-ip",enDescriptor:"address-ip",cnDescriptor:"EIP 的 IP 地址",link:"",type:"inputMulti"},{key:"address-status",enDescriptor:"address-status",cnDescriptor:"EIP 的状态",link:"",type:"select",multiple:!0,list:[{text:"CREATING",value:"CREATING"},{text:"BINDING",value:"BINDING"},{text:"BIND",value:"BIND"},{text:"UNBINDING",value:"UNBINDING"},{text:"UNBIND",value:"UNBIND"},{text:"OFFLINING",value:"OFFLINING"},{text:"BIND_ENI",value:"BIND_ENI"}]},{key:"instance-id",enDescriptor:"instance-id",cnDescriptor:"EIP 绑定的实例 ID",link:"",type:"inputMulti"},{key:"private-ip-address",enDescriptor:"private-ip-address",cnDescriptor:"EIP 绑定的内网 IP ",link:"",type:"inputMulti"},{key:"network-interface-id",enDescriptor:"network-interface-id",cnDescriptor:" EIP 绑定的弹性网卡 ID",link:"",type:"inputMulti"},{key:"is-arrears",enDescriptor:"is-arrears",cnDescriptor:"EIP 是否欠费",link:"",type:"select",multiple:!0,list:[{text:"欠费状态",value:"TRUE"},{text:"费用状态正常",value:"FALSE"}]},{key:"address-isp",enDescriptor:"address-isp",cnDescriptor:"运营商类型",link:"",type:"select",multiple:!0,list:[{text:"BGP",value:"BGP"},{text:"CMCC",value:"CMCC"},{text:"CUCC",value:"CUCC"},{text:"CTCC",value:"CTCC"}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/215/16702",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"AddressId",queries:{Limit:20,Offset:0,"address-id":[],"address-name":[],"address-ip":[],"address-status":{},"is-arrears":{},"address-isp":{},"instance-id":[],"private-ip-address":[],"network-interface-id":[]}};function m(e){return void 0===e&&(e={}),Object(o.d)(e,!0)}function h(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["eip"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceQueryDescriptor",(function(){return o})),n.d(t,"InvalidDemensions",(function(){return c})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"InstanceAliasList",(function(){return p})),n.d(t,"GetInstanceQueryParams",(function(){return a})),n.d(t,"queryMonitorExtraConfg",(function(){return l})),n.d(t,"keyInStorage",(function(){return u}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为10,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:50},{key:"TopicName",enDescriptor:"TopicName",cnDescriptor:"精确匹配TopicName",link:"",type:"input"},{key:"TagKey",enDescriptor:"TagKey",cnDescriptor:"标签搜索",link:"",type:"input"}];function a(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c={topicId:"TopicId"},s={instance:"TopicName",subscription:"SubscriptionId"},u={subscriptionId:"subscriptionId"},l={subscriptionId:{dim_KeyInStorage:u.subscriptionId,dim_KeyInTarget:"subscriptionId",dim_KeyInMap:s.subscription}},p=["TopicName","TopicId"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TopicName",subscriptionId:"",queries:{Offset:0,Limit:20,TopicName:"",TagKey:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"CPMFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CPMInstanceAliasList",(function(){return u})),n.d(t,"CPMInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"CPMGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/CPM",c="cpmQuery",s={instanceId:"InstanceId"},u=["InstanceId","Name"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DeviceClassCode",enDescriptor:"DeviceClassCode",cnDescriptor:"机型ID",link:"",type:"dropdown"},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"设备ID数组",link:"",type:"inputMulti"},{key:"WanIps",enDescriptor:"WanIps",cnDescriptor:"外网IP数组",link:"",type:"inputMulti"},{key:"LanIps",enDescriptor:"LanIps",cnDescriptor:"内网IP数组",link:"",type:"inputMulti"},{key:"Alias",enDescriptor:"Alias",cnDescriptor:"设备名称",link:"",type:"input"},{key:"VagueIp",enDescriptor:"VagueIp",cnDescriptor:"模糊IP查询",link:"",type:"input"},{key:"AutoRenewFlag",enDescriptor:"AutoRenewFlag",cnDescriptor:"自动续费标志",link:"",type:"select",list:[{text:"不自动续费",value:0},{text:"自动续费",value:1}]},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络唯一ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"子网唯一ID",link:"",type:"input"},{key:"DeviceType",enDescriptor:"DeviceType",cnDescriptor:"子网实例ID",link:"",type:"select",list:[{text:"计算型",value:"compute"},{text:"标准型",value:"standard"},{text:"存储型",value:"storage"}]},{key:"IsLuckyDevice",enDescriptor:"IsLuckyDevice",cnDescriptor:"竞价实例机器过滤",link:"",type:"select",list:[{text:"非竞价实例机器",value:0},{text:"竞价实例的机器",value:1}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/386/32904",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,DeviceClassCode:"",InstanceIds:[],WanIps:[],LanIps:[],Alias:"",VagueIp:"",AutoRenewFlag:{},VpcId:"",SubnetId:"",DeviceType:{},IsLuckyDevice:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}function h(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["instanceId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"ECDNFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"ECDNInstanceAliasList",(function(){return c})),n.d(t,"ECDNInvalidDemensions",(function(){return u})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"ECDNGetInstanceQueryParams",(function(){return f}));var r=n(0),i=function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o.push({Name:t,Value:Object(r.uniq)(e).slice(0,5)}):Object(r.isObject)(e)&&(Object(r.isEmpty)(Object(r.get)(e,"value",[]))||o.push({Name:t,Value:[Object(r.get)(e,"value",[])].slice(0,5)}))})),o.length>0)return t.Filters=o.map((function(e){return"domain"===e.Name?i(i({},e),{Fuzzy:!0}):e})),t}return t}function m(e){var t=Object(r.cloneDeep)(e);return t.Dimensions.forEach((function(e){e.Dimensions=["domain","projectid"]})),t}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"ECMFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"ECMInstanceAliasList",(function(){return s})),n.d(t,"ECMInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"ECMGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n(4),o="QCE/ECM",a="ecmQuery",c={uuid:"UUID"},s=["InstanceId","InstanceName"],u={instance:"InstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"zone",enDescriptor:"zone",cnDescriptor:"可用区英文标识",link:"",type:"dropdownMulti"},{key:"zone-name",enDescriptor:"zone-name",cnDescriptor:"排列顺序",link:"",type:"inputMulti"},{key:"module-id",enDescriptor:"module-id",cnDescriptor:"模块ID",link:"",type:"inputMulti"},{key:"module-name",enDescriptor:"module-name",cnDescriptor:"模块名称",link:"",type:"inputMulti"},{key:"instance-id",enDescriptor:"instance-id",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"instance-name",enDescriptor:"instance-name",cnDescriptor:"实例名称",link:"",type:"inputMulti"},{key:"ip-address",enDescriptor:"ip-address",cnDescriptor:"内网/公网IP",link:"",type:"inputMulti"},{key:"instance-uuid",enDescriptor:"instance-uuid",cnDescriptor:"实例uuid",link:"",type:"inputMulti"},{key:"instance-state",enDescriptor:"instance-state",cnDescriptor:"实例状态",link:"",type:"select",multiple:!0,list:[{text:"创建中",value:"PENDING"},{text:"创建失败",value:"LAUNCH_FAILED"},{text:"运行中",value:"RUNNING"},{text:"关机",value:"STOPPED"},{text:"开机中",value:"STARTING"},{text:"关机中",value:"STOPPING"},{text:"重启中",value:"REBOOTING"},{text:"停止待销毁",value:"SHUTDOWN"},{text:"销毁中",value:"TERMINATING"}]},{key:"internet-service-provider",enDescriptor:"internet-service-provider",cnDescriptor:"公网IP所属的运营商",link:"",type:"inputMulti"},{key:"instance-family",enDescriptor:"instance-family",cnDescriptor:"机型family",link:"",type:"inputMulti"},{key:"image-id",enDescriptor:"image-id",cnDescriptor:"镜像ID",link:"",type:"inputMulti"},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"实例的vpc id",link:"",type:"inputMulti"},{key:"subnet-id",enDescriptor:"subnet-id",cnDescriptor:"实例的subnet id",link:"",type:"inputMulti"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/1108/42565",namespace:o,fieldDescriptor:l},d={region:"ap-guangzhou",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,zone:[],"zone-name":[],"module-id":[],"module-name":[],"instance-id":[],"instance-name":[],"ip-address":[],"instance-uuid":[],"instance-state":{},"internet-service-provider":[],"instance-family":[],"image-id":[],"vpc-id":[],"subnet-id":[]}};function f(e){return void 0===e&&(e={}),Object(i.d)(e,!0)}function m(e){var t=r.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["UUID"]})),t}t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"PostgresFieldsDescriptor",(function(){return u})),n.d(t,"POSTGRESInstanceAliasList",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return y})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"namespace",(function(){return c})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"PostgreInvalidDemensions",(function(){return h})),n.d(t,"POSTGRESGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n.n(r),o=n(4),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}function l(e){void 0===e&&(e={});var t=i.a.get(e,"Dimensions[0].Dimensions");return 2===t.length&&(-1!==i.a.indexOf(t,"instanceid")&&-1!==i.a.indexOf(t,"insttype")||-1!==i.a.indexOf(t,"InstanceId")&&-1!==i.a.indexOf(t,"InstanceType"))}function p(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return d[e]||e}))})),t}var d={instanceid:"InstanceId",insttype:"InstanceType",region:"Region"},f={instance:"InstanceId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CESFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"CESInstanceAliasList",(function(){return c})),n.d(t,"CESInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"CESGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/CES",o="cesQuery",a={uInstanceId:"InstanceId"},c=["InstanceId","InstanceName"],s={instance:"InstanceId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"集群实例ID列表",link:"",type:"inputMulti"},{key:"InstanceNames",enDescriptor:"InstanceNames",cnDescriptor:"集群实例名称列表",link:"",type:"inputMulti"},{key:"OrderByKey",enDescriptor:"OrderByKey",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"实例ID",value:1},{text:"实例名称",value:2},{text:"可用区",value:3},{text:"创建时间",value:4}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]},{key:"IpList",enDescriptor:"IpList",cnDescriptor:"私有网络vip列表",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/845/30631",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,InstanceIds:[],InstanceNames:[],OrderByKey:{},OrderByType:{},IpList:[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"DCFilterFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return f})),n.d(t,"DCInstanceAliasList",(function(){return d})),n.d(t,"DCInvalidDemensions",(function(){return m})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return u})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"DCGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o=n(4),a="QCE/DC",c="dcQuery",s=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DirectConnectIds",enDescriptor:"DirectConnectIds",cnDescriptor:"物理专线 ID",link:"",type:"inputMulti"}],u={instanceDocUrl:"https://cloud.tencent.com/document/api/216/34826",namespace:a,fieldDescriptor:s},l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DirectConnectId",queries:{Limit:20,Offset:0,DirectConnectIds:[]}};function p(e){return void 0===e&&(e={}),Object(o.d)(e,!1)}var d=["DirectConnectId","DirectConnectName"],f={instance:"DirectConnectId"},m={directConnectId:"DirectConnectId",directconnectid:"DirectConnectId"};function h(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["directConnectId"]})),t}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"DCGFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"DCGInstanceAliasList",(function(){return c})),n.d(t,"DCGInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"DCGGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/DCG",o="dcgQuery",a={directConnectGatewayId:"DirectConnectGatewayId"},c=["DirectConnectGatewayId","DirectConnectGatewayName"],s={instance:"DirectConnectGatewayId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"direct-connect-gateway-id",enDescriptor:"direct-connect-gateway-id",cnDescriptor:"专线网关唯一ID",link:"",type:"inputMulti"},{key:"direct-connect-gateway-name",enDescriptor:"direct-connect-gateway-name",cnDescriptor:"专线网关名称",link:"",type:"inputMulti"},{key:"direct-connect-gateway-ip",enDescriptor:"direct-connect-gateway-ip",cnDescriptor:"专线网关IP",link:"",type:"inputMulti"},{key:"gateway-type",enDescriptor:"gateway-type",cnDescriptor:"网关类型",link:"",type:"select",multiple:!0,list:[{text:"普通型",value:"NORMAL"},{text:"NAT型",value:"NAT"}]},{key:"network-type",enDescriptor:"network-type",cnDescriptor:"网络类型",link:"",type:"select",multiple:!0,list:[{text:"私有网络类型",value:"VPC"},{text:"云联网类型",value:"CCN"}]},{key:"ccn-id",enDescriptor:"ccn-id",cnDescriptor:"专线网关所在云联网ID",link:"",type:"inputMulti"},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"专线网关所在私有网络ID",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/30644",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DirectConnectGatewayId",queries:{Limit:20,Offset:0,"direct-connect-gateway-id":[],"direct-connect-gateway-name":[],"direct-connect-gateway-ip":[],"gateway-type":{},"network-type":{},"ccn-id":[],"vpc-id":[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"DCXFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return m})),n.d(t,"DCXInstanceAliasList",(function(){return f})),n.d(t,"DCXInvalidDemensions",(function(){return h})),n.d(t,"namespace",(function(){return c})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"DCXGetInstanceQueryParams",(function(){return d}));var r=n(0),i=n.n(r),o=n(4),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var u=["InstanceId","InstanceName"],l={target:"InstanceId"},p={instance:"InstanceId",replica:"ReplicaSetId"},d={Replica:{dim_KeyInStorage:"ReplicaSets",dim_KeyInTarget:"replica",dim_KeyInMap:"ReplicaSetId",dim_KeyInIns:"ReplicaSetId"},Node:{dim_KeyInStorage:"ReplicaNodeSets",dim_KeyInTarget:"node",dim_KeyInMap:"NodeId",dim_KeyInIns:"NodeId"}};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"QAAPFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"QAAPInstanceAliasList",(function(){return u})),n.d(t,"QAAPInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"QAAPGetInstanceQueryParams",(function(){return m}));var r=n(0),i=n.n(r),o=n(4),a="QCE/QAAP",c="qaapQuery",s={channelId:"InstanceId"},u=["InstanceId"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ProjectId",enDescriptor:"ProjectId",cnDescriptor:"项目ID",link:"",type:"inputMulti"},{key:"AccessRegion",enDescriptor:"AccessRegion",cnDescriptor:"接入地域",link:"",type:"inputMulti"},{key:"RealServerRegion",enDescriptor:"RealServerRegion",cnDescriptor:"源站地域",link:"",type:"inputMulti"},{key:"GroupId",enDescriptor:"GroupId",cnDescriptor:"通道组ID",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/608/36963",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,ProjectId:[],AccessRegion:[],RealServerRegion:[],GroupId:[]}};function m(e){return void 0===e&&(e={}),Object(o.d)(e,!0)}function h(e){return i.a.cloneDeep(e)}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"TCAPLUSFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"TCAPLUSInstanceAliasList",(function(){return s})),n.d(t,"TCAPLUSInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"regonsMap",(function(){return m})),n.d(t,"TCAPLUSGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n.n(r),o="QCE/TCAPLUS",a="tcaplusQuery",c={},s=["TableInstanceId","TableName"],u={instance:"TableInstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ClusterId",enDescriptor:"ClusterId",cnDescriptor:"表格所属集群ID",link:"",type:"input"},{key:"TableGroupIds",enDescriptor:"TableGroupIds",cnDescriptor:"表格组ID列表",link:"",type:"inputMulti"},{key:"TableName",enDescriptor:"TableName",cnDescriptor:"表格名称",link:"",type:"input"},{key:"TableInstanceId",enDescriptor:"TableInstanceId",cnDescriptor:"表实例ID",link:"",type:"input"},{key:"TableIdlType",enDescriptor:"TableIdlType",cnDescriptor:"表格描述语言类型",link:"",type:"select",list:[{text:"PROTO",value:"PROTO"},{text:"TDR",value:"TDR"}]},{key:"TableType",enDescriptor:"TableType",cnDescriptor:"表格数据结构类型",link:"",type:"select",list:[{text:"GENERIC",value:"GENERIC"},{text:"LIST",value:"LIST"}]},{key:"ListElementNum",enDescriptor:"ListElementNum",cnDescriptor:"LIST表元素个数",link:"",type:"inputNumber"},{key:"ReservedVolume",enDescriptor:"ReservedVolume",cnDescriptor:"表格预留容量(GB)",link:"",type:"inputNumber"},{key:"ReservedReadQps",enDescriptor:"ReservedReadQps",cnDescriptor:"表格预留读CU",link:"",type:"inputNumber"},{key:"ReservedWriteQps",enDescriptor:"ReservedWriteQps",cnDescriptor:"表格预留写CU",link:"",type:"inputNumber"},{key:"Memo",enDescriptor:"Memo",cnDescriptor:"表格备注信息",link:"",type:"input"},{key:"FileName",enDescriptor:"FileName",cnDescriptor:"Key回档文件名,回档专用",link:"",type:"input"},{key:"FileExtType",enDescriptor:"FileExtType",cnDescriptor:"Key回档文件扩展名,回档专用",link:"",type:"input"},{key:"FileSize",enDescriptor:"FileSize",cnDescriptor:"Key回档文件大小,回档专用",link:"",type:"inputNumber"},{key:"FileContent",enDescriptor:"FileContent",cnDescriptor:"Key回档文件内容,回档专用",link:"",type:"input"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/596/39664",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TableInstanceId",queries:{Limit:20,Offset:0,ClusterId:"",TableGroupIds:[],TableName:"",TableInstanceId:"",TableIdlType:{},TableType:{},ListElementNum:null,ReservedVolume:null,ReservedReadQps:null,ReservedWriteQps:null,Memo:"",FileName:"",FileExtType:"",FileSize:null,FileContent:""}};function f(e){void 0===e&&(e={});var t={};t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,t.ClusterId=i.a.get(e,"ClusterId","")||"",t.TableGroupIds=i.a.get(e,"TableGroupIds",[])||[],e=i.a.omit(e,["Offset","Limit","TableGroupIds","ClusterId"]);var n=[];return i.a.forEach(e,(function(e,t){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(n[t]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(n[t]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(n[t]=e)})),t.SelectedTables=n,t}var m={"ap-beijing":"华北地区(北京)","ap-guangzhou":"华南地区(广州)","ap-hongkong":"港澳台地区(中国香港)","ap-seoul":"亚太东北(首尔)","ap-shanghai":"华东地区(上海)","ap-singapore":"亚太东南(新加坡)","ap-tokyo":"亚太东北(东京)","eu-frankfurt":"欧洲地区(法兰克福)","na-ashburn":"美国东部(弗吉尼亚)","na-siliconvalley":"美国西部(硅谷)"};t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"VBCFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VBCInstanceAliasList",(function(){return c})),n.d(t,"VBCInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VBCGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VBC",o="vbcQuery",a={},c=["CcnId","CcnName"],s={instance:"CcnId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ccn-id",enDescriptor:"ccn-id",cnDescriptor:"CCN实例ID",link:"",type:"inputMulti"},{key:"ccn-name",enDescriptor:"ccn-name",cnDescriptor:"CCN名称",link:"",type:"inputMulti"},{key:"ccn-description",enDescriptor:"ccn-description",cnDescriptor:"CCN描述",link:"",type:"inputMulti"},{key:"state",enDescriptor:"state",cnDescriptor:"实例状态",link:"",type:"select",multiple:!0,list:[{text:"隔离中",value:"ISOLATED"},{text:"运行中",value:"AVAILABLE"}]}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/19199",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"CcnId",DRegion:"",SRegion:"",queries:{Limit:20,Offset:0,"ccn-id":[],"ccn-name":[],"ccn-description":[],state:{}}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"VPNGWFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VPNGWInstanceAliasList",(function(){return c})),n.d(t,"VPNGWInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VPNGWGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VPNGW",o="vpngwQuery",a={vpnGwId:"VpnGatewayId"},c=["VpnGatewayId","VpnGatewayName"],s={instance:"VpnGatewayId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"VPC实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-id",enDescriptor:"vpn-gateway-id",cnDescriptor:"VPN实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-name",enDescriptor:"vpn-gateway-name",cnDescriptor:"VPN实例名称",link:"",type:"inputMulti"},{key:"type",enDescriptor:"type",cnDescriptor:"VPN网关类型",link:"",type:"select",multiple:!0,list:[{text:"IPSEC",value:"IPSEC"},{text:"SSL",value:"SSL"}]},{key:"public-ip-address",enDescriptor:"public-ip-address",cnDescriptor:"公网IP",link:"",type:"inputMulti"},{key:"renew-flag",enDescriptor:"renew-flag",cnDescriptor:"网关续费类型",link:"",type:"select",multiple:!0,list:[{text:"手动续费",value:"NOTIFY_AND_MANUAL_RENEW"},{text:"自动续费",value:"NOTIFY_AND_AUTO_RENEW"}]},{key:"zone",enDescriptor:"zone",cnDescriptor:"VPN所在可用区",link:"",type:"dropdownMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/17514",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpnGatewayId",queries:{Limit:20,Offset:0,"vpc-id":[],"vpn-gateway-id":[],"vpn-gateway-name":[],type:{},"public-ip-address":[],"renew-flag":{},zone:[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"VPNXFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VPNXInstanceAliasList",(function(){return c})),n.d(t,"VPNXInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VPNXGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VPNX",o="vpnxQuery",a={vpnConnId:"VpnConnectionId"},c=["VpnConnectionId","VpnConnectionName"],s={instance:"VpnConnectionId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"VPC实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-id",enDescriptor:"vpn-gateway-id",cnDescriptor:"VPN实例ID",link:"",type:"inputMulti"},{key:"customer-gateway-id ",enDescriptor:"customer-gateway-id ",cnDescriptor:"对端网关实例ID",link:"",type:"inputMulti"},{key:"vpn-connection-name",enDescriptor:"vpn-connection-name",cnDescriptor:"通道名称",link:"",type:"inputMulti"},{key:"vpn-connection-id",enDescriptor:"vpn-connection-id",cnDescriptor:"通道实例ID",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/17515",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpnConnectionId",queries:{Limit:20,Offset:0,"vpc-id":[],"vpn-gateway-id":[],"customer-gateway-id":[],"vpn-connection-name":[],"vpn-connection-id":[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"LighthouseFilterFieldsDescriptor",(function(){return a})),n.d(t,"LIGHTHOUSEInstanceAliasList",(function(){return u})),n.d(t,"LighthouseInvalidDemensions",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"modifyDimensons",(function(){return d})),n.d(t,"LIGHTHOUSEGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["InstanceId","InstanceName","PrivateIpAddresses","PublicIpAddresses"],l={instanceid:"InstanceId"},p={instance:"InstanceId"};function d(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CFSQueryDescriptor",(function(){return o})),n.d(t,"CFSInstanceAliasList",(function(){return s})),n.d(t,"CFSInvalidDemensions",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"regionSupported",(function(){return l})),n.d(t,"CFSGetInstanceQueryParams",(function(){return c}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"FileSystemId",enDescriptor:"File System Id",cnDescriptor:"文件系统 ID",link:"",type:"input"},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络(VPC) ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"子网 ID",link:"",type:"input"}],a={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"FileSystemId",version:"",queries:{Offset:0,Limit:20,FileSystemId:"",VpcId:"",SubnetId:""}};function c(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["FileSystemId","FsName"],u={},l=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-nanjing"},{value:"ap-seoul"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-siliconvalley"},{value:"na-toronto"}],p={instance:"InstanceId"};t.default=a},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceQueryDescriptor",(function(){return o})),n.d(t,"InvalidDemensions",(function(){return c})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"InstanceAliasList",(function(){return u})),n.d(t,"GetInstanceQueryParams",(function(){return a}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为10,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:50},{key:"QueueName",enDescriptor:"QueueName",cnDescriptor:"精确匹配QueueName",link:"",type:"input"},{key:"TagKey",enDescriptor:"TagKey",cnDescriptor:"标签搜索",link:"",type:"input"}];function a(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c={queueId:"QueueId",queueName:"QueueName"},s={instance:"QueueName"},u=["QueueName","QueueId"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"QueueName",queries:{Offset:0,Limit:20,QueueName:"",TagKey:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"CVMFilterFieldsDescriptor",(function(){return a})),n.d(t,"CVMInstanceAliasList",(function(){return u})),n.d(t,"isValidMetric",(function(){return d})),n.d(t,"modifyDimensons",(function(){return f})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"CVMGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["InstanceId","InstanceName","PrivateIpAddresses","PublicIpAddresses"],l=["CPUUsage","CpuLoadavg","Cpuloadavg5m","Cpuloadavg15m","BaseCpuUsage","GpuMemTotal","GpuMemUsage","GpuMemUsed","GpuPowDraw","GpuPowLimit","GpuPowUsage","GpuTemp","GpuUtil","LanOuttraffic","LanIntraffic","LanOutpkg","LanInpkg","WanOuttraffic","WanIntraffic","WanOutpkg","WanInpkg","AccOuttraffic","TcpCurrEstab","TimeOffset","MemUsed","MemUsage","CvmDiskUsage","BaseCpuUsage","VmDiskReadIops"],p={instance:"InstanceId"};function d(e){var t=i.a.map(l,i.a.toUpper);return-1!==i.a.indexOf(t,i.a.toUpper(e.MetricName))}function f(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"PCXInstanceAliasList",(function(){return u})),n.d(t,"PCXFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"namespace",(function(){return a})),n.d(t,"PCXGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisFieldsDescriptor",(function(){return a})),n.d(t,"RedisInvalidDemensions",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return d})),n.d(t,"REDISInstanceAliasList",(function(){return l})),n.d(t,"isValidMetric",(function(){return u})),n.d(t,"REDISGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}function u(e){void 0===e&&(e={});var t=i.a.get(e,"Dimensions[0].Dimensions");return 1===t.length&&-1!==i.a.indexOf(t,"instanceid")}var l=["InstanceId","InstanceName","WanIp"],p={redis_uuid:"InstanceId",instanceid:"InstanceId"},d={instance:"InstanceId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"TSFInvalidDemensions",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"TSFInstanceAliasList",(function(){return c})),n.d(t,"TSFFieldsDescriptor",(function(){return i})),n.d(t,"TSFGetInstanceQueryParams",(function(){return a}));var r=n(4),i=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"SearchWord",enDescriptor:"SearchWord",cnDescriptor:"搜索关键字",link:"",type:"input"},{key:"ApplicationIdList",enDescriptor:"ApplicationIdList",cnDescriptor:"应用ID 组成的数组",link:"",type:"inputmulti"},{key:"ApplicationType",enDescriptor:"ApplicationType",cnDescriptor:"应用类型",link:"",type:"select",list:[{text:"所有",value:""},{text:"容器应用",value:"C"},{text:"普通应用/虚拟机应用",value:"V"}]},{key:"MicroserviceType",enDescriptor:"MicroserviceType",cnDescriptor:"应用的微服务类型",link:"",type:"select",list:[{text:"所有",value:""},{text:"普通应用",value:"N"},{text:"Mesh应用",value:"M"},{text:"微服务网关应用",value:"G"},{text:"原生应用",value:"NATIVE"}]},{key:"ApplicationResourceTypeList",enDescriptor:"ApplicationResourceTypeList",cnDescriptor:"应用资源类型数组",link:"",type:"select",multiple:!0,list:[{text:"默认资源类型",value:"DEF"},{text:"微服务网关资源",value:"GW"}]}],o={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ApplicationId",queries:{Limit:20,Offset:0,SearchWord:"",OrderBy:"",OrderType:null,ApplicationType:"",MicroserviceType:"",ApplicationResourceTypeList:[],ApplicationIdList:[]}};function a(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var c=["ApplicationId","ApplicationName"],s={applicationid:"ApplicationId"},u={instance:"ApplicationId"};t.default=o},function(e,t,n){"use strict";n.r(t),n.d(t,"BWPFilterFieldsDescriptor",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BWPInstanceAliasList",(function(){return u})),n.d(t,"BWPInvalidDemensions",(function(){return p})),n.d(t,"BWPGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.BandwidthPackageIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["BandwidthPackageId","BandwidthPackageName"],l={instance:"BandwidthPackageId"},p={bandwidthPackageId:"BandwidthPackageId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNFilterFieldsDescriptor",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"CDNInstanceAliasList",(function(){return u})),n.d(t,"CDNInvalidDemensions",(function(){return l})),n.d(t,"CDNGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&n.push({Name:t,Value:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||n.push({Name:t,Value:i.a.get(e,"value",[]).slice(0,5)}))})),n.length>0&&(t.Filters=n)}return t}var u=["Domain","ProjectId"],l={projectId:"ProjectId",domain:"Domain"},p={instance:"Domain"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"LBFilterDescriptor",(function(){return a})),n.d(t,"LBInstanceAliasList",(function(){return u})),n.d(t,"LBInvalidDemensions",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"LBGetInstanceQueryParams",(function(){return s}));var r,i=n(0),o=n.n(i),a=[{key:"address-id",enDescriptor:"Address ID",cnDescriptor:"EIP 的唯一 ID ",link:"",type:"inputmulti"},{key:"address-name",enDescriptor:"Address Name",cnDescriptor:"EIP 名称 ",link:"",type:"inputmulti"},{key:"address-ip",enDescriptor:"Address IP",cnDescriptor:"EIP 的 IP 地址 ",link:"",type:"inputmulti"},{key:"address-status",enDescriptor:"Address Status",cnDescriptor:"EIP 的状态",link:"",type:"select",list:[{value:"CREATING",text:"CREATING"},{value:"BINDING",text:"BINDING"},{value:"BIND",text:"BIND"},{value:"UNBINDING",text:"UNBINDING"},{value:"UNBIND",text:"UNBIND"},{value:"OFFLINING",text:"OFFLINING"},{value:"BIND_ENI",text:"BIND_ENI"}]},{key:"instance-id",enDescriptor:"Instance ID",cnDescriptor:"实例ID ",link:"",type:"inputmulti"},{key:"private-ip-address",enDescriptor:"Private IP Address",cnDescriptor:"EIP 绑定的内网 IP",link:"",type:"inputmulti"},{key:"network-interface-id",enDescriptor:"Network Interface ID",cnDescriptor:"EIP 绑定的弹性网卡 ID",link:"",type:"inputmulti"},{key:"is-arrears",enDescriptor:"Arrears",cnDescriptor:"EIP 是否欠费 ",link:"",type:"select",list:[{text:"正常",value:"FALSE"},{text:"欠费",value:"TRUE"}]}],c={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"AddressId",version:"",queries:(r={Offset:0,Limit:20},r.AddressIds=[""],r.Filters={"address-id":[],"address-name":[],"address-ip":[],"address-status ":[],"instance-id ":[],"private-ip-address":[],"network-interface-id ":[],"is-arrears ":[]},r)};function s(e){void 0===e&&(e={});var t={};if(!o.a.isEmpty(e))if(t.Limit=o.a.get(e,"Limit",20)||20,t.Offset=o.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(o.a.isArray(e.AddressIds)){var n=o.a.compact(e.AddressIds);o.a.uniq(n).length>0&&(t.AddressIds=o.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];o.a.forEach(e.Filters,(function(e,t){r.length>9||(o.a.isArray(e)?(e=o.a.compact(e)).length>0&&r.push({Name:t,Values:o.a.uniq(e).slice(0,5)}):o.a.isObject(e)&&(o.a.isEmpty(o.a.get(e,"value",[]))||r.push({Name:t,Values:o.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["AddressId","AddressName","AddressIp"],l={eip:"AddressIp"},p={instance:"AddressId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"NATGatewayFilterFieldsDescriptor",(function(){return c})),n.d(t,"NATGATEWAYInstanceAliasList",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"NATInvalidDemensions",(function(){return p})),n.d(t,"NATGATEWAYGetInstanceQueryParams",(function(){return u}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var l={instance:"NatGatewayId"},p={natId:"NatGatewayId"};t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"OVCDNFilterFieldsDescriptor",(function(){return a})),n.d(t,"OVCDNInstanceAliasList",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"OVCDNInvalidDemensions",(function(){return l})),n.d(t,"OVCDNGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&n.push({Name:t,Value:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||n.push({Name:t,Value:i.a.get(e,"value",[]).slice(0,5)}))})),n.length>0&&(t.Filters=n)}return t}var u=["Domain","ResourceId"],l={projectId:"ProjectId",domain:"Domain"},p={instance:"Domain"};t.default=c},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function i(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}},function(e,t){e.exports=a},function(e,t){e.exports=c},function(e,t,n){"use strict";n.r(t),n.d(t,"TKEFilterFieldsDescriptor",(function(){return a})),n.d(t,"TKEInstanceAliasList",(function(){return c})),n.d(t,"TKEGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",conditions:[],groupBys:"",queries:{Limit:20,Offset:0,instanceIdsChecked:!1,filtersChecked:!0,ClusterIds:[""],Filters:{ClusterName:[],ClusterType:[],ClusterStatus:[],"tag-key":[]}}},a=[{key:"ClusterName",enDescriptor:"Cluster Name",cnDescriptor:"集群名",link:"",type:"input"},{key:"ClusterType",enDescriptor:"Cluster Type",cnDescriptor:"集群类型",link:"",type:"inputmulti"},{key:"ClusterStatus",enDescriptor:"Cluster Status",cnDescriptor:"集群状态",link:"",type:"inputmulti"},{key:"Tags",enDescriptor:"Tags",cnDescriptor:"标签键值对",link:"",type:"inputmulti"},{key:"vpc-id",enDescriptor:"VPC",cnDescriptor:"VPC",link:"",type:"input"},{key:"tag-key",enDescriptor:"Tag Key",cnDescriptor:"标签键",link:"",type:"inputmulti"},{key:"tag-value",enDescriptor:"Tag Value",cnDescriptor:"标签值",link:"",type:"inputmulti"}],c=["ClusterId","ClusterName"];function s(e){void 0===e&&(e={});var t={};if(!i.a.isEmpty(e))if(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(i.a.isArray(e.InstanceIds)){var n=i.a.compact(e.InstanceIds);i.a.uniq(n).length>0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}t.default=o},function(e,t,n){"use strict";n.r(t);var r,i=n(21),o=n(3),a=n(2),c=n(4),s=n(8),u=n(1),l=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),p=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},d=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0?D.map((function(e){return{TopicId:e.TopicId,TopicName:e.TopicName}})):v,PartitionList:w.length>0?w:b}]}}))}))},t.prototype.formatTopicVarDisplay=function(e,t,n){var r=this;return t?t.replace(/\$\{(\w+)\}/g,(function(t,n){return n&&r.TopicAliasList.includes(n)?r.getAliasValue(e,n):""})):this.getAliasValue(e,n)},t.prototype.fetchMetricData=function(e,t,n,r){return d(this,void 0,void 0,(function(){var i,o,a,c,s,p,d,m,h,y=this;return f(this,(function(f){switch(f.label){case 0:return i=r.topicalias,o=r.groupname,a=r.topicid,[4,this.getConsumerGroups(t,{InstanceId:n.InstanceId,groupname:o,topicid:a})];case 1:return c=f.sent(),s=r.display,p=c.TopicList,d=c.GroupList,m=c.PartitionList,i=this.TopicAliasList.includes(i)?i:this.templateQueryIdMap.topicId,h={GroupList:d.map((function(e){return e._InstanceAliasValue=e.GroupName,{text:e.GroupName,value:e[u.templateQueryIdMap.groupName]}})),TopicList:p.map((function(e){var t=y.formatTopicVarDisplay(e,s,i);return e._InstanceAliasValue=t||e[u.templateQueryIdMap.topicId],{text:t||e[u.templateQueryIdMap.topicId],value:e[u.templateQueryIdMap.topicId],TopicName:e.TopicName}})),PartitionList:m.map((function(e){return e._InstanceAliasValue=e[u.templateQueryIdMap.partition],{text:e[u.templateQueryIdMap.partition],value:e[u.templateQueryIdMap.partition]}}))},[4,l.a.setExtraStorage(this.service,this.keyInStorage.TopicList,p)];case 2:return f.sent(),[4,l.a.setExtraStorage(this.service,this.keyInStorage.GroupList,d)];case 3:return f.sent(),[4,l.a.setExtraStorage(this.service,this.keyInStorage.PartitionList,m)];case 4:switch(f.sent(),e){case"DescribeTopicList":return[2,h.TopicList];case"DescribeGroup":return[2,h.GroupList];case"DescribePartion":return[2,h.PartitionList];default:return[2,[]]}return[2]}}))}))},t}(s.BaseDatasource);t.default=m},function(e,t,n){"use strict";n.r(t);var r,i=n(12),o=n(3),a=n(0),c=n.n(a),s=n(2),u=n(4),l=n(8),p=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),d=function(){return(d=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=i)return r;var o=Object(s.k)(i,50),a=[];return c.a.forEach(o,(function(t){a.push(n.getInstances(e,t))})),Promise.all(a).then((function(e){return c.a.forEach(e,(function(e){r=c.a.concat(r,e)})),r})).catch((function(e){return r}))}))},t.prototype.getVpcId=function(e,t){void 0===t&&(t={}),(t=l({Offset:0,Limit:20},t)).Offset=String(t.Offset),t.Limit=String(t.Limit);var n=Object(s.e)(e,"vpc");return this.doRequest({url:this.url+n.path,data:t},n.service,{region:e,action:"DescribeVpcs"}).then((function(e){return c.a.map(e.VpcSet||[],(function(e){return{text:e.VpcId,value:e.VpcId}}))}))},t.prototype.getVpcIds=function(e){var t=this,n=[],r={Offset:0,Limit:100};r.Offset=String(r.Offset),r.Limit=String(r.Limit);var i=Object(s.e)(e,"vpc");return this.doRequest({url:this.url+i.path,data:r},i.service,{region:e,action:"DescribeVpcs"}).then((function(r){n=c.a.map(r.VpcSet||[],(function(e){return{text:e.VpcId,value:e.VpcId}}));var i=r.TotalCount||0;if(n.length>=i)return n;var o=Object(s.k)(i,100),a=[];return c.a.forEach(o,(function(n){a.push(t.getVpcId(e,n))})),Promise.all(a).then((function(e){return c.a.forEach(e,(function(e){n=c.a.concat(n,e)})),n})).catch((function(e){return n}))}))},t.prototype.doRequestV2=function(e,t,n){return void 0===n&&(n={}),p(this,void 0,void 0,(function(){return d(this,(function(r){switch(r.label){case 0:return[4,Object(s.d)(e,t,n,this.secretId,this.instanceSettings.id,this.backendSrv)];case 1:return e=r.sent(),[2,this.backendSrv.datasourceRequest(e).then((function(e){return c.a.get(e,"data",{})})).catch((function(e){throw e}))]}}))}))},t}(o.BaseDatasource);t.default=f},function(e,t,n){"use strict";n.r(t);var r,i=n(39),o=n(3),a=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),c=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.Namespace=i.namespace,o.InstanceAliasList=i.POSTGRESInstanceAliasList,o.InvalidDimensions=i.PostgreInvalidDemensions,o.templateQueryIdMap=i.templateQueryIdMap,o.InstanceReqConfig={service:"postgres",action:"DescribeDBInstances",responseField:"DBInstanceSet"},o.MetricReqConfig={resultFilter:i.modifyDimensons},o}return a(t,e),t}(o.BaseDatasource);t.default=c},function(e,t,n){"use strict";n.r(t);var r,i=n(0),o=n(49),a=n(3),c=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0?"_".concat(r.timeshift):"";return{target:"".concat(e.MetricName," - ").concat(o).concat(a),datapoints:Object(i.map)(t.Values,(function(e){return[e.Value,1e3*e.Timestamp+d]}))}}))})))}))},t}(c.BaseDatasource);t.default=p},function(e,t,n){"use strict";n.r(t);var r,i=n(60),o=n(3),a=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),c=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.Namespace="QCE/TSF",o.InstanceAliasList=i.TSFInstanceAliasList,o.InvalidDimensions=i.TSFInvalidDemensions,o.templateQueryIdMap=i.templateQueryIdMap,o.InstanceReqConfig={service:"tsf",action:"DescribeApplications",responseField:"Content"},o}return a(t,e),t}(o.BaseDatasource);t.default=c},function(e,t,n){"use strict";n.r(t);var r,i=n(23),o=n(3),a=n(0),c=n.n(a),s=n(2),u=n(1),l=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),p=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},d=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,l)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(29);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(30);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(31);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"BWPQueryCtrl",(function(){return a})),n.d(t,"bwpQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(61),a=function(){function e(e,t){e.init=function(){e.BWPFilterFieldsDescriptor=o.BWPFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("bwpQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(32);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"CDBQueryCtrl",(function(){return a})),n.d(t,"cdbQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(42),a=function(){function e(e,t){e.init=function(){e.CDBFieldsDescriptor=o.CDBFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"ZoneIds":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cdb",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cdbQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNQueryCtrl",(function(){return a})),n.d(t,"cdnQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(62),a=function(){function e(e,t){e.init=function(){e.CDNFilterFieldsDescriptor=o.CDNFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cdnQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return l})),n.d(t,"sQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(33),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,p)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(34);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(43);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(55),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n \n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cfsQuery",u)},function(e,t,n){"use strict";n.r(t),n.d(t,"CKAFKAQueryCtrl",(function(){return l})),n.d(t,"scfQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(10),a=n(4),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 主题,消费分组,分区 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n \n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"=",instance:"="},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("ckafkaQuery",p)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return f}));var r=n(6),i=n.n(r),o=n(0),a=n(12),c=n(2),s=n(4),u=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},l=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n\x3c!--Listener维度部分--\x3e\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n');function f(){return{template:d,controller:p,restrict:"E",scope:{target:"=",namespace:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("clbQuery",f)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return a})),n.d(t,"sQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(27),a=function(){function e(e,t){e.init=function(){e.GSEFilterFieldsDescriptor=o.CLSFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n \n
\n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(56);Object(r.default)("cmqQuery",{fieldDescriptor:i.InstanceQueryDescriptor,instanceDocUrl:"https://cloud.tencent.com/document/api/406/42624",namespace:"QCE/CMQ"})},function(e,t,n){"use strict";n.r(t),n.d(t,"CmqTopicQueryCtrl",(function(){return u})),n.d(t,"scfQuery",(function(){return l}));var r=n(6),i=n.n(r),o=n(35),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 主题的ui --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n \n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("cmqTopicQuery",l)},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceAliasList",(function(){return a})),n.d(t,"GetInstanceQueryParams",(function(){return o}));var r=n(0),i=n.n(r);function o(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var a=["BucketName"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"BucketName",queries:{}}},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(36);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"CVMQueryCtrl",(function(){return a})),n.d(t,"cvmQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(57),a=function(){function e(e,t){e.init=function(){e.CVMFilterFieldsDescriptor=o.CVMFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cvmQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(24);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(44);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(15),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(45);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(46);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(37);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(38);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return s})),n.d(t,"sQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(20),a=n(2),c=[{label:"diskId",field:"diskId"}],s=function(){function e(e,t){e.init=function(){e.ECMBLOCKSTORAGEFilterFieldsDescriptor=o.ECMBLOCKSTORAGEFilterFieldsDescriptor,e.ExtraFields=c,e.namespace=o.namespace},e.getExtraFields=function(){return c.filter((function(t){var n,r;return t.field in(null!==(n=e.dims)&&void 0!==n?n:{})||t.label in(null!==(r=e.dims)&&void 0!==r?r:{})}))},e.getExtraDropdown=function(t,n){var r=t.instance,i=Object(a.f)(e.namespace);r=e.datasource.getServiceFn(i,"getVariable")(r);try{return(r=JSON.parse(r)).DataDisks.map((function(e){return e._InstanceAliasValue=e[o.templateQueryIdMap.diskId],{text:e[o.templateQueryIdMap.diskId],value:JSON.stringify(e)}}))}catch(t){var c={InstanceId:r};return e.datasource.getServiceFn(i,"getDiskList")({payload:c}).map((function(e){return{text:e[o.templateQueryIdMap.diskId],value:JSON.stringify(e)}}))}},e.init()}return e.$inject=["$scope","$rootScope"],e}();function u(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(47);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(14),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t),n.d(t,"LBQueryCtrl",(function(){return a})),n.d(t,"lbQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(63),a=function(){function e(e,t){e.init=function(){e.LBFilterDescriptor=o.LBFilterDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n\n\x3c!--Filters部分--\x3e\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("lbQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"LighthouseQueryCtrl",(function(){return a})),n.d(t,"lighthouseQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(54),a=function(){function e(e,t){e.init=function(){e.LighthouseFilterFieldsDescriptor=o.LighthouseFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("lighthouse",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("lighthouseQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"MongoDBQueryCtrl",(function(){return p})),n.d(t,"mongodbQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(0),a=n(48),c=n(2),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onRefresh:"&",onChange:"&"},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("mongodbQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"MrQueryCtrl",(function(){return u})),n.d(t,"mrQuery",(function(){return l}));var r=n(22),i=n(6),o=n.n(i),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\x3c!-- 主题的ui --\x3e\n
\n
\n
\n \n
\n\n \n \n
\n
\n
\n
\n\n \n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}o.a.directive("mrQuery",l)},function(e,t,n){"use strict";n.r(t),n.d(t,"NatGatewayQueryCtrl",(function(){return a})),n.d(t,"natGatewayQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(64),a=function(){function e(e,t){e.init=function(){e.NATGatewayFilterFieldsDescriptor=o.NATGatewayFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(e){return[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("natGatewayQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"OVCDNQueryCtrl",(function(){return a})),n.d(t,"ovCdnQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(65),a=function(){function e(e,t){e.init=function(){e.OVCDNFilterFieldsDescriptor=o.OVCDNFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("ovCdnQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"PCXQueryCtrl",(function(){return a})),n.d(t,"pcxQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(58),a=function(){function e(e,t){e.init=function(){e.PCXFieldsDescriptor=o.PCXFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"vpcId":return e.getVpcIds();default:return[]}},e.getVpcIds=function(){return e.region?e.datasource.getVpcIds("pcx",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("pcxQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(39);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(49);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisQueryCtrl",(function(){return a})),n.d(t,"redisQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(59),a=function(){function e(e,t){e.init=function(){e.RedisFieldsDescriptor=o.RedisFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(e){return[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("redisQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisMemQueryCtrl",(function(){return l})),n.d(t,"redisMemQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(0),a=n(16),c=n(2),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("redisMemQuery",p)},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(25),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- version部分 --\x3e\n
\n
\n \n
\n \n \n
\n
\n
\n\n \n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&"}}}i.a.directive("scfQuery",u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(28);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(50);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(13),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(17),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("tdmqRabbitmqQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"TdmqRocketmqQueryCtrl",(function(){return p})),n.d(t,"tdmqRocketmqQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(18),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("tdmqRocketmqQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return c})),n.d(t,"sQuery",(function(){return s}));var r=n(6),i=n.n(r),o=n(0),a=n(69),c=function(){function e(e,t){e.init=function(){e.TKEFilterFieldsDescriptor=a.TKEFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.addCondition=function(){e.target.conditions.push({Key:"",Operator:"=",Value:""})},e.deleteCondition=function(t){var n=e.target.conditions[t];Object(o.isEmpty)(n.Key)||Object(o.isEmpty)(n.Operator)||Object(o.isEmpty)(n.Value)?e.target.conditions.splice(t,1):(e.target.conditions.splice(t,1),e.onRefresh())},e.getOperator=function(){return Promise.resolve([{text:"=",value:"="},{text:"in",value:"in"}])},e.init()}return e.$inject=["$scope","$rootScope"],e}();function s(){return{template:'\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n \n
\n
\n \n
\n \n \n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n',controller:c,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("tkeQuery",s)},function(e,t,n){"use strict";n.r(t),n.d(t,"TSFQueryCtrl",(function(){return a})),n.d(t,"tsfQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(60),a=function(){function e(e,t){e.init=function(){e.TSFFieldsDescriptor=o.TSFFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("tsfQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(23);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"VBCQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(51),a=n(2),c=[],s=function(){function e(e,t){e.init=function(){e.VBCFilterFieldsDescriptor=o.VBCFilterFieldsDescriptor,e.namespace=o.namespace},e.getExtraFields=function(){return c.filter((function(t){var n;return t.field in(null!==(n=e.dims)&&void 0!==n?n:{})}))},e.getExtraDropdown=function(t){var n=Object(a.f)(e.namespace);return e.datasource.getFilterDropdown(n,{field:t})},e.init()}return e.$inject=["$scope","$rootScope"],e}();function u(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("vbcQuery",u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(40);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(52);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(53);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(41);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){var r={".":19,"./":19,"./MonitorDatasource":182,"./MonitorDatasource.ts":182,"./_base/datasource":3,"./_base/datasource.ts":3,"./_base/query":7,"./_base/query.ts":7,"./_base/query_filter":185,"./_base/query_filter.ts":185,"./_base/types":186,"./_base/types.ts":186,"./apigateway/datasource":70,"./apigateway/datasource.ts":70,"./apigateway/query":126,"./apigateway/query.ts":126,"./apigateway/query_def":21,"./apigateway/query_def.ts":21,"./bmIntraLb/datasource":71,"./bmIntraLb/datasource.ts":71,"./bmIntraLb/query":127,"./bmIntraLb/query.ts":127,"./bmIntraLb/query_def":29,"./bmIntraLb/query_def.ts":29,"./bm_lb/datasource":72,"./bm_lb/datasource.ts":72,"./bm_lb/query":128,"./bm_lb/query.ts":128,"./bm_lb/query_def":30,"./bm_lb/query_def.ts":30,"./bm_pcx/datasource":73,"./bm_pcx/datasource.ts":73,"./bm_pcx/query":129,"./bm_pcx/query.ts":129,"./bm_pcx/query_def":31,"./bm_pcx/query_def.ts":31,"./bwp/datasource":74,"./bwp/datasource.ts":74,"./bwp/query":130,"./bwp/query.ts":130,"./bwp/query_def":61,"./bwp/query_def.ts":61,"./cbs/datasource":75,"./cbs/datasource.ts":75,"./cbs/query":131,"./cbs/query.ts":131,"./cbs/query_def":32,"./cbs/query_def.ts":32,"./cdb/datasource":76,"./cdb/datasource.ts":76,"./cdb/query":132,"./cdb/query.ts":132,"./cdb/query_def":42,"./cdb/query_def.ts":42,"./cdn/datasource":77,"./cdn/datasource.ts":77,"./cdn/query":133,"./cdn/query.ts":133,"./cdn/query_def":62,"./cdn/query_def.ts":62,"./cdn_province/datasource":78,"./cdn_province/datasource.ts":78,"./cdn_province/query":134,"./cdn_province/query.ts":134,"./cdn_province/query_def":33,"./cdn_province/query_def.ts":33,"./ceip_summary/datasource":79,"./ceip_summary/datasource.ts":79,"./ceip_summary/query":135,"./ceip_summary/query.ts":135,"./ceip_summary/query_def":34,"./ceip_summary/query_def.ts":34,"./ces/datasource":80,"./ces/datasource.ts":80,"./ces/query":136,"./ces/query.ts":136,"./ces/query_def":43,"./ces/query_def.ts":43,"./cfs/datasource":81,"./cfs/datasource.ts":81,"./cfs/query":137,"./cfs/query.ts":137,"./cfs/query_def":55,"./cfs/query_def.ts":55,"./ckafka/datasource":82,"./ckafka/datasource.ts":82,"./ckafka/query":138,"./ckafka/query.ts":138,"./ckafka/query_def":10,"./ckafka/query_def.ts":10,"./clb/datasource":83,"./clb/datasource.ts":83,"./clb/query":139,"./clb/query.ts":139,"./clb/query_def":12,"./clb/query_def.ts":12,"./cls/datasource":84,"./cls/datasource.ts":84,"./cls/query":140,"./cls/query.ts":140,"./cls/query_def":27,"./cls/query_def.ts":27,"./cmq/datasource":85,"./cmq/datasource.ts":85,"./cmq/query":141,"./cmq/query.ts":141,"./cmq/query_def":56,"./cmq/query_def.ts":56,"./cmq_topic/datasource":86,"./cmq_topic/datasource.ts":86,"./cmq_topic/query":142,"./cmq_topic/query.ts":142,"./cmq_topic/query_def":35,"./cmq_topic/query_def.ts":35,"./cos/datasource":87,"./cos/datasource.ts":87,"./cos/query_def":143,"./cos/query_def.ts":143,"./cpm/datasource":88,"./cpm/datasource.ts":88,"./cpm/query":144,"./cpm/query.ts":144,"./cpm/query_def":36,"./cpm/query_def.ts":36,"./cvm/datasource":89,"./cvm/datasource.ts":89,"./cvm/query":145,"./cvm/query.ts":145,"./cvm/query_def":57,"./cvm/query_def.ts":57,"./cynosdb_mysql/datasource":90,"./cynosdb_mysql/datasource.ts":90,"./cynosdb_mysql/query":146,"./cynosdb_mysql/query.ts":146,"./cynosdb_mysql/query_def":24,"./cynosdb_mysql/query_def.ts":24,"./dc/datasource":91,"./dc/datasource.ts":91,"./dc/query":147,"./dc/query.ts":147,"./dc/query_def":44,"./dc/query_def.ts":44,"./dcdb/datasource":92,"./dcdb/datasource.ts":92,"./dcdb/query":148,"./dcdb/query.ts":148,"./dcdb/query_def":15,"./dcdb/query_def.ts":15,"./dcg/datasource":93,"./dcg/datasource.ts":93,"./dcg/query":149,"./dcg/query.ts":149,"./dcg/query_def":45,"./dcg/query_def.ts":45,"./dcx/datasource":94,"./dcx/datasource.ts":94,"./dcx/query":150,"./dcx/query.ts":150,"./dcx/query_def":46,"./dcx/query_def.ts":46,"./ecdn/datasource":95,"./ecdn/datasource.ts":95,"./ecdn/query":151,"./ecdn/query.ts":151,"./ecdn/query_def":37,"./ecdn/query_def.ts":37,"./ecm/datasource":96,"./ecm/datasource.ts":96,"./ecm/query":152,"./ecm/query.ts":152,"./ecm/query_def":38,"./ecm/query_def.ts":38,"./ecm_block_storage/datasource":97,"./ecm_block_storage/datasource.ts":97,"./ecm_block_storage/query":153,"./ecm_block_storage/query.ts":153,"./ecm_block_storage/query_def":20,"./ecm_block_storage/query_def.ts":20,"./ecm_lb/datasource":98,"./ecm_lb/datasource.ts":98,"./ecm_lb/query":154,"./ecm_lb/query.ts":154,"./ecm_lb/query_def":47,"./ecm_lb/query_def.ts":47,"./gse/datasource":99,"./gse/datasource.ts":99,"./gse/query":155,"./gse/query.ts":155,"./gse/query_def":14,"./gse/query_def.ts":14,"./index":19,"./index.ts":19,"./lb/datasource":100,"./lb/datasource.ts":100,"./lb/query":156,"./lb/query.ts":156,"./lb/query_def":63,"./lb/query_def.ts":63,"./lighthouse/datasource":101,"./lighthouse/datasource.ts":101,"./lighthouse/query":157,"./lighthouse/query.ts":157,"./lighthouse/query_def":54,"./lighthouse/query_def.ts":54,"./mongodb/datasource":102,"./mongodb/datasource.ts":102,"./mongodb/query":158,"./mongodb/query.ts":158,"./mongodb/query_def":48,"./mongodb/query_def.ts":48,"./mr/datasource":103,"./mr/datasource.ts":103,"./mr/query":159,"./mr/query.ts":159,"./mr/query_def":22,"./mr/query_def.ts":22,"./nat_gateway/datasource":104,"./nat_gateway/datasource.ts":104,"./nat_gateway/query":160,"./nat_gateway/query.ts":160,"./nat_gateway/query_def":64,"./nat_gateway/query_def.ts":64,"./ov_cdn/datasource":105,"./ov_cdn/datasource.ts":105,"./ov_cdn/query":161,"./ov_cdn/query.ts":161,"./ov_cdn/query_def":65,"./ov_cdn/query_def.ts":65,"./pcx/datasource":106,"./pcx/datasource.ts":106,"./pcx/query":162,"./pcx/query.ts":162,"./pcx/query_def":58,"./pcx/query_def.ts":58,"./postgresql/datasource":107,"./postgresql/datasource.ts":107,"./postgresql/query":163,"./postgresql/query.ts":163,"./postgresql/query_def":39,"./postgresql/query_def.ts":39,"./qaap/datasource":108,"./qaap/datasource.ts":108,"./qaap/query":164,"./qaap/query.ts":164,"./qaap/query_def":49,"./qaap/query_def.ts":49,"./redis/datasource":109,"./redis/datasource.ts":109,"./redis/query":165,"./redis/query.ts":165,"./redis/query_def":59,"./redis/query_def.ts":59,"./redis_mem/datasource":110,"./redis_mem/datasource.ts":110,"./redis_mem/query":166,"./redis_mem/query.ts":166,"./redis_mem/query_def":16,"./redis_mem/query_def.ts":16,"./scf/datasource":111,"./scf/datasource.ts":111,"./scf/query":167,"./scf/query.ts":167,"./scf/query_def":25,"./scf/query_def.ts":25,"./sqlserver/datasource":112,"./sqlserver/datasource.ts":112,"./sqlserver/query":168,"./sqlserver/query.ts":168,"./sqlserver/query_def":28,"./sqlserver/query_def.ts":28,"./tcaplus/datasource":113,"./tcaplus/datasource.ts":113,"./tcaplus/query":169,"./tcaplus/query.ts":169,"./tcaplus/query_def":50,"./tcaplus/query_def.ts":50,"./tdmq/datasource":114,"./tdmq/datasource.ts":114,"./tdmq/query":170,"./tdmq/query.ts":170,"./tdmq/query_def":13,"./tdmq/query_def.ts":13,"./tdmq_rabbitmq/datasource":115,"./tdmq_rabbitmq/datasource.ts":115,"./tdmq_rabbitmq/query":171,"./tdmq_rabbitmq/query.ts":171,"./tdmq_rabbitmq/query_def":17,"./tdmq_rabbitmq/query_def.ts":17,"./tdmq_rocketmq/datasource":116,"./tdmq_rocketmq/datasource.ts":116,"./tdmq_rocketmq/query":172,"./tdmq_rocketmq/query.ts":172,"./tdmq_rocketmq/query_def":18,"./tdmq_rocketmq/query_def.ts":18,"./tke/datasource":117,"./tke/datasource.ts":117,"./tke/query":173,"./tke/query.ts":173,"./tke/query_def":69,"./tke/query_def.ts":69,"./tsf/datasource":118,"./tsf/datasource.ts":118,"./tsf/query":174,"./tsf/query.ts":174,"./tsf/query_def":60,"./tsf/query_def.ts":60,"./v_clb/datasource":119,"./v_clb/datasource.ts":119,"./v_clb/query":175,"./v_clb/query.ts":175,"./v_clb/query_def":23,"./v_clb/query_def.ts":23,"./vbc/datasource":120,"./vbc/datasource.ts":120,"./vbc/query":176,"./vbc/query.ts":176,"./vbc/query_def":51,"./vbc/query_def.ts":51,"./vpc_net_detect/datasource":121,"./vpc_net_detect/datasource.ts":121,"./vpc_net_detect/query":177,"./vpc_net_detect/query.ts":177,"./vpc_net_detect/query_def":40,"./vpc_net_detect/query_def.ts":40,"./vpngw/datasource":122,"./vpngw/datasource.ts":122,"./vpngw/query":178,"./vpngw/query.ts":178,"./vpngw/query_def":52,"./vpngw/query_def.ts":52,"./vpnx/datasource":123,"./vpnx/datasource.ts":123,"./vpnx/query":179,"./vpnx/query.ts":179,"./vpnx/query_def":53,"./vpnx/query_def.ts":53,"./waf/datasource":124,"./waf/datasource.ts":124,"./waf/query":180,"./waf/query.ts":180,"./waf/query_def":41,"./waf/query_def.ts":41};function i(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=o,e.exports=i,i.id=181},function(e,t,n){"use strict";n.r(t),n.d(t,"TCMonitorDatasource",(function(){return u}));var r=n(0),i=n.n(r),o=n(19),a=n(2),c=n(4),s=n(9),u=function(){function e(e,t,n){var r=this;this.instanceSettings=e,this.backendSrv=t,this.templateSrv=n,i.a.forEach(o.Datasources,(function(e,t){r[t]=new e(r.instanceSettings,r.backendSrv,r.templateSrv)}))}return e.$inject=["instanceSettings","backendSrv","templateSrv"],e.prototype.getNamespaces=function(){var e=this,t=[];return i.a.forEach(o.SERVICES,(function(n){!0===e.instanceSettings.jsonData[n.service]&&t.push(n)})),t},e.prototype.getCascaderNamespaces=function(){var e=this,t=o.SERVICES.filter((function(t){return e.instanceSettings.jsonData[t.service]}));return Object(c.f)(t)},e.prototype.getSelectedServices=function(){var e=this.getNamespaces();return i.a.map(e,(function(e){var t=e.namespace;return Object(a.f)(t)}))},e.prototype.query=function(e){var t=this,n=[],r=this.getSelectedServices();return i.a.forEach(r,(function(r){var o=i.a.cloneDeep(e),a=i.a.filter(o.targets,(function(e){return e.service===r}));if(o.targets=a,o.targets.length>0){var c=t["".concat(i.a.toUpper(r),"Datasource")].query(o);c&&n.push(c)}})),0===n.length?Promise.resolve({data:[],state:s.LoadingState.Done}):Promise.all(n).then((function(e){return{data:i.a.flatten(e),state:s.LoadingState.Done}}))},e.prototype.metricFindQuery=function(e,t){var n=Object(a.h)(e),r=Object(a.f)(n.namespace||"");if(i.a.isEmpty(n)||!n.namespace||!n.action||!r)return Promise.resolve([]);if(this["".concat(i.a.toUpper(r),"Datasource")].metricFindQuery){var o=this["".concat(i.a.toUpper(r),"Datasource")].metricFindQuery(n,i.a.get(t,"variable.regex",void 0));if(o)return o}return Promise.resolve([])},e.prototype.getRegions=function(e){return this["".concat(i.a.toUpper(e),"Datasource")].getRegions?this["".concat(i.a.toUpper(e),"Datasource")].getRegions():[]},e.prototype.getMetrics=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getMetrics(t)},e.prototype.getZones=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getZones?this["".concat(i.a.toUpper(e),"Datasource")].getZones(t):[]},e.prototype.getFilterDropdown=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getFilterDropdown?this["".concat(i.a.toUpper(e),"Datasource")].getFilterDropdown(t):[]},e.prototype.getInstances=function(e,t,n){return this["".concat(i.a.toUpper(e),"Datasource")].getInstances(t,n)},e.prototype.getListeners=function(e,t,n){return this["".concat(i.a.toUpper(e),"Datasource")].getListeners?this["".concat(i.a.toUpper(e),"Datasource")].getListeners(t,n):[]},e.prototype.getVpcIds=function(e,t){if(this["".concat(i.a.toUpper(e),"Datasource")].getVpcIds)return this["".concat(i.a.toUpper(e),"Datasource")].getVpcIds(t)},e.prototype.testDatasource=function(){var e=this,t=[],n=this.getSelectedServices();return i.a.forEach(n,(function(n){t.push(e["".concat(i.a.toUpper(n),"Datasource")].testDatasource())})),0===t.length?Promise.resolve(null):Promise.all(t).then((function(e){var t="success",n="DataSource Connection OK",r=i.a.reduce(e,(function(e,t){return"error"===t.status&&(""===e&&(e+="Oops! Found an error in: "),e+="".concat(t.service,": ").concat(t.message,"; \n")),e}),"");return r&&(t="error",n=r),{status:t,message:n,title:i.a.upperFirst(t)}}))},e.prototype.getServiceFn=function(e,t){var n=this;return function(){for(var r,o=[],a=0;a=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122?n+=t.charAt(r):o<128?n+=i[o]:o<2048?n+=i[192|o>>6]+i[128|63&o]:o<55296||o>=57344?n+=i[224|o>>12]+i[128|o>>6&63]+i[128|63&o]:(r+=1,o=65536+((1023&o)<<10|1023&t.charCodeAt(r)),n+=i[240|o>>18]+i[128|o>>12&63]+i[128|o>>6&63]+i[128|63&o])}return n},isBuffer:function(e){return null!=e&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},merge:function e(t,n,i){if(!n)return t;if("object"!=typeof n){if(Array.isArray(t))t.push(n);else{if("object"!=typeof t)return[t,n];(i.plainObjects||i.allowPrototypes||!r.call(Object.prototype,n))&&(t[n]=!0)}return t}if("object"!=typeof t)return[t].concat(n);var a=t;return Array.isArray(t)&&!Array.isArray(n)&&(a=o(t,i)),Array.isArray(t)&&Array.isArray(n)?(n.forEach((function(n,o){r.call(t,o)?t[o]&&"object"==typeof t[o]?t[o]=e(t[o],n,i):t.push(n):t[o]=n})),t):Object.keys(n).reduce((function(t,o){var a=n[o];return r.call(t,o)?t[o]=e(t[o],a,i):t[o]=a,t}),a)}}},function(e,t,n){"use strict";var r=String.prototype.replace,i=/%20/g;e.exports={default:"RFC3986",formatters:{RFC1738:function(e){return r.call(e,i,"+")},RFC3986:function(e){return e}},RFC1738:"RFC1738",RFC3986:"RFC3986"}},function(e,t,n){"use strict";n.r(t),n.d(t,"queryDDO",(function(){return a}));var r=n(6),i=n.n(r),o=function(){function e(t,n){Object.assign(t,e._config),t.onChecked=function(e,n){!0===t.target.queries[e]&&(t.target.queries[n]=!1),t.onChange()},t.init()}return e.$inject=["$scope","$rootScope"],e}();function a(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n',controller:o,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}t.default=function(e,t){o._config=t,i.a.directive(e,a)}},function(e,t,n){"use strict";n.r(t)},function(e,t,n){"use strict";var r=n(189),i=n(190),o=n(184);e.exports={formats:o,parse:i,stringify:r}},function(e){e.exports=JSON.parse('{"type":"datasource","name":"Tencent Cloud Monitoring","id":"tencentcloud-monitor-datasource","backend":true,"alerting":true,"logs":true,"metrics":true,"annotations":false,"executable":"tencentcloud-monitor-app-backend","queryOptions":{"maxDataPoints":true},"routes":[{"path":"cls-internal","url":"https://cls.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"region-internal","url":"https://region.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"api-internal","url":"https://api.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cmq-internal","url":"https://cmq.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shanghai-internal","url":"https://cmq.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shenzhen-internal","url":"https://cmq.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"emr-internal","url":"https://emr.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shanghai-internal","url":"https://emr.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shenzhen-internal","url":"https://emr.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"scf-internal","url":"https://scf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shanghai-internal","url":"https://scf.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shenzhen-internal","url":"https://scf.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cfs-internal","url":"https://cfs.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shanghai-internal","url":"https://cfs.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shenzhen-internal","url":"https://cfs.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ckafka-internal","url":"https://ckafka.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shanghai-internal","url":"https://ckafka.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shenzhen-internal","url":"https://ckafka.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"clb-internal","url":"https://clb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shanghai-internal","url":"https://clb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shenzhen-internal","url":"https://clb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"mongodb-internal","url":"https://mongodb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shanghai-internal","url":"https://mongodb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shenzhen-internal","url":"https://mongodb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"vpc-internal","url":"https://vpc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shanghai-internal","url":"https://vpc.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shenzhen-internal","url":"https://vpc.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"pcx-internal","url":"https://vpc.api.qcloud.com.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/x-www-form-urlencoded"}]},{"path":"cvm-internal","url":"https://cvm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shanghai-internal","url":"https://cvm.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shenzhen-internal","url":"https://cvm.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"monitor-internal","url":"https://monitor.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shanghai-internal","url":"https://monitor.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shenzhen-internal","url":"https://monitor.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdb-internal","url":"https://cdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shanghai-internal","url":"https://cdb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shenzhen-internal","url":"https://cdb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"postgres-internal","url":"https://postgres.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shanghai-internal","url":"https://postgres.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shenzhen-internal","url":"https://postgres.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdn-internal","url":"https://cdn.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"redis-internal","url":"https://redis.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dcdb-internal","url":"https://dcdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dc-internal","url":"https://dc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cynosdb-internal","url":"https://cynosdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"sqlserver-internal","url":"https://sqlserver.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmeip-internal","url":"https://bmeip.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmvpc-internal","url":"https://bmvpc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmlb-internal","url":"https://bmlb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bm-internal","url":"https://bm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"es-internal","url":"https://es.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cbs-internal","url":"https://cbs.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tcaplusdb-internal","url":"https://tcaplusdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"apigateway-internal","url":"https://apigateway.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tdmq-internal","url":"https://tdmq.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gaap-internal","url":"https://gaap.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecm-internal","url":"https://ecm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gse-internal","url":"https://gse.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"lighthouse-internal","url":"https://lighthouse.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tsf-internal","url":"https://tsf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"rum-internal","url":"https://rum.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tke-internal","url":"https://tke.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecdn-internal","url":"https://ecdn.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"waf-internal","url":"https://waf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"apigateway","url":"https://apigateway.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"api","url":"https://api.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cmq","url":"https://cmq.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shanghai","url":"https://cmq.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shenzhen","url":"https://cmq.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"emr","url":"https://emr.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shanghai","url":"https://emr.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shenzhen","url":"https://emr.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"scf","url":"https://scf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shanghai","url":"https://scf.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shenzhen","url":"https://scf.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cfs","url":"https://cfs.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shanghai","url":"https://cfs.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shenzhen","url":"https://cfs.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ckafka","url":"https://ckafka.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shanghai","url":"https://ckafka.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shenzhen","url":"https://ckafka.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"clb","url":"https://clb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shanghai","url":"https://clb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shenzhen","url":"https://clb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"mongodb","url":"https://mongodb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shanghai","url":"https://mongodb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shenzhen","url":"https://mongodb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"vpc","url":"https://vpc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shanghai","url":"https://vpc.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shenzhen","url":"https://vpc.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"pcx","url":"https://vpc.api.qcloud.com","headers":[{"name":"Content-Type","content":"application/x-www-form-urlencoded"}]},{"path":"cvm","url":"https://cvm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shanghai","url":"https://cvm.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shenzhen","url":"https://cvm.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"monitor","url":"https://monitor.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shanghai","url":"https://monitor.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shenzhen","url":"https://monitor.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdb","url":"https://cdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shanghai","url":"https://cdb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shenzhen","url":"https://cdb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"postgres","url":"https://postgres.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shanghai","url":"https://postgres.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shenzhen","url":"https://postgres.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdn","url":"https://cdn.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"redis","url":"https://redis.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dcdb","url":"https://dcdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dc","url":"https://dc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cynosdb","url":"https://cynosdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"sqlserver","url":"https://sqlserver.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmeip","url":"https://bmeip.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmvpc","url":"https://bmvpc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmlb","url":"https://bmlb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bm","url":"https://bm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"es","url":"https://es.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cbs","url":"https://cbs.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tcaplusdb","url":"https://tcaplusdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tdmq","url":"https://tdmq.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gaap","url":"https://gaap.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecm","url":"https://ecm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gse","url":"https://gse.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cls","url":"https://cls.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cls/shanghai","url":"https://cls.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cls/shenzhen","url":"https://cls.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"region","url":"https://region.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"lighthouse","url":"https://lighthouse.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tsf","url":"https://tsf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"rum","url":"https://rum.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tke","url":"https://tke.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecdn","url":"https://ecdn.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"waf","url":"https://waf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]}],"info":{"author":{"name":"Tencent Cloud"},"logos":{"small":"img/tencent-cloud.svg","large":"img/tencent-cloud.svg"},"description":"Data source for Tencent Cloud monitoring service"}}')},function(e,t,n){"use strict";var r=n(183),i=n(184),o={brackets:function(e){return e+"[]"},indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},a=Date.prototype.toISOString,c={delimiter:"&",encode:!0,encoder:r.encode,encodeValuesOnly:!1,serializeDate:function(e){return a.call(e)},skipNulls:!1,strictNullHandling:!1},s=function e(t,n,i,o,a,s,u,l,p,d,f,m){var h=t;if("function"==typeof u)h=u(n,h);else if(h instanceof Date)h=d(h);else if(null===h){if(o)return s&&!m?s(n,c.encoder):n;h=""}if("string"==typeof h||"number"==typeof h||"boolean"==typeof h||r.isBuffer(h))return s?[f(m?n:s(n,c.encoder))+"="+f(s(h,c.encoder))]:[f(n)+"="+f(String(h))];var y,g=[];if(void 0===h)return g;if(Array.isArray(u))y=u;else{var v=Object.keys(h);y=l?v.sort(l):v}for(var b=0;b0?S+x:""}},function(e,t,n){"use strict";var r=n(183),i=Object.prototype.hasOwnProperty,o={allowDots:!1,allowPrototypes:!1,arrayLimit:20,decoder:r.decode,delimiter:"&",depth:5,parameterLimit:1e3,plainObjects:!1,strictNullHandling:!1},a=function(e,t,n){if(e){var r=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,a=/(\[[^[\]]*])/.exec(r),c=a?r.slice(0,a.index):r,s=[];if(c){if(!n.plainObjects&&i.call(Object.prototype,c)&&!n.allowPrototypes)return;s.push(c)}for(var u=0;null!==(a=o.exec(r))&&u=0;--i){var o,a=e[i];if("[]"===a)o=(o=[]).concat(r);else{o=n.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,s=parseInt(c,10);!isNaN(s)&&a!==c&&String(s)===c&&s>=0&&n.parseArrays&&s<=n.arrayLimit?(o=[])[s]=r:o[c]=r}r=o}return r}(s,t,n)}};e.exports=function(e,t){var n=t?r.assign({},t):{};if(null!==n.decoder&&void 0!==n.decoder&&"function"!=typeof n.decoder)throw new TypeError("Decoder has to be a function.");if(n.ignoreQueryPrefix=!0===n.ignoreQueryPrefix,n.delimiter="string"==typeof n.delimiter||r.isRegExp(n.delimiter)?n.delimiter:o.delimiter,n.depth="number"==typeof n.depth?n.depth:o.depth,n.arrayLimit="number"==typeof n.arrayLimit?n.arrayLimit:o.arrayLimit,n.parseArrays=!1!==n.parseArrays,n.decoder="function"==typeof n.decoder?n.decoder:o.decoder,n.allowDots="boolean"==typeof n.allowDots?n.allowDots:o.allowDots,n.plainObjects="boolean"==typeof n.plainObjects?n.plainObjects:o.plainObjects,n.allowPrototypes="boolean"==typeof n.allowPrototypes?n.allowPrototypes:o.allowPrototypes,n.parameterLimit="number"==typeof n.parameterLimit?n.parameterLimit:o.parameterLimit,n.strictNullHandling="boolean"==typeof n.strictNullHandling?n.strictNullHandling:o.strictNullHandling,""===e||null==e)return n.plainObjects?Object.create(null):{};for(var c="string"==typeof e?function(e,t){for(var n={},r=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,a=t.parameterLimit===1/0?void 0:t.parameterLimit,c=r.split(t.delimiter,a),s=0;s\n
\n
\n \n
\n \n\n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n \n
\n
\n\n
\n
\n \n
\n \n
\n
\n ({{ctrl.getTimeDesc()}})\n
\n\n
\n
\n \n \n
\n
\n\n
\n
\n \n
\n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \x3c!-- this is explain how much items will display to user --\x3e\n \n
\n
\n\n'},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,i="~";function o(){}function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function c(e,t,n,r,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var c=new a(n,r||e,o),s=i?i+t:t;return e._events[s]?e._events[s].fn?e._events[s]=[e._events[s],c]:e._events[s].push(c):(e._events[s]=c,e._eventsCount++),e}function s(e,t){0==--e._eventsCount?e._events=new o:delete e._events[t]}function u(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),(new o).__proto__||(i=!1)),u.prototype.eventNames=function(){var e,t,n=[];if(0===this._eventsCount)return n;for(t in e=this._events)r.call(e,t)&&n.push(i?t.slice(1):t);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},u.prototype.listeners=function(e){var t=i?i+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,o=n.length,a=new Array(o);ra{margin-left:10px}.tc-switch{border-left:1px solid #262628;margin-bottom:0 !important}.tc-condition-block{margin-right:10px;display:inline-block}.tc-condition-block .tc-condition-input{border-radius:0}.tc-condition-block .tc-condition-minus{vertical-align:top;border-radius:0 3px 3px 0}.tc-condition-block .tc-condition-dropdown{display:inline-block}.tc-condition-block>input{display:inline-block;margin-right:0}.tc-condition-block>label{display:inline-block}.tc-condition-add{display:inline-block;vertical-align:top}.tc-condition-add>label{border-radius:3px}.filtered-color{color:#ff851b}.secret-tips{position:absolute;right:-25px;border-radius:2px;background:#1b1b1b;padding:10px;top:-35px;width:300px;border:1px solid #2c3235}.secret-tips-tri{position:absolute;width:15px;height:15px;left:-8px;top:60px;background:#1b1b1b;border:1px solid #2c3235;border-top:0;border-right:0;transform:rotate(45deg)}.rc-cascader-menu-item{min-width:160px;font-size:14px}","",{version:3,sources:["query_editor.css"],names:[],mappings:"AAAA,eAAe,cAAc,CAAC,iBAAiB,CAAC,+BAA+B,eAAe,CAAC,8CAA8C,iBAAiB,CAAC,8BAA8B,iBAAiB,CAAC,gCAAgC,gBAAgB,CAAC,WAAW,6BAA6B,CAAC,0BAA0B,CAAC,oBAAoB,iBAAiB,CAAC,oBAAoB,CAAC,wCAAwC,eAAe,CAAC,wCAAwC,kBAAkB,CAAC,yBAAyB,CAAC,2CAA2C,oBAAoB,CAAC,0BAA0B,oBAAoB,CAAC,cAAc,CAAC,0BAA0B,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,CAAC,wBAAwB,iBAAiB,CAAC,gBAAgB,aAAa,CAAC,aAAa,iBAAiB,CAAC,WAAW,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,wBAAwB,CAAC,iBAAiB,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,YAAY,CAAC,cAAc,CAAC,uBAAuB,CAAC,uBAAuB,eAAe,CAAC,cAAc",file:"query_editor.css",sourcesContent:[".tc-sub-params{margin-top:4px;margin-left:125px}.tc-sub-params .gf-form-inline{min-height:42px}.tc-sub-params .gf-form-inline .gf-form-label{margin-bottom:2px}.tc-sub-params .tc-info-label{margin-bottom:6px}.tc-sub-params .tc-info-label>a{margin-left:10px}.tc-switch{border-left:1px solid #262628;margin-bottom:0 !important}.tc-condition-block{margin-right:10px;display:inline-block}.tc-condition-block .tc-condition-input{border-radius:0}.tc-condition-block .tc-condition-minus{vertical-align:top;border-radius:0 3px 3px 0}.tc-condition-block .tc-condition-dropdown{display:inline-block}.tc-condition-block>input{display:inline-block;margin-right:0}.tc-condition-block>label{display:inline-block}.tc-condition-add{display:inline-block;vertical-align:top}.tc-condition-add>label{border-radius:3px}.filtered-color{color:#ff851b}.secret-tips{position:absolute;right:-25px;border-radius:2px;background:#1b1b1b;padding:10px;top:-35px;width:300px;border:1px solid #2c3235}.secret-tips-tri{position:absolute;width:15px;height:15px;left:-8px;top:60px;background:#1b1b1b;border:1px solid #2c3235;border-top:0;border-right:0;transform:rotate(45deg)}.rc-cascader-menu-item{min-width:160px;font-size:14px}"]}]),e.exports=t},function(e,t,n){var r=n(198),i=n(208);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var o={insert:"head",singleton:!1},a=(r(i,o),i.locals?i.locals:{});e.exports=a},function(e,t,n){(t=n(199)(!0)).push([e.i,".log-service-monospaced-font-family {\n font-family: RobotoMono-Regular, monospace, Roboto, sans-serif;\n}\n.log-service-monospaced-font-family button,\n.log-service-monospaced-font-family input,\n.log-service-monospaced-font-family select,\n.log-service-monospaced-font-family textarea {\n font-family: RobotoMono-Regular, monospace, Roboto, sans-serif;\n}\n","",{version:3,sources:["index.less"],names:[],mappings:"AAAA;EACE,8DAA8D;AAChE;AACA;;;;EAIE,8DAA8D;AAChE",file:"index.less",sourcesContent:[".log-service-monospaced-font-family {\n font-family: RobotoMono-Regular, monospace, Roboto, sans-serif;\n}\n.log-service-monospaced-font-family button,\n.log-service-monospaced-font-family input,\n.log-service-monospaced-font-family select,\n.log-service-monospaced-font-family textarea {\n font-family: RobotoMono-Regular, monospace, Roboto, sans-serif;\n}\n"]}]),e.exports=t},function(e,t,n){"use strict";n.r(t);var r=n(9),i=n(5),o=n.n(i),a=n(200),c=n(0),s=n.n(c),u=n(2),l=n(19),p=n(6),d=n.n(p),f=n(192),m=n.n(f),h=function(){function e(e,t){e.init=function(){e.type=e.type||"input",e.placeholder=Object(f.isDefined)(e.placeholder)?e.placeholder:"",e.value=Object(f.isDefined)(e.value)?e.value:[],e.maxCond=s.a.toInteger(e.maxCond)>0?s.a.toInteger(e.maxCond):-1},e.onInputBlur=function(){e.onChangeInternal()},e.deleteCondition=function(t){e.value.splice(t,1),e.onChangeInternal()},e.addCondition=function(t){e.value.push(t),e.onChangeInternal()},e.onChangeInternal=function(){e.onChange({value:e.value})},e.onSelectChange=function(t){e.onChange({value:t})},e.getSelectedOptions=function(){var t=s.a.filter(e.options,(function(t){return-1!==s.a.get(e.value,"value",[]).indexOf(t.value)}));return t.length>0?s.a.map(t,(function(e){return"".concat(e.text,": ").concat(e.value)})).join("; "):void 0},e.init()}return e.$inject=["$scope","$rootScope"],e}();d.a.directive("multiCondition",(function(){return{template:'\n
\n
\n \n \n
\n
\n \n
\n
\n\n
\n
\n \n \n
\n
\n \n
\n
\n\n
\n \n \n
\n\n
\n
\n
\n \n \n
\n \n
\n
\n \n
\n
\n\n\x3c!--
\n \n \n
--\x3e\n',controller:h,restrict:"E",scope:{type:"=",value:"=",maxCond:"=?",placeholder:"=?",options:"=?",maxNum:"=?",minNum:"=?",multiple:"=?",onChange:"&",getOptions:"&"}}})),g.$inject=["$compile","$window","$timeout","$rootScope"];var y=function(){function e(){}return e.prototype.show=function(){var e=this;this.oldVariableText=s.a.get(this.value,"text",""),this.highlightIndex=-1,this.selectOptions=s.a.cloneDeep(this.options),s.a.map(this.selectOptions,(function(t){var n=s.a.get(e.value,"value");n?s.a.isArray(n)?t.selected=-1!==s.a.indexOf(n,t.value):t.selected=n===t.value:t.selected=!1})),this.selectedValues=s.a.filter(this.selectOptions,{selected:!0}),this.search={query:"",options:this.selectOptions.slice(0,Math.min(this.selectOptions.length,1e3))},this.dropdownVisible=!0},e.prototype.updateLinkText=function(){this.linkText=s.a.get(this.value,"text","")},e.prototype.clearSelections=function(){s.a.each(this.selectOptions,(function(e){e.selected=!1})),this.selectionsChanged(!1)},e.prototype.keyDown=function(e){27===e.keyCode&&this.hide(),40===e.keyCode&&this.moveHighlight(1),38===e.keyCode&&this.moveHighlight(-1),13===e.keyCode&&(0===this.search.options.length?this.commitChanges():this.selectValue(this.search.options[this.highlightIndex],{},!0,!1)),32===e.keyCode&&this.selectValue(this.search.options[this.highlightIndex],{},!1,!1)},e.prototype.moveHighlight=function(e){this.highlightIndex=(this.highlightIndex+e)%this.search.options.length},e.prototype.selectValue=function(e,t,n,r){var i=this;if(e){e.selected=!this.multiple||!e.selected,r=r||!1;var o=function(t){s.a.each(i.selectOptions,(function(n){e!==n&&(n.selected=t)}))};(n=n||!1)&&(e.selected=!0),r?(o(!1),n=!0):this.multiple?(t.ctrlKey||t.metaKey||t.shiftKey)&&(n=!0,o(!1)):(o(!1),n=!0),this.selectionsChanged(n)}},e.prototype.selectionsChanged=function(e){this.selectedValues=s.a.filter(this.selectOptions,{selected:!0}),this.value.value=s.a.map(this.selectedValues,"value"),this.value.text=s.a.map(this.selectedValues,"text").join(" + "),this.multiple||(this.value.value=s.a.get(this.selectedValues,"0.value","")),e&&this.commitChanges()},e.prototype.commitChanges=function(){this.dropdownVisible=!1,this.updateLinkText(),this.value.text!==this.oldVariableText&&this.onChange({value:this.value})},e.prototype.queryChanged=function(){var e=this;this.highlightIndex=-1,this.search.options=s.a.filter(this.selectOptions,(function(t){return-1!==t.text.toLowerCase().indexOf(e.search.query.toLowerCase())})),this.search.options=this.search.options.slice(0,Math.min(this.search.options.length,1e3))},e.prototype.init=function(){s.a.isEmpty(this.value)&&(this.value={text:"",value:this.multiple?[]:""}),this.updateLinkText()},e}();function g(e,t,n,r){return{restrict:"E",scope:{options:"=",multiple:"=",value:"=",onChange:"&"},template:'\n\n',controller:"CustomSelectDropdownCtrl",controllerAs:"vm",bindToController:!0,link:function(e,r){var i=m.a.element(t.document.body),o=r.find(".variable-value-link"),a=r.find("input");function c(t){0===r.has(t.target).length&&e.$apply((function(){e.vm.commitChanges()}))}e.$watch("vm.dropdownVisible",(function(e){e?(a.css("width",Math.max(o.width(),136)+"px"),a.show(),o.hide(),a.focus(),n((function(){i.on("click",c)}),0,!1)):(a.hide(),o.show(),i.off("click",c))})),e.vm.init()}}}d.a.controller("CustomSelectDropdownCtrl",y),d.a.directive("customSelectDropdown",g);var v,b,I,D=n(11),w=n(201),k=n.n(w);v=D.Cascader,b="gfCascader",I={separator:"@?",placeholder:"@?",options:"<",changeOnSelect:"'),controller:(e=v,function(){function t(e,t){this._$scope=e,this._$element=t}return t.$inject=["$scope","$element"],t.prototype.$onInit=function(){var t=this,n=Object.entries(this._$scope).reduce((function(e,t){var n=t[0],r=t[1];return n.startsWith("$")||(e[n]="function"==typeof r?function(){for(var e=[],t=0;t")}));return e+'\n
\n
{{ctrl.lastQueryError}}
\n
\n '}(),N=n(1),A=(C=function(e,t){return(C=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}C(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),j=function(){return(j=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(d.target.namespace=null!==(c=null!==(i=d.target.namespace)&&void 0!==i?i:null===(a=null===(o=d.cascaderOptions[0])||void 0===o?void 0:o.items)||void 0===a?void 0:a[0].value)&&void 0!==c?c:d.cascaderOptions[0].value,d.target.service=Object(u.f)(d.target.namespace)||""),d.hideRegion=!!(null===(p=l.SERVICES.find((function(e){return e.service===d.target.service})))||void 0===p?void 0:p.hideRegion),s.a.defaultsDeep(d.target,d.defaults),d.instanceAliasList=d.getInstanceAliasList(d.target.service),d.panelCtrl.events.on("data-received",d.onDataReceived.bind(d),t),d.panelCtrl.events.on("data-error",d.onDataError.bind(d),t),d}return t.$inject=["$scope","$injector","templateSrv"],A(t,e),Object.defineProperty(t.prototype,"sortedPeriodList",{get:function(){return this.periodList.sort((function(e,t){return e-t}))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isCascader",{get:function(){return this.cascaderOptions.length>1},enumerable:!1,configurable:!0}),t.prototype.cascaderChange=function(e){this.target.namespace=e,this.onNamespaceChange()},t.prototype.onDataReceived=function(e){this.lastQueryError=void 0,this.lastQuery="";var t=s.a.find(e,{refId:this.target.refId});t&&(this.lastQuery=t.query)},t.prototype.onDataError=function(e){this.handleQueryCtrlError(e)},t.prototype.handleQueryCtrlError=function(e){var t;s.a.get(e,"query.refId")===this.target.refId&&(s.a.get(e,"error.data.error.innererror",void 0)?s.a.get(e,"error.data.error.innererror.innererror",void 0)?this.lastQueryError=s.a.get(e,"error.data.error.innererror.innererror.message"):this.lastQueryError=s.a.get(e,"error.data.error.innererror.message"):s.a.get(e,"error.data.error",void 0)?this.lastQueryError=s.a.get(e,"error.data.error.message"):s.a.get(e,"error.data",void 0)?this.lastQueryError=s.a.get(e,"error.data.message"):s.a.get(e,"data.error",void 0)?this.lastQueryError=s.a.get(e,"data.error.message"):(null===(t=e.data)||void 0===t?void 0:t.message)||(s.a.get(e,"data.message",void 0)?this.lastQueryError=s.a.get(e,"data.message"):this.lastQueryError=e))},t.prototype.getInstanceAliasList=function(e){return e?s.a.map(l.InstanceAliasList["".concat(s.a.toUpper(e),"InstanceAliasList")]||[],(function(e){return{text:"As ".concat(e),value:e}})):[]},t.prototype.getNamespaces=function(e){return s.a.map(this.namespaces,(function(e){return{text:e.label,value:e.namespace}}))},t.prototype.onNamespaceChange=function(){var e,t=Object(u.f)(this.target.namespace)||"";this.hideRegion=!!(null===(e=l.SERVICES.find((function(e){return e.service===t})))||void 0===e?void 0:e.hideRegion),this.regions=[],this.metricList=[],this.periodList=[],this.dimensionList=[],this.instanceList=[];var n=l.InitServiceState[t];this.target[t]=s.a.cloneDeep(n),this.target.service=t,this.instanceAliasList=this.getInstanceAliasList(t),this.refresh(),this.isCascader&&this.$scope.$apply()},t.prototype.getRegions=function(e){var t=this,n=this.target.service;return!n||s.a.startsWith("$")?[]:this.regions.length?this.regions:this.datasource.getRegions(n).then((function(e){return t.regions=e,e})).catch(this.handleQueryCtrlError.bind(this))},t.prototype.onRegionChange=function(){var e=this,t=this.target.service;this.target[t].instance="",this.instanceList=[],this.isMetricsNeedUpdate=!0,s.a.forEach(this.target[t].dimensionObject,(function(n,r){e.target[t].dimensionObject[r]={Name:r,Value:""}})),this.target[t].queries=s.a.cloneDeep(l.InitServiceState[t].queries),this.getInstances(),this.refresh()},t.prototype.getVariable=function(e,t){return Object(u.j)(this.templateSrv,this.panelCtrl.panel.scopedVars,e,t)},t.prototype.getMetricNameDesc=function(){var e=this,t=this.target.service,n=s.a.findIndex(this.metricList,(function(n){return n.MetricName===e.target[t].metricName}));return-1===n?"":Object(N.b)()===N.a.Chinese?this.metricList[n].Meaning.Zh:this.metricList[n].Meaning.En},t.prototype.getMetrics=function(e){var t=this,n=this.target.service,r=this.getVariable(s.a.get(this.target[n],"region",""),!1);return n&&r?!this.isMetricsNeedUpdate&&this.metricList.length>0?s.a.map(this.metricList,(function(e){return{text:e.MetricName,value:e.MetricName}})):this.datasource.getMetrics(n,r).then((function(e){t.metricList=e,t.isMetricsNeedUpdate=!1;var r=s.a.findIndex(t.metricList,(function(e){return e.MetricName===t.target[n].metricName}));return-1!==r&&(t.periodList=s.a.get(t.metricList[r],"Period",[]),t.dimensionList=s.a.get(t.metricList[r],"Dimensions.0.Dimensions",[])),s.a.map(e,(function(e){return{text:e.MetricName,value:e.MetricName}}))})).catch(this.handleQueryCtrlError.bind(this)):[]},t.prototype.onMetricChange=function(){var e=this,t=this.target.service,n=[],r=[],i={},o="",a=s.a.findIndex(this.metricList,(function(n){return n.MetricName===e.target[t].metricName}));-1!==a&&(n=s.a.get(this.metricList[a],"Period",[]),r=s.a.get(this.metricList[a],"Dimensions.0.Dimensions",[]),o=s.a.get(this.metricList[a],"Unit","")),s.a.forEach(r,(function(e){i[e]={Name:e,Value:""}})),this.periodList=n,this.dimensionList=r,this.target[t].period=n.length>0?-1===s.a.indexOf(n,300)?n[0]:300:void 0,this.target[t].dimensionObject=i,this.target[t].metricUnit=o,this.refresh()},t.prototype.getInstances=function(){var e=this,t=this.target.service,n=this.getVariable(s.a.get(this.target[t],"region",""),!1);if(!t||!n)return[];var r=this.getInstanceQueryParams(t);return this.datasource.getInstances(t,n,r).then((function(n){e.instanceList=n;var r=e.target[t].instanceAlias,i=[];return s.a.forEach(n,(function(e){var t=s.a.get(e,r);t&&("string"==typeof t?(e._InstanceAliasValue=t,i.push({text:t,value:JSON.stringify(e)})):s.a.isArray(t)&&s.a.forEach(t,(function(t){e._InstanceAliasValue=t,i.push({text:t,value:JSON.stringify(e)})})))})),i})).catch(this.handleQueryCtrlError.bind(this))},t.prototype.onInstanceChange=function(e){this.refresh()},t.prototype.getInstanceQueryParams=function(e){var t=this.target[e].queries;return l.GetInstanceQueryParams["".concat(s.a.toUpper(e),"GetInstanceQueryParams")]?l.GetInstanceQueryParams["".concat(s.a.toUpper(e),"GetInstanceQueryParams")](t):{}},t.prototype.onInstanceAliasChange=function(){if(!this.isVariable("instance")){var e=this.target.service;this.target[e].instance="",this.refresh()}},t.prototype.onInstanceQueryChange=function(){var e=this;if(!this.isVariable("instance")){var t=this.target.service;this.target[t].instance="",this.instanceList=[],s.a.forEach(this.target[t].dimensionObject,(function(n,r){e.target[t].dimensionObject[r]={Name:r,Value:""}})),this.refresh()}},t.prototype.isVariable=function(e){var t,n=this.target.service,r=null===(t=this.target[n])||void 0===t?void 0:t[e];return Object(u.m)(r)},t.prototype.checkShowDetail=function(e){return!this.isVariable(e)&&this.target.showInstanceDetails},t.prototype.getTimeDesc=function(){return"".concat(Object(N.d)("time_unit"),": ").concat(Object(N.d)("seconds"))},t.prototype.getSearchDesc=function(){return Object(N.d)("search_description")},t.template=E,t}(a.QueryCtrl),T=n(26),M=n(203),P=n.n(M),L=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.angularScope=null,t.angularQueryEditor=null,t.events=new P.a,t.renderAngularQueryEditor=function(){if(t.element){t.angularQueryEditor&&(t.angularQueryEditor.destroy(),t.angularQueryEditor=null);var e=Object(T.getAngularLoader)(),n={ctrl:t.getAngularQueryComponentScope()};t.angularQueryEditor=e.load(t.element,n,''),t.angularScope=n.ctrl}},t}return L(t,e),t.prototype.componentDidMount=function(){var e=this;setTimeout((function(){e.forceUpdate()}))},t.prototype.componentDidUpdate=function(e){var t=this.props,n=t.data,i=t.range;if(n!==e.data&&n){if(n.state===r.LoadingState.Done){var o=n.series.map((function(e){return Object(r.toLegacyResponseData)(e)}));this.events.emit("data-received",o)}else n.state===r.LoadingState.Error&&this.events.emit("data-error",n.error);this.angularScope&&(this.angularScope.range=i)}this.element&&!this.angularQueryEditor&&this.renderAngularQueryEditor()},t.prototype.getAngularQueryComponentScope=function(){var e=this,t=this.props,n=t.query,r=t.queries,i=t.range,o=t.datasource,a=t.queryCtrl;o.components={QueryCtrl:a};return{datasource:o,target:n,panel:{scopedVars:{},targets:r||[]},dashboard:{},refresh:function(){e.props.onChange(n),e.props.onRunQuery()},render:function(){return function(){}},events:this.events,range:i}},t.prototype.render=function(){var e=this;return o.a.createElement("div",{ref:function(t){e.element=t}})},t}(i.PureComponent);!function(e){e.monitor="monitor",e.logService="logService",e.RUMService="RUMService"}(O||(O={}));var R=[{value:O.monitor,get label(){return Object(N.d)("cloud_monitor")}},{value:O.logService,get label(){return Object(N.d)("cloud_log_service")}},{value:O.RUMService,get label(){return Object(N.d)("real_user_monitoring")}}],Q={serviceType:O.logService,logServiceParams:{region:"",TopicId:"",Query:""},RUMServiceParams:{policy:"default",resultFormat:"time_series",orderByTime:"ASC",tags:[],groupBy:[{type:"time",params:["$__interval"]},{type:"fill",params:["null"]}],select:[[{type:"field",params:["value"]},{type:"mean",params:[]}]]}},B={refId:"",hide:!1,key:"",queryType:"",dataTopic:null,datasource:"",serviceType:Q.serviceType,logServiceParams:Q.logServiceParams,RUMServiceParams:Q.RUMServiceParams},V=function(e){var t=Object(i.useRef)(e);return t.current=e,t},G=function(){return(G=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0){var a=Object(c.reduce)(this.target.tags,(function(n,r){return"MEASUREMENTS"===e&&"id"===r.key||r.key===t||">"===r.operator||"<"===r.operator||n.push(function(e,t){var n="",r=e.operator,i=e.value;return t>0&&(n=(e.condition.toLowerCase()||"AND")+" "),r||(r=/^\/.*\/$/.test(e.value)?"=~":"="),(""===i||"=~"!==r&&"!~"!==r)&&(i="'"+i.replace(/\\/g,"\\\\").replace(/\'/g,"\\'")+"'"),n+'"'+e.key+'" '+r+" "+i}(r,n.length)),n}),[]);a.length>0&&(o+=" where "+a.join(" "))}return"MEASUREMENTS"===e&&(o+=" limit 100"),o},e}(),fe=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},me=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=n+2;if("count"!==t.def.type&&i)e[n+1].def.category===De.Aggregations&&e.splice(n+1,1);else if("count"===t.def.type)return void(i&&"count"===e[n+1].def.type||e.splice(n+1,0,t))}return void(e[n]=t)}if(r.def.category===De.Selectors)return void(e[n]=t)}e.splice(1,0,t)}function Se(e,t){var n;for(n=0;n0){if("math"===e[n-1].def.type)return void(e[n-1]=t);if(n>1&&"math"===e[n-2].def.type)return void(e[n-2]=t);if("alias"===e[n-1].def.type)return void e.splice(n-1,0,t)}e.push(t)},category:De.Math,params:[{name:"expr",type:"string"}],defaultParams:[" / 100"],renderer:function(e,t){return t+" "+e.params[0]}}),ke({type:"alias",addStrategy:function(e,t){var n=e.length;n>0&&"alias"===e[n-1].def.type?e[n-1]=t:e.push(t)},category:De.Aliasing,params:[{name:"name",type:"string",quote:"double"}],defaultParams:["alias"],renderMode:"suffix",renderer:function(e,t){return t+' AS "'+e.params[0]+'"'}});var _e={create:we,getCategories:function(){return De},replaceAggregationAdd:xe},Ee=function(){function e(e,t,n){this.selectModels=[],this.target=e,this.templateSrv=t,this.scopedVars=n,e.policy=e.policy||Q.RUMServiceParams.policy,e.resultFormat=e.resultFormat||Q.RUMServiceParams.resultFormat,e.orderByTime=e.orderByTime||Q.RUMServiceParams.orderByTime,e.tags=e.tags||Object(c.cloneDeep)(Q.RUMServiceParams.tags),e.groupBy=e.groupBy||Object(c.cloneDeep)(Q.RUMServiceParams.groupBy),e.select=e.select||Object(c.cloneDeep)(Q.RUMServiceParams.select),this.updateProjection()}return e.$inject=["target","templateSrv","scopedVars"],e.prototype.updateProjection=function(){this.selectModels=Object(c.map)(this.target.select,(function(e){return Object(c.map)(e,_e.create)})),this.groupByParts=Object(c.map)(this.target.groupBy,_e.create)},e.prototype.updatePersistedParts=function(){this.target.select=Object(c.map)(this.selectModels,(function(e){return Object(c.map)(e,(function(e){return{type:e.def.type,params:e.params}}))}))},e.prototype.hasGroupByTime=function(){return Object(c.find)(this.target.groupBy,(function(e){return"time"===e.type}))},e.prototype.hasFill=function(){return Object(c.find)(this.target.groupBy,(function(e){return"fill"===e.type}))},e.prototype.addGroupBy=function(e){var t=e.match(/^(\w+)\((.*)\)$/);if(t&&this.target.groupBy){var n=t[1],r=t[2],i=_e.create({type:n,params:[r]}),o=this.target.groupBy.length;0===o?this.target.groupBy.push(i.part):"time"===n?this.target.groupBy.splice(0,0,i.part):"tag"===n&&"fill"===this.target.groupBy[o-1].type?this.target.groupBy.splice(o-1,0,i.part):this.target.groupBy.push(i.part),this.updateProjection()}},e.prototype.removeGroupByPart=function(e,t){var n=_e.getCategories();"time"===e.def.type&&(this.target.groupBy=Object(c.filter)(this.target.groupBy,(function(e){return"fill"!==e.type})),this.target.select=Object(c.map)(this.target.select,(function(e){return Object(c.filter)(e,(function(e){var t=_e.create(e);return t.def.category!==n.Aggregations&&t.def.category!==n.Selectors}))}))),this.target.groupBy.splice(t,1),this.updateProjection()},e.prototype.removeSelect=function(e){this.target.select.splice(e,1),this.updateProjection()},e.prototype.removeSelectPart=function(e,t){if("field"===t.def.type){if(this.selectModels.length>1){var n=Object(c.indexOf)(this.selectModels,e);this.selectModels.splice(n,1)}}else{var r=Object(c.indexOf)(e,t);e.splice(r,1)}this.updatePersistedParts()},e.prototype.addSelectPart=function(e,t){var n=_e.create({type:t});n.def.addStrategy(e,n,this),this.updatePersistedParts()},e.prototype.getMeasurementAndPolicy=function(e){var t=this.target.policy,n=this.target.measurement||"measurement";return n.match("^/.*/$")?e&&(n=this.templateSrv.replace(n,this.scopedVars,"regex")):n='"'+n+'"',(t="default"!==t?'"'+this.target.policy+'".':"")+n},e.prototype.interpolateQueryStr=function(e,t,n){return t.multi||t.includeAll?"string"==typeof e?pe.a.regexEscape(e):"("+Object(c.map)(e,pe.a.regexEscape).join("|")+")":e},e.prototype.render=function(e){var t=this,n=this.target;if(n.rawQuery)return e?this.templateSrv.replace(n.query,this.scopedVars,this.interpolateQueryStr):n.query;var r,i,o="select ";for(r=0;r0&&(o+=", "),o+=s}o+=" from "+this.getMeasurementAndPolicy(e)+" where ";var u=Object(c.map)(n.tags,(function(n,r){return t.renderTagCondition(n,r,e)}));u.length>0&&(o+="("+u.join(" ")+") and "),o+="$timeFilter";var l="";for(r=0;r0&&(l+="fill"===p.def.type?" ":", "),l+=p.render("")}return l.length&&(o+=" group by "+l),n.fill&&(o+=" fill("+n.fill+")"),"DESC"===n.orderByTime&&(o+=" order by time desc"),n.limit&&(o+=" limit "+n.limit),n.slimit&&(o+=" slimit "+n.slimit),n.tz&&(o+=" tz('"+n.tz+"')"),o},e.prototype.renderAdhocFilters=function(e){var t=this;return Object(c.map)(e,(function(e,n){return t.renderTagCondition(e,n,!0)})).join(" ")},e.prototype.renderTagCondition=function(e,t,n){var r="",i=e.operator,o=e.value;return t>0&&(r=(e.condition.toLowerCase()||"and")+" "),i||(i=/^\/.*\/$/.test(o)?"=~":"="),"=~"!==i&&"!~"!==i?(n&&(o=this.templateSrv.replace(o,this.scopedVars)),">"!==i&&"<"!==i&&(o="'"+o.replace(/\\/g,"\\\\").replace(/\'/g,"\\'")+"'")):n&&(o=this.templateSrv.replace(o,this.scopedVars,"regex")),r+'"'+e.key+'" '+i+" "+o},e}(),Ne=function(){return(Ne=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]","<",">","=~","!~"].map(qe),dt=["AND","OR"].map(qe),ft=function(){return Promise.resolve(dt)},mt=function(){return Promise.resolve(pt)},ht=function(e){var t=e.tag,n=e.isFirst,r=e.onRemove,i=e.onChange,a=e.getTagKeyOptions,c=e.getTagValueOptions,s=at(t),u=ct(t,n);return o.a.createElement("div",{className:"gf-form"},void 0!==u&&o.a.createElement(et,{value:u,loadOptions:ft,disabled:!0,onChange:function(e){i(ut(ut({},t),{condition:e.value}))}}),o.a.createElement(et,{allowCustomValue:!0,value:t.key,loadOptions:function(){return a().catch((function(e){return[]})).then((function(e){return lt([{label:"-- remove filter --",value:void 0}],e.map(qe),!0)}))},onChange:function(e){var n=e.value;void 0===n?r():i(ut(ut({},t),{key:null!=n?n:""}))}}),o.a.createElement(et,{value:s,loadOptions:mt,onChange:function(e){i(ut(ut({},t),{operator:e.value}))}}),o.a.createElement(et,{allowCustomValue:!0,value:t.value,loadOptions:function(){return c(t.key).then((function(e){return e.map(qe)}))},onChange:function(e){var n,r,o,a,c=null!==(n=e.value)&&void 0!==n?n:"";i(ut(ut({},t),{value:c,operator:(r=s,o=c,a="=~"===r||"!~"===r,ot(o)?a?r:"=~":a?"=":r)}))}}))},yt=function(e){var t=e.tags,n=e.onChange,r=e.getTagKeyOptions,i=e.getTagValueOptions,a=function(e,r){var i=t.map((function(t,n){return r===n?e:t}));n(i)};return o.a.createElement(o.a.Fragment,null,t.map((function(e,c){return o.a.createElement(ht,{tag:e,isFirst:0===c,key:c,onChange:function(e){a(e,c)},onRemove:function(){var e,r;e=c,r=t.filter((function(t,n){return n!==e})),n(r)},getTagKeyOptions:r,getTagValueOptions:i})})),o.a.createElement(st,{allowCustomValue:!0,loadOptions:function(){return r().then((function(e){return e.map(qe)}))},onAdd:function(e){var r,i,o,a;r=e,i=0===t.length,a={key:(o={key:r,value:"select tag value"}).key,value:o.value,operator:at(o),condition:ct(o,i)},n(lt(lt([],t,!0),[a],!1))}}))},gt=Object(ue.css)({paddingRight:"0",marginRight:"0"}),vt=function(e){var t=e.name,n=e.onRemove;return o.a.createElement(D.WithContextMenu,{getContextMenuItems:function(){return[{items:[{label:"remove",onClick:n}]}]}},(function(e){var n=e.openMenu;return o.a.createElement("button",{className:Object(ue.cx)("gf-form-label",gt),onClick:n},t)}))},bt=Object(ue.css)({paddingLeft:"0",paddingRight:"0",marginLeft:"0",marginRight:"0"}),It=function(e){var t=e.name,n=e.params,r=e.onChange,a=e.onRemove,c=Object(D.useTheme)(),s=Object(i.useMemo)((function(){return function(e){return Object(ue.cx)("gf-form-label",Object(ue.css)({paddingLeft:"0",lineHeight:e.typography.lineHeight.md,fontSize:e.typography.size.base}))}(c)}),[c]),u=function(e,t){var i=n.map((function(e){return e.value}));i[t]=e,r(i)};return o.a.createElement("div",{className:s},o.a.createElement(vt,{name:t,onRemove:a}),"(",n.map((function(e,t){var r=e.value,i=e.options,a=t===n.length-1,c=null!==i?function(){return i().then((function(e){return e.map(qe)}))}:void 0;return o.a.createElement(o.a.Fragment,{key:t},o.a.createElement(et,{allowCustomValue:!0,value:r,buttonClassName:bt,loadOptions:c,onChange:function(e){u(je(e.value),t)}}),!a&&",")})),")")},Dt=function(e){var t=e.parts,n=e.getNewPartOptions,r=e.onAddNewPart,i=e.onRemovePart,a=e.onChange;return o.a.createElement(o.a.Fragment,null,t.map((function(e,t){return o.a.createElement(It,{key:t,name:e.name,params:e.params,onRemove:function(){i(t)},onChange:function(e){a(t,e)}})})),o.a.createElement(st,{loadOptions:n,onAdd:r}))},wt=Object(ue.css)({paddingRight:"4px"}),kt=function(e){var t=e.value,n=e.onChange,r=e.isWide,i=e.placeholder,a=ze(t),c=a[0],s=a[1];return o.a.createElement(D.Input,{placeholder:i,className:Object(ue.cx)(null!=r&&r?"width-14":"width-8",wt),type:"text",spellCheck:!1,onBlur:function(){n(""===c?void 0:c)},onChange:function(e){s(e.currentTarget.value)},value:null!=c?c:""})},Ct=[{label:"ascending",value:"ASC"},{label:"descending",value:"DESC"}],Ot=Object(ue.cx)("width-9",wt),xt=function(e){var t=e.value,n=e.onChange,r=e.inputId;return o.a.createElement(D.Select,{inputId:r,className:Ot,onChange:function(e){n(je(e.value))},value:t,options:Ct})},St=[{label:"Time series",value:"time_series"},{label:"Table",value:"table"},{label:"Logs",value:"logs"}],_t=["log_url_statistics","event_url_statistics","pv_url_statistics","user_event_user_event_unique","uv_project_unique","uv_page_unique","custom_url_info","custom_url_statistics","fetch_url_info","fetch_url_statistics","fetch_project_statistics","set_data_url_statistics","performance_page_statistics","performance_project_statistics","static_url_source","static_resource_statistics","static_project_statistics","webvitals_page_statistics","webvitals_project_statistics"],Et=Object(ue.cx)("width-8",wt),Nt=function(e){var t=e.format,n=e.inputId,r=e.onChange;return o.a.createElement(D.Select,{inputId:n,className:Et,onChange:function(e){r(je(e.value))},value:t,options:St})};var At=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},jt=function(){return(jt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0,n=Boolean(null==e?void 0:e.instanceSettings.jsonData.logServiceEnabled),r=Boolean(null==e?void 0:e.instanceSettings.jsonData.RUMServiceEnabled);return[t&&O.monitor,n&&O.logService,r&&O.RUMService].filter(Boolean)},enumerable:!1,configurable:!0}),t.prototype.render=function(){var e=this,t=this.props,n=t.datasource,r=t.query,i=this.state.isAlertVisiable;return n?o.a.createElement("div",null,this.enabledServices.length>1&&o.a.createElement(D.TabsBar,null,R.filter((function(t){return e.enabledServices.includes(t.value)})).map((function(t){return o.a.createElement(D.Tab,{key:t.value,label:t.label,active:r.serviceType===t.value,onChangeTab:function(){e.partialOnChange({serviceType:t.value})}})}))),o.a.createElement(D.TabContent,null,r.serviceType===O.monitor&&this.renderMonitorQueryEditor(),r.serviceType===O.logService&&this.renderLogServiceQueryEditor(),r.serviceType===O.RUMService&&this.renderRUMServiceQueryEditor()),i&&o.a.createElement(D.Alert,{title:"目前仅 CLS日志服务 数据源支持告警"})):o.a.createElement("div",null,"loading")},t.prototype.renderMonitorQueryEditor=function(){var e=this.props.datasource.monitorDataSource;return e&&o.a.createElement(F,Qt({},this.props,{queryCtrl:q,datasource:e}))},t.prototype.renderLogServiceQueryEditor=function(){return o.a.createElement(se,Qt({},this.props))},t.prototype.renderRUMServiceQueryEditor=function(){var e=this.props,t=e.query,n=e.onChange,r=e.onRunQuery,i=e.datasource;return o.a.createElement(Lt,{query:t,onChange:n,onRunQuery:r,datasource:i})},t}(i.PureComponent),Vt=function(){return o.a.createElement("a",{target:"_blank",href:"https://cloud.tencent.com/document/product/248/54510"},"Click here for more information of query")},Gt=function(e){var t=V(e),n=e.query,r=e.datasource,a=Object(i.useCallback)((function(e){var n,r,i=t.current.onChange;r=e.serviceType===O.logService?"SQL: ".concat(null===(n=e.logServiceParams)||void 0===n?void 0:n.Query):e.queryString,null==i||i(e,r)}),[t]);return o.a.createElement(o.a.Fragment,null,o.a.createElement(D.InlineFieldRow,null,o.a.createElement(D.InlineField,{label:"服务类型",labelWidth:20},o.a.createElement(D.RadioButtonGroup,{options:R,value:Object(c.isString)(n)?O.monitor:n.serviceType,onChange:function(e){e===O.monitor&&a({serviceType:e,queryString:""}),e===O.logService&&a({serviceType:e,queryString:"",logServiceParams:Object(c.clone)(Q.logServiceParams)}),e===O.RUMService&&a({serviceType:e,queryString:""})}}))),n.serviceType===O.logService&&o.a.createElement(o.a.Fragment,null,o.a.createElement(se,{datasource:r,query:n,onRunQuery:function(){},onChange:function(e){a({serviceType:O.logService,queryString:"",logServiceParams:e.logServiceParams})}})),n.serviceType===O.RUMService&&o.a.createElement(D.InlineFieldRow,null,o.a.createElement(D.InlineField,{label:"查询语句",labelWidth:20,grow:!0,tooltip:Vt},o.a.createElement(D.Input,{name:"query",required:!0,placeholder:"metric name or tags query",onChange:function(e){return a({serviceType:O.RUMService,queryString:e.currentTarget.value})},value:Object(c.isString)(n)?n:n.queryString}))),(Object(c.isString)(n)||n.serviceType===O.monitor)&&o.a.createElement(D.InlineFieldRow,null,o.a.createElement(D.InlineField,{label:"查询语句",labelWidth:20,grow:!0,tooltip:Vt},o.a.createElement(D.Input,{name:"query",required:!0,onChange:function(e){return a({serviceType:O.monitor,queryString:e.currentTarget.value})},value:Object(c.isString)(n)?n:n.queryString}))))};Gt.displayName="VariableQueryEditor";var Ut=n(125),Kt=n(66);function zt(e){return"function"==typeof e}var $t=!1,Wt={Promise:void 0,set useDeprecatedSynchronousErrorHandling(e){if(e);$t=e},get useDeprecatedSynchronousErrorHandling(){return $t}};function Yt(e){setTimeout((function(){throw e}),0)}var Zt={closed:!0,next:function(e){},error:function(e){if(Wt.useDeprecatedSynchronousErrorHandling)throw e;Yt(e)},complete:function(){}},Jt=function(){return Array.isArray||function(e){return e&&"number"==typeof e.length}}();function Ht(e){return null!==e&&"object"==typeof e}var Xt=function(){function e(e){return Error.call(this),this.message=e?e.length+" errors occurred during unsubscription:\n"+e.map((function(e,t){return t+1+") "+e.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=e,this}return e.prototype=Object.create(Error.prototype),e}(),en=function(){function e(e){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,e&&(this._ctorUnsubscribe=!0,this._unsubscribe=e)}return e.prototype.unsubscribe=function(){var t;if(!this.closed){var n=this._parentOrParents,r=this._ctorUnsubscribe,i=this._unsubscribe,o=this._subscriptions;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof e)n.remove(this);else if(null!==n)for(var a=0;a1)this.connection=null;else{var n=this.connection,r=e._connection;this.connection=null,!r||n&&r!==n||r.unsubscribe()}}else this.connection=null},t}(rn),kn=function(e){function t(t,n){var r=e.call(this)||this;return r.source=t,r.subjectFactory=n,r._refCount=0,r._isComplete=!1,r}return Kt.a(t,e),t.prototype._subscribe=function(e){return this.getSubject().subscribe(e)},t.prototype.getSubject=function(){var e=this._subject;return e&&!e.isStopped||(this._subject=this.subjectFactory()),this._subject},t.prototype.connect=function(){var e=this._connection;return e||(this._isComplete=!1,(e=this._connection=new en).add(this.source.subscribe(new On(this.getSubject(),this))),e.closed&&(this._connection=null,e=en.EMPTY)),e},t.prototype.refCount=function(){return In()(this)},t}(fn),Cn=function(){var e=kn.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:e._subscribe},_isComplete:{value:e._isComplete,writable:!0},getSubject:{value:e.getSubject},connect:{value:e.connect},refCount:{value:e.refCount}}}(),On=function(e){function t(t,n){var r=e.call(this,t)||this;return r.connectable=n,r}return Kt.a(t,e),t.prototype._error=function(t){this._unsubscribe(),e.prototype._error.call(this,t)},t.prototype._complete=function(){this.connectable._isComplete=!0,this._unsubscribe(),e.prototype._complete.call(this)},t.prototype._unsubscribe=function(){var e=this.connectable;if(e){this.connectable=null;var t=e._connection;e._refCount=0,e._subject=null,e._connection=null,t&&t.unsubscribe()}},t}(gn);var xn=function(){function e(e,t){this.subjectFactory=e,this.selector=t}return e.prototype.call=function(e,t){var n=this.selector,r=this.subjectFactory(),i=n(r).subscribe(e);return i.add(t.subscribe(r)),i},e}();function Sn(){return new vn}function _n(){return function(e){return In()((t=Sn,function(e){var r;if(r="function"==typeof t?t:function(){return t},"function"==typeof n)return e.lift(new xn(r,n));var i=Object.create(e,Cn);return i.source=e,i.subjectFactory=r,i})(e));var t,n}}var En=n(67),Nn=n.n(En),An=/(\w+)\[[\w/]+]/g,jn=[{prestoTypeRegex:/^timestamp with time zone$/,fieldType:r.FieldType.time,processor:function(e){var t=String(e).replace(An,"$1");return Nn()(t).isValid()?t:e}},{prestoTypeRegex:/^timestamp$|^date$|^datetime$/,fieldType:r.FieldType.time},{prestoTypeRegex:/^time$/,fieldType:r.FieldType.time},{prestoTypeRegex:/^tinyint$|^samllint$|^integer$|^bigint$|^long$/,fieldType:r.FieldType.number},{prestoTypeRegex:/^real$|^double$|^decimal$/,fieldType:r.FieldType.number},{prestoTypeRegex:/^varchar$|^char$|^text$|^keyword$/,fieldType:r.FieldType.string},{prestoTypeRegex:/^boolean$/,fieldType:r.FieldType.boolean},{prestoTypeRegex:/^uuid$/,fieldType:r.FieldType.string},{prestoTypeRegex:/^ipaddress$/,fieldType:r.FieldType.string},{prestoTypeRegex:/^array\(.*\)$/,fieldType:r.FieldType.other},{prestoTypeRegex:/^json$/,fieldType:r.FieldType.other},{prestoTypeRegex:/^map\(.*\)$/,fieldType:r.FieldType.other},{prestoTypeRegex:/^varbinary$/,fieldType:r.FieldType.other},{prestoTypeRegex:/^interval$/,fieldType:r.FieldType.other},{prestoTypeRegex:/^row$/,fieldType:r.FieldType.other}];var qn,Tn=function(){return(Tn=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=2))return"";n=t[0]}return n}(null!=e?e:""),r=(null!=e?e:"").slice(n.length);return Object(T.getTemplateSrv)().replace(n,t,"lucene")+Object(T.getTemplateSrv)().replace(r,t,"raw")}var Un=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Kn=function(){return(Kn=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&s.length>0)return l=c[0],[2,s.map((function(e){return{text:e[l.Name],value:e[l.Name]}}))];p.label=2;case 2:return[2,[]]}}))}))},t.prototype.testDatasource=function(){return zn(this,void 0,void 0,(function(){var e;return $n(this,(function(t){switch(t.label){case 0:if(!this.instanceSettings.jsonData.logServiceEnabled)return[2,null];t.label=1;case 1:return t.trys.push([1,3,,4]),[4,Y({TopicId:"",Query:"",From:Nn()().subtract(1,"h").valueOf(),To:Nn()().valueOf()},"ap-shanghai",{instanceSettings:this.instanceSettings})];case 2:return t.sent(),[2,{status:"success",message:"DatSource Connection OK"}];case 3:return(null==(e=t.sent())?void 0:e.code)&&"AuthFailure.SignatureFailure"!==e.code?[2,{status:"success",message:"DatSource Connection OK"}]:[2,{status:"error",title:e.code,message:e.message}];case 4:return[2]}}))}))},t.prototype.getLogsVolumeDataProvider=function(e){},t}(r.DataSourceApi);function Zn(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}var Jn=Zn(),Hn=function(e){return e&&"number"==typeof e.length&&"function"!=typeof e};function Xn(e){return!!e&&"function"!=typeof e.subscribe&&"function"==typeof e.then}var er=function(e){if(e&&"function"==typeof e[ln])return i=e,function(e){var t=i[ln]();if("function"!=typeof t.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return t.subscribe(e)};if(Hn(e))return r=e,function(e){for(var t=0,n=r.length;t0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()},t}(rr);var sr=function(){function e(e){this.selector=e}return e.prototype.call=function(e,t){return t.subscribe(new ur(e,this.selector,this.caught))},e}(),ur=function(e){function t(t,n,r){var i=e.call(this,t)||this;return i.selector=n,i.caught=r,i}return Kt.a(t,e),t.prototype.error=function(t){if(!this.isStopped){var n=void 0;try{n=this.selector(t,this.caught)}catch(t){return void e.prototype.error.call(this,t)}this._unsubscribeAndRecycle();var r=new nr(this);this.add(r);var i=ir(n,r);i!==r&&this.add(i)}},t}(rr),lr=n(196),pr=n.n(lr),dr=function(){function e(e){this.series=e.series,this.alias=e.alias,this.annotation=e.annotation,this.meta=e.meta,this.refId=e.refId}return e.prototype.getTimeSeries=function(){var e,t,n=this,r=[];return 0===this.series.length||Object(c.each)(this.series,(function(i){var o=i.columns.length,a=Object(c.map)(i.tags,(function(e,t){return t+": "+e}));for(t=1;t0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=0||r.indexOf("show retention policies")>=0,o=r.indexOf("show measurements")>=0,a=new Set;return Object(c.each)(n.series,(function(e){Object(c.each)(e.values,(function(e){Object(c.isArray)(e)?i?br(a,e[0]):void 0!==e[1]?br(a,e[1]):br(a,e[0]):br(a,e)}))})),o?Array.from(a).filter((function(e){return _t.includes(e)})).map((function(e){return{text:e}})):Array.from(a).map((function(e){return{text:e}}))},e.prototype.getTable=function(e,t,n){var i,o,a=new pr.a;if(e.length>0)if(a.meta=fr(fr({},n),{executedQueryString:null===(i=e[0].meta)||void 0===i?void 0:i.executedQueryString}),a.refId=t.refId,a=function(e,t,n){var i=function(e){var t,n=[];null===(t=e.select)||void 0===t||t.forEach((function(e){var t,r,i=e.filter((function(e){return"field"!==e.type}));i.length>0?n.push(i[0].type):(null===(r=null===(t=e[0])||void 0===t?void 0:t.params)||void 0===r?void 0:r[0])&&n.push(e[0].params[0].toString())}));var r=[];return n.forEach((function(e){r.push(function e(t,n,r,i){if(r.indexOf(n)>-1)return i++,e(t,t+"_"+i,r,i);return n}(e,e,r,0))})),r}(n);e[0].fields.forEach((function(e){"time"===e.name?t.columns.push({text:"Time",type:r.FieldType.time}):"value"===e.name&&e.labels&&Object.keys(e.labels).forEach((function(e){t.columns.push({text:e})}))})),"metricFindQuery"===e[0].refId&&e.forEach((function(e){e.name&&t.columns.push({text:e.name})}));for(var o=0;o0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(o+=" AND "+new Ee({},this.templateSrv,a).renderAdhocFilters(p));return a.timeFilter={value:o},l=this.templateSrv.replace(l,a),this._seriesQuery(l,e).pipe(an((function(o){if(!o||!o.results)return{data:[]};var a=[];for(t=0;t0)throw{message:"RUM Error: "+i[0].error,data:r}}}return r})),(r=function(e){return e.cancelled?Object(Ut.of)(e):Object(Ut.throwError)(t.handleErrors(e))},function(e){var t=new sr(r),n=e.lift(t);return t.caught=n}));var r})))},t.prototype.handleErrors=function(e){var t,n={message:(null==e?void 0:e.status)||(null==e?void 0:e.message)||"Unknown error during query transaction. Please check JS console logs."};return(Number.isInteger(e.status)&&0!==e.status||e.status>=300)&&((null===(t=e.data)||void 0===t?void 0:t.error)?(n.message="RUM Error: "+e.data.error,n.data=e.data,n.config=e.config):(n.message="Network Error: "+e.statusText+"("+e.status+")",n.data=e.data,n.config=e.config)),n},t.prototype.getTimeFilter=function(e){return"time >= "+this.getRUMTime(e.rangeRaw.from,!1,e.timezone)+" and time <= "+this.getRUMTime(e.rangeRaw.to,!0,e.timezone)},t.prototype.getRUMTime=function(e,t,n){if(Object(c.isString)(e)){if("now"===e)return"now()";var i=/^now-(\d+)([dhms])$/.exec(e);if(i)return"now() - "+parseInt(i[1],10)+i[2];e=r.dateMath.parse(e,t,n)}return e.valueOf()+"ms"},t.prototype.fixTimePeriod=function(e,t){var n,r=this,i=this.getTimePeriod(t.rangeRaw,t.timezone);return null===(n=e.groupBy)||void 0===n||n.forEach((function(t){"time"===t.type&&"1d"!==t.params[0]&&(e=r.modifyTime(e,i))})),e},t.prototype.getTimePeriod=function(e,t){var n,i,o=null===(n=r.dateMath.parse(e.from,!1,t))||void 0===n?void 0:n.valueOf(),a=null===(i=r.dateMath.parse(e.to,!0,t))||void 0===i?void 0:i.valueOf(),c=0;return o&&a&&(c=a-o),c<=432e5?"1m":c<=2592e5?"30m":c<=6048e5?"1h":"1d"},t.prototype.modifyTime=function(e,t){var n;if(!e.groupBy)return e;for(var r=0,i=e.groupBy;r0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&-1===t._InstanceAliasValue.indexOf(r[o].timeshift)&&(t._InstanceAliasValue+="_".concat(r[o].timeshift)),t[e]=d.getDimensionsVal(t,p,h),d.checkKeys.length>0&&d.checkKeys.forEach((function(n){t[n]=t[e]})),n[e]={Name:e,Value:t[e]},[2]}}))},d=this,m=0,h=e,g.label=1;case 1:return m0){var r=i.a.cloneDeep(t);return r[n].timeshift="",m(m([],e,!0),[r,t],!1)}return m(m([],e,!0),[t],!1)}),[]).map((function(r){return d(t,void 0,void 0,(function(){var t,o,l,p,d,m,h,y,g,v,b,I,D=this;return f(this,(function(f){switch(f.label){case 0:return t=Object(c.j)(this.templateSrv,e.scopedVars,r[n].instance,!0),[4,s.a.getInstance(this.service)];case 1:o=f.sent(),l=Object(u.c)(r[n].timeshift),t=[].concat(t).map((function(e){var t,n;try{return JSON.parse(e)}catch(r){return o?null!==(n=i.a.cloneDeep(o.find((function(t){return t[D.templateQueryIdMap.instance]===e}))))&&void 0!==n?n:{}:null===(t=D.getDefaultInsObj)||void 0===t?void 0:t.call(D,e)}})),p=Object(c.j)(this.templateSrv,e.scopedVars,r[n].region,!1),d=[],m=0,h=t,f.label=2;case 2:return m=g)return(null==f?void 0:f.response)?f.response(r):r;var v=Object(c.k)(g,(null==o?void 0:o.Limit)||100),b=[];return i.a.forEach(v,(function(r){b.push(n.getInstances(e,p(p({},r),t)))})),Promise.all(b).then((function(e){return i.a.forEach(e,(function(e){r=i.a.concat(r,e)})),(null==f?void 0:f.response)?f.response(r):r})).catch((function(e){return(null==f?void 0:f.response)?f.response(r):r}))}))},e.prototype.isValidConfigField=function(e){return e&&e.length>0},e.prototype.testDatasource=function(){var e=this;return this.isValidConfigField(this.secretId)?Promise.all([this.getRegions(),this.getMetrics(),this.getInstances("ap-guangzhou",{Offset:0,Limit:1})]).then((function(t){var n=i.a.get(t,"[0].Error",{}),r=i.a.get(t,"[1].Error",{}),o=i.a.get(t,"[2].Error",{}),a=i.a.get(n,"Code",""),c=i.a.get(r,"Code",""),s=i.a.get(o,"Code","");if(a||c||s){var u=[];a&&u.push(i.a.get(n,"Code")),c&&u.push(i.a.get(r,"Code")),s&&u.push(i.a.get(o,"Code"));var l=i.a.join(i.a.compact(i.a.uniq(u)),"; ");return{service:e.service,status:"error",message:l}}return{namespace:e.namespace,service:e.service,status:"success",message:"Successfully queried the ".concat(e.service," service."),title:"Success"}})).catch((function(t){var n="".concat(e.service," service:");return n+=t.statusText?t.statusText+"; ":"",i.a.get(t,"data.error.code","")?n+=t.data.error.code+". "+t.data.error.message:i.a.get(t,"data.error","")?n+=t.data.error:i.a.get(t,"data","")?n+=t.data:n+="Cannot connect to ".concat(e.service," service."),{service:e.service,status:"error",message:n}})):{service:this.service,status:"error",message:"The SecretId/SecretKey field is required."}},e.prototype.doRequest=function(e,t,n){return void 0===n&&(n={}),d(this,void 0,void 0,(function(){return f(this,(function(r){switch(r.label){case 0:return[4,Object(c.c)(e,t,n,this.secretId,this.instanceSettings.id,this.backendSrv)];case 1:return e=r.sent(),[2,this.backendSrv.datasourceRequest(e).then((function(e){return i.a.get(e,"data.Response",{})})).catch((function(e){throw e}))]}}))}))},e}()},function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"d",(function(){return p})),n.d(t,"b",(function(){return d})),n.d(t,"f",(function(){return f})),n.d(t,"e",(function(){return m})),n.d(t,"c",(function(){return h}));var r=n(0),i=n.n(r),o=n(19),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(t?r.push({Name:o,Values:i.a.uniq(e).slice(0,5)}):n[o]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t?r.push({Name:o,Values:i.a.get(e,"value",[]).slice(0,5)}):n[o]=i.a.get(e,"value")):null!=e&&""!==e&&(t?r.push({Name:o,Values:e}):n[o]=e)})),t&&r.length>0)return n.Filters=r,n}return n}function d(e){return i.a.get(i.a.find(o.SERVICES,(function(t){return t.service===e})),"namespace")}function f(e){return e.reduce((function(e,t){var n=t.namespace,r=t.label,i=t.groupName,o=void 0===i?r:i,a=e.find((function(e){return e.label===o}));return a?(a.items.push({label:r,value:n}),e):(e.push({label:o,value:o,items:[{label:r,value:n}]}),e)}),[]).map((function(e){return 1===e.items.length?{label:e.items[0].label,value:e.items[0].value}:e}))}var m=function(e,t,n){try{var r=JSON.parse(e),i=JSON.parse(t);return r[n]===i[n]}catch(n){return e===t}},h=function(e){var t=/^(\d+)([d|h|m|s])$/.exec(e);if(!t)return 0;var n=parseInt(t[1],10);switch(t[2]){case"d":return 86400*n*1e3;case"h":return 3600*n*1e3;case"m":return 60*n*1e3;case"s":return 1e3*n}return 0}},function(e,n){e.exports=t},function(e,t){e.exports=n},function(e,t,n){"use strict";n.r(t);var r=n(6),i=n.n(r),o=n(2);t.default=function(e,t){var n,r,a=(n=t,function(){function e(e,t){Object.assign(e,n),e.getDropdown=function(t){var n=Object(o.f)(e.namespace);return e.datasource.getFilterDropdown(n,{field:t,region:e.region})}}return e.$inject=["$scope","$rootScope"],e}());i.a.directive(e,(r=a,function(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n',controller:r,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}))}},function(e,t,n){"use strict";var r=function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["InstanceId","InstanceName"],u=["TopicId","TopicName"],l={instance:"InstanceId",topicId:"TopicId",groupName:"GroupName",partition:"PartitionId"},p=new Proxy({topicId:"TopicId",topicName:"TopicName",consumerGroup:"GroupName",partition:"PartitionId"},{get:function(e,t){return"instanceid"===String(t).toLocaleLowerCase()?"InstanceId":e[t]}}),d={TopicList:"TopicList",GroupList:"GroupList",PartitionList:"PartitionList"},f={TopicId:{dim_KeyInStorage:d.TopicList,dim_KeyInTarget:"topicId",dim_KeyInMap:l.topicId},TopicName:{dim_KeyInStorage:d.TopicList,dim_KeyInTarget:"topicId",dim_KeyInMap:l.topicId},GroupName:{dim_KeyInStorage:d.GroupList,dim_KeyInTarget:"consumerGroup",dim_KeyInMap:l.groupName},PartitionId:{dim_KeyInStorage:d.PartitionList,dim_KeyInTarget:"partition",dim_KeyInMap:l.partition}};t.default=a},function(e,t){e.exports=i},function(e,t,n){"use strict";n.r(t),n.d(t,"LOADBALANCEFieldsDescriptor",(function(){return a})),n.d(t,"InstanceAliasList",(function(){return l})),n.d(t,"LOADBALANCEListenerAliasList",(function(){return p})),n.d(t,"LOADBALANCEServerAliasList",(function(){return d})),n.d(t,"LOADBALANCEVALIDDIMENSIONS",(function(){return f})),n.d(t,"templateQueryIdMap",(function(){return h})),n.d(t,"CANDIATEDIMENSIONS",(function(){return m})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"keyInStorage",(function(){return y})),n.d(t,"queryEditorConfig",(function(){return c})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"GetInstanceQueryParams",(function(){return u}));var r=n(4),i="QCE/LOADBALANCE",o="loadBalanceQuery",a=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1",link:"",type:"inputNumber",min:1},{key:"LoadBalancerIds",enDescriptor:"LoadBalancer ID",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancer Name",cnDescriptor:"实例名称",link:"",type:"input"},{key:"Forward",enDescriptor:"Forward",cnDescriptor:"负载均衡实例类型",link:"",type:"select",list:[{text:"通用的负载均衡",value:1},{text:"传统的负载均衡",value:0}]},{key:"Domain",enDescriptor:"Domain",cnDescriptor:"域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义",link:"",type:"input"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancer Vips",cnDescriptor:"负载均衡实例的 VIP 地址",link:"",type:"inputMulti"},{key:"BackendPrivateIps",enDescriptor:"BackendPrivate Ips",cnDescriptor:"负载均衡绑定的后端服务的内网 IP",link:"",type:"inputMulti"},{key:"BackendPublicIps",enDescriptor:"BackendPublic Ips",cnDescriptor:"负载均衡绑定的后端服务的外网 IP",link:"",type:"inputMulti"},{key:"ProjectId",enDescriptor:"Project ID",cnDescriptor:"负载均衡实例所属的项目 ID",link:"",type:"inputNumber"},{key:"VpcId",enDescriptor:"Vpc ID",cnDescriptor:"负载均衡实例所属私有网络",link:"",type:"input"},{key:"SecurityGroup",enDescriptor:"Security Group",cnDescriptor:"安全组ID",link:"",type:"input"},{key:"MasterZone",enDescriptor:"Master Zone",cnDescriptor:"主可用区ID",link:"",type:"input"},{key:"WithRs",enDescriptor:"WithRs",cnDescriptor:"负载均衡是否绑定后端服务",link:"",type:"select",list:[{text:"没有绑定后端服务",value:0},{text:"绑定后端服务",value:1},{text:"查询全部",value:-1}]},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"LoadBalancerName",value:"LoadBalancerName"},{text:"CreateTime",value:"CreateTime"},{text:"Domain",value:"Domain"},{text:"LoadBalancerType",value:"LoadBalancerType"}]},{key:"OrderType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]}],c={instanceDocUrl:"https://cloud.tencent.com/document/api/214/30685",namespace:i,fieldDescriptor:a},s={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",Port:"",Protocol:"",listener:"",servers:"",serverPort:"",queries:{LoadBalancerIds:[],Forward:void 0,LoadBalancerName:"",Domain:"",LoadBalancerVips:[],BackendPublicIps:[],BackendPrivateIps:[],Limit:20,Offset:0,ProjectId:void 0,WithRs:{},VpcId:"",SecurityGroup:"",MasterZone:"",OrderBy:{},OrderType:{}}};function u(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var l=["LoadBalancerId","LoadBalancerName","LoadBalancerVips"],p=["ListenerId","ListenerName","Port"],d=["PrivateIpAddresses","InstanceId"],f={vip:"LoadBalancerVips",loadBalancerPort:"Port",protocol:"Protocol",lanIp:"PrivateIpAddresses",port:"ServerPort"},m={LoadBalancerVips:"AddressIPv6"},h={instance:"LoadBalancerId",listener:"ListenerId",servers:"PrivateIpAddresses",port:"Port"},y={listener:"ListenerList",servers:"ServersList"},g={Port:{dim_KeyInStorage:y.listener,dim_KeyInTarget:"listener",dim_KeyInMap:h.listener},Protocol:{dim_KeyInStorage:y.listener,dim_KeyInTarget:"listener",dim_KeyInMap:h.listener},PrivateIpAddresses:{dim_KeyInStorage:y.servers,dim_KeyInTarget:"servers",dim_KeyInMap:h.servers},ServerPort:{dim_KeyInStorage:y.servers,dim_KeyInTarget:"serverPort",dim_KeyInIns:"Port",dim_KeyInMap:h.port}};t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"TDMQInstanceAliasList",(function(){return u})),n.d(t,"TDMQInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"keyInStorage",(function(){return y})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"regionSupported",(function(){return m})),n.d(t,"TDMQGetInstanceQueryParams",(function(){return f}));var r=n(4),i=n(0),o=n.n(i),a="QCE/TDMQ",c="tdmqQuery",s={tenantId:"ClusterId",tenant:"ClusterId",topicName:"TopicName",environmentId:"EnvironmentId"},u=["ClusterId","ClusterName"],l={instance:"ClusterId",topicName:"TopicName",environmentId:"EnvironmentId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100}],d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",topicName:"",environmentId:"",queries:{Limit:20,Offset:0}};function f(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var m=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}];function h(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){-1!==e.Dimensions.indexOf("topicName")&&-1===e.Dimensions.indexOf("environmentId")&&e.Dimensions.push("environmentId")})),t}var y={topicName:"topicName",environmentId:"environmentId"},g={TopicName:{dim_KeyInStorage:y.topicName,dim_KeyInTarget:"topicName",dim_KeyInMap:l.topicName},EnvironmentId:{dim_KeyInStorage:y.environmentId,dim_KeyInTarget:"environmentId",dim_KeyInMap:l.environmentId}};t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"GSEFilterFieldsDescriptor",(function(){return m})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"GSEInstanceAliasList",(function(){return l})),n.d(t,"GSEInvalidDemensions",(function(){return u})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return h})),n.d(t,"regionSupported",(function(){return v})),n.d(t,"modifyDimensons",(function(){return b})),n.d(t,"queryMonitorExtraConfg",(function(){return f})),n.d(t,"fleetId",(function(){return c})),n.d(t,"keyInStorage",(function(){return d})),n.d(t,"GSEGetInstanceQueryParams",(function(){return g}));var r=n(4),i=n(0),o=n.n(i),a="QCE/GSE",c="FleetId",s="gseQuery",u={instanceid:"InstanceId",fleetid:"FleetId",queuename:"Name"},l=["InstanceId","PrivateIpAddress","IpAddress"],p={instance:"InstanceId",Name:"Name",FleetId:c},d={fleet:"fleet",queue:"queueName"},f={FleetId:{dim_KeyInStorage:d.fleet,dim_KeyInTarget:"FleetId",dim_KeyInMap:p.FleetId},Name:{dim_KeyInStorage:d.queue,dim_KeyInTarget:"Name",dim_KeyInMap:p.Name}},m=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceId",enDescriptor:"resourceName",cnDescriptor:"资源名称",link:"",type:"input"},{key:"FleetId",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"input"}],h={instanceDocUrl:"https://cloud.tencent.com/document/api/1165/42604",namespace:a,fieldDescriptor:m},y={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",FleetId:"",Name:"",queries:{Limit:20,Offset:0,InstanceId:"",FleetId:""}};function g(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var v=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-ashburn"},{value:"na-siliconvalley"}];function b(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return u[e]||e}))})),t}t.default=y},function(e,t,n){"use strict";n.r(t),n.d(t,"DCDBFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"DCDBInstanceAliasList",(function(){return s})),n.d(t,"DCDBInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"regionSupported",(function(){return v})),n.d(t,"keyInStorage",(function(){return y})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"queryMonitorExtraConfg",(function(){return g})),n.d(t,"DCDBGetInstanceQueryParams",(function(){return h}));var r=n(0),i=n(4),o="QCE/TDMYSQL",a="dcdbQuery",c={nodeid:"NodeId",instanceid:"InstanceId",shardid:"ShardInstanceId",ShardId:"ShardInstanceId"},s=["InstanceId","InstanceName"],u={instance:"InstanceId",NodeId:"NodeId",ShardInstanceId:"ShardInstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"实例 ID 查询",link:"",type:"inputMulti"},{key:"SearchName",enDescriptor:"SearchName",cnDescriptor:"搜索的字段名,当前支持的值有:instancename、vip、all",link:"",type:"input"},{key:"SearchKey",enDescriptor:"SearchKey",cnDescriptor:"搜索的关键字",link:"",type:"input"},{key:"ProjectIds",enDescriptor:"ProjectIds",cnDescriptor:"按项目 ID 查询",link:"",type:"inputNumberMulti"},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络 ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"私有网络的子网 ID",link:"",type:"input"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"projectId",value:"projectId"},{text:"createtime",value:"createtime"},{text:"instancename",value:"instancename"}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"私有网络 ID",link:"",type:"select",list:[{text:"desc",value:"desc"},{text:"asc",value:"asc"}]},{key:"ExclusterType",enDescriptor:"ExclusterType",cnDescriptor:"集群类型",link:"",type:"select",list:[{text:"非独享集群",value:1},{text:"独享集群",value:2},{text:"全部",value:0},{text:"asc",value:"asc"}]},{key:"ExclusterIds",enDescriptor:"ExclusterIds",cnDescriptor:"独享集群ID",link:"",type:"inputMulti"},{key:"FilterInstanceType",enDescriptor:"FilterInstanceType",cnDescriptor:"实例类型过滤",link:"",type:"select",multiple:!0,list:[{text:"独享实例",value:1},{text:"主实例",value:2},{text:"灾备实例",value:3}]}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/557/16140",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",ShardId:"",NodeId:"",queries:{Limit:20,Offset:0,InstanceIds:[],SearchName:"",SearchKey:"",ProjectIds:[],VpcId:"",SubnetId:"",OrderBy:{},OrderByType:{},ExclusterType:{},ExclusterIds:[],FilterInstanceType:{}}},f={shardid:"ShardId",instanceid:"InstanceId",nodeid:"NodeId"};function m(e){var t=Object(r.cloneDeep)(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return f[e]||e}))})),t}function h(e){void 0===e&&(e={});var t=Object(i.d)(e,!1);return t.IsFilterVpc=!1,t.IsFilterExcluster=!1,(t.VpcId||t.SubnetId)&&(t.IsFilterVpc=!0),t.ExclusterType&&(t.IsFilterExcluster=!0),Object(r.isArray)(t.FilterInstanceType)&&(t.FilterInstanceType=t.FilterInstanceType.join(",")),t}var y={NodeId:"NodeId",ShardInstanceId:"ShardId"},g={NodeId:{dim_KeyInStorage:y.NodeId,dim_KeyInTarget:"NodeId",dim_KeyInMap:u.NodeId},ShardInstanceId:{dim_KeyInStorage:y.ShardInstanceId,dim_KeyInTarget:"ShardId",dim_KeyInMap:u.ShardInstanceId}},v=[{text:"华北地区(北京)",value:"ap-beijing"},{text:"西南地区(成都)",value:"ap-chengdu"},{text:"西南地区(重庆)",value:"ap-chongqing"},{text:"华南地区(广州)",value:"ap-guangzhou"},{text:"港澳台地区(中国香港)",value:"ap-hongkong"},{text:"亚太南部(孟买)",value:"ap-mumbai"},{text:"华东地区(南京)",value:"ap-nanjing"},{text:"华东地区(上海)",value:"ap-shanghai"},{text:"华东地区(上海金融)",value:"ap-shanghai-fsi"},{text:"华南地区(深圳金融)",value:"ap-shenzhen-fsi"},{text:"亚太东南(新加坡)",value:"ap-singapore"},{text:"亚太东北(东京)",value:"ap-tokyo"},{text:"欧洲地区(法兰克福)",value:"eu-frankfurt"},{text:"美国东部(弗吉尼亚)",value:"na-ashburn"},{text:"美国西部(硅谷)",value:"na-siliconvalley"},{text:"北美地区(多伦多)",value:"na-toronto"}];t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisMemFieldsDescriptor",(function(){return c})),n.d(t,"RedisMemInvalidDemensions",(function(){return p})),n.d(t,"REDISMEMInstanceAliasList",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return d})),n.d(t,"namespace",(function(){return a})),n.d(t,"NodeType",(function(){return f})),n.d(t,"REDISMEMGetInstanceQueryParams",(function(){return u}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var l=["InstanceId","InstanceName","WanIp"],p={instanceid:"InstanceId",rnodeid:"rnodeid",pnodeid:"pnodeid"},d={instance:"InstanceId",rnodeid:"rnodeid",pnodeid:"pnodeid"},f=["Redis","Proxy"];t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"TDMQRABBITMQInstanceAliasList",(function(){return c})),n.d(t,"TDMQInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryMonitorExtraConfg",(function(){return m})),n.d(t,"keyInStorage",(function(){return f})),n.d(t,"regionSupported",(function(){return d})),n.d(t,"TDMQGetInstanceQueryParams",(function(){return p}));var r=n(4),i="QCE/RABBITMQ",o="tdmqQuery",a={instanceid:"InstanceId",node:"NodeName"},c=["InstanceId","InstanceName"],s={instance:"InstanceId",node:"NodeName"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100}],l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",node:"",queries:{Limit:20,Offset:0}};function p(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var d=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],f={node:"NodeName"},m={NodeName:{dim_KeyInStorage:f.node,dim_KeyInTarget:"node",dim_KeyInMap:s.node}};t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"TDMQFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"TDMQROCKETMQInstanceAliasList",(function(){return c})),n.d(t,"TDMQInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryMonitorExtraConfg",(function(){return m})),n.d(t,"keyInStorage",(function(){return f})),n.d(t,"regionSupported",(function(){return d})),n.d(t,"TDMQROCKETMQGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o="QCE/ROCKETMQ",a={tenant:"ClusterId",namespace:"NamespaceId",group:"Name"},c=["ClusterId","ClusterName"],s={instance:"ClusterId",namespace:"NamespaceId",group:"Name"},u=[{key:"includeVip",enDescriptor:"includeVip",cnDescriptor:"包含专享集群",link:"",type:"select",list:[{text:"是",value:"true"},{text:"否",value:"false"}]}],l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",namespace:"",group:"",queries:{Limit:20,Offset:0,instanceIdsChecked:!1,filtersChecked:!0,ClusterIdList:[""],Filters:{includeVip:{text:"是",value:"true"}}}};function p(e){void 0===e&&(e={});var t={};if(!i.a.isEmpty(e))if(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(i.a.isArray(e.ClusterIdList)){var n=i.a.compact(e.ClusterIdList);i.a.uniq(n).length>0&&(t.ClusterIdList=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:[i.a.get(e,"value",[])].slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var d=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-shenzhen-fsi"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-nanjing"},{value:"ap-hongkong"},{value:"ap-tokyo"},{value:"ap-seoul"},{value:"ap-singapore"},{value:"ap-bangkok"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],f={namespace:"NamespaceId",group:"Name"},m={NamespaceId:{dim_KeyInStorage:f.namespace,dim_KeyInTarget:"namespace",dim_KeyInMap:s.namespace},Name:{dim_KeyInStorage:f.group,dim_KeyInTarget:"group",dim_KeyInMap:s.group}};t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"InitServiceState",(function(){return c})),n.d(t,"SERVICES",(function(){return o})),n.d(t,"Datasources",(function(){return a})),n.d(t,"InstanceAliasList",(function(){return s})),n.d(t,"GetInstanceQueryParams",(function(){return u}));var r=n(1),i=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c=new Proxy({},{get:function(e,t,n){if("string"==typeof t){if(t.startsWith("id4"))return"ClusterId";if(t.startsWith("host4"))return"Ip"}return Reflect.get(e,t,n)},has:function(e,t){return!0}}),s={instance:"ClusterId",node:"Ip"},u={node:"nodeIP"},l={Ip:{dim_KeyInStorage:u.node,dim_KeyInTarget:"nodeIP",dim_KeyInMap:s.node}},p=["ClusterId","ClusterName"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",nodeIP:"",queries:{Offset:0,Limit:10,DisplayStrategy:"",OrderBy:{},Order:{},InstanceIds:[],ProjectId:-1,OrderField:"",Asc:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"VCLBFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"VCLBInstanceAliasList",(function(){return u})),n.d(t,"VCLBInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"clbNamespaceMap",(function(){return y})),n.d(t,"modifyDimensons",(function(){return g})),n.d(t,"regionSupported",(function(){return h})),n.d(t,"BMLBGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/V_CLB",c="vClbQuery",s={InstanceId:"LoadBalancerId"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1",link:"",type:"inputNumber",min:1},{key:"LoadBalancerIds",enDescriptor:"LoadBalancer ID",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancer Name",cnDescriptor:"实例名称",link:"",type:"input"},{key:"Forward",enDescriptor:"Forward",cnDescriptor:"负载均衡实例类型",link:"",type:"select",list:[{text:"通用的负载均衡",value:1},{text:"传统的负载均衡",value:0}]},{key:"Domain",enDescriptor:"Domain",cnDescriptor:"域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义",link:"",type:"input"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancer Vips",cnDescriptor:"负载均衡实例的 VIP 地址",link:"",type:"inputMulti"},{key:"BackendPrivateIps",enDescriptor:"BackendPrivate Ips",cnDescriptor:"负载均衡绑定的后端服务的内网 IP",link:"",type:"inputMulti"},{key:"BackendPublicIps",enDescriptor:"BackendPublic Ips",cnDescriptor:"负载均衡绑定的后端服务的外网 IP",link:"",type:"inputMulti"},{key:"ProjectId",enDescriptor:"Project ID",cnDescriptor:"负载均衡实例所属的项目 ID",link:"",type:"inputNumber"},{key:"VpcId",enDescriptor:"Vpc ID",cnDescriptor:"负载均衡实例所属私有网络",link:"",type:"input"},{key:"SecurityGroup",enDescriptor:"Security Group",cnDescriptor:"安全组ID",link:"",type:"input"},{key:"MasterZone",enDescriptor:"Master Zone",cnDescriptor:"主可用区ID",link:"",type:"input"},{key:"WithRs",enDescriptor:"WithRs",cnDescriptor:"负载均衡是否绑定后端服务",link:"",type:"select",list:[{text:"没有绑定后端服务",value:0},{text:"绑定后端服务",value:1},{text:"查询全部",value:-1}]},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"LoadBalancerName",value:"LoadBalancerName"},{text:"CreateTime",value:"CreateTime"},{text:"Domain",value:"Domain"},{text:"LoadBalancerType",value:"LoadBalancerType"}]},{key:"OrderType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/214/30685",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",Port:"",Protocol:"",listener:"",queries:{LoadBalancerIds:[],Forward:void 0,LoadBalancerName:"",Domain:"",LoadBalancerVips:[],BackendPublicIps:[],BackendPrivateIps:[],Limit:20,Offset:0,ProjectId:void 0,WithRs:{},VpcId:"",SecurityGroup:"",MasterZone:"",OrderBy:{},OrderType:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var h=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}],y={public:"QCE/LB_PUBLIC",private:"QCE/LB_PRIVATE"};function g(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"cynosdbMysqlFilterFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return m})),n.d(t,"CYNOSDBMYSQLInstanceAliasList",(function(){return f})),n.d(t,"CYNOSDBInvalidDemensions",(function(){return h})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"regionSupported",(function(){return u})),n.d(t,"modifyDimensons",(function(){return g})),n.d(t,"checkKeys",(function(){return y})),n.d(t,"CYNOSDBMYSQLGetInstanceQueryParams",(function(){return d}));var r=n(0),i=n.n(r),o=n(4),a="QCE/CYNOSDB_MYSQL",c="cynosdbMysqlQuery",s=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:1e3},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"实例id列表",link:"",type:"inputMulti"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"创建时间",value:"CREATETIME"},{text:"过期时间",value:"PERIODENDTIME"}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"排序类型",link:"",type:"select",list:[{text:"升序",value:"ASC"},{text:"降序",value:"DESC"}]},{key:"DbType",enDescriptor:"DbType",cnDescriptor:"引擎类型",link:"",type:"select",list:[{text:"MYSQL",value:"MYSQL"},{text:"POSTGRESQL",value:"POSTGRESQL"}]}],u=[{value:"ap-beijing"},{value:"ap-guangzhou"},{value:"ap-nanjing"},{value:"ap-shanghai"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/1003/48334",namespace:a,fieldDescriptor:s},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,OrderBy:{},OrderByType:{},InstanceIds:[],DbType:{}}};function d(e){return void 0===e&&(e={}),Object(o.d)(e,!1)}var f=["InstanceId","InstanceName"],m={instance:"InstanceId"},h={instanceid:"InstanceId",instanceId:"InstanceId"},y=["instanceId"];function g(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryDescriptor",(function(){return o})),n.d(t,"SCFInstanceAliasList",(function(){return s})),n.d(t,"SCFInvalidDemensions",(function(){return u})),n.d(t,"queryMonitorExtraConfg",(function(){return f})),n.d(t,"regionSupported",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"keyInStorage",(function(){return d})),n.d(t,"SCFGetInstanceQueryParams",(function(){return c})),n.d(t,"SCFDefaultDimensionList",(function(){return m}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"SearchKey",enDescriptor:"SearchKey",cnDescriptor:"支持FunctionName模糊匹配",link:"",type:"input"},{key:"Namespace",enDescriptor:"Namespace",cnDescriptor:"云函数命名空间",link:"",type:"input"},{key:"Description",enDescriptor:"Description",cnDescriptor:"函数描述,支持模糊搜索",link:"",type:"input"},{key:"OrderBy",enDescriptor:"OrderBy",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"AddTime",value:"AddTime"},{text:"ModTime",value:"ModTime"},{text:"FunctionName",value:"FunctionName"}]},{key:"Order",enDescriptor:"Order Direction",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"ASC",value:"ASC"},{text:"DESC",value:"DESC"}]}],a={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"FunctionName",version:"",queries:{Offset:0,Limit:20,OrderBy:{},Order:{},SearchKey:"",Namespace:"",Description:""}};function c(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["FunctionId","FunctionName"],u={functionName:"FunctionName",namespace:"Namespace",version:"Version"},l={instance:"FunctionName",version:"Version"},p=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-siliconvalley"},{value:"na-toronto"}],d={version:"version"},f={Version:{dim_KeyInStorage:d.version,dim_KeyInTarget:"version",dim_KeyInMap:l.version}};t.default=a;var m=["functionName","namespace","version"]},function(e,t){e.exports=o},function(e,t,n){"use strict";n.r(t),n.d(t,"CLSFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CLSInstanceAliasList",(function(){return u})),n.d(t,"CLSInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"regionSupported",(function(){return h})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"CLSGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/CLS",c="clsQuery",s={},u=["TopicId","TopicName"],l={instance:"TopicId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"topicName",enDescriptor:"topicName",cnDescriptor:"日志主题名称",link:"",type:"inputMulti"},{key:"topicId",enDescriptor:"topicId",cnDescriptor:"日志主题ID",link:"",type:"inputMulti"},{key:"logsetName",enDescriptor:"logsetName",cnDescriptor:"日志集名称",link:"",type:"inputMulti"},{key:"logsetId",enDescriptor:"logsetId",cnDescriptor:"日志集ID",link:"",type:"inputMulti"},{key:"tagKey",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"inputMulti"},{key:"tag:tagKey",enDescriptor:"tag - tagKey",cnDescriptor:"标签键值对",link:"",type:"inputMulti"},{key:"storageType",enDescriptor:"storageType",cnDescriptor:"日志主题的存储类型",link:"",type:"select",list:[{text:"实时存储",value:"hot"},{text:"离线存储",value:"cold"}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/614/56454",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TopicId",uin:"",queries:{Limit:20,Offset:0,topicName:[],topicId:[],logsetName:[],logsetId:[],tagKey:[],"tag:tagKey":[],storageType:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}var h=[{value:"ap-bangkok"},{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-jakarta"},{value:"ap-mumbai"},{value:"ap-seoul"},{value:"ap-nanjing"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"eu-moscow"},{value:"na-ashburn"},{value:"na-siliconvalley"},{value:"na-toronto"}];function y(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["uin","TopicId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"SQLSERVERNETFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"SQLSERVERInstanceAliasList",(function(){return u})),n.d(t,"SQLSERVERInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"regionSupported",(function(){return f})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"SQLSERVERGetInstanceQueryParams",(function(){return y}));var r=n(4),i=n(0),o=n.n(i),a="QCE/SQLSERVER",c="sqlserverQuery",s={resourceId:"InstanceId"},u=["InstanceId","Name"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ProjectId",enDescriptor:"ProjectId",cnDescriptor:"项目ID",link:"",type:"inputNumber"},{key:"Status",enDescriptor:"Status",cnDescriptor:"实例状态",link:"",type:"select",list:[{text:"申请中",value:1},{text:"运行中",value:2},{text:"受限运行中 (主备切换中)",value:3},{text:"已隔离",value:4},{text:"回收中",value:5},{text:"已回收",value:6},{text:"任务执行中",value:7},{text:"已下线",value:8},{text:"实例扩容中",value:9},{text:"实例迁移中",value:10},{text:"只读",value:11},{text:"重启中",value:12}]},{key:"InstanceIdSet",enDescriptor:"InstanceIdSet",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"PayMode",enDescriptor:"PayMode",cnDescriptor:"子网实例ID",link:"",type:"select",list:[{text:"包年包月",value:1},{text:"按量计费",value:0}]},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"实例所属VPC的唯一字符串ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"实例所属子网的唯一字符串ID",link:"",type:"input"},{key:"VipSet",enDescriptor:"VipSet",cnDescriptor:"实例内网地址列表",link:"",type:"inputMulti"},{key:"InstanceNameSet",enDescriptor:"InstanceNameSet",cnDescriptor:"实例名称列表, 模糊查询",link:"",type:"inputMulti"},{key:"VersionSet",enDescriptor:"VersionSet",cnDescriptor:"实例版本代号列表",link:"",type:"inputMulti"},{key:"Zone",enDescriptor:"Zone",cnDescriptor:"实例可用区",link:"",type:"dropdown"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/238/19969",namespace:a,fieldDescriptor:p},f=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-nanjing"},{value:"ap-seoul"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-moscow"},{value:"na-siliconvalley"}],m={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,ProjectId:null,Status:{},InstanceIdSet:[],PayMode:{},VpcId:"",SubnetId:"",VipSet:[],InstanceNameSet:[],VersionSet:[],Zone:""}};function h(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["resourceId"]})),t}function y(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=m},function(e,t,n){"use strict";n.r(t),n.d(t,"BMINTRALBFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMINTRALBInstanceAliasList",(function(){return u})),n.d(t,"BMINTRALBInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"isValidMetric",(function(){return h})),n.d(t,"BMINTRALBGetInstanceQueryParams",(function(){return y}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_INTRA_LB",c="bmIntraLbQuery",s={vip:"LoadBalancerVips",vpcId:"VpcId"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"LoadBalancerIds",enDescriptor:"LoadBalancerIds",cnDescriptor:"负载均衡器ID数组",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancerName",cnDescriptor:"负载均衡器名称",link:"",type:"inputMulti"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancerVips",cnDescriptor:"负载均衡获得的公网IP地址",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/1027/33280",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",queries:{Limit:20,Offset:0,LoadBalancerIds:[],LoadBalancerName:[],LoadBalancerVips:[]}},m=["Inpkg","Outpkg","Intraffic","Outtraffic","Connum","Req"];function h(e){var t=o.a.map(m,o.a.toUpper);return-1!==o.a.indexOf(t,o.a.toUpper(e.MetricName))}function y(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"CPMFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMLBInstanceAliasList",(function(){return u})),n.d(t,"CPMInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"isValidMetric",(function(){return y})),n.d(t,"BMLBGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_LB",c="bmLbQuery",s={vip:"LoadBalancerVips"},u=["LoadBalancerId","LoadBalancerVips","LoadBalancerName"],l={instance:"LoadBalancerId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"LoadBalancerIds",enDescriptor:"LoadBalancerIds",cnDescriptor:"负载均衡器ID数组",link:"",type:"inputMulti"},{key:"LoadBalancerName",enDescriptor:"LoadBalancerName",cnDescriptor:"负载均衡器名称",link:"",type:"inputMulti"},{key:"LoadBalancerVips",enDescriptor:"LoadBalancerVips",cnDescriptor:"负载均衡获得的公网IP地址",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/1027/33280",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"LoadBalancerId",queries:{Limit:20,Offset:0,LoadBalancerIds:[],LoadBalancerName:[],LoadBalancerVips:[]}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var h=["Inpkg","Outpkg","Intraffic","Outtraffic","Connum","Req"];function y(e){var t=o.a.map(h,o.a.toUpper);return-1!==o.a.indexOf(t,o.a.toUpper(e.MetricName))}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"BMPCXFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BMPCXInstanceAliasList",(function(){return u})),n.d(t,"BMPCXInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"BMPCXGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/BM_PCX",c="bmPcxQuery",s={peeringConnectionId:"VpcPeerConnectionId"},u=["VpcPeerConnectionId","VpcPeerConnectionName"],l={instance:"VpcPeerConnectionId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"VpcPeerConnectionIds",enDescriptor:"VpcPeerConnectionIds",cnDescriptor:"对等连接实例ID",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/product/1024/36903",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpcPeerConnectionId",queries:{Limit:20,Offset:0,VpcPeerConnectionIds:[]}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}function h(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["peeringConnectionId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"CBSFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"CBSInstanceAliasList",(function(){return s})),n.d(t,"CBSInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"isValidMetric",(function(){return m})),n.d(t,"CBSGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n(4),o="QCE/BLOCK_STORAGE",a="cbsQuery",c={diskId:"DiskId",InstanceId:"InstanceId",diskname:"DiskName",unInstanceId:"InstanceId"},s=["DiskId","DiskName"],u={instance:"DiskId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DiskIds",enDescriptor:"DiskIds",cnDescriptor:"云硬盘ID",link:"",type:"inputMulti"},{key:"Order",enDescriptor:"Order",cnDescriptor:"排列顺序",link:"",type:"select",list:[{text:"升序排列",value:"ASC"},{text:"降序排列",value:"DESC"}]},{key:"OrderField",enDescriptor:"OrderField",cnDescriptor:"排序的依据字段",link:"",type:"select",list:[{text:"云盘的创建时间排序",value:"CREATE_TIME"},{text:"云盘的到期时间排序",value:"DEADLINE"}]},{key:"ReturnBindAutoSnapshotPolicy",enDescriptor:"ReturnBindAutoSnapshotPolicy",cnDescriptor:"否需要返回云盘绑定的定期快照策略ID",link:"",type:"switch"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/362/16315",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DiskId",queries:{Limit:20,Offset:0,DiskIds:[],OrderField:[],Order:[],ReturnBindAutoSnapshotPolicy:!1}};function f(e){return void 0===e&&(e={}),Object(i.d)(e,!1)}function m(e){void 0===e&&(e={});var t=r.get(e,"Dimensions[0].Dimensions");return 1===t.length&&-1!==r.indexOf(t,"diskId")}t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNPROVINCEFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"CDNPROVINCEInstanceAliasList",(function(){return c})),n.d(t,"CDNPROVINCEInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"CDNPROVINCEGetInstanceQueryParams",(function(){return p}));var r=n(4),i="QCE/CDN_LOG_DATA",o="cdnProvinceQuery",a={domain:"Domain",projectid:"ProjectId",province:"district",appid:"AppId"},c=["Domain","ProjectId"],s={instance:"Domain"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"origin",enDescriptor:"origin",cnDescriptor:"主源站",link:"",type:"inputMulti"},{key:"domain",enDescriptor:"domain",cnDescriptor:"域名",link:"",type:"inputMulti"},{key:"resourceId",enDescriptor:"resourceId",cnDescriptor:"域名id",link:"",type:"inputMulti"},{key:"status",enDescriptor:"status",cnDescriptor:"域名状态",link:"",type:"select",list:[{text:"online",value:"online"},{text:"offline",value:"offline"},{text:"processing",value:"processing"}]},{key:"serviceType",enDescriptor:"serviceType",cnDescriptor:"业务类型",link:"",type:"select",list:[{text:"web",value:"web"},{text:"download",value:"download"},{text:"media",value:"media"}]},{key:"projectId",enDescriptor:"projectId",cnDescriptor:"项目ID",link:"",type:"inputNumberMulti"},{key:"domainType",enDescriptor:"domainType",cnDescriptor:"主源站类型",link:"",type:"select",list:[{text:"自有源",value:"cname"},{text:"cos接入",value:"cos"}]},{key:"fullUrlCache",enDescriptor:"fullUrlCache",cnDescriptor:"全路径缓存",link:"",type:"select",list:[{text:"打开",value:"on"},{text:"关闭",value:"off"}]},{key:"https",enDescriptor:"https",cnDescriptor:"是否配置https",link:"",type:"select",list:[{text:"on",value:"on"},{text:"off",value:"off"},{text:"processing",value:"processing"}]},{key:"originPullProtocol",enDescriptor:"originPullProtocol",cnDescriptor:"回源协议类型",link:"",type:"select",list:[{text:"http",value:"http"},{text:"follow",value:"follow"},{text:"https",value:"https"}]},{key:"tagKey",enDescriptor:"tagKey",cnDescriptor:"标签键",link:"",type:"inputMulti"}],l={region:"ap-guangzhou",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"Domain",isp:"",district:"",queries:{Limit:20,Offset:0,origin:[],domain:[],resourceId:[],status:{},serviceType:{},projectId:[],domainType:{},fullUrlCache:{},https:{},originPullProtocol:{},tagKey:[]}};function p(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"CEIPFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CEIPSUMMARYInstanceAliasList",(function(){return u})),n.d(t,"CEIPInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"CEIPSUMMARYGetInstanceQueryParams",(function(){return m}));var r=n(0),i=n.n(r),o=n(4),a="QCE/CEIP_SUMMARY",c="ceipSummaryQuery",s={vip:"AddressIp",eip:"AddressIp"},u=["AddressId","AddressName","AddressIp"],l={instance:"AddressId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"address-id",enDescriptor:"address-id",cnDescriptor:" EIP 的唯一 ID",link:"",type:"inputMulti"},{key:"address-name",enDescriptor:"address-name",cnDescriptor:"EIP 名称",link:"",type:"inputMulti"},{key:"address-ip",enDescriptor:"address-ip",cnDescriptor:"EIP 的 IP 地址",link:"",type:"inputMulti"},{key:"address-status",enDescriptor:"address-status",cnDescriptor:"EIP 的状态",link:"",type:"select",multiple:!0,list:[{text:"CREATING",value:"CREATING"},{text:"BINDING",value:"BINDING"},{text:"BIND",value:"BIND"},{text:"UNBINDING",value:"UNBINDING"},{text:"UNBIND",value:"UNBIND"},{text:"OFFLINING",value:"OFFLINING"},{text:"BIND_ENI",value:"BIND_ENI"}]},{key:"instance-id",enDescriptor:"instance-id",cnDescriptor:"EIP 绑定的实例 ID",link:"",type:"inputMulti"},{key:"private-ip-address",enDescriptor:"private-ip-address",cnDescriptor:"EIP 绑定的内网 IP ",link:"",type:"inputMulti"},{key:"network-interface-id",enDescriptor:"network-interface-id",cnDescriptor:" EIP 绑定的弹性网卡 ID",link:"",type:"inputMulti"},{key:"is-arrears",enDescriptor:"is-arrears",cnDescriptor:"EIP 是否欠费",link:"",type:"select",multiple:!0,list:[{text:"欠费状态",value:"TRUE"},{text:"费用状态正常",value:"FALSE"}]},{key:"address-isp",enDescriptor:"address-isp",cnDescriptor:"运营商类型",link:"",type:"select",multiple:!0,list:[{text:"BGP",value:"BGP"},{text:"CMCC",value:"CMCC"},{text:"CUCC",value:"CUCC"},{text:"CTCC",value:"CTCC"}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/215/16702",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"AddressId",queries:{Limit:20,Offset:0,"address-id":[],"address-name":[],"address-ip":[],"address-status":{},"is-arrears":{},"address-isp":{},"instance-id":[],"private-ip-address":[],"network-interface-id":[]}};function m(e){return void 0===e&&(e={}),Object(o.d)(e,!0)}function h(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["eip"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceQueryDescriptor",(function(){return o})),n.d(t,"InvalidDemensions",(function(){return c})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"InstanceAliasList",(function(){return p})),n.d(t,"GetInstanceQueryParams",(function(){return a})),n.d(t,"queryMonitorExtraConfg",(function(){return l})),n.d(t,"keyInStorage",(function(){return u}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为10,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:50},{key:"TopicName",enDescriptor:"TopicName",cnDescriptor:"精确匹配TopicName",link:"",type:"input"},{key:"TagKey",enDescriptor:"TagKey",cnDescriptor:"标签搜索",link:"",type:"input"}];function a(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c={topicId:"TopicId"},s={instance:"TopicName",subscription:"SubscriptionId"},u={subscriptionId:"subscriptionId"},l={subscriptionId:{dim_KeyInStorage:u.subscriptionId,dim_KeyInTarget:"subscriptionId",dim_KeyInMap:s.subscription}},p=["TopicName","TopicId"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TopicName",subscriptionId:"",queries:{Offset:0,Limit:20,TopicName:"",TagKey:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"CPMFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"CPMInstanceAliasList",(function(){return u})),n.d(t,"CPMInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"CPMGetInstanceQueryParams",(function(){return m}));var r=n(4),i=n(0),o=n.n(i),a="QCE/CPM",c="cpmQuery",s={instanceId:"InstanceId"},u=["InstanceId","Name"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DeviceClassCode",enDescriptor:"DeviceClassCode",cnDescriptor:"机型ID",link:"",type:"dropdown"},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"设备ID数组",link:"",type:"inputMulti"},{key:"WanIps",enDescriptor:"WanIps",cnDescriptor:"外网IP数组",link:"",type:"inputMulti"},{key:"LanIps",enDescriptor:"LanIps",cnDescriptor:"内网IP数组",link:"",type:"inputMulti"},{key:"Alias",enDescriptor:"Alias",cnDescriptor:"设备名称",link:"",type:"input"},{key:"VagueIp",enDescriptor:"VagueIp",cnDescriptor:"模糊IP查询",link:"",type:"input"},{key:"AutoRenewFlag",enDescriptor:"AutoRenewFlag",cnDescriptor:"自动续费标志",link:"",type:"select",list:[{text:"不自动续费",value:0},{text:"自动续费",value:1}]},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络唯一ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"子网唯一ID",link:"",type:"input"},{key:"DeviceType",enDescriptor:"DeviceType",cnDescriptor:"子网实例ID",link:"",type:"select",list:[{text:"计算型",value:"compute"},{text:"标准型",value:"standard"},{text:"存储型",value:"storage"}]},{key:"IsLuckyDevice",enDescriptor:"IsLuckyDevice",cnDescriptor:"竞价实例机器过滤",link:"",type:"select",list:[{text:"非竞价实例机器",value:0},{text:"竞价实例的机器",value:1}]}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/386/32904",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,DeviceClassCode:"",InstanceIds:[],WanIps:[],LanIps:[],Alias:"",VagueIp:"",AutoRenewFlag:{},VpcId:"",SubnetId:"",DeviceType:{},IsLuckyDevice:{}}};function m(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}function h(e){var t=o.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["instanceId"]})),t}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"ECDNFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"ECDNInstanceAliasList",(function(){return c})),n.d(t,"ECDNInvalidDemensions",(function(){return u})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"ECDNGetInstanceQueryParams",(function(){return f}));var r=n(0),i=function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o.push({Name:t,Value:Object(r.uniq)(e).slice(0,5)}):Object(r.isObject)(e)&&(Object(r.isEmpty)(Object(r.get)(e,"value",[]))||o.push({Name:t,Value:[Object(r.get)(e,"value",[])].slice(0,5)}))})),o.length>0)return t.Filters=o.map((function(e){return"domain"===e.Name?i(i({},e),{Fuzzy:!0}):e})),t}return t}function m(e){var t=Object(r.cloneDeep)(e);return t.Dimensions.forEach((function(e){e.Dimensions=["domain","projectid"]})),t}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"ECMFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"ECMInstanceAliasList",(function(){return s})),n.d(t,"ECMInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"ECMGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n(4),o="QCE/ECM",a="ecmQuery",c={uuid:"UUID"},s=["InstanceId","InstanceName"],u={instance:"InstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"zone",enDescriptor:"zone",cnDescriptor:"可用区英文标识",link:"",type:"dropdownMulti"},{key:"zone-name",enDescriptor:"zone-name",cnDescriptor:"排列顺序",link:"",type:"inputMulti"},{key:"module-id",enDescriptor:"module-id",cnDescriptor:"模块ID",link:"",type:"inputMulti"},{key:"module-name",enDescriptor:"module-name",cnDescriptor:"模块名称",link:"",type:"inputMulti"},{key:"instance-id",enDescriptor:"instance-id",cnDescriptor:"实例ID",link:"",type:"inputMulti"},{key:"instance-name",enDescriptor:"instance-name",cnDescriptor:"实例名称",link:"",type:"inputMulti"},{key:"ip-address",enDescriptor:"ip-address",cnDescriptor:"内网/公网IP",link:"",type:"inputMulti"},{key:"instance-uuid",enDescriptor:"instance-uuid",cnDescriptor:"实例uuid",link:"",type:"inputMulti"},{key:"instance-state",enDescriptor:"instance-state",cnDescriptor:"实例状态",link:"",type:"select",multiple:!0,list:[{text:"创建中",value:"PENDING"},{text:"创建失败",value:"LAUNCH_FAILED"},{text:"运行中",value:"RUNNING"},{text:"关机",value:"STOPPED"},{text:"开机中",value:"STARTING"},{text:"关机中",value:"STOPPING"},{text:"重启中",value:"REBOOTING"},{text:"停止待销毁",value:"SHUTDOWN"},{text:"销毁中",value:"TERMINATING"}]},{key:"internet-service-provider",enDescriptor:"internet-service-provider",cnDescriptor:"公网IP所属的运营商",link:"",type:"inputMulti"},{key:"instance-family",enDescriptor:"instance-family",cnDescriptor:"机型family",link:"",type:"inputMulti"},{key:"image-id",enDescriptor:"image-id",cnDescriptor:"镜像ID",link:"",type:"inputMulti"},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"实例的vpc id",link:"",type:"inputMulti"},{key:"subnet-id",enDescriptor:"subnet-id",cnDescriptor:"实例的subnet id",link:"",type:"inputMulti"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/1108/42565",namespace:o,fieldDescriptor:l},d={region:"ap-guangzhou",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,zone:[],"zone-name":[],"module-id":[],"module-name":[],"instance-id":[],"instance-name":[],"ip-address":[],"instance-uuid":[],"instance-state":{},"internet-service-provider":[],"instance-family":[],"image-id":[],"vpc-id":[],"subnet-id":[]}};function f(e){return void 0===e&&(e={}),Object(i.d)(e,!0)}function m(e){var t=r.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["UUID"]})),t}t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"PostgresFieldsDescriptor",(function(){return u})),n.d(t,"POSTGRESInstanceAliasList",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return y})),n.d(t,"modifyDimensons",(function(){return m})),n.d(t,"namespace",(function(){return c})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"PostgreInvalidDemensions",(function(){return h})),n.d(t,"POSTGRESGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n.n(r),o=n(4),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}function l(e){void 0===e&&(e={});var t=i.a.get(e,"Dimensions[0].Dimensions");return 2===t.length&&(-1!==i.a.indexOf(t,"instanceid")&&-1!==i.a.indexOf(t,"insttype")||-1!==i.a.indexOf(t,"InstanceId")&&-1!==i.a.indexOf(t,"InstanceType"))}function p(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=e.Dimensions.map((function(e){return d[e]||e}))})),t}var d={instanceid:"InstanceId",insttype:"InstanceType",region:"Region"},f={instance:"InstanceId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CESFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"CESInstanceAliasList",(function(){return c})),n.d(t,"CESInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"CESGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/CES",o="cesQuery",a={uInstanceId:"InstanceId"},c=["InstanceId","InstanceName"],s={instance:"InstanceId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"InstanceIds",enDescriptor:"InstanceIds",cnDescriptor:"集群实例ID列表",link:"",type:"inputMulti"},{key:"InstanceNames",enDescriptor:"InstanceNames",cnDescriptor:"集群实例名称列表",link:"",type:"inputMulti"},{key:"OrderByKey",enDescriptor:"OrderByKey",cnDescriptor:"排序字段",link:"",type:"select",list:[{text:"实例ID",value:1},{text:"实例名称",value:2},{text:"可用区",value:3},{text:"创建时间",value:4}]},{key:"OrderByType",enDescriptor:"OrderByType",cnDescriptor:"排序方式",link:"",type:"select",list:[{text:"升序",value:0},{text:"降序",value:1}]},{key:"IpList",enDescriptor:"IpList",cnDescriptor:"私有网络vip列表",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/845/30631",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,InstanceIds:[],InstanceNames:[],OrderByKey:{},OrderByType:{},IpList:[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"DCFilterFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return f})),n.d(t,"DCInstanceAliasList",(function(){return d})),n.d(t,"DCInvalidDemensions",(function(){return m})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return u})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"DCGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o=n(4),a="QCE/DC",c="dcQuery",s=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"DirectConnectIds",enDescriptor:"DirectConnectIds",cnDescriptor:"物理专线 ID",link:"",type:"inputMulti"}],u={instanceDocUrl:"https://cloud.tencent.com/document/api/216/34826",namespace:a,fieldDescriptor:s},l={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DirectConnectId",queries:{Limit:20,Offset:0,DirectConnectIds:[]}};function p(e){return void 0===e&&(e={}),Object(o.d)(e,!1)}var d=["DirectConnectId","DirectConnectName"],f={instance:"DirectConnectId"},m={directConnectId:"DirectConnectId",directconnectid:"DirectConnectId"};function h(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["directConnectId"]})),t}t.default=l},function(e,t,n){"use strict";n.r(t),n.d(t,"DCGFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"DCGInstanceAliasList",(function(){return c})),n.d(t,"DCGInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"DCGGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/DCG",o="dcgQuery",a={directConnectGatewayId:"DirectConnectGatewayId"},c=["DirectConnectGatewayId","DirectConnectGatewayName"],s={instance:"DirectConnectGatewayId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"direct-connect-gateway-id",enDescriptor:"direct-connect-gateway-id",cnDescriptor:"专线网关唯一ID",link:"",type:"inputMulti"},{key:"direct-connect-gateway-name",enDescriptor:"direct-connect-gateway-name",cnDescriptor:"专线网关名称",link:"",type:"inputMulti"},{key:"direct-connect-gateway-ip",enDescriptor:"direct-connect-gateway-ip",cnDescriptor:"专线网关IP",link:"",type:"inputMulti"},{key:"gateway-type",enDescriptor:"gateway-type",cnDescriptor:"网关类型",link:"",type:"select",multiple:!0,list:[{text:"普通型",value:"NORMAL"},{text:"NAT型",value:"NAT"}]},{key:"network-type",enDescriptor:"network-type",cnDescriptor:"网络类型",link:"",type:"select",multiple:!0,list:[{text:"私有网络类型",value:"VPC"},{text:"云联网类型",value:"CCN"}]},{key:"ccn-id",enDescriptor:"ccn-id",cnDescriptor:"专线网关所在云联网ID",link:"",type:"inputMulti"},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"专线网关所在私有网络ID",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/30644",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"DirectConnectGatewayId",queries:{Limit:20,Offset:0,"direct-connect-gateway-id":[],"direct-connect-gateway-name":[],"direct-connect-gateway-ip":[],"gateway-type":{},"network-type":{},"ccn-id":[],"vpc-id":[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"DCXFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return m})),n.d(t,"DCXInstanceAliasList",(function(){return f})),n.d(t,"DCXInvalidDemensions",(function(){return h})),n.d(t,"namespace",(function(){return c})),n.d(t,"queryEditorName",(function(){return s})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"modifyDimensons",(function(){return y})),n.d(t,"DCXGetInstanceQueryParams",(function(){return d}));var r=n(0),i=n.n(r),o=n(4),a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var u=["InstanceId","InstanceName"],l={target:"InstanceId"},p={instance:"InstanceId",replica:"ReplicaSetId"},d={Replica:{dim_KeyInStorage:"ReplicaSets",dim_KeyInTarget:"replica",dim_KeyInMap:"ReplicaSetId",dim_KeyInIns:"ReplicaSetId"},Node:{dim_KeyInStorage:"ReplicaNodeSets",dim_KeyInTarget:"node",dim_KeyInMap:"NodeId",dim_KeyInIns:"NodeId"}};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"QAAPFilterFieldsDescriptor",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"QAAPInstanceAliasList",(function(){return u})),n.d(t,"QAAPInvalidDemensions",(function(){return s})),n.d(t,"namespace",(function(){return a})),n.d(t,"queryEditorName",(function(){return c})),n.d(t,"queryEditorConfig",(function(){return d})),n.d(t,"modifyDimensons",(function(){return h})),n.d(t,"QAAPGetInstanceQueryParams",(function(){return m}));var r=n(0),i=n.n(r),o=n(4),a="QCE/QAAP",c="qaapQuery",s={channelId:"InstanceId"},u=["InstanceId"],l={instance:"InstanceId"},p=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ProjectId",enDescriptor:"ProjectId",cnDescriptor:"项目ID",link:"",type:"inputMulti"},{key:"AccessRegion",enDescriptor:"AccessRegion",cnDescriptor:"接入地域",link:"",type:"inputMulti"},{key:"RealServerRegion",enDescriptor:"RealServerRegion",cnDescriptor:"源站地域",link:"",type:"inputMulti"},{key:"GroupId",enDescriptor:"GroupId",cnDescriptor:"通道组ID",link:"",type:"inputMulti"}],d={instanceDocUrl:"https://cloud.tencent.com/document/api/608/36963",namespace:a,fieldDescriptor:p},f={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"InstanceId",queries:{Limit:20,Offset:0,ProjectId:[],AccessRegion:[],RealServerRegion:[],GroupId:[]}};function m(e){return void 0===e&&(e={}),Object(o.d)(e,!0)}function h(e){return i.a.cloneDeep(e)}t.default=f},function(e,t,n){"use strict";n.r(t),n.d(t,"TCAPLUSFilterFieldsDescriptor",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"TCAPLUSInstanceAliasList",(function(){return s})),n.d(t,"TCAPLUSInvalidDemensions",(function(){return c})),n.d(t,"namespace",(function(){return o})),n.d(t,"queryEditorName",(function(){return a})),n.d(t,"queryEditorConfig",(function(){return p})),n.d(t,"regonsMap",(function(){return m})),n.d(t,"TCAPLUSGetInstanceQueryParams",(function(){return f}));var r=n(0),i=n.n(r),o="QCE/TCAPLUS",a="tcaplusQuery",c={},s=["TableInstanceId","TableName"],u={instance:"TableInstanceId"},l=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ClusterId",enDescriptor:"ClusterId",cnDescriptor:"表格所属集群ID",link:"",type:"input"},{key:"TableGroupIds",enDescriptor:"TableGroupIds",cnDescriptor:"表格组ID列表",link:"",type:"inputMulti"},{key:"TableName",enDescriptor:"TableName",cnDescriptor:"表格名称",link:"",type:"input"},{key:"TableInstanceId",enDescriptor:"TableInstanceId",cnDescriptor:"表实例ID",link:"",type:"input"},{key:"TableIdlType",enDescriptor:"TableIdlType",cnDescriptor:"表格描述语言类型",link:"",type:"select",list:[{text:"PROTO",value:"PROTO"},{text:"TDR",value:"TDR"}]},{key:"TableType",enDescriptor:"TableType",cnDescriptor:"表格数据结构类型",link:"",type:"select",list:[{text:"GENERIC",value:"GENERIC"},{text:"LIST",value:"LIST"}]},{key:"ListElementNum",enDescriptor:"ListElementNum",cnDescriptor:"LIST表元素个数",link:"",type:"inputNumber"},{key:"ReservedVolume",enDescriptor:"ReservedVolume",cnDescriptor:"表格预留容量(GB)",link:"",type:"inputNumber"},{key:"ReservedReadQps",enDescriptor:"ReservedReadQps",cnDescriptor:"表格预留读CU",link:"",type:"inputNumber"},{key:"ReservedWriteQps",enDescriptor:"ReservedWriteQps",cnDescriptor:"表格预留写CU",link:"",type:"inputNumber"},{key:"Memo",enDescriptor:"Memo",cnDescriptor:"表格备注信息",link:"",type:"input"},{key:"FileName",enDescriptor:"FileName",cnDescriptor:"Key回档文件名,回档专用",link:"",type:"input"},{key:"FileExtType",enDescriptor:"FileExtType",cnDescriptor:"Key回档文件扩展名,回档专用",link:"",type:"input"},{key:"FileSize",enDescriptor:"FileSize",cnDescriptor:"Key回档文件大小,回档专用",link:"",type:"inputNumber"},{key:"FileContent",enDescriptor:"FileContent",cnDescriptor:"Key回档文件内容,回档专用",link:"",type:"input"}],p={instanceDocUrl:"https://cloud.tencent.com/document/api/596/39664",namespace:o,fieldDescriptor:l},d={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"TableInstanceId",queries:{Limit:20,Offset:0,ClusterId:"",TableGroupIds:[],TableName:"",TableInstanceId:"",TableIdlType:{},TableType:{},ListElementNum:null,ReservedVolume:null,ReservedReadQps:null,ReservedWriteQps:null,Memo:"",FileName:"",FileExtType:"",FileSize:null,FileContent:""}};function f(e){void 0===e&&(e={});var t={};t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,t.ClusterId=i.a.get(e,"ClusterId","")||"",t.TableGroupIds=i.a.get(e,"TableGroupIds",[])||[],e=i.a.omit(e,["Offset","Limit","TableGroupIds","ClusterId"]);var n=[];return i.a.forEach(e,(function(e,t){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(n[t]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(n[t]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(n[t]=e)})),t.SelectedTables=n,t}var m={"ap-beijing":"华北地区(北京)","ap-guangzhou":"华南地区(广州)","ap-hongkong":"港澳台地区(中国香港)","ap-seoul":"亚太东北(首尔)","ap-shanghai":"华东地区(上海)","ap-singapore":"亚太东南(新加坡)","ap-tokyo":"亚太东北(东京)","eu-frankfurt":"欧洲地区(法兰克福)","na-ashburn":"美国东部(弗吉尼亚)","na-siliconvalley":"美国西部(硅谷)"};t.default=d},function(e,t,n){"use strict";n.r(t),n.d(t,"VBCFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VBCInstanceAliasList",(function(){return c})),n.d(t,"VBCInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VBCGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VBC",o="vbcQuery",a={},c=["CcnId","CcnName"],s={instance:"CcnId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"ccn-id",enDescriptor:"ccn-id",cnDescriptor:"CCN实例ID",link:"",type:"inputMulti"},{key:"ccn-name",enDescriptor:"ccn-name",cnDescriptor:"CCN名称",link:"",type:"inputMulti"},{key:"ccn-description",enDescriptor:"ccn-description",cnDescriptor:"CCN描述",link:"",type:"inputMulti"},{key:"state",enDescriptor:"state",cnDescriptor:"实例状态",link:"",type:"select",multiple:!0,list:[{text:"隔离中",value:"ISOLATED"},{text:"运行中",value:"AVAILABLE"}]}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/19199",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"CcnId",DRegion:"",SRegion:"",queries:{Limit:20,Offset:0,"ccn-id":[],"ccn-name":[],"ccn-description":[],state:{}}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"VPNGWFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VPNGWInstanceAliasList",(function(){return c})),n.d(t,"VPNGWInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VPNGWGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VPNGW",o="vpngwQuery",a={vpnGwId:"VpnGatewayId"},c=["VpnGatewayId","VpnGatewayName"],s={instance:"VpnGatewayId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"VPC实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-id",enDescriptor:"vpn-gateway-id",cnDescriptor:"VPN实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-name",enDescriptor:"vpn-gateway-name",cnDescriptor:"VPN实例名称",link:"",type:"inputMulti"},{key:"type",enDescriptor:"type",cnDescriptor:"VPN网关类型",link:"",type:"select",multiple:!0,list:[{text:"IPSEC",value:"IPSEC"},{text:"SSL",value:"SSL"}]},{key:"public-ip-address",enDescriptor:"public-ip-address",cnDescriptor:"公网IP",link:"",type:"inputMulti"},{key:"renew-flag",enDescriptor:"renew-flag",cnDescriptor:"网关续费类型",link:"",type:"select",multiple:!0,list:[{text:"手动续费",value:"NOTIFY_AND_MANUAL_RENEW"},{text:"自动续费",value:"NOTIFY_AND_AUTO_RENEW"}]},{key:"zone",enDescriptor:"zone",cnDescriptor:"VPN所在可用区",link:"",type:"dropdownMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/17514",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpnGatewayId",queries:{Limit:20,Offset:0,"vpc-id":[],"vpn-gateway-id":[],"vpn-gateway-name":[],type:{},"public-ip-address":[],"renew-flag":{},zone:[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"VPNXFilterFieldsDescriptor",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"VPNXInstanceAliasList",(function(){return c})),n.d(t,"VPNXInvalidDemensions",(function(){return a})),n.d(t,"namespace",(function(){return i})),n.d(t,"queryEditorName",(function(){return o})),n.d(t,"queryEditorConfig",(function(){return l})),n.d(t,"VPNXGetInstanceQueryParams",(function(){return d}));var r=n(4),i="QCE/VPNX",o="vpnxQuery",a={vpnConnId:"VpnConnectionId"},c=["VpnConnectionId","VpnConnectionName"],s={instance:"VpnConnectionId"},u=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:100},{key:"vpc-id",enDescriptor:"vpc-id",cnDescriptor:"VPC实例ID",link:"",type:"inputMulti"},{key:"vpn-gateway-id",enDescriptor:"vpn-gateway-id",cnDescriptor:"VPN实例ID",link:"",type:"inputMulti"},{key:"customer-gateway-id ",enDescriptor:"customer-gateway-id ",cnDescriptor:"对端网关实例ID",link:"",type:"inputMulti"},{key:"vpn-connection-name",enDescriptor:"vpn-connection-name",cnDescriptor:"通道名称",link:"",type:"inputMulti"},{key:"vpn-connection-id",enDescriptor:"vpn-connection-id",cnDescriptor:"通道实例ID",link:"",type:"inputMulti"}],l={instanceDocUrl:"https://cloud.tencent.com/document/api/215/17515",namespace:i,fieldDescriptor:u},p={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"VpnConnectionId",queries:{Limit:20,Offset:0,"vpc-id":[],"vpn-gateway-id":[],"customer-gateway-id":[],"vpn-connection-name":[],"vpn-connection-id":[]}};function d(e){return void 0===e&&(e={}),Object(r.d)(e,!0)}t.default=p},function(e,t,n){"use strict";n.r(t),n.d(t,"LighthouseFilterFieldsDescriptor",(function(){return a})),n.d(t,"LIGHTHOUSEInstanceAliasList",(function(){return u})),n.d(t,"LighthouseInvalidDemensions",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"modifyDimensons",(function(){return d})),n.d(t,"LIGHTHOUSEGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["InstanceId","InstanceName","PrivateIpAddresses","PublicIpAddresses"],l={instanceid:"InstanceId"},p={instance:"InstanceId"};function d(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CFSQueryDescriptor",(function(){return o})),n.d(t,"CFSInstanceAliasList",(function(){return s})),n.d(t,"CFSInvalidDemensions",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"regionSupported",(function(){return l})),n.d(t,"CFSGetInstanceQueryParams",(function(){return c}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"FileSystemId",enDescriptor:"File System Id",cnDescriptor:"文件系统 ID",link:"",type:"input"},{key:"VpcId",enDescriptor:"VpcId",cnDescriptor:"私有网络(VPC) ID",link:"",type:"input"},{key:"SubnetId",enDescriptor:"SubnetId",cnDescriptor:"子网 ID",link:"",type:"input"}],a={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"FileSystemId",version:"",queries:{Offset:0,Limit:20,FileSystemId:"",VpcId:"",SubnetId:""}};function c(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var s=["FileSystemId","FsName"],u={},l=[{value:"ap-beijing"},{value:"ap-chengdu"},{value:"ap-chongqing"},{value:"ap-guangzhou"},{value:"ap-hongkong"},{value:"ap-mumbai"},{value:"ap-nanjing"},{value:"ap-seoul"},{value:"ap-shanghai"},{value:"ap-shanghai-fsi"},{value:"ap-shenzhen-fsi"},{value:"ap-singapore"},{value:"ap-tokyo"},{value:"eu-frankfurt"},{value:"na-siliconvalley"},{value:"na-toronto"}],p={instance:"InstanceId"};t.default=a},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceQueryDescriptor",(function(){return o})),n.d(t,"InvalidDemensions",(function(){return c})),n.d(t,"templateQueryIdMap",(function(){return s})),n.d(t,"InstanceAliasList",(function(){return u})),n.d(t,"GetInstanceQueryParams",(function(){return a}));var r=n(0),i=n.n(r),o=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputNumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为10,最小值为1,最大值为100",link:"",type:"inputNumber",min:1,max:50},{key:"QueueName",enDescriptor:"QueueName",cnDescriptor:"精确匹配QueueName",link:"",type:"input"},{key:"TagKey",enDescriptor:"TagKey",cnDescriptor:"标签搜索",link:"",type:"input"}];function a(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var c={queueId:"QueueId",queueName:"QueueName"},s={instance:"QueueName"},u=["QueueName","QueueId"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"QueueName",queries:{Offset:0,Limit:20,QueueName:"",TagKey:""}}},function(e,t,n){"use strict";n.r(t),n.d(t,"CVMFilterFieldsDescriptor",(function(){return a})),n.d(t,"CVMInstanceAliasList",(function(){return u})),n.d(t,"isValidMetric",(function(){return d})),n.d(t,"modifyDimensons",(function(){return f})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"CVMGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["InstanceId","InstanceName","PrivateIpAddresses","PublicIpAddresses"],l=["CPUUsage","CpuLoadavg","Cpuloadavg5m","Cpuloadavg15m","BaseCpuUsage","GpuMemTotal","GpuMemUsage","GpuMemUsed","GpuPowDraw","GpuPowLimit","GpuPowUsage","GpuTemp","GpuUtil","LanOuttraffic","LanIntraffic","LanOutpkg","LanInpkg","WanOuttraffic","WanIntraffic","WanOutpkg","WanInpkg","AccOuttraffic","TcpCurrEstab","TimeOffset","MemUsed","MemUsage","CvmDiskUsage","BaseCpuUsage","VmDiskReadIops"],p={instance:"InstanceId"};function d(e){var t=i.a.map(l,i.a.toUpper);return-1!==i.a.indexOf(t,i.a.toUpper(e.MetricName))}function f(e){var t=i.a.cloneDeep(e);return t.Dimensions.forEach((function(e){e.Dimensions=["InstanceId"]})),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"PCXInstanceAliasList",(function(){return u})),n.d(t,"PCXFieldsDescriptor",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"namespace",(function(){return a})),n.d(t,"PCXGetInstanceQueryParams",(function(){return p}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisFieldsDescriptor",(function(){return a})),n.d(t,"RedisInvalidDemensions",(function(){return p})),n.d(t,"templateQueryIdMap",(function(){return d})),n.d(t,"REDISInstanceAliasList",(function(){return l})),n.d(t,"isValidMetric",(function(){return u})),n.d(t,"REDISGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}function u(e){void 0===e&&(e={});var t=i.a.get(e,"Dimensions[0].Dimensions");return 1===t.length&&-1!==i.a.indexOf(t,"instanceid")}var l=["InstanceId","InstanceName","WanIp"],p={redis_uuid:"InstanceId",instanceid:"InstanceId"},d={instance:"InstanceId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"TSFInvalidDemensions",(function(){return s})),n.d(t,"templateQueryIdMap",(function(){return u})),n.d(t,"TSFInstanceAliasList",(function(){return c})),n.d(t,"TSFFieldsDescriptor",(function(){return i})),n.d(t,"TSFGetInstanceQueryParams",(function(){return a}));var r=n(4),i=[{key:"Offset",enDescriptor:"Offset",cnDescriptor:"偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项",link:"",type:"inputnumber",min:0},{key:"Limit",enDescriptor:"Limit",cnDescriptor:"单次请求返回的数量,默认为20,最小值为1,最大值为100",link:"",type:"inputnumber",min:1,max:100},{key:"SearchWord",enDescriptor:"SearchWord",cnDescriptor:"搜索关键字",link:"",type:"input"},{key:"ApplicationIdList",enDescriptor:"ApplicationIdList",cnDescriptor:"应用ID 组成的数组",link:"",type:"inputmulti"},{key:"ApplicationType",enDescriptor:"ApplicationType",cnDescriptor:"应用类型",link:"",type:"select",list:[{text:"所有",value:""},{text:"容器应用",value:"C"},{text:"普通应用/虚拟机应用",value:"V"}]},{key:"MicroserviceType",enDescriptor:"MicroserviceType",cnDescriptor:"应用的微服务类型",link:"",type:"select",list:[{text:"所有",value:""},{text:"普通应用",value:"N"},{text:"Mesh应用",value:"M"},{text:"微服务网关应用",value:"G"},{text:"原生应用",value:"NATIVE"}]},{key:"ApplicationResourceTypeList",enDescriptor:"ApplicationResourceTypeList",cnDescriptor:"应用资源类型数组",link:"",type:"select",multiple:!0,list:[{text:"默认资源类型",value:"DEF"},{text:"微服务网关资源",value:"GW"}]}],o={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ApplicationId",queries:{Limit:20,Offset:0,SearchWord:"",OrderBy:"",OrderType:null,ApplicationType:"",MicroserviceType:"",ApplicationResourceTypeList:[],ApplicationIdList:[]}};function a(e){return void 0===e&&(e={}),Object(r.d)(e,!1)}var c=["ApplicationId","ApplicationName"],s={applicationid:"ApplicationId"},u={instance:"ApplicationId"};t.default=o},function(e,t,n){"use strict";n.r(t),n.d(t,"BWPFilterFieldsDescriptor",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"BWPInstanceAliasList",(function(){return u})),n.d(t,"BWPInvalidDemensions",(function(){return p})),n.d(t,"BWPGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.BandwidthPackageIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["BandwidthPackageId","BandwidthPackageName"],l={instance:"BandwidthPackageId"},p={bandwidthPackageId:"BandwidthPackageId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNFilterFieldsDescriptor",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"CDNInstanceAliasList",(function(){return u})),n.d(t,"CDNInvalidDemensions",(function(){return l})),n.d(t,"CDNGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&n.push({Name:t,Value:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||n.push({Name:t,Value:i.a.get(e,"value",[]).slice(0,5)}))})),n.length>0&&(t.Filters=n)}return t}var u=["Domain","ProjectId"],l={projectId:"ProjectId",domain:"Domain"},p={instance:"Domain"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"LBFilterDescriptor",(function(){return a})),n.d(t,"LBInstanceAliasList",(function(){return u})),n.d(t,"LBInvalidDemensions",(function(){return l})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"LBGetInstanceQueryParams",(function(){return s}));var r,i=n(0),o=n.n(i),a=[{key:"address-id",enDescriptor:"Address ID",cnDescriptor:"EIP 的唯一 ID ",link:"",type:"inputmulti"},{key:"address-name",enDescriptor:"Address Name",cnDescriptor:"EIP 名称 ",link:"",type:"inputmulti"},{key:"address-ip",enDescriptor:"Address IP",cnDescriptor:"EIP 的 IP 地址 ",link:"",type:"inputmulti"},{key:"address-status",enDescriptor:"Address Status",cnDescriptor:"EIP 的状态",link:"",type:"select",list:[{value:"CREATING",text:"CREATING"},{value:"BINDING",text:"BINDING"},{value:"BIND",text:"BIND"},{value:"UNBINDING",text:"UNBINDING"},{value:"UNBIND",text:"UNBIND"},{value:"OFFLINING",text:"OFFLINING"},{value:"BIND_ENI",text:"BIND_ENI"}]},{key:"instance-id",enDescriptor:"Instance ID",cnDescriptor:"实例ID ",link:"",type:"inputmulti"},{key:"private-ip-address",enDescriptor:"Private IP Address",cnDescriptor:"EIP 绑定的内网 IP",link:"",type:"inputmulti"},{key:"network-interface-id",enDescriptor:"Network Interface ID",cnDescriptor:"EIP 绑定的弹性网卡 ID",link:"",type:"inputmulti"},{key:"is-arrears",enDescriptor:"Arrears",cnDescriptor:"EIP 是否欠费 ",link:"",type:"select",list:[{text:"正常",value:"FALSE"},{text:"欠费",value:"TRUE"}]}],c={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"AddressId",version:"",queries:(r={Offset:0,Limit:20},r.AddressIds=[""],r.Filters={"address-id":[],"address-name":[],"address-ip":[],"address-status ":[],"instance-id ":[],"private-ip-address":[],"network-interface-id ":[],"is-arrears ":[]},r)};function s(e){void 0===e&&(e={});var t={};if(!o.a.isEmpty(e))if(t.Limit=o.a.get(e,"Limit",20)||20,t.Offset=o.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(o.a.isArray(e.AddressIds)){var n=o.a.compact(e.AddressIds);o.a.uniq(n).length>0&&(t.AddressIds=o.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];o.a.forEach(e.Filters,(function(e,t){r.length>9||(o.a.isArray(e)?(e=o.a.compact(e)).length>0&&r.push({Name:t,Values:o.a.uniq(e).slice(0,5)}):o.a.isObject(e)&&(o.a.isEmpty(o.a.get(e,"value",[]))||r.push({Name:t,Values:o.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var u=["AddressId","AddressName","AddressIp"],l={eip:"AddressIp"},p={instance:"AddressId"};t.default=c},function(e,t,n){"use strict";n.r(t),n.d(t,"NATGatewayFilterFieldsDescriptor",(function(){return c})),n.d(t,"NATGATEWAYInstanceAliasList",(function(){return a})),n.d(t,"templateQueryIdMap",(function(){return l})),n.d(t,"NATInvalidDemensions",(function(){return p})),n.d(t,"NATGATEWAYGetInstanceQueryParams",(function(){return u}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}var l={instance:"NatGatewayId"},p={natId:"NatGatewayId"};t.default=s},function(e,t,n){"use strict";n.r(t),n.d(t,"OVCDNFilterFieldsDescriptor",(function(){return a})),n.d(t,"OVCDNInstanceAliasList",(function(){return u})),n.d(t,"templateQueryIdMap",(function(){return p})),n.d(t,"OVCDNInvalidDemensions",(function(){return l})),n.d(t,"OVCDNGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o=function(){return(o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&n.push({Name:t,Value:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||n.push({Name:t,Value:i.a.get(e,"value",[]).slice(0,5)}))})),n.length>0&&(t.Filters=n)}return t}var u=["Domain","ResourceId"],l={projectId:"ProjectId",domain:"Domain"},p={instance:"Domain"};t.default=c},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function i(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}},function(e,t){e.exports=a},function(e,t){e.exports=c},function(e,t,n){"use strict";n.r(t),n.d(t,"TKEFilterFieldsDescriptor",(function(){return a})),n.d(t,"TKEInstanceAliasList",(function(){return c})),n.d(t,"TKEGetInstanceQueryParams",(function(){return s}));var r=n(0),i=n.n(r),o={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"ClusterId",conditions:[],groupBys:"",queries:{Limit:20,Offset:0,instanceIdsChecked:!1,filtersChecked:!0,ClusterIds:[""],Filters:{ClusterName:[],ClusterType:[],ClusterStatus:[],"tag-key":[]}}},a=[{key:"ClusterName",enDescriptor:"Cluster Name",cnDescriptor:"集群名",link:"",type:"input"},{key:"ClusterType",enDescriptor:"Cluster Type",cnDescriptor:"集群类型",link:"",type:"inputmulti"},{key:"ClusterStatus",enDescriptor:"Cluster Status",cnDescriptor:"集群状态",link:"",type:"inputmulti"},{key:"Tags",enDescriptor:"Tags",cnDescriptor:"标签键值对",link:"",type:"inputmulti"},{key:"vpc-id",enDescriptor:"VPC",cnDescriptor:"VPC",link:"",type:"input"},{key:"tag-key",enDescriptor:"Tag Key",cnDescriptor:"标签键",link:"",type:"inputmulti"},{key:"tag-value",enDescriptor:"Tag Value",cnDescriptor:"标签值",link:"",type:"inputmulti"}],c=["ClusterId","ClusterName"];function s(e){void 0===e&&(e={});var t={};if(!i.a.isEmpty(e))if(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e.instanceIdsChecked){if(i.a.isArray(e.InstanceIds)){var n=i.a.compact(e.InstanceIds);i.a.uniq(n).length>0&&(t.InstanceIds=i.a.uniq(n).slice(0,100))}}else if(e.filtersChecked){var r=[];i.a.forEach(e.Filters,(function(e,t){r.length>9||(i.a.isArray(e)?(e=i.a.compact(e)).length>0&&r.push({Name:t,Values:i.a.uniq(e).slice(0,5)}):i.a.isObject(e)&&(i.a.isEmpty(i.a.get(e,"value",[]))||r.push({Name:t,Values:i.a.get(e,"value",[]).slice(0,5)})))})),r.length>0&&(t.Filters=r)}return t}t.default=o},function(e,t,n){"use strict";n.r(t);var r,i=n(21),o=n(3),a=n(2),c=n(4),s=n(8),u=n(1),l=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),p=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},d=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0?D.map((function(e){return{TopicId:e.TopicId,TopicName:e.TopicName}})):v,PartitionList:w.length>0?w:b}]}}))}))},t.prototype.formatTopicVarDisplay=function(e,t,n){var r=this;return t?t.replace(/\$\{(\w+)\}/g,(function(t,n){return n&&r.TopicAliasList.includes(n)?r.getAliasValue(e,n):""})):this.getAliasValue(e,n)},t.prototype.fetchMetricData=function(e,t,n,r){return d(this,void 0,void 0,(function(){var i,o,a,c,s,p,d,m,h,y=this;return f(this,(function(f){switch(f.label){case 0:return i=r.topicalias,o=r.groupname,a=r.topicid,[4,this.getConsumerGroups(t,{InstanceId:n.InstanceId,groupname:o,topicid:a})];case 1:return c=f.sent(),s=r.display,p=c.TopicList,d=c.GroupList,m=c.PartitionList,i=this.TopicAliasList.includes(i)?i:this.templateQueryIdMap.topicId,h={GroupList:d.map((function(e){return e._InstanceAliasValue=e.GroupName,{text:e.GroupName,value:e[u.templateQueryIdMap.groupName]}})),TopicList:p.map((function(e){var t=y.formatTopicVarDisplay(e,s,i);return e._InstanceAliasValue=t||e[u.templateQueryIdMap.topicId],{text:t||e[u.templateQueryIdMap.topicId],value:e[u.templateQueryIdMap.topicId],TopicName:e.TopicName}})),PartitionList:m.map((function(e){return e._InstanceAliasValue=e[u.templateQueryIdMap.partition],{text:e[u.templateQueryIdMap.partition],value:e[u.templateQueryIdMap.partition]}}))},[4,l.a.setExtraStorage(this.service,this.keyInStorage.TopicList,p)];case 2:return f.sent(),[4,l.a.setExtraStorage(this.service,this.keyInStorage.GroupList,d)];case 3:return f.sent(),[4,l.a.setExtraStorage(this.service,this.keyInStorage.PartitionList,m)];case 4:switch(f.sent(),e){case"DescribeTopicList":return[2,h.TopicList];case"DescribeGroup":return[2,h.GroupList];case"DescribePartion":return[2,h.PartitionList];default:return[2,[]]}return[2]}}))}))},t}(s.BaseDatasource);t.default=m},function(e,t,n){"use strict";n.r(t);var r,i=n(12),o=n(3),a=n(0),c=n.n(a),s=n(2),u=n(4),l=n(8),p=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),d=function(){return(d=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=i)return r;var o=Object(s.k)(i,50),a=[];return c.a.forEach(o,(function(t){a.push(n.getInstances(e,t))})),Promise.all(a).then((function(e){return c.a.forEach(e,(function(e){r=c.a.concat(r,e)})),r})).catch((function(e){return r}))}))},t.prototype.getVpcId=function(e,t){void 0===t&&(t={}),(t=l({Offset:0,Limit:20},t)).Offset=String(t.Offset),t.Limit=String(t.Limit);var n=Object(s.e)(e,"vpc");return this.doRequest({url:this.url+n.path,data:t},n.service,{region:e,action:"DescribeVpcs"}).then((function(e){return c.a.map(e.VpcSet||[],(function(e){return{text:e.VpcId,value:e.VpcId}}))}))},t.prototype.getVpcIds=function(e){var t=this,n=[],r={Offset:0,Limit:100};r.Offset=String(r.Offset),r.Limit=String(r.Limit);var i=Object(s.e)(e,"vpc");return this.doRequest({url:this.url+i.path,data:r},i.service,{region:e,action:"DescribeVpcs"}).then((function(r){n=c.a.map(r.VpcSet||[],(function(e){return{text:e.VpcId,value:e.VpcId}}));var i=r.TotalCount||0;if(n.length>=i)return n;var o=Object(s.k)(i,100),a=[];return c.a.forEach(o,(function(n){a.push(t.getVpcId(e,n))})),Promise.all(a).then((function(e){return c.a.forEach(e,(function(e){n=c.a.concat(n,e)})),n})).catch((function(e){return n}))}))},t.prototype.doRequestV2=function(e,t,n){return void 0===n&&(n={}),p(this,void 0,void 0,(function(){return d(this,(function(r){switch(r.label){case 0:return[4,Object(s.d)(e,t,n,this.secretId,this.instanceSettings.id,this.backendSrv)];case 1:return e=r.sent(),[2,this.backendSrv.datasourceRequest(e).then((function(e){return c.a.get(e,"data",{})})).catch((function(e){throw e}))]}}))}))},t}(o.BaseDatasource);t.default=f},function(e,t,n){"use strict";n.r(t);var r,i=n(39),o=n(3),a=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),c=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.Namespace=i.namespace,o.InstanceAliasList=i.POSTGRESInstanceAliasList,o.InvalidDimensions=i.PostgreInvalidDemensions,o.templateQueryIdMap=i.templateQueryIdMap,o.InstanceReqConfig={service:"postgres",action:"DescribeDBInstances",responseField:"DBInstanceSet"},o.MetricReqConfig={resultFilter:i.modifyDimensons},o}return a(t,e),t}(o.BaseDatasource);t.default=c},function(e,t,n){"use strict";n.r(t);var r,i=n(0),o=n(49),a=n(3),c=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0?"_".concat(r.timeshift):"";return{target:"".concat(e.MetricName," - ").concat(o).concat(a),datapoints:Object(i.map)(t.Values,(function(e){return[e.Value,1e3*e.Timestamp+d]}))}}))})))}))},t}(c.BaseDatasource);t.default=p},function(e,t,n){"use strict";n.r(t);var r,i=n(60),o=n(3),a=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),c=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.Namespace="QCE/TSF",o.InstanceAliasList=i.TSFInstanceAliasList,o.InvalidDimensions=i.TSFInvalidDemensions,o.templateQueryIdMap=i.templateQueryIdMap,o.InstanceReqConfig={service:"tsf",action:"DescribeApplications",responseField:"Content"},o}return a(t,e),t}(o.BaseDatasource);t.default=c},function(e,t,n){"use strict";n.r(t);var r,i=n(23),o=n(3),a=n(0),c=n.n(a),s=n(2),u=n(1),l=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),p=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},d=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,l)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(29);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(30);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(31);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"BWPQueryCtrl",(function(){return a})),n.d(t,"bwpQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(61),a=function(){function e(e,t){e.init=function(){e.BWPFilterFieldsDescriptor=o.BWPFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("bwpQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(32);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"CDBQueryCtrl",(function(){return a})),n.d(t,"cdbQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(42),a=function(){function e(e,t){e.init=function(){e.CDBFieldsDescriptor=o.CDBFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"ZoneIds":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cdb",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cdbQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"CDNQueryCtrl",(function(){return a})),n.d(t,"cdnQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(62),a=function(){function e(e,t){e.init=function(){e.CDNFilterFieldsDescriptor=o.CDNFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cdnQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return l})),n.d(t,"sQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(33),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,p)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(34);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(43);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(55),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n \n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cfsQuery",u)},function(e,t,n){"use strict";n.r(t),n.d(t,"CKAFKAQueryCtrl",(function(){return l})),n.d(t,"scfQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(10),a=n(4),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 主题,消费分组,分区 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n \n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"=",instance:"="},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("ckafkaQuery",p)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return f}));var r=n(6),i=n.n(r),o=n(0),a=n(12),c=n(2),s=n(4),u=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},l=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n\x3c!--Listener维度部分--\x3e\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n');function f(){return{template:d,controller:p,restrict:"E",scope:{target:"=",namespace:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("clbQuery",f)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return a})),n.d(t,"sQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(27),a=function(){function e(e,t){e.init=function(){e.GSEFilterFieldsDescriptor=o.CLSFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n \n
\n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(56);Object(r.default)("cmqQuery",{fieldDescriptor:i.InstanceQueryDescriptor,instanceDocUrl:"https://cloud.tencent.com/document/api/406/42624",namespace:"QCE/CMQ"})},function(e,t,n){"use strict";n.r(t),n.d(t,"CmqTopicQueryCtrl",(function(){return u})),n.d(t,"scfQuery",(function(){return l}));var r=n(6),i=n.n(r),o=n(35),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 主题的ui --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n \n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("cmqTopicQuery",l)},function(e,t,n){"use strict";n.r(t),n.d(t,"InstanceAliasList",(function(){return a})),n.d(t,"GetInstanceQueryParams",(function(){return o}));var r=n(0),i=n.n(r);function o(e){void 0===e&&(e={});var t={};return i.a.isEmpty(e)||(t.Limit=i.a.get(e,"Limit",20)||20,t.Offset=i.a.get(e,"Offset",0)||0,e=i.a.omit(e,["Offset","Limit"]),i.a.forEach(e,(function(e,n){i.a.isArray(e)?(e=i.a.compact(e)).length>0&&(t[n]=i.a.uniq(e)):i.a.isObject(e)?!i.a.isNumber(i.a.get(e,"value",void 0))&&i.a.isEmpty(i.a.get(e,"value",void 0))||(t[n]=i.a.get(e,"value")):!i.a.isNumber(e)&&i.a.isEmpty(e)||(t[n]=e)}))),t}var a=["BucketName"];t.default={region:"",metricName:"",metricUnit:"",period:void 0,dimensionObject:null,instance:"",instanceAlias:"BucketName",queries:{}}},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(36);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"CVMQueryCtrl",(function(){return a})),n.d(t,"cvmQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(57),a=function(){function e(e,t){e.init=function(){e.CVMFilterFieldsDescriptor=o.CVMFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("cvmQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(24);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(44);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(15),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(45);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(46);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(37);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(38);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return s})),n.d(t,"sQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(20),a=n(2),c=[{label:"diskId",field:"diskId"}],s=function(){function e(e,t){e.init=function(){e.ECMBLOCKSTORAGEFilterFieldsDescriptor=o.ECMBLOCKSTORAGEFilterFieldsDescriptor,e.ExtraFields=c,e.namespace=o.namespace},e.getExtraFields=function(){return c.filter((function(t){var n,r;return t.field in(null!==(n=e.dims)&&void 0!==n?n:{})||t.label in(null!==(r=e.dims)&&void 0!==r?r:{})}))},e.getExtraDropdown=function(t,n){var r=t.instance,i=Object(a.f)(e.namespace);r=e.datasource.getServiceFn(i,"getVariable")(r);try{return(r=JSON.parse(r)).DataDisks.map((function(e){return e._InstanceAliasValue=e[o.templateQueryIdMap.diskId],{text:e[o.templateQueryIdMap.diskId],value:JSON.stringify(e)}}))}catch(t){var c={InstanceId:r};return e.datasource.getServiceFn(i,"getDiskList")({payload:c}).map((function(e){return{text:e[o.templateQueryIdMap.diskId],value:JSON.stringify(e)}}))}},e.init()}return e.$inject=["$scope","$rootScope"],e}();function u(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(47);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(14),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t),n.d(t,"LBQueryCtrl",(function(){return a})),n.d(t,"lbQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(63),a=function(){function e(e,t){e.init=function(){e.LBFilterDescriptor=o.LBFilterDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("cvm",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n\n\x3c!--Filters部分--\x3e\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("lbQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"LighthouseQueryCtrl",(function(){return a})),n.d(t,"lighthouseQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(54),a=function(){function e(e,t){e.init=function(){e.LighthouseFilterFieldsDescriptor=o.LighthouseFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"zone":return e.getZones();default:return[]}},e.getZones=function(){return e.region?e.datasource.getZones("lighthouse",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("lighthouseQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"MongoDBQueryCtrl",(function(){return p})),n.d(t,"mongodbQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(0),a=n(48),c=n(2),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onRefresh:"&",onChange:"&"},link:function(e,t,n){e.$watch("target.instance",(function(t,n){var r;null===(r=e.onInstanceChange)||void 0===r||r.call(e,t,n)}))}}}i.a.directive("mongodbQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"MrQueryCtrl",(function(){return u})),n.d(t,"mrQuery",(function(){return l}));var r=n(22),i=n(6),o=n.n(i),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\x3c!-- 主题的ui --\x3e\n
\n
\n
\n \n
\n\n \n \n
\n
\n
\n
\n\n \n',controller:u,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}o.a.directive("mrQuery",l)},function(e,t,n){"use strict";n.r(t),n.d(t,"NatGatewayQueryCtrl",(function(){return a})),n.d(t,"natGatewayQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(64),a=function(){function e(e,t){e.init=function(){e.NATGatewayFilterFieldsDescriptor=o.NATGatewayFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(e){return[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("natGatewayQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"OVCDNQueryCtrl",(function(){return a})),n.d(t,"ovCdnQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(65),a=function(){function e(e,t){e.init=function(){e.OVCDNFilterFieldsDescriptor=o.OVCDNFilterFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}i.a.directive("ovCdnQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"PCXQueryCtrl",(function(){return a})),n.d(t,"pcxQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(58),a=function(){function e(e,t){e.init=function(){e.PCXFieldsDescriptor=o.PCXFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(t){switch(t){case"vpcId":return e.getVpcIds();default:return[]}},e.getVpcIds=function(){return e.region?e.datasource.getVpcIds("pcx",e.region):[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("pcxQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(39);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(49);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisQueryCtrl",(function(){return a})),n.d(t,"redisQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(59),a=function(){function e(e,t){e.init=function(){e.RedisFieldsDescriptor=o.RedisFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.getDropdown=function(e){return[]},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("redisQuery",c)},function(e,t,n){"use strict";n.r(t),n.d(t,"RedisMemQueryCtrl",(function(){return l})),n.d(t,"redisMemQuery",(function(){return p}));var r=n(6),i=n.n(r),o=n(0),a=n(16),c=n(2),s=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},u=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n',controller:l,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("redisMemQuery",p)},function(e,t,n){"use strict";n.r(t),n.d(t,"SCFQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(25),a=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- version部分 --\x3e\n
\n
\n \n
\n \n \n
\n
\n
\n\n \n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&"}}}i.a.directive("scfQuery",u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(28);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(50);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(13),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive(o.queryEditorName,d)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return p})),n.d(t,"sQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(17),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("tdmqRabbitmqQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"TdmqRocketmqQueryCtrl",(function(){return p})),n.d(t,"tdmqRocketmqQuery",(function(){return d}));var r=n(6),i=n.n(r),o=n(18),a=n(2),c=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},s=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n',controller:p,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="},link:function(e,t,n){e.$watch("target.instance",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)})),e.$watch("target.metricName",(function(){var t;null===(t=e.clearExtrasAlias)||void 0===t||t.call(e)}))}}}i.a.directive("tdmqRocketmqQuery",d)},function(e,t,n){"use strict";n.r(t),n.d(t,"QueryCtrl",(function(){return c})),n.d(t,"sQuery",(function(){return s}));var r=n(6),i=n.n(r),o=n(0),a=n(69),c=function(){function e(e,t){e.init=function(){e.TKEFilterFieldsDescriptor=a.TKEFilterFieldsDescriptor},e.onChecked=function(t,n){!0===e.target.queries[t]&&(e.target.queries[n]=!1),e.onChange()},e.addCondition=function(){e.target.conditions.push({Key:"",Operator:"=",Value:""})},e.deleteCondition=function(t){var n=e.target.conditions[t];Object(o.isEmpty)(n.Key)||Object(o.isEmpty)(n.Operator)||Object(o.isEmpty)(n.Value)?e.target.conditions.splice(t,1):(e.target.conditions.splice(t,1),e.onRefresh())},e.getOperator=function(){return Promise.resolve([{text:"=",value:"="},{text:"in",value:"in"}])},e.init()}return e.$inject=["$scope","$rootScope"],e}();function s(){return{template:'\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n \n
\n
\n \n
\n \n \n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n',controller:c,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("tkeQuery",s)},function(e,t,n){"use strict";n.r(t),n.d(t,"TSFQueryCtrl",(function(){return a})),n.d(t,"tsfQuery",(function(){return c}));var r=n(6),i=n.n(r),o=n(60),a=function(){function e(e,t){e.init=function(){e.TSFFieldsDescriptor=o.TSFFieldsDescriptor},e.init()}return e.$inject=["$scope","$rootScope"],e}();function c(){return{template:'\n
\n \n
\n
\n \n \n \n \n \n
\n
\n\n
\n',controller:a,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",onChange:"&"}}}i.a.directive("tsfQuery",c)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(23);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t),n.d(t,"VBCQueryCtrl",(function(){return s})),n.d(t,"scfQuery",(function(){return u}));var r=n(6),i=n.n(r),o=n(51),a=n(2),c=[],s=function(){function e(e,t){e.init=function(){e.VBCFilterFieldsDescriptor=o.VBCFilterFieldsDescriptor,e.namespace=o.namespace},e.getExtraFields=function(){return c.filter((function(t){var n;return t.field in(null!==(n=e.dims)&&void 0!==n?n:{})}))},e.getExtraDropdown=function(t){var n=Object(a.f)(e.namespace);return e.datasource.getFilterDropdown(n,{field:t})},e.init()}return e.$inject=["$scope","$rootScope"],e}();function u(){return{template:'\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\x3c!-- 起始区域 目的区域等 --\x3e\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n',controller:s,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&",onRefresh:"&",dims:"="}}}i.a.directive("vbcQuery",u)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(40);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(52);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(53);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){"use strict";n.r(t);var r=n(7),i=n(41);Object(r.default)(i.queryEditorName,i.queryEditorConfig)},function(e,t,n){var r={".":19,"./":19,"./MonitorDatasource":182,"./MonitorDatasource.ts":182,"./_base/datasource":3,"./_base/datasource.ts":3,"./_base/query":7,"./_base/query.ts":7,"./_base/query_filter":185,"./_base/query_filter.ts":185,"./_base/types":186,"./_base/types.ts":186,"./apigateway/datasource":70,"./apigateway/datasource.ts":70,"./apigateway/query":126,"./apigateway/query.ts":126,"./apigateway/query_def":21,"./apigateway/query_def.ts":21,"./bmIntraLb/datasource":71,"./bmIntraLb/datasource.ts":71,"./bmIntraLb/query":127,"./bmIntraLb/query.ts":127,"./bmIntraLb/query_def":29,"./bmIntraLb/query_def.ts":29,"./bm_lb/datasource":72,"./bm_lb/datasource.ts":72,"./bm_lb/query":128,"./bm_lb/query.ts":128,"./bm_lb/query_def":30,"./bm_lb/query_def.ts":30,"./bm_pcx/datasource":73,"./bm_pcx/datasource.ts":73,"./bm_pcx/query":129,"./bm_pcx/query.ts":129,"./bm_pcx/query_def":31,"./bm_pcx/query_def.ts":31,"./bwp/datasource":74,"./bwp/datasource.ts":74,"./bwp/query":130,"./bwp/query.ts":130,"./bwp/query_def":61,"./bwp/query_def.ts":61,"./cbs/datasource":75,"./cbs/datasource.ts":75,"./cbs/query":131,"./cbs/query.ts":131,"./cbs/query_def":32,"./cbs/query_def.ts":32,"./cdb/datasource":76,"./cdb/datasource.ts":76,"./cdb/query":132,"./cdb/query.ts":132,"./cdb/query_def":42,"./cdb/query_def.ts":42,"./cdn/datasource":77,"./cdn/datasource.ts":77,"./cdn/query":133,"./cdn/query.ts":133,"./cdn/query_def":62,"./cdn/query_def.ts":62,"./cdn_province/datasource":78,"./cdn_province/datasource.ts":78,"./cdn_province/query":134,"./cdn_province/query.ts":134,"./cdn_province/query_def":33,"./cdn_province/query_def.ts":33,"./ceip_summary/datasource":79,"./ceip_summary/datasource.ts":79,"./ceip_summary/query":135,"./ceip_summary/query.ts":135,"./ceip_summary/query_def":34,"./ceip_summary/query_def.ts":34,"./ces/datasource":80,"./ces/datasource.ts":80,"./ces/query":136,"./ces/query.ts":136,"./ces/query_def":43,"./ces/query_def.ts":43,"./cfs/datasource":81,"./cfs/datasource.ts":81,"./cfs/query":137,"./cfs/query.ts":137,"./cfs/query_def":55,"./cfs/query_def.ts":55,"./ckafka/datasource":82,"./ckafka/datasource.ts":82,"./ckafka/query":138,"./ckafka/query.ts":138,"./ckafka/query_def":10,"./ckafka/query_def.ts":10,"./clb/datasource":83,"./clb/datasource.ts":83,"./clb/query":139,"./clb/query.ts":139,"./clb/query_def":12,"./clb/query_def.ts":12,"./cls/datasource":84,"./cls/datasource.ts":84,"./cls/query":140,"./cls/query.ts":140,"./cls/query_def":27,"./cls/query_def.ts":27,"./cmq/datasource":85,"./cmq/datasource.ts":85,"./cmq/query":141,"./cmq/query.ts":141,"./cmq/query_def":56,"./cmq/query_def.ts":56,"./cmq_topic/datasource":86,"./cmq_topic/datasource.ts":86,"./cmq_topic/query":142,"./cmq_topic/query.ts":142,"./cmq_topic/query_def":35,"./cmq_topic/query_def.ts":35,"./cos/datasource":87,"./cos/datasource.ts":87,"./cos/query_def":143,"./cos/query_def.ts":143,"./cpm/datasource":88,"./cpm/datasource.ts":88,"./cpm/query":144,"./cpm/query.ts":144,"./cpm/query_def":36,"./cpm/query_def.ts":36,"./cvm/datasource":89,"./cvm/datasource.ts":89,"./cvm/query":145,"./cvm/query.ts":145,"./cvm/query_def":57,"./cvm/query_def.ts":57,"./cynosdb_mysql/datasource":90,"./cynosdb_mysql/datasource.ts":90,"./cynosdb_mysql/query":146,"./cynosdb_mysql/query.ts":146,"./cynosdb_mysql/query_def":24,"./cynosdb_mysql/query_def.ts":24,"./dc/datasource":91,"./dc/datasource.ts":91,"./dc/query":147,"./dc/query.ts":147,"./dc/query_def":44,"./dc/query_def.ts":44,"./dcdb/datasource":92,"./dcdb/datasource.ts":92,"./dcdb/query":148,"./dcdb/query.ts":148,"./dcdb/query_def":15,"./dcdb/query_def.ts":15,"./dcg/datasource":93,"./dcg/datasource.ts":93,"./dcg/query":149,"./dcg/query.ts":149,"./dcg/query_def":45,"./dcg/query_def.ts":45,"./dcx/datasource":94,"./dcx/datasource.ts":94,"./dcx/query":150,"./dcx/query.ts":150,"./dcx/query_def":46,"./dcx/query_def.ts":46,"./ecdn/datasource":95,"./ecdn/datasource.ts":95,"./ecdn/query":151,"./ecdn/query.ts":151,"./ecdn/query_def":37,"./ecdn/query_def.ts":37,"./ecm/datasource":96,"./ecm/datasource.ts":96,"./ecm/query":152,"./ecm/query.ts":152,"./ecm/query_def":38,"./ecm/query_def.ts":38,"./ecm_block_storage/datasource":97,"./ecm_block_storage/datasource.ts":97,"./ecm_block_storage/query":153,"./ecm_block_storage/query.ts":153,"./ecm_block_storage/query_def":20,"./ecm_block_storage/query_def.ts":20,"./ecm_lb/datasource":98,"./ecm_lb/datasource.ts":98,"./ecm_lb/query":154,"./ecm_lb/query.ts":154,"./ecm_lb/query_def":47,"./ecm_lb/query_def.ts":47,"./gse/datasource":99,"./gse/datasource.ts":99,"./gse/query":155,"./gse/query.ts":155,"./gse/query_def":14,"./gse/query_def.ts":14,"./index":19,"./index.ts":19,"./lb/datasource":100,"./lb/datasource.ts":100,"./lb/query":156,"./lb/query.ts":156,"./lb/query_def":63,"./lb/query_def.ts":63,"./lighthouse/datasource":101,"./lighthouse/datasource.ts":101,"./lighthouse/query":157,"./lighthouse/query.ts":157,"./lighthouse/query_def":54,"./lighthouse/query_def.ts":54,"./mongodb/datasource":102,"./mongodb/datasource.ts":102,"./mongodb/query":158,"./mongodb/query.ts":158,"./mongodb/query_def":48,"./mongodb/query_def.ts":48,"./mr/datasource":103,"./mr/datasource.ts":103,"./mr/query":159,"./mr/query.ts":159,"./mr/query_def":22,"./mr/query_def.ts":22,"./nat_gateway/datasource":104,"./nat_gateway/datasource.ts":104,"./nat_gateway/query":160,"./nat_gateway/query.ts":160,"./nat_gateway/query_def":64,"./nat_gateway/query_def.ts":64,"./ov_cdn/datasource":105,"./ov_cdn/datasource.ts":105,"./ov_cdn/query":161,"./ov_cdn/query.ts":161,"./ov_cdn/query_def":65,"./ov_cdn/query_def.ts":65,"./pcx/datasource":106,"./pcx/datasource.ts":106,"./pcx/query":162,"./pcx/query.ts":162,"./pcx/query_def":58,"./pcx/query_def.ts":58,"./postgresql/datasource":107,"./postgresql/datasource.ts":107,"./postgresql/query":163,"./postgresql/query.ts":163,"./postgresql/query_def":39,"./postgresql/query_def.ts":39,"./qaap/datasource":108,"./qaap/datasource.ts":108,"./qaap/query":164,"./qaap/query.ts":164,"./qaap/query_def":49,"./qaap/query_def.ts":49,"./redis/datasource":109,"./redis/datasource.ts":109,"./redis/query":165,"./redis/query.ts":165,"./redis/query_def":59,"./redis/query_def.ts":59,"./redis_mem/datasource":110,"./redis_mem/datasource.ts":110,"./redis_mem/query":166,"./redis_mem/query.ts":166,"./redis_mem/query_def":16,"./redis_mem/query_def.ts":16,"./scf/datasource":111,"./scf/datasource.ts":111,"./scf/query":167,"./scf/query.ts":167,"./scf/query_def":25,"./scf/query_def.ts":25,"./sqlserver/datasource":112,"./sqlserver/datasource.ts":112,"./sqlserver/query":168,"./sqlserver/query.ts":168,"./sqlserver/query_def":28,"./sqlserver/query_def.ts":28,"./tcaplus/datasource":113,"./tcaplus/datasource.ts":113,"./tcaplus/query":169,"./tcaplus/query.ts":169,"./tcaplus/query_def":50,"./tcaplus/query_def.ts":50,"./tdmq/datasource":114,"./tdmq/datasource.ts":114,"./tdmq/query":170,"./tdmq/query.ts":170,"./tdmq/query_def":13,"./tdmq/query_def.ts":13,"./tdmq_rabbitmq/datasource":115,"./tdmq_rabbitmq/datasource.ts":115,"./tdmq_rabbitmq/query":171,"./tdmq_rabbitmq/query.ts":171,"./tdmq_rabbitmq/query_def":17,"./tdmq_rabbitmq/query_def.ts":17,"./tdmq_rocketmq/datasource":116,"./tdmq_rocketmq/datasource.ts":116,"./tdmq_rocketmq/query":172,"./tdmq_rocketmq/query.ts":172,"./tdmq_rocketmq/query_def":18,"./tdmq_rocketmq/query_def.ts":18,"./tke/datasource":117,"./tke/datasource.ts":117,"./tke/query":173,"./tke/query.ts":173,"./tke/query_def":69,"./tke/query_def.ts":69,"./tsf/datasource":118,"./tsf/datasource.ts":118,"./tsf/query":174,"./tsf/query.ts":174,"./tsf/query_def":60,"./tsf/query_def.ts":60,"./v_clb/datasource":119,"./v_clb/datasource.ts":119,"./v_clb/query":175,"./v_clb/query.ts":175,"./v_clb/query_def":23,"./v_clb/query_def.ts":23,"./vbc/datasource":120,"./vbc/datasource.ts":120,"./vbc/query":176,"./vbc/query.ts":176,"./vbc/query_def":51,"./vbc/query_def.ts":51,"./vpc_net_detect/datasource":121,"./vpc_net_detect/datasource.ts":121,"./vpc_net_detect/query":177,"./vpc_net_detect/query.ts":177,"./vpc_net_detect/query_def":40,"./vpc_net_detect/query_def.ts":40,"./vpngw/datasource":122,"./vpngw/datasource.ts":122,"./vpngw/query":178,"./vpngw/query.ts":178,"./vpngw/query_def":52,"./vpngw/query_def.ts":52,"./vpnx/datasource":123,"./vpnx/datasource.ts":123,"./vpnx/query":179,"./vpnx/query.ts":179,"./vpnx/query_def":53,"./vpnx/query_def.ts":53,"./waf/datasource":124,"./waf/datasource.ts":124,"./waf/query":180,"./waf/query.ts":180,"./waf/query_def":41,"./waf/query_def.ts":41};function i(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=o,e.exports=i,i.id=181},function(e,t,n){"use strict";n.r(t),n.d(t,"TCMonitorDatasource",(function(){return u}));var r=n(0),i=n.n(r),o=n(19),a=n(2),c=n(4),s=n(9),u=function(){function e(e,t,n){var r=this;this.instanceSettings=e,this.backendSrv=t,this.templateSrv=n,i.a.forEach(o.Datasources,(function(e,t){r[t]=new e(r.instanceSettings,r.backendSrv,r.templateSrv)}))}return e.$inject=["instanceSettings","backendSrv","templateSrv"],e.prototype.getNamespaces=function(){var e=this,t=[];return i.a.forEach(o.SERVICES,(function(n){!0===e.instanceSettings.jsonData[n.service]&&t.push(n)})),t},e.prototype.getCascaderNamespaces=function(){var e=this,t=o.SERVICES.filter((function(t){return e.instanceSettings.jsonData[t.service]}));return Object(c.f)(t)},e.prototype.getSelectedServices=function(){var e=this.getNamespaces();return i.a.map(e,(function(e){var t=e.namespace;return Object(a.f)(t)}))},e.prototype.query=function(e){var t=this,n=[],r=this.getSelectedServices();return i.a.forEach(r,(function(r){var o=i.a.cloneDeep(e),a=i.a.filter(o.targets,(function(e){return e.service===r}));if(o.targets=a,o.targets.length>0){var c=t["".concat(i.a.toUpper(r),"Datasource")].query(o);c&&n.push(c)}})),0===n.length?Promise.resolve({data:[],state:s.LoadingState.Done}):Promise.all(n).then((function(e){return{data:i.a.flatten(e),state:s.LoadingState.Done}}))},e.prototype.metricFindQuery=function(e,t){var n=Object(a.h)(e),r=Object(a.f)(n.namespace||"");if(i.a.isEmpty(n)||!n.namespace||!n.action||!r)return Promise.resolve([]);if(this["".concat(i.a.toUpper(r),"Datasource")].metricFindQuery){var o=this["".concat(i.a.toUpper(r),"Datasource")].metricFindQuery(n,i.a.get(t,"variable.regex",void 0));if(o)return o}return Promise.resolve([])},e.prototype.getRegions=function(e){return this["".concat(i.a.toUpper(e),"Datasource")].getRegions?this["".concat(i.a.toUpper(e),"Datasource")].getRegions():[]},e.prototype.getMetrics=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getMetrics(t)},e.prototype.getZones=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getZones?this["".concat(i.a.toUpper(e),"Datasource")].getZones(t):[]},e.prototype.getFilterDropdown=function(e,t){return this["".concat(i.a.toUpper(e),"Datasource")].getFilterDropdown?this["".concat(i.a.toUpper(e),"Datasource")].getFilterDropdown(t):[]},e.prototype.getInstances=function(e,t,n){return this["".concat(i.a.toUpper(e),"Datasource")].getInstances(t,n)},e.prototype.getListeners=function(e,t,n){return this["".concat(i.a.toUpper(e),"Datasource")].getListeners?this["".concat(i.a.toUpper(e),"Datasource")].getListeners(t,n):[]},e.prototype.getVpcIds=function(e,t){if(this["".concat(i.a.toUpper(e),"Datasource")].getVpcIds)return this["".concat(i.a.toUpper(e),"Datasource")].getVpcIds(t)},e.prototype.testDatasource=function(){var e=this,t=[],n=this.getSelectedServices();return i.a.forEach(n,(function(n){t.push(e["".concat(i.a.toUpper(n),"Datasource")].testDatasource())})),0===t.length?Promise.resolve(null):Promise.all(t).then((function(e){var t="success",n="DataSource Connection OK",r=i.a.reduce(e,(function(e,t){return"error"===t.status&&(""===e&&(e+="Oops! Found an error in: "),e+="".concat(t.service,": ").concat(t.message,"; \n")),e}),"");return r&&(t="error",n=r),{status:t,message:n,title:i.a.upperFirst(t)}}))},e.prototype.getServiceFn=function(e,t){var n=this;return function(){for(var r,o=[],a=0;a=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122?n+=t.charAt(r):o<128?n+=i[o]:o<2048?n+=i[192|o>>6]+i[128|63&o]:o<55296||o>=57344?n+=i[224|o>>12]+i[128|o>>6&63]+i[128|63&o]:(r+=1,o=65536+((1023&o)<<10|1023&t.charCodeAt(r)),n+=i[240|o>>18]+i[128|o>>12&63]+i[128|o>>6&63]+i[128|63&o])}return n},isBuffer:function(e){return null!=e&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},merge:function e(t,n,i){if(!n)return t;if("object"!=typeof n){if(Array.isArray(t))t.push(n);else{if("object"!=typeof t)return[t,n];(i.plainObjects||i.allowPrototypes||!r.call(Object.prototype,n))&&(t[n]=!0)}return t}if("object"!=typeof t)return[t].concat(n);var a=t;return Array.isArray(t)&&!Array.isArray(n)&&(a=o(t,i)),Array.isArray(t)&&Array.isArray(n)?(n.forEach((function(n,o){r.call(t,o)?t[o]&&"object"==typeof t[o]?t[o]=e(t[o],n,i):t.push(n):t[o]=n})),t):Object.keys(n).reduce((function(t,o){var a=n[o];return r.call(t,o)?t[o]=e(t[o],a,i):t[o]=a,t}),a)}}},function(e,t,n){"use strict";var r=String.prototype.replace,i=/%20/g;e.exports={default:"RFC3986",formatters:{RFC1738:function(e){return r.call(e,i,"+")},RFC3986:function(e){return e}},RFC1738:"RFC1738",RFC3986:"RFC3986"}},function(e,t,n){"use strict";n.r(t),n.d(t,"queryDDO",(function(){return a}));var r=n(6),i=n.n(r),o=function(){function e(t,n){Object.assign(t,e._config),t.onChecked=function(e,n){!0===t.target.queries[e]&&(t.target.queries[n]=!1),t.onChange()},t.init()}return e.$inject=["$scope","$rootScope"],e}();function a(){return{template:'\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n',controller:o,restrict:"E",scope:{target:"=",showDetail:"=",region:"=",datasource:"=",getDropdownOptions:"&",onChange:"&"}}}t.default=function(e,t){o._config=t,i.a.directive(e,a)}},function(e,t,n){"use strict";n.r(t)},function(e,t,n){"use strict";var r=n(189),i=n(190),o=n(184);e.exports={formats:o,parse:i,stringify:r}},function(e){e.exports=JSON.parse('{"type":"datasource","name":"Tencent Cloud Monitoring","id":"tencentcloud-monitor-datasource","backend":true,"alerting":true,"logs":true,"metrics":true,"annotations":false,"executable":"tencentcloud-monitor-app-backend","queryOptions":{"maxDataPoints":true},"routes":[{"path":"cls-internal","url":"https://cls.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"region-internal","url":"https://region.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"api-internal","url":"https://api.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cmq-internal","url":"https://cmq.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shanghai-internal","url":"https://cmq.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shenzhen-internal","url":"https://cmq.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"emr-internal","url":"https://emr.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shanghai-internal","url":"https://emr.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shenzhen-internal","url":"https://emr.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"scf-internal","url":"https://scf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shanghai-internal","url":"https://scf.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shenzhen-internal","url":"https://scf.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cfs-internal","url":"https://cfs.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shanghai-internal","url":"https://cfs.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shenzhen-internal","url":"https://cfs.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ckafka-internal","url":"https://ckafka.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shanghai-internal","url":"https://ckafka.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shenzhen-internal","url":"https://ckafka.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"clb-internal","url":"https://clb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shanghai-internal","url":"https://clb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shenzhen-internal","url":"https://clb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"mongodb-internal","url":"https://mongodb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shanghai-internal","url":"https://mongodb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shenzhen-internal","url":"https://mongodb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"vpc-internal","url":"https://vpc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shanghai-internal","url":"https://vpc.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shenzhen-internal","url":"https://vpc.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"pcx-internal","url":"https://vpc.api.qcloud.com.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/x-www-form-urlencoded"}]},{"path":"cvm-internal","url":"https://cvm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shanghai-internal","url":"https://cvm.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shenzhen-internal","url":"https://cvm.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"monitor-internal","url":"https://monitor.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shanghai-internal","url":"https://monitor.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shenzhen-internal","url":"https://monitor.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdb-internal","url":"https://cdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shanghai-internal","url":"https://cdb.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shenzhen-internal","url":"https://cdb.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"postgres-internal","url":"https://postgres.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shanghai-internal","url":"https://postgres.ap-shanghai-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shenzhen-internal","url":"https://postgres.ap-shenzhen-fsi.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdn-internal","url":"https://cdn.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"redis-internal","url":"https://redis.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dcdb-internal","url":"https://dcdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dc-internal","url":"https://dc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cynosdb-internal","url":"https://cynosdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"sqlserver-internal","url":"https://sqlserver.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmeip-internal","url":"https://bmeip.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmvpc-internal","url":"https://bmvpc.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmlb-internal","url":"https://bmlb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bm-internal","url":"https://bm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"es-internal","url":"https://es.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cbs-internal","url":"https://cbs.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tcaplusdb-internal","url":"https://tcaplusdb.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"apigateway-internal","url":"https://apigateway.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tdmq-internal","url":"https://tdmq.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gaap-internal","url":"https://gaap.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecm-internal","url":"https://ecm.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gse-internal","url":"https://gse.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"lighthouse-internal","url":"https://lighthouse.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tsf-internal","url":"https://tsf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"rum-internal","url":"https://rum.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tke-internal","url":"https://tke.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecdn-internal","url":"https://ecdn.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"waf-internal","url":"https://waf.internal.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"apigateway","url":"https://apigateway.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"api","url":"https://api.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cmq","url":"https://cmq.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shanghai","url":"https://cmq.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cmq/shenzhen","url":"https://cmq.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"emr","url":"https://emr.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shanghai","url":"https://emr.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/emr/shenzhen","url":"https://emr.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"scf","url":"https://scf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shanghai","url":"https://scf.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/scf/shenzhen","url":"https://scf.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cfs","url":"https://cfs.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shanghai","url":"https://cfs.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cfs/shenzhen","url":"https://cfs.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ckafka","url":"https://ckafka.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shanghai","url":"https://ckafka.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/ckafka/shenzhen","url":"https://ckafka.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"clb","url":"https://clb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shanghai","url":"https://clb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/clb/shenzhen","url":"https://clb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"mongodb","url":"https://mongodb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shanghai","url":"https://mongodb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/mongodb/shenzhen","url":"https://mongodb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"vpc","url":"https://vpc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shanghai","url":"https://vpc.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/vpc/shenzhen","url":"https://vpc.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"pcx","url":"https://vpc.api.qcloud.com","headers":[{"name":"Content-Type","content":"application/x-www-form-urlencoded"}]},{"path":"cvm","url":"https://cvm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shanghai","url":"https://cvm.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cvm/shenzhen","url":"https://cvm.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"monitor","url":"https://monitor.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shanghai","url":"https://monitor.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/monitor/shenzhen","url":"https://monitor.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdb","url":"https://cdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shanghai","url":"https://cdb.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cdb/shenzhen","url":"https://cdb.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"postgres","url":"https://postgres.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shanghai","url":"https://postgres.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/postgres/shenzhen","url":"https://postgres.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cdn","url":"https://cdn.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"redis","url":"https://redis.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dcdb","url":"https://dcdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"dc","url":"https://dc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cynosdb","url":"https://cynosdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"sqlserver","url":"https://sqlserver.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmeip","url":"https://bmeip.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmvpc","url":"https://bmvpc.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bmlb","url":"https://bmlb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"bm","url":"https://bm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"es","url":"https://es.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cbs","url":"https://cbs.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tcaplusdb","url":"https://tcaplusdb.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tdmq","url":"https://tdmq.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gaap","url":"https://gaap.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecm","url":"https://ecm.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"gse","url":"https://gse.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"cls","url":"https://cls.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cls/shanghai","url":"https://cls.ap-shanghai-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"fsi/cls/shenzhen","url":"https://cls.ap-shenzhen-fsi.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"region","url":"https://region.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"lighthouse","url":"https://lighthouse.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tsf","url":"https://tsf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"rum","url":"https://rum.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"tke","url":"https://tke.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"ecdn","url":"https://ecdn.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]},{"path":"waf","url":"https://waf.tencentcloudapi.com","headers":[{"name":"Content-Type","content":"application/json"}]}],"info":{"author":{"name":"Tencent Cloud"},"logos":{"small":"img/tencent-cloud.svg","large":"img/tencent-cloud.svg"},"description":"Data source for Tencent Cloud monitoring service"}}')},function(e,t,n){"use strict";var r=n(183),i=n(184),o={brackets:function(e){return e+"[]"},indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},a=Date.prototype.toISOString,c={delimiter:"&",encode:!0,encoder:r.encode,encodeValuesOnly:!1,serializeDate:function(e){return a.call(e)},skipNulls:!1,strictNullHandling:!1},s=function e(t,n,i,o,a,s,u,l,p,d,f,m){var h=t;if("function"==typeof u)h=u(n,h);else if(h instanceof Date)h=d(h);else if(null===h){if(o)return s&&!m?s(n,c.encoder):n;h=""}if("string"==typeof h||"number"==typeof h||"boolean"==typeof h||r.isBuffer(h))return s?[f(m?n:s(n,c.encoder))+"="+f(s(h,c.encoder))]:[f(n)+"="+f(String(h))];var y,g=[];if(void 0===h)return g;if(Array.isArray(u))y=u;else{var v=Object.keys(h);y=l?v.sort(l):v}for(var b=0;b0?S+x:""}},function(e,t,n){"use strict";var r=n(183),i=Object.prototype.hasOwnProperty,o={allowDots:!1,allowPrototypes:!1,arrayLimit:20,decoder:r.decode,delimiter:"&",depth:5,parameterLimit:1e3,plainObjects:!1,strictNullHandling:!1},a=function(e,t,n){if(e){var r=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,a=/(\[[^[\]]*])/.exec(r),c=a?r.slice(0,a.index):r,s=[];if(c){if(!n.plainObjects&&i.call(Object.prototype,c)&&!n.allowPrototypes)return;s.push(c)}for(var u=0;null!==(a=o.exec(r))&&u=0;--i){var o,a=e[i];if("[]"===a)o=(o=[]).concat(r);else{o=n.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,s=parseInt(c,10);!isNaN(s)&&a!==c&&String(s)===c&&s>=0&&n.parseArrays&&s<=n.arrayLimit?(o=[])[s]=r:o[c]=r}r=o}return r}(s,t,n)}};e.exports=function(e,t){var n=t?r.assign({},t):{};if(null!==n.decoder&&void 0!==n.decoder&&"function"!=typeof n.decoder)throw new TypeError("Decoder has to be a function.");if(n.ignoreQueryPrefix=!0===n.ignoreQueryPrefix,n.delimiter="string"==typeof n.delimiter||r.isRegExp(n.delimiter)?n.delimiter:o.delimiter,n.depth="number"==typeof n.depth?n.depth:o.depth,n.arrayLimit="number"==typeof n.arrayLimit?n.arrayLimit:o.arrayLimit,n.parseArrays=!1!==n.parseArrays,n.decoder="function"==typeof n.decoder?n.decoder:o.decoder,n.allowDots="boolean"==typeof n.allowDots?n.allowDots:o.allowDots,n.plainObjects="boolean"==typeof n.plainObjects?n.plainObjects:o.plainObjects,n.allowPrototypes="boolean"==typeof n.allowPrototypes?n.allowPrototypes:o.allowPrototypes,n.parameterLimit="number"==typeof n.parameterLimit?n.parameterLimit:o.parameterLimit,n.strictNullHandling="boolean"==typeof n.strictNullHandling?n.strictNullHandling:o.strictNullHandling,""===e||null==e)return n.plainObjects?Object.create(null):{};for(var c="string"==typeof e?function(e,t){for(var n={},r=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,a=t.parameterLimit===1/0?void 0:t.parameterLimit,c=r.split(t.delimiter,a),s=0;s\n
\n
\n \n
\n \n\n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n \n
\n
\n\n
\n
\n \n
\n \n
\n
\n ({{ctrl.getTimeDesc()}})\n
\n\n
\n
\n \n \n
\n
\n\n
\n
\n \n
\n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \x3c!-- this is explain how much items will display to user --\x3e\n \n
\n
\n\n'},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,i="~";function o(){}function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function c(e,t,n,r,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var c=new a(n,r||e,o),s=i?i+t:t;return e._events[s]?e._events[s].fn?e._events[s]=[e._events[s],c]:e._events[s].push(c):(e._events[s]=c,e._eventsCount++),e}function s(e,t){0==--e._eventsCount?e._events=new o:delete e._events[t]}function u(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),(new o).__proto__||(i=!1)),u.prototype.eventNames=function(){var e,t,n=[];if(0===this._eventsCount)return n;for(t in e=this._events)r.call(e,t)&&n.push(i?t.slice(1):t);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},u.prototype.listeners=function(e){var t=i?i+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,o=n.length,a=new Array(o);ra{margin-left:10px}.tc-switch{border-left:1px solid #262628;margin-bottom:0 !important}.tc-condition-block{margin-right:10px;display:inline-block}.tc-condition-block .tc-condition-input{border-radius:0}.tc-condition-block .tc-condition-minus{vertical-align:top;border-radius:0 3px 3px 0}.tc-condition-block .tc-condition-dropdown{display:inline-block}.tc-condition-block>input{display:inline-block;margin-right:0}.tc-condition-block>label{display:inline-block}.tc-condition-add{display:inline-block;vertical-align:top}.tc-condition-add>label{border-radius:3px}.filtered-color{color:#ff851b}.secret-tips{position:absolute;right:-25px;border-radius:2px;background:#1b1b1b;padding:10px;top:-35px;width:300px;border:1px solid #2c3235}.secret-tips-tri{position:absolute;width:15px;height:15px;left:-8px;top:60px;background:#1b1b1b;border:1px solid #2c3235;border-top:0;border-right:0;transform:rotate(45deg)}.rc-cascader-menu-item{min-width:160px;font-size:14px}","",{version:3,sources:["query_editor.css"],names:[],mappings:"AAAA,eAAe,cAAc,CAAC,iBAAiB,CAAC,+BAA+B,eAAe,CAAC,8CAA8C,iBAAiB,CAAC,8BAA8B,iBAAiB,CAAC,gCAAgC,gBAAgB,CAAC,WAAW,6BAA6B,CAAC,0BAA0B,CAAC,oBAAoB,iBAAiB,CAAC,oBAAoB,CAAC,wCAAwC,eAAe,CAAC,wCAAwC,kBAAkB,CAAC,yBAAyB,CAAC,2CAA2C,oBAAoB,CAAC,0BAA0B,oBAAoB,CAAC,cAAc,CAAC,0BAA0B,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAkB,CAAC,wBAAwB,iBAAiB,CAAC,gBAAgB,aAAa,CAAC,aAAa,iBAAiB,CAAC,WAAW,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,wBAAwB,CAAC,iBAAiB,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,YAAY,CAAC,cAAc,CAAC,uBAAuB,CAAC,uBAAuB,eAAe,CAAC,cAAc",file:"query_editor.css",sourcesContent:[".tc-sub-params{margin-top:4px;margin-left:125px}.tc-sub-params .gf-form-inline{min-height:42px}.tc-sub-params .gf-form-inline .gf-form-label{margin-bottom:2px}.tc-sub-params .tc-info-label{margin-bottom:6px}.tc-sub-params .tc-info-label>a{margin-left:10px}.tc-switch{border-left:1px solid #262628;margin-bottom:0 !important}.tc-condition-block{margin-right:10px;display:inline-block}.tc-condition-block .tc-condition-input{border-radius:0}.tc-condition-block .tc-condition-minus{vertical-align:top;border-radius:0 3px 3px 0}.tc-condition-block .tc-condition-dropdown{display:inline-block}.tc-condition-block>input{display:inline-block;margin-right:0}.tc-condition-block>label{display:inline-block}.tc-condition-add{display:inline-block;vertical-align:top}.tc-condition-add>label{border-radius:3px}.filtered-color{color:#ff851b}.secret-tips{position:absolute;right:-25px;border-radius:2px;background:#1b1b1b;padding:10px;top:-35px;width:300px;border:1px solid #2c3235}.secret-tips-tri{position:absolute;width:15px;height:15px;left:-8px;top:60px;background:#1b1b1b;border:1px solid #2c3235;border-top:0;border-right:0;transform:rotate(45deg)}.rc-cascader-menu-item{min-width:160px;font-size:14px}"]}]),e.exports=t},function(e,t,n){var r=n(198),i=n(208);"string"==typeof(i=i.__esModule?i.default:i)&&(i=[[e.i,i,""]]);var o={insert:"head",singleton:!1},a=(r(i,o),i.locals?i.locals:{});e.exports=a},function(e,t,n){(t=n(199)(!0)).push([e.i,".log-service-monospaced-font-family {\n font-family: RobotoMono-Regular, monospace, Roboto, sans-serif;\n}\n.log-service-monospaced-font-family button,\n.log-service-monospaced-font-family input,\n.log-service-monospaced-font-family select,\n.log-service-monospaced-font-family textarea {\n font-family: RobotoMono-Regular, monospace, Roboto, sans-serif;\n}\n","",{version:3,sources:["index.less"],names:[],mappings:"AAAA;EACE,8DAA8D;AAChE;AACA;;;;EAIE,8DAA8D;AAChE",file:"index.less",sourcesContent:[".log-service-monospaced-font-family {\n font-family: RobotoMono-Regular, monospace, Roboto, sans-serif;\n}\n.log-service-monospaced-font-family button,\n.log-service-monospaced-font-family input,\n.log-service-monospaced-font-family select,\n.log-service-monospaced-font-family textarea {\n font-family: RobotoMono-Regular, monospace, Roboto, sans-serif;\n}\n"]}]),e.exports=t},function(e,t,n){"use strict";n.r(t);var r=n(9),i=n(5),o=n.n(i),a=n(200),c=n(0),s=n.n(c),u=n(2),l=n(19),p=n(6),d=n.n(p),f=n(192),m=n.n(f),h=function(){function e(e,t){e.init=function(){e.type=e.type||"input",e.placeholder=Object(f.isDefined)(e.placeholder)?e.placeholder:"",e.value=Object(f.isDefined)(e.value)?e.value:[],e.maxCond=s.a.toInteger(e.maxCond)>0?s.a.toInteger(e.maxCond):-1},e.onInputBlur=function(){e.onChangeInternal()},e.deleteCondition=function(t){e.value.splice(t,1),e.onChangeInternal()},e.addCondition=function(t){e.value.push(t),e.onChangeInternal()},e.onChangeInternal=function(){e.onChange({value:e.value})},e.onSelectChange=function(t){e.onChange({value:t})},e.getSelectedOptions=function(){var t=s.a.filter(e.options,(function(t){return-1!==s.a.get(e.value,"value",[]).indexOf(t.value)}));return t.length>0?s.a.map(t,(function(e){return"".concat(e.text,": ").concat(e.value)})).join("; "):void 0},e.init()}return e.$inject=["$scope","$rootScope"],e}();d.a.directive("multiCondition",(function(){return{template:'\n
\n
\n \n \n
\n
\n \n
\n
\n\n
\n
\n \n \n
\n
\n \n
\n
\n\n
\n \n \n
\n\n
\n
\n
\n \n \n
\n \n
\n
\n \n
\n
\n\n\x3c!--
\n \n \n
--\x3e\n',controller:h,restrict:"E",scope:{type:"=",value:"=",maxCond:"=?",placeholder:"=?",options:"=?",maxNum:"=?",minNum:"=?",multiple:"=?",onChange:"&",getOptions:"&"}}})),g.$inject=["$compile","$window","$timeout","$rootScope"];var y=function(){function e(){}return e.prototype.show=function(){var e=this;this.oldVariableText=s.a.get(this.value,"text",""),this.highlightIndex=-1,this.selectOptions=s.a.cloneDeep(this.options),s.a.map(this.selectOptions,(function(t){var n=s.a.get(e.value,"value");n?s.a.isArray(n)?t.selected=-1!==s.a.indexOf(n,t.value):t.selected=n===t.value:t.selected=!1})),this.selectedValues=s.a.filter(this.selectOptions,{selected:!0}),this.search={query:"",options:this.selectOptions.slice(0,Math.min(this.selectOptions.length,1e3))},this.dropdownVisible=!0},e.prototype.updateLinkText=function(){this.linkText=s.a.get(this.value,"text","")},e.prototype.clearSelections=function(){s.a.each(this.selectOptions,(function(e){e.selected=!1})),this.selectionsChanged(!1)},e.prototype.keyDown=function(e){27===e.keyCode&&this.hide(),40===e.keyCode&&this.moveHighlight(1),38===e.keyCode&&this.moveHighlight(-1),13===e.keyCode&&(0===this.search.options.length?this.commitChanges():this.selectValue(this.search.options[this.highlightIndex],{},!0,!1)),32===e.keyCode&&this.selectValue(this.search.options[this.highlightIndex],{},!1,!1)},e.prototype.moveHighlight=function(e){this.highlightIndex=(this.highlightIndex+e)%this.search.options.length},e.prototype.selectValue=function(e,t,n,r){var i=this;if(e){e.selected=!this.multiple||!e.selected,r=r||!1;var o=function(t){s.a.each(i.selectOptions,(function(n){e!==n&&(n.selected=t)}))};(n=n||!1)&&(e.selected=!0),r?(o(!1),n=!0):this.multiple?(t.ctrlKey||t.metaKey||t.shiftKey)&&(n=!0,o(!1)):(o(!1),n=!0),this.selectionsChanged(n)}},e.prototype.selectionsChanged=function(e){this.selectedValues=s.a.filter(this.selectOptions,{selected:!0}),this.value.value=s.a.map(this.selectedValues,"value"),this.value.text=s.a.map(this.selectedValues,"text").join(" + "),this.multiple||(this.value.value=s.a.get(this.selectedValues,"0.value","")),e&&this.commitChanges()},e.prototype.commitChanges=function(){this.dropdownVisible=!1,this.updateLinkText(),this.value.text!==this.oldVariableText&&this.onChange({value:this.value})},e.prototype.queryChanged=function(){var e=this;this.highlightIndex=-1,this.search.options=s.a.filter(this.selectOptions,(function(t){return-1!==t.text.toLowerCase().indexOf(e.search.query.toLowerCase())})),this.search.options=this.search.options.slice(0,Math.min(this.search.options.length,1e3))},e.prototype.init=function(){s.a.isEmpty(this.value)&&(this.value={text:"",value:this.multiple?[]:""}),this.updateLinkText()},e}();function g(e,t,n,r){return{restrict:"E",scope:{options:"=",multiple:"=",value:"=",onChange:"&"},template:'\n\n',controller:"CustomSelectDropdownCtrl",controllerAs:"vm",bindToController:!0,link:function(e,r){var i=m.a.element(t.document.body),o=r.find(".variable-value-link"),a=r.find("input");function c(t){0===r.has(t.target).length&&e.$apply((function(){e.vm.commitChanges()}))}e.$watch("vm.dropdownVisible",(function(e){e?(a.css("width",Math.max(o.width(),136)+"px"),a.show(),o.hide(),a.focus(),n((function(){i.on("click",c)}),0,!1)):(a.hide(),o.show(),i.off("click",c))})),e.vm.init()}}}d.a.controller("CustomSelectDropdownCtrl",y),d.a.directive("customSelectDropdown",g);var v,b,I,D=n(11),w=n(201),k=n.n(w);v=D.Cascader,b="gfCascader",I={separator:"@?",placeholder:"@?",options:"<",changeOnSelect:"'),controller:(e=v,function(){function t(e,t){this._$scope=e,this._$element=t}return t.$inject=["$scope","$element"],t.prototype.$onInit=function(){var t=this,n=Object.entries(this._$scope).reduce((function(e,t){var n=t[0],r=t[1];return n.startsWith("$")||(e[n]="function"==typeof r?function(){for(var e=[],t=0;t")}));return e+'\n
\n
{{ctrl.lastQueryError}}
\n
\n '}(),A=n(1),j=(C=function(e,t){return(C=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}C(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),q=function(){return(q=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(d.target.namespace=null!==(c=null!==(i=d.target.namespace)&&void 0!==i?i:null===(a=null===(o=d.cascaderOptions[0])||void 0===o?void 0:o.items)||void 0===a?void 0:a[0].value)&&void 0!==c?c:d.cascaderOptions[0].value,d.target.service=Object(u.f)(d.target.namespace)||""),d.hideRegion=!!(null===(p=l.SERVICES.find((function(e){return e.service===d.target.service})))||void 0===p?void 0:p.hideRegion),s.a.defaultsDeep(d.target,d.defaults),d.instanceAliasList=d.getInstanceAliasList(d.target.service),d.panelCtrl.events.on("data-received",d.onDataReceived.bind(d),t),d.panelCtrl.events.on("data-error",d.onDataError.bind(d),t),d}return t.$inject=["$scope","$injector","templateSrv"],j(t,e),Object.defineProperty(t.prototype,"sortedPeriodList",{get:function(){return this.periodList.sort((function(e,t){return e-t}))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isCascader",{get:function(){return this.cascaderOptions.length>1},enumerable:!1,configurable:!0}),t.prototype.cascaderChange=function(e){this.target.namespace=e,this.onNamespaceChange()},t.prototype.onDataReceived=function(e){this.lastQueryError=void 0,this.lastQuery="";var t=s.a.find(e,{refId:this.target.refId});t&&(this.lastQuery=t.query)},t.prototype.onDataError=function(e){this.handleQueryCtrlError(e)},t.prototype.handleQueryCtrlError=function(e){var t;s.a.get(e,"query.refId")===this.target.refId&&(s.a.get(e,"error.data.error.innererror",void 0)?s.a.get(e,"error.data.error.innererror.innererror",void 0)?this.lastQueryError=s.a.get(e,"error.data.error.innererror.innererror.message"):this.lastQueryError=s.a.get(e,"error.data.error.innererror.message"):s.a.get(e,"error.data.error",void 0)?this.lastQueryError=s.a.get(e,"error.data.error.message"):s.a.get(e,"error.data",void 0)?this.lastQueryError=s.a.get(e,"error.data.message"):s.a.get(e,"data.error",void 0)?this.lastQueryError=s.a.get(e,"data.error.message"):(null===(t=e.data)||void 0===t?void 0:t.message)||(s.a.get(e,"data.message",void 0)?this.lastQueryError=s.a.get(e,"data.message"):this.lastQueryError=e))},t.prototype.getInstanceAliasList=function(e){return e?s.a.map(l.InstanceAliasList["".concat(s.a.toUpper(e),"InstanceAliasList")]||[],(function(e){return{text:"As ".concat(e),value:e}})):[]},t.prototype.getNamespaces=function(e){return s.a.map(this.namespaces,(function(e){return{text:e.label,value:e.namespace}}))},t.prototype.onNamespaceChange=function(){var e,t=Object(u.f)(this.target.namespace)||"";this.hideRegion=!!(null===(e=l.SERVICES.find((function(e){return e.service===t})))||void 0===e?void 0:e.hideRegion),this.regions=[],this.metricList=[],this.periodList=[],this.dimensionList=[],this.instanceList=[];var n=l.InitServiceState[t];this.target[t]=s.a.cloneDeep(n),this.target.service=t,this.instanceAliasList=this.getInstanceAliasList(t),this.refresh(),this.isCascader&&this.$scope.$apply()},t.prototype.getRegions=function(e){var t=this,n=this.target.service;return!n||s.a.startsWith("$")?[]:this.regions.length?this.regions:this.datasource.getRegions(n).then((function(e){return t.regions=e,e})).catch(this.handleQueryCtrlError.bind(this))},t.prototype.onRegionChange=function(){var e=this,t=this.target.service;this.target[t].instance="",this.instanceList=[],this.isMetricsNeedUpdate=!0,s.a.forEach(this.target[t].dimensionObject,(function(n,r){e.target[t].dimensionObject[r]={Name:r,Value:""}})),this.target[t].queries=s.a.cloneDeep(l.InitServiceState[t].queries),this.getInstances(),this.refresh()},t.prototype.getVariable=function(e,t){return Object(u.j)(this.templateSrv,this.panelCtrl.panel.scopedVars,e,t)},t.prototype.getMetricNameDesc=function(){var e=this,t=this.target.service,n=s.a.findIndex(this.metricList,(function(n){return n.MetricName===e.target[t].metricName}));return-1===n?"":Object(A.b)()===A.a.Chinese?this.metricList[n].Meaning.Zh:this.metricList[n].Meaning.En},t.prototype.getMetrics=function(e){var t=this,n=this.target.service,r=this.getVariable(s.a.get(this.target[n],"region",""),!1);return n&&r?!this.isMetricsNeedUpdate&&this.metricList.length>0?s.a.map(this.metricList,(function(e){return{text:e.MetricName,value:e.MetricName}})):this.datasource.getMetrics(n,r).then((function(e){t.metricList=e,t.isMetricsNeedUpdate=!1;var r=s.a.findIndex(t.metricList,(function(e){return e.MetricName===t.target[n].metricName}));return-1!==r&&(t.periodList=s.a.get(t.metricList[r],"Period",[]),t.dimensionList=s.a.get(t.metricList[r],"Dimensions.0.Dimensions",[])),s.a.map(e,(function(e){return{text:e.MetricName,value:e.MetricName}}))})).catch(this.handleQueryCtrlError.bind(this)):[]},t.prototype.onMetricChange=function(){var e=this,t=this.target.service,n=[],r=[],i={},o="",a=s.a.findIndex(this.metricList,(function(n){return n.MetricName===e.target[t].metricName}));-1!==a&&(n=s.a.get(this.metricList[a],"Period",[]),r=s.a.get(this.metricList[a],"Dimensions.0.Dimensions",[]),o=s.a.get(this.metricList[a],"Unit","")),s.a.forEach(r,(function(e){i[e]={Name:e,Value:""}})),this.periodList=n,this.dimensionList=r,this.target[t].period=n.length>0?-1===s.a.indexOf(n,300)?n[0]:300:void 0,this.target[t].dimensionObject=i,this.target[t].metricUnit=o,this.refresh()},t.prototype.getInstances=function(){var e=this,t=this.target.service,n=this.getVariable(s.a.get(this.target[t],"region",""),!1);if(!t||!n)return[];var r=this.getInstanceQueryParams(t);return this.datasource.getInstances(t,n,r).then((function(n){e.instanceList=n;var r=e.target[t].instanceAlias,i=[];return s.a.forEach(n,(function(e){var t=s.a.get(e,r);t&&("string"==typeof t?(e._InstanceAliasValue=t,i.push({text:t,value:JSON.stringify(e)})):s.a.isArray(t)&&s.a.forEach(t,(function(t){e._InstanceAliasValue=t,i.push({text:t,value:JSON.stringify(e)})})))})),i})).catch(this.handleQueryCtrlError.bind(this))},t.prototype.onInstanceChange=function(e){this.refresh()},t.prototype.getInstanceQueryParams=function(e){var t=this.target[e].queries;return l.GetInstanceQueryParams["".concat(s.a.toUpper(e),"GetInstanceQueryParams")]?l.GetInstanceQueryParams["".concat(s.a.toUpper(e),"GetInstanceQueryParams")](t):{}},t.prototype.onInstanceAliasChange=function(){if(!this.isVariable("instance")){var e=this.target.service;this.target[e].instance="",this.refresh()}},t.prototype.onInstanceQueryChange=function(){var e=this;if(!this.isVariable("instance")){var t=this.target.service;this.target[t].instance="",this.instanceList=[],s.a.forEach(this.target[t].dimensionObject,(function(n,r){e.target[t].dimensionObject[r]={Name:r,Value:""}})),this.refresh()}},t.prototype.isVariable=function(e){var t,n=this.target.service,r=null===(t=this.target[n])||void 0===t?void 0:t[e];return Object(u.m)(r)},t.prototype.checkShowDetail=function(e){return!this.isVariable(e)&&this.target.showInstanceDetails},t.prototype.getTimeDesc=function(){return"".concat(Object(A.d)("time_unit"),": ").concat(Object(A.d)("seconds"))},t.prototype.getSearchDesc=function(){return Object(A.d)("search_description")},t.template=N,t}(a.QueryCtrl),M=n(26),L=n(203),P=n.n(L),F=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.angularScope=null,t.angularQueryEditor=null,t.events=new P.a,t.renderAngularQueryEditor=function(){if(t.element){t.angularQueryEditor&&(t.angularQueryEditor.destroy(),t.angularQueryEditor=null);var e=Object(M.getAngularLoader)(),n={ctrl:t.getAngularQueryComponentScope()};t.angularQueryEditor=e.load(t.element,n,''),t.angularScope=n.ctrl}},t}return F(t,e),t.prototype.componentDidMount=function(){var e=this;setTimeout((function(){e.forceUpdate()}))},t.prototype.componentDidUpdate=function(e){var t=this.props,n=t.data,i=t.range;if(n!==e.data&&n){if(n.state===r.LoadingState.Done){var o=n.series.map((function(e){return Object(r.toLegacyResponseData)(e)}));this.events.emit("data-received",o)}else n.state===r.LoadingState.Error&&this.events.emit("data-error",n.error);this.angularScope&&(this.angularScope.range=i)}this.element&&!this.angularQueryEditor&&this.renderAngularQueryEditor()},t.prototype.getAngularQueryComponentScope=function(){var e=this,t=this.props,n=t.query,r=t.queries,i=t.range,o=t.datasource,a=t.queryCtrl;o.components={QueryCtrl:a};return{datasource:o,target:n,panel:{scopedVars:{},targets:r||[]},dashboard:{},refresh:function(){e.props.onChange(n),e.props.onRunQuery()},render:function(){return function(){}},events:this.events,range:i}},t.prototype.render=function(){var e=this;return o.a.createElement("div",{ref:function(t){e.element=t}})},t}(i.PureComponent),Q=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;!function(e){e[e.LUCENE=0]="LUCENE",e[e.CQL=1]="CQL"}(O||(O={})),function(e){e.monitor="monitor",e.logService="logService",e.RUMService="RUMService"}(x||(x={}));var B=[{value:x.monitor,get label(){return Object(A.d)("cloud_monitor")}},{value:x.logService,get label(){return Object(A.d)("cloud_log_service")}},{value:x.RUMService,get label(){return Object(A.d)("real_user_monitoring")}}],V={serviceType:x.logService,logServiceParams:{region:"",TopicId:"",Query:"",SyntaxRule:O.CQL},RUMServiceParams:{policy:"default",resultFormat:"time_series",orderByTime:"ASC",tags:[],groupBy:[{type:"time",params:["$__interval"]},{type:"fill",params:["null"]}],select:[[{type:"field",params:["value"]},{type:"mean",params:[]}]]}},G={refId:"",hide:!1,key:"",queryType:"",dataTopic:null,datasource:"",serviceType:V.serviceType,logServiceParams:V.logServiceParams,RUMServiceParams:V.RUMServiceParams},U=function(e){var t=Object(i.useRef)(e);return t.current=e,t},K=function(){return(K=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]1e3,error:"仅支持返回1~1000条日志"},o.a.createElement(D.Input,{type:"number",min:1,max:1e3,value:t,onChange:r,width:25,className:"log-service-monospaced-font-family"}))})),pe=n(68),de=n(193),fe=n.n(de);var me=function(){function e(e,t){this.target=e,this.database=t}return e.prototype.buildExploreQuery=function(e,t,n){var r,i,o="";if("TAG_KEYS"===e)o="show tag keys",r=this.target.measurement,i=this.target.policy;else if("TAG_VALUES"===e)o="show tag values",r=this.target.measurement,i=this.target.policy;else if("MEASUREMENTS"===e)o="show measurements",n&&(o+=" with measurement =~ /(?i)"+fe.a.regexEscape(n)+"/");else{if("FIELDS"===e)return r=this.target.measurement,i=this.target.policy,r.match("^/.*/")||(r='"'+r+'"',i&&"default"!==i&&(r=(i='"'+i+'"')+"."+r)),"show field keys from "+r;if("RETENTION POLICIES"===e)return o='show retention policies on "'+this.database+'"'}if(r&&(r.match("^/.*/")||r.match(/^merge\(.*\)/)||(r='"'+r+'"'),i&&"default"!==i&&(r=(i='"'+i+'"')+"."+r),o+=" from "+r),t&&(o+=' with key = "'+t+'"'),this.target.tags&&this.target.tags.length>0){var a=Object(c.reduce)(this.target.tags,(function(n,r){return"MEASUREMENTS"===e&&"id"===r.key||r.key===t||">"===r.operator||"<"===r.operator||n.push(function(e,t){var n="",r=e.operator,i=e.value;return t>0&&(n=(e.condition.toLowerCase()||"AND")+" "),r||(r=/^\/.*\/$/.test(e.value)?"=~":"="),(""===i||"=~"!==r&&"!~"!==r)&&(i="'"+i.replace(/\\/g,"\\\\").replace(/\'/g,"\\'")+"'"),n+'"'+e.key+'" '+r+" "+i}(r,n.length)),n}),[]);a.length>0&&(o+=" where "+a.join(" "))}return"MEASUREMENTS"===e&&(o+=" limit 100"),o},e}(),he=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}s((r=r.apply(e,t||[])).next())}))},ye=function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=n+2;if("count"!==t.def.type&&i)e[n+1].def.category===ke.Aggregations&&e.splice(n+1,1);else if("count"===t.def.type)return void(i&&"count"===e[n+1].def.type||e.splice(n+1,0,t))}return void(e[n]=t)}if(r.def.category===ke.Selectors)return void(e[n]=t)}e.splice(1,0,t)}function Ee(e,t){var n;for(n=0;n0){if("math"===e[n-1].def.type)return void(e[n-1]=t);if(n>1&&"math"===e[n-2].def.type)return void(e[n-2]=t);if("alias"===e[n-1].def.type)return void e.splice(n-1,0,t)}e.push(t)},category:ke.Math,params:[{name:"expr",type:"string"}],defaultParams:[" / 100"],renderer:function(e,t){return t+" "+e.params[0]}}),Oe({type:"alias",addStrategy:function(e,t){var n=e.length;n>0&&"alias"===e[n-1].def.type?e[n-1]=t:e.push(t)},category:ke.Aliasing,params:[{name:"name",type:"string",quote:"double"}],defaultParams:["alias"],renderMode:"suffix",renderer:function(e,t){return t+' AS "'+e.params[0]+'"'}});var Ne={create:Ce,getCategories:function(){return ke},replaceAggregationAdd:_e},Ae=function(){function e(e,t,n){this.selectModels=[],this.target=e,this.templateSrv=t,this.scopedVars=n,e.policy=e.policy||V.RUMServiceParams.policy,e.resultFormat=e.resultFormat||V.RUMServiceParams.resultFormat,e.orderByTime=e.orderByTime||V.RUMServiceParams.orderByTime,e.tags=e.tags||Object(c.cloneDeep)(V.RUMServiceParams.tags),e.groupBy=e.groupBy||Object(c.cloneDeep)(V.RUMServiceParams.groupBy),e.select=e.select||Object(c.cloneDeep)(V.RUMServiceParams.select),this.updateProjection()}return e.$inject=["target","templateSrv","scopedVars"],e.prototype.updateProjection=function(){this.selectModels=Object(c.map)(this.target.select,(function(e){return Object(c.map)(e,Ne.create)})),this.groupByParts=Object(c.map)(this.target.groupBy,Ne.create)},e.prototype.updatePersistedParts=function(){this.target.select=Object(c.map)(this.selectModels,(function(e){return Object(c.map)(e,(function(e){return{type:e.def.type,params:e.params}}))}))},e.prototype.hasGroupByTime=function(){return Object(c.find)(this.target.groupBy,(function(e){return"time"===e.type}))},e.prototype.hasFill=function(){return Object(c.find)(this.target.groupBy,(function(e){return"fill"===e.type}))},e.prototype.addGroupBy=function(e){var t=e.match(/^(\w+)\((.*)\)$/);if(t&&this.target.groupBy){var n=t[1],r=t[2],i=Ne.create({type:n,params:[r]}),o=this.target.groupBy.length;0===o?this.target.groupBy.push(i.part):"time"===n?this.target.groupBy.splice(0,0,i.part):"tag"===n&&"fill"===this.target.groupBy[o-1].type?this.target.groupBy.splice(o-1,0,i.part):this.target.groupBy.push(i.part),this.updateProjection()}},e.prototype.removeGroupByPart=function(e,t){var n=Ne.getCategories();"time"===e.def.type&&(this.target.groupBy=Object(c.filter)(this.target.groupBy,(function(e){return"fill"!==e.type})),this.target.select=Object(c.map)(this.target.select,(function(e){return Object(c.filter)(e,(function(e){var t=Ne.create(e);return t.def.category!==n.Aggregations&&t.def.category!==n.Selectors}))}))),this.target.groupBy.splice(t,1),this.updateProjection()},e.prototype.removeSelect=function(e){this.target.select.splice(e,1),this.updateProjection()},e.prototype.removeSelectPart=function(e,t){if("field"===t.def.type){if(this.selectModels.length>1){var n=Object(c.indexOf)(this.selectModels,e);this.selectModels.splice(n,1)}}else{var r=Object(c.indexOf)(e,t);e.splice(r,1)}this.updatePersistedParts()},e.prototype.addSelectPart=function(e,t){var n=Ne.create({type:t});n.def.addStrategy(e,n,this),this.updatePersistedParts()},e.prototype.getMeasurementAndPolicy=function(e){var t=this.target.policy,n=this.target.measurement||"measurement";return n.match("^/.*/$")?e&&(n=this.templateSrv.replace(n,this.scopedVars,"regex")):n='"'+n+'"',(t="default"!==t?'"'+this.target.policy+'".':"")+n},e.prototype.interpolateQueryStr=function(e,t,n){return t.multi||t.includeAll?"string"==typeof e?fe.a.regexEscape(e):"("+Object(c.map)(e,fe.a.regexEscape).join("|")+")":e},e.prototype.render=function(e){var t=this,n=this.target;if(n.rawQuery)return e?this.templateSrv.replace(n.query,this.scopedVars,this.interpolateQueryStr):n.query;var r,i,o="select ";for(r=0;r0&&(o+=", "),o+=s}o+=" from "+this.getMeasurementAndPolicy(e)+" where ";var u=Object(c.map)(n.tags,(function(n,r){return t.renderTagCondition(n,r,e)}));u.length>0&&(o+="("+u.join(" ")+") and "),o+="$timeFilter";var l="";for(r=0;r0&&(l+="fill"===p.def.type?" ":", "),l+=p.render("")}return l.length&&(o+=" group by "+l),n.fill&&(o+=" fill("+n.fill+")"),"DESC"===n.orderByTime&&(o+=" order by time desc"),n.limit&&(o+=" limit "+n.limit),n.slimit&&(o+=" slimit "+n.slimit),n.tz&&(o+=" tz('"+n.tz+"')"),o},e.prototype.renderAdhocFilters=function(e){var t=this;return Object(c.map)(e,(function(e,n){return t.renderTagCondition(e,n,!0)})).join(" ")},e.prototype.renderTagCondition=function(e,t,n){var r="",i=e.operator,o=e.value;return t>0&&(r=(e.condition.toLowerCase()||"and")+" "),i||(i=/^\/.*\/$/.test(o)?"=~":"="),"=~"!==i&&"!~"!==i?(n&&(o=this.templateSrv.replace(o,this.scopedVars)),">"!==i&&"<"!==i&&(o="'"+o.replace(/\\/g,"\\\\").replace(/\'/g,"\\'")+"'")):n&&(o=this.templateSrv.replace(o,this.scopedVars,"regex")),r+'"'+e.key+'" '+i+" "+o},e}(),je=function(){return(je=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]","<",">","=~","!~"].map(Me),mt=["AND","OR"].map(Me),ht=function(){return Promise.resolve(mt)},yt=function(){return Promise.resolve(ft)},gt=function(e){var t=e.tag,n=e.isFirst,r=e.onRemove,i=e.onChange,a=e.getTagKeyOptions,c=e.getTagValueOptions,s=st(t),u=ut(t,n);return o.a.createElement("div",{className:"gf-form"},void 0!==u&&o.a.createElement(nt,{value:u,loadOptions:ht,disabled:!0,onChange:function(e){i(pt(pt({},t),{condition:e.value}))}}),o.a.createElement(nt,{allowCustomValue:!0,value:t.key,loadOptions:function(){return a().catch((function(e){return[]})).then((function(e){return dt([{label:"-- remove filter --",value:void 0}],e.map(Me),!0)}))},onChange:function(e){var n=e.value;void 0===n?r():i(pt(pt({},t),{key:null!=n?n:""}))}}),o.a.createElement(nt,{value:s,loadOptions:yt,onChange:function(e){i(pt(pt({},t),{operator:e.value}))}}),o.a.createElement(nt,{allowCustomValue:!0,value:t.value,loadOptions:function(){return c(t.key).then((function(e){return e.map(Me)}))},onChange:function(e){var n,r,o,a,c=null!==(n=e.value)&&void 0!==n?n:"";i(pt(pt({},t),{value:c,operator:(r=s,o=c,a="=~"===r||"!~"===r,ct(o)?a?r:"=~":a?"=":r)}))}}))},vt=function(e){var t=e.tags,n=e.onChange,r=e.getTagKeyOptions,i=e.getTagValueOptions,a=function(e,r){var i=t.map((function(t,n){return r===n?e:t}));n(i)};return o.a.createElement(o.a.Fragment,null,t.map((function(e,c){return o.a.createElement(gt,{tag:e,isFirst:0===c,key:c,onChange:function(e){a(e,c)},onRemove:function(){var e,r;e=c,r=t.filter((function(t,n){return n!==e})),n(r)},getTagKeyOptions:r,getTagValueOptions:i})})),o.a.createElement(lt,{allowCustomValue:!0,loadOptions:function(){return r().then((function(e){return e.map(Me)}))},onAdd:function(e){var r,i,o,a;r=e,i=0===t.length,a={key:(o={key:r,value:"select tag value"}).key,value:o.value,operator:st(o),condition:ut(o,i)},n(dt(dt([],t,!0),[a],!1))}}))},bt=Object(pe.css)({paddingRight:"0",marginRight:"0"}),It=function(e){var t=e.name,n=e.onRemove;return o.a.createElement(D.WithContextMenu,{getContextMenuItems:function(){return[{items:[{label:"remove",onClick:n}]}]}},(function(e){var n=e.openMenu;return o.a.createElement("button",{className:Object(pe.cx)("gf-form-label",bt),onClick:n},t)}))},Dt=Object(pe.css)({paddingLeft:"0",paddingRight:"0",marginLeft:"0",marginRight:"0"}),wt=function(e){var t=e.name,n=e.params,r=e.onChange,a=e.onRemove,c=Object(D.useTheme)(),s=Object(i.useMemo)((function(){return function(e){return Object(pe.cx)("gf-form-label",Object(pe.css)({paddingLeft:"0",lineHeight:e.typography.lineHeight.md,fontSize:e.typography.size.base}))}(c)}),[c]),u=function(e,t){var i=n.map((function(e){return e.value}));i[t]=e,r(i)};return o.a.createElement("div",{className:s},o.a.createElement(It,{name:t,onRemove:a}),"(",n.map((function(e,t){var r=e.value,i=e.options,a=t===n.length-1,c=null!==i?function(){return i().then((function(e){return e.map(Me)}))}:void 0;return o.a.createElement(o.a.Fragment,{key:t},o.a.createElement(nt,{allowCustomValue:!0,value:r,buttonClassName:Dt,loadOptions:c,onChange:function(e){u(Te(e.value),t)}}),!a&&",")})),")")},kt=function(e){var t=e.parts,n=e.getNewPartOptions,r=e.onAddNewPart,i=e.onRemovePart,a=e.onChange;return o.a.createElement(o.a.Fragment,null,t.map((function(e,t){return o.a.createElement(wt,{key:t,name:e.name,params:e.params,onRemove:function(){i(t)},onChange:function(e){a(t,e)}})})),o.a.createElement(lt,{loadOptions:n,onAdd:r}))},Ct=Object(pe.css)({paddingRight:"4px"}),Ot=function(e){var t=e.value,n=e.onChange,r=e.isWide,i=e.placeholder,a=We(t),c=a[0],s=a[1];return o.a.createElement(D.Input,{placeholder:i,className:Object(pe.cx)(null!=r&&r?"width-14":"width-8",Ct),type:"text",spellCheck:!1,onBlur:function(){n(""===c?void 0:c)},onChange:function(e){s(e.currentTarget.value)},value:null!=c?c:""})},xt=[{label:"ascending",value:"ASC"},{label:"descending",value:"DESC"}],St=Object(pe.cx)("width-9",Ct),_t=function(e){var t=e.value,n=e.onChange,r=e.inputId;return o.a.createElement(D.Select,{inputId:r,className:St,onChange:function(e){n(Te(e.value))},value:t,options:xt})},Et=[{label:"Time series",value:"time_series"},{label:"Table",value:"table"},{label:"Logs",value:"logs"}],Nt=["log_url_statistics","event_url_statistics","pv_url_statistics","user_event_user_event_unique","uv_project_unique","uv_page_unique","custom_url_info","custom_url_statistics","fetch_url_info","fetch_url_statistics","fetch_project_statistics","set_data_url_statistics","performance_page_statistics","performance_project_statistics","static_url_source","static_resource_statistics","static_project_statistics","webvitals_page_statistics","webvitals_project_statistics"],At=Object(pe.cx)("width-8",Ct),jt=function(e){var t=e.format,n=e.inputId,r=e.onChange;return o.a.createElement(D.Select,{inputId:n,className:At,onChange:function(e){r(Te(e.value))},value:t,options:Et})};var qt=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},Tt=function(){return(Tt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0,n=Boolean(null==e?void 0:e.instanceSettings.jsonData.logServiceEnabled),r=Boolean(null==e?void 0:e.instanceSettings.jsonData.RUMServiceEnabled);return[t&&x.monitor,n&&x.logService,r&&x.RUMService].filter(Boolean)},enumerable:!1,configurable:!0}),t.prototype.render=function(){var e=this,t=this.props,n=t.datasource,r=t.query,i=this.state.isAlertVisiable;return n?o.a.createElement("div",null,this.enabledServices.length>1&&o.a.createElement(D.TabsBar,null,B.filter((function(t){return e.enabledServices.includes(t.value)})).map((function(t){return o.a.createElement(D.Tab,{key:t.value,label:t.label,active:r.serviceType===t.value,onChangeTab:function(){e.partialOnChange({serviceType:t.value})}})}))),o.a.createElement(D.TabContent,null,r.serviceType===x.monitor&&this.renderMonitorQueryEditor(),r.serviceType===x.logService&&this.renderLogServiceQueryEditor(),r.serviceType===x.RUMService&&this.renderRUMServiceQueryEditor()),i&&o.a.createElement(D.Alert,{title:"目前仅 CLS日志服务 数据源支持告警"})):o.a.createElement("div",null,"loading")},t.prototype.renderMonitorQueryEditor=function(){var e=this.props.datasource.monitorDataSource;return e&&o.a.createElement(R,Vt({},this.props,{queryCtrl:T,datasource:e}))},t.prototype.renderLogServiceQueryEditor=function(){return o.a.createElement(ue,Vt({},this.props))},t.prototype.renderRUMServiceQueryEditor=function(){var e=this.props,t=e.query,n=e.onChange,r=e.onRunQuery,i=e.datasource;return o.a.createElement(Rt,{query:t,onChange:n,onRunQuery:r,datasource:i})},t}(i.PureComponent),Ut=function(){return o.a.createElement("a",{target:"_blank",href:"https://cloud.tencent.com/document/product/248/54510"},"Click here for more information of query")},Kt=function(e){var t=U(e),n=e.query,r=e.datasource,a=Object(i.useCallback)((function(e){var n,r,i=t.current.onChange;r=e.serviceType===x.logService?"SQL: ".concat(null===(n=e.logServiceParams)||void 0===n?void 0:n.Query):e.queryString,null==i||i(e,r)}),[t]);return o.a.createElement(o.a.Fragment,null,o.a.createElement(D.InlineFieldRow,null,o.a.createElement(D.InlineField,{label:"服务类型",labelWidth:20},o.a.createElement(D.RadioButtonGroup,{options:B,value:Object(c.isString)(n)?x.monitor:n.serviceType,onChange:function(e){e===x.monitor&&a({serviceType:e,queryString:""}),e===x.logService&&a({serviceType:e,queryString:"",logServiceParams:Object(c.clone)(V.logServiceParams)}),e===x.RUMService&&a({serviceType:e,queryString:""})}}))),n.serviceType===x.logService&&o.a.createElement(o.a.Fragment,null,o.a.createElement(ue,{datasource:r,query:n,onRunQuery:function(){},onChange:function(e){a({serviceType:x.logService,queryString:"",logServiceParams:e.logServiceParams})}})),n.serviceType===x.RUMService&&o.a.createElement(D.InlineFieldRow,null,o.a.createElement(D.InlineField,{label:"查询语句",labelWidth:20,grow:!0,tooltip:Ut},o.a.createElement(D.Input,{name:"query",required:!0,placeholder:"metric name or tags query",onChange:function(e){return a({serviceType:x.RUMService,queryString:e.currentTarget.value})},value:Object(c.isString)(n)?n:n.queryString}))),(Object(c.isString)(n)||n.serviceType===x.monitor)&&o.a.createElement(D.InlineFieldRow,null,o.a.createElement(D.InlineField,{label:"查询语句",labelWidth:20,grow:!0,tooltip:Ut},o.a.createElement(D.Input,{name:"query",required:!0,onChange:function(e){return a({serviceType:x.monitor,queryString:e.currentTarget.value})},value:Object(c.isString)(n)?n:n.queryString}))))};Kt.displayName="VariableQueryEditor";var zt=n(125),$t=n(66);function Wt(e){return"function"==typeof e}var Yt=!1,Zt={Promise:void 0,set useDeprecatedSynchronousErrorHandling(e){if(e);Yt=e},get useDeprecatedSynchronousErrorHandling(){return Yt}};function Jt(e){setTimeout((function(){throw e}),0)}var Ht={closed:!0,next:function(e){},error:function(e){if(Zt.useDeprecatedSynchronousErrorHandling)throw e;Jt(e)},complete:function(){}},Xt=function(){return Array.isArray||function(e){return e&&"number"==typeof e.length}}();function en(e){return null!==e&&"object"==typeof e}var tn=function(){function e(e){return Error.call(this),this.message=e?e.length+" errors occurred during unsubscription:\n"+e.map((function(e,t){return t+1+") "+e.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=e,this}return e.prototype=Object.create(Error.prototype),e}(),nn=function(){function e(e){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,e&&(this._ctorUnsubscribe=!0,this._unsubscribe=e)}return e.prototype.unsubscribe=function(){var t;if(!this.closed){var n=this._parentOrParents,r=this._ctorUnsubscribe,i=this._unsubscribe,o=this._subscriptions;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof e)n.remove(this);else if(null!==n)for(var a=0;a1)this.connection=null;else{var n=this.connection,r=e._connection;this.connection=null,!r||n&&r!==n||r.unsubscribe()}}else this.connection=null},t}(an),On=function(e){function t(t,n){var r=e.call(this)||this;return r.source=t,r.subjectFactory=n,r._refCount=0,r._isComplete=!1,r}return $t.a(t,e),t.prototype._subscribe=function(e){return this.getSubject().subscribe(e)},t.prototype.getSubject=function(){var e=this._subject;return e&&!e.isStopped||(this._subject=this.subjectFactory()),this._subject},t.prototype.connect=function(){var e=this._connection;return e||(this._isComplete=!1,(e=this._connection=new nn).add(this.source.subscribe(new Sn(this.getSubject(),this))),e.closed&&(this._connection=null,e=nn.EMPTY)),e},t.prototype.refCount=function(){return wn()(this)},t}(hn),xn=function(){var e=On.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:e._subscribe},_isComplete:{value:e._isComplete,writable:!0},getSubject:{value:e.getSubject},connect:{value:e.connect},refCount:{value:e.refCount}}}(),Sn=function(e){function t(t,n){var r=e.call(this,t)||this;return r.connectable=n,r}return $t.a(t,e),t.prototype._error=function(t){this._unsubscribe(),e.prototype._error.call(this,t)},t.prototype._complete=function(){this.connectable._isComplete=!0,this._unsubscribe(),e.prototype._complete.call(this)},t.prototype._unsubscribe=function(){var e=this.connectable;if(e){this.connectable=null;var t=e._connection;e._refCount=0,e._subject=null,e._connection=null,t&&t.unsubscribe()}},t}(bn);var _n=function(){function e(e,t){this.subjectFactory=e,this.selector=t}return e.prototype.call=function(e,t){var n=this.selector,r=this.subjectFactory(),i=n(r).subscribe(e);return i.add(t.subscribe(r)),i},e}();function En(){return new In}function Nn(){return function(e){return wn()((t=En,function(e){var r;if(r="function"==typeof t?t:function(){return t},"function"==typeof n)return e.lift(new _n(r,n));var i=Object.create(e,xn);return i.source=e,i.subjectFactory=r,i})(e));var t,n}}var An=n(67),jn=n.n(An),qn=/(\w+)\[[\w/]+]/g,Tn=[{prestoTypeRegex:/^timestamp with time zone$/,fieldType:r.FieldType.time,processor:function(e){var t=String(e).replace(qn,"$1");return jn()(t).isValid()?t:e}},{prestoTypeRegex:/^timestamp$|^date$|^datetime$/,fieldType:r.FieldType.time},{prestoTypeRegex:/^time$/,fieldType:r.FieldType.time},{prestoTypeRegex:/^tinyint$|^samllint$|^integer$|^bigint$|^long$/,fieldType:r.FieldType.number},{prestoTypeRegex:/^real$|^double$|^decimal$/,fieldType:r.FieldType.number},{prestoTypeRegex:/^varchar$|^char$|^text$|^keyword$/,fieldType:r.FieldType.string},{prestoTypeRegex:/^boolean$/,fieldType:r.FieldType.boolean},{prestoTypeRegex:/^uuid$/,fieldType:r.FieldType.string},{prestoTypeRegex:/^ipaddress$/,fieldType:r.FieldType.string},{prestoTypeRegex:/^array\(.*\)$/,fieldType:r.FieldType.other},{prestoTypeRegex:/^json$/,fieldType:r.FieldType.other},{prestoTypeRegex:/^map\(.*\)$/,fieldType:r.FieldType.other},{prestoTypeRegex:/^varbinary$/,fieldType:r.FieldType.other},{prestoTypeRegex:/^interval$/,fieldType:r.FieldType.other},{prestoTypeRegex:/^row$/,fieldType:r.FieldType.other}];var Mn,Ln=function(){return(Ln=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=2))return"";n=t[0]}return n}function zn(e,t){void 0===t&&(t={});var n=Kn(null!=e?e:""),r=(null!=e?e:"").slice(n.length);return Object(M.getTemplateSrv)().replace(n,t,"lucene")+Object(M.getTemplateSrv)().replace(r,t,"raw")}function $n(e,t){var n=Kn(null!=e?e:""),r=(null!=e?e:"").slice(n.length),i=t.MaxResultNum;return i&&r?/limit/.test(r)?e:e+" limit "+i:e}var Wn=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Yn=function(){return(Yn=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&s.length>0)return l=c[0],[2,s.map((function(e){return{text:e[l.Name],value:e[l.Name]}}))];p.label=2;case 2:return[2,[]]}}))}))},t.prototype.testDatasource=function(){return Zn(this,void 0,void 0,(function(){var e;return Jn(this,(function(t){switch(t.label){case 0:if(!this.instanceSettings.jsonData.logServiceEnabled)return[2,null];t.label=1;case 1:return t.trys.push([1,3,,4]),[4,J({TopicId:"",Query:"",From:jn()().subtract(1,"h").valueOf(),To:jn()().valueOf()},"ap-shanghai",{instanceSettings:this.instanceSettings})];case 2:return t.sent(),[2,{status:"success",message:"DatSource Connection OK"}];case 3:return(null==(e=t.sent())?void 0:e.code)&&"AuthFailure.SignatureFailure"!==e.code?[2,{status:"success",message:"DatSource Connection OK"}]:[2,{status:"error",title:e.code,message:e.message}];case 4:return[2]}}))}))},t.prototype.getLogsVolumeDataProvider=function(e){},t}(r.DataSourceApi);function er(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}var tr=er(),nr=function(e){return e&&"number"==typeof e.length&&"function"!=typeof e};function rr(e){return!!e&&"function"!=typeof e.subscribe&&"function"==typeof e.then}var ir=function(e){if(e&&"function"==typeof e[dn])return i=e,function(e){var t=i[dn]();if("function"!=typeof t.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return t.subscribe(e)};if(nr(e))return r=e,function(e){for(var t=0,n=r.length;t0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()},t}(cr);var dr=function(){function e(e){this.selector=e}return e.prototype.call=function(e,t){return t.subscribe(new fr(e,this.selector,this.caught))},e}(),fr=function(e){function t(t,n,r){var i=e.call(this,t)||this;return i.selector=n,i.caught=r,i}return $t.a(t,e),t.prototype.error=function(t){if(!this.isStopped){var n=void 0;try{n=this.selector(t,this.caught)}catch(t){return void e.prototype.error.call(this,t)}this._unsubscribeAndRecycle();var r=new ar(this);this.add(r);var i=sr(n,r);i!==r&&this.add(i)}},t}(cr),mr=n(196),hr=n.n(mr),yr=function(){function e(e){this.series=e.series,this.alias=e.alias,this.annotation=e.annotation,this.meta=e.meta,this.refId=e.refId}return e.prototype.getTimeSeries=function(){var e,t,n=this,r=[];return 0===this.series.length||Object(c.each)(this.series,(function(i){var o=i.columns.length,a=Object(c.map)(i.tags,(function(e,t){return t+": "+e}));for(t=1;t0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=0||r.indexOf("show retention policies")>=0,o=r.indexOf("show measurements")>=0,a=new Set;return Object(c.each)(n.series,(function(e){Object(c.each)(e.values,(function(e){Object(c.isArray)(e)?i?kr(a,e[0]):void 0!==e[1]?kr(a,e[1]):kr(a,e[0]):kr(a,e)}))})),o?Array.from(a).filter((function(e){return Nt.includes(e)})).map((function(e){return{text:e}})):Array.from(a).map((function(e){return{text:e}}))},e.prototype.getTable=function(e,t,n){var i,o,a=new hr.a;if(e.length>0)if(a.meta=gr(gr({},n),{executedQueryString:null===(i=e[0].meta)||void 0===i?void 0:i.executedQueryString}),a.refId=t.refId,a=function(e,t,n){var i=function(e){var t,n=[];null===(t=e.select)||void 0===t||t.forEach((function(e){var t,r,i=e.filter((function(e){return"field"!==e.type}));i.length>0?n.push(i[0].type):(null===(r=null===(t=e[0])||void 0===t?void 0:t.params)||void 0===r?void 0:r[0])&&n.push(e[0].params[0].toString())}));var r=[];return n.forEach((function(e){r.push(function e(t,n,r,i){if(r.indexOf(n)>-1)return i++,e(t,t+"_"+i,r,i);return n}(e,e,r,0))})),r}(n);e[0].fields.forEach((function(e){"time"===e.name?t.columns.push({text:"Time",type:r.FieldType.time}):"value"===e.name&&e.labels&&Object.keys(e.labels).forEach((function(e){t.columns.push({text:e})}))})),"metricFindQuery"===e[0].refId&&e.forEach((function(e){e.name&&t.columns.push({text:e.name})}));for(var o=0;o0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(o+=" AND "+new Ae({},this.templateSrv,a).renderAdhocFilters(p));return a.timeFilter={value:o},l=this.templateSrv.replace(l,a),this._seriesQuery(l,e).pipe(sn((function(o){if(!o||!o.results)return{data:[]};var a=[];for(t=0;t0)throw{message:"RUM Error: "+i[0].error,data:r}}}return r})),(r=function(e){return e.cancelled?Object(zt.of)(e):Object(zt.throwError)(t.handleErrors(e))},function(e){var t=new dr(r),n=e.lift(t);return t.caught=n}));var r})))},t.prototype.handleErrors=function(e){var t,n={message:(null==e?void 0:e.status)||(null==e?void 0:e.message)||"Unknown error during query transaction. Please check JS console logs."};return(Number.isInteger(e.status)&&0!==e.status||e.status>=300)&&((null===(t=e.data)||void 0===t?void 0:t.error)?(n.message="RUM Error: "+e.data.error,n.data=e.data,n.config=e.config):(n.message="Network Error: "+e.statusText+"("+e.status+")",n.data=e.data,n.config=e.config)),n},t.prototype.getTimeFilter=function(e){return"time >= "+this.getRUMTime(e.rangeRaw.from,!1,e.timezone)+" and time <= "+this.getRUMTime(e.rangeRaw.to,!0,e.timezone)},t.prototype.getRUMTime=function(e,t,n){if(Object(c.isString)(e)){if("now"===e)return"now()";var i=/^now-(\d+)([dhms])$/.exec(e);if(i)return"now() - "+parseInt(i[1],10)+i[2];e=r.dateMath.parse(e,t,n)}return e.valueOf()+"ms"},t.prototype.fixTimePeriod=function(e,t){var n,r=this,i=this.getTimePeriod(t.rangeRaw,t.timezone);return null===(n=e.groupBy)||void 0===n||n.forEach((function(t){"time"===t.type&&"1d"!==t.params[0]&&(e=r.modifyTime(e,i))})),e},t.prototype.getTimePeriod=function(e,t){var n,i,o=null===(n=r.dateMath.parse(e.from,!1,t))||void 0===n?void 0:n.valueOf(),a=null===(i=r.dateMath.parse(e.to,!0,t))||void 0===i?void 0:i.valueOf(),c=0;return o&&a&&(c=a-o),c<=432e5?"1m":c<=2592e5?"30m":c<=6048e5?"1h":"1d"},t.prototype.modifyTime=function(e,t){var n;if(!e.groupBy)return e;for(var r=0,i=e.groupBy;r0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1] {\n if (locale_language === Language.Chinese) {\n return zh_CN[key]\n }\n return en_US[key];\n}\n\nexport const setLanguage = (language: Language) => {\n locale_language = language;\n}\n\nexport const getLanguage = () => locale_language;","import moment from 'moment';\n\nconst HttpRequestMethod = 'POST';\nconst CanonicalUri = '/';\nconst CanonicalQueryString = '';\nconst ContentType = 'application/json';\n\nexport default class Sign {\n /**\n * Tencent Cloud API Signature v3 reference: https://cloud.tencent.com/document/api/213/30654\n * secretId: SecretId for identifying identity that is applied for on Cloud API Key.\n * A SecretId corresponds to a unique SecretKey, which is used to generate the request Signature.\n * secretKey: SecretKey is used to encrypt the signature string and verify the signature string on the server\n * service: the name of service, which must be consistent with the request domain, such as cvm\n * action: The name of the API for the desired operation\n * host: the domain of service,which must be consistent with the request domain, such as cvm.tencentcloudapi.com\n * version: PI version, such as 2017-03-12\n * payload: The request parameters\n */\n\n secretId: string;\n\n service: string;\n action: string;\n host: string;\n version: string;\n payload: Record | string;\n region: string;\n timestamp: number;\n date: string;\n backendSrv: any;\n datasourceId: Number;\n constructor(options) {\n const { secretId, service, action, host, version, payload = '', region, backendSrv, datasourceId } = options;\n this.secretId = secretId;\n // this.secretKey = secretKey;\n this.service = service;\n this.action = action;\n this.host = host;\n this.version = version;\n this.payload = typeof payload === 'string' ? payload : JSON.stringify(payload);\n this.region = region;\n const nowDate = moment().utc();\n this.timestamp = nowDate.unix();\n this.date = nowDate.format('YYYY-MM-DD');\n this.backendSrv = backendSrv;\n this.datasourceId = datasourceId;\n }\n\n async getHeader() {\n return this.getResourceHeader();\n }\n\n async getResourceHeader() {\n let res: { authorization?: string; token?: string; intranet?: boolean } = {};\n try {\n const resp = await this.backendSrv.datasourceRequest({\n url: `/api/datasources/${this.datasourceId}/resources/sign_v3`,\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n data: {\n Host: this.host,\n Service: this.service,\n Version: this.version,\n Action: this.action,\n Region: this.region,\n Timestamp: this.timestamp,\n Method: HttpRequestMethod,\n Uri: CanonicalUri,\n Query: CanonicalQueryString,\n Body: this.payload,\n Headers: {\n 'content-type': ContentType,\n host: this.host,\n },\n },\n });\n res = resp.data;\n } catch (err) {}\n const { authorization, token, intranet } = res;\n const grafanaVersion = (window as any).grafanaBootData?.settings?.buildInfo?.version || '0.0.0';\n const headers = {\n Authorization: authorization,\n 'Content-Type': ContentType,\n 'X-TC-Action': this.action,\n 'X-TC-Timestamp': this.timestamp.toString(),\n 'X-TC-Version': this.version,\n 'X-TC-RequestClient': `GF_${grafanaVersion}_PL_CM_${process.env.TENCENT_CLOUD_MONITOR_GRAFANA_PLUGIN_VERSION}`,\n ...(this.region && {\n 'X-TC-Region': this.region,\n }),\n ...(token && {\n 'X-TC-Token': token,\n }),\n intranet: intranet,\n };\n return headers;\n }\n}\n","/**\n *\n * @param defaults 为对象\n * secretId\n * secretKey\n * action\n * region\n * host\n */\n\nexport default class SignV2 {\n defaults: any = {\n path: '/v2/index.php',\n method: 'POST',\n };\n backendSrv: any;\n datasourceId: Number;\n constructor(defaults: any = {}) {\n this.defaults = Object.assign(this.defaults, defaults);\n this.defaults.secretKey = '';\n this.backendSrv = defaults.backendSrv;\n this.datasourceId = defaults.datasourceId;\n }\n\n generateQueryString = async () => {\n return this.getResourceQueryString();\n };\n\n async getResourceQueryString() {\n let res: { path?: string; querystring?: any; host?: string; intranet?: boolean } = {};\n try {\n const { data } = this.defaults;\n const payload = typeof data === 'string' ? data : JSON.stringify(data);\n const resp = await this.backendSrv.datasourceRequest({\n url: `/api/datasources/${this.datasourceId}/resources/sign_v2`,\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n data: {\n Host: this.defaults.host,\n Action: this.defaults.action,\n Version: this.defaults.version,\n Region: this.defaults.region,\n Method: this.defaults.method,\n Uri: this.defaults.path,\n Query: '',\n Body: payload,\n },\n });\n res = resp.data;\n } catch (err) {}\n const { path, querystring, host, intranet } = res;\n return { queryString: querystring, path: path, host: host, intranet: intranet };\n }\n}\n","import _ from 'lodash';\nimport qs from 'qs';\nimport { SERVICES } from '../tc_monitor';\nimport Sign from './sign';\nimport SignV2 from './signV2';\nimport { toDataQueryResponse } from '@grafana/runtime';\nimport { getLanguage } from '../../locale';\n\nimport packageInfo from '../plugin.json';\nexport const TcDataSourceId = packageInfo.id;\n\n// the services of tencentcloud monitor api\nconst FINACE_REGIONS = ['ap-shanghai-fsi', 'ap-shenzhen-fsi'];\nconst SERVICES_API_INFO = {\n api: {\n service: 'api',\n version: '2020-11-06',\n path: '/api',\n host: 'api.tencentcloudapi.com',\n },\n // monitor api info\n monitor: {\n service: 'monitor',\n version: '2018-07-24',\n path: '/monitor',\n host: 'monitor.tencentcloudapi.com',\n },\n // cls api info\n cls: {\n service: 'cls',\n version: '2020-10-16',\n path: '/cls',\n host: 'cls.tencentcloudapi.com',\n },\n // cvm api info\n cvm: {\n service: 'cvm',\n version: '2017-03-12',\n path: '/cvm',\n host: 'cvm.tencentcloudapi.com',\n },\n // cdb api info\n cdb: {\n service: 'cdb',\n version: '2017-03-20',\n path: '/cdb',\n host: 'cdb.tencentcloudapi.com',\n },\n // pcx api info\n pcx: {\n service: 'pcx',\n version: '',\n path: '/pcx',\n host: 'vpc.api.qcloud.com',\n },\n // vpc api info\n vpc: {\n service: 'vpc',\n version: '2017-03-12',\n path: '/vpc',\n host: 'vpc.tencentcloudapi.com',\n },\n // mongodb api info\n mongodb: {\n service: 'mongodb',\n version: '2019-07-25',\n path: '/mongodb',\n host: 'mongodb.tencentcloudapi.com',\n },\n // 负载均衡 clb\n clb: {\n service: 'clb',\n version: '2018-03-17',\n path: '/clb',\n host: 'clb.tencentcloudapi.com',\n },\n // postgresql api info\n postgres: {\n service: 'postgres',\n version: '2017-03-12',\n path: '/postgres',\n host: 'postgres.tencentcloudapi.com',\n },\n // cdn info\n cdn: {\n service: 'cdn',\n version: '2018-06-06',\n path: '/cdn',\n host: 'cdn.tencentcloudapi.com',\n },\n // redis info\n redis: {\n service: 'redis',\n version: '2018-04-12',\n path: '/redis',\n host: 'redis.tencentcloudapi.com',\n },\n scf: {\n service: 'scf',\n version: '2018-04-16',\n path: '/scf',\n host: 'scf.tencentcloudapi.com',\n },\n cfs: {\n service: 'cfs',\n version: '2019-07-19',\n path: '/cfs',\n host: 'cfs.tencentcloudapi.com',\n },\n ckafka: {\n service: 'ckafka',\n version: '2019-08-19',\n path: '/ckafka',\n host: 'ckafka.tencentcloudapi.com',\n },\n // 专线接入实例列表\n dc: {\n service: 'dc',\n version: '2018-04-10',\n path: '/dc',\n host: 'dc.tencentcloudapi.com',\n },\n // cynosdb实例列表\n cynosdb: {\n service: 'cynosdb',\n version: '2019-01-07',\n path: '/cynosdb',\n host: 'cynosdb.tencentcloudapi.com',\n },\n // sqlserver实例列表\n sqlserver: {\n service: 'sqlserver',\n version: '2018-03-28',\n path: '/sqlserver',\n host: 'sqlserver.tencentcloudapi.com',\n },\n // bm实例列表\n bm: {\n service: 'bm',\n version: '2018-04-23',\n path: '/bm',\n host: 'bm.tencentcloudapi.com',\n },\n bmeip: {\n service: 'bmeip',\n version: '2018-06-25',\n path: '/bmeip',\n host: 'bmeip.tencentcloudapi.com',\n },\n bmvpc: {\n service: 'bmvpc',\n version: '2018-06-25',\n path: '/bmvpc',\n host: 'bmvpc.tencentcloudapi.com',\n },\n bmlb: {\n service: 'bmlb',\n version: '2018-06-25',\n path: '/bmlb',\n host: 'bmlb.tencentcloudapi.com',\n },\n // ES集群实例\n es: {\n service: 'es',\n version: '2018-04-16',\n path: '/es',\n host: 'es.tencentcloudapi.com',\n },\n // MapReduce\n emr: {\n service: 'emr',\n version: '2019-01-03',\n path: '/emr',\n host: 'emr.tencentcloudapi.com',\n },\n // CMQ消息队列\n cmq: {\n service: 'cmq',\n version: '2019-03-04',\n path: '/cmq',\n host: 'cmq.tencentcloudapi.com',\n },\n cbs: {\n service: 'cbs',\n version: '2017-03-12',\n path: '/cbs',\n host: 'cbs.tencentcloudapi.com',\n },\n // tcaplus实例\n tcaplusdb: {\n service: 'tcaplusdb',\n version: '2019-08-23',\n path: '/tcaplusdb',\n host: 'tcaplusdb.tencentcloudapi.com',\n },\n // tcaplus实例\n dcdb: {\n service: 'dcdb',\n version: '2018-04-11',\n path: '/dcdb',\n host: 'dcdb.tencentcloudapi.com',\n },\n // apigateway实例\n apigateway: {\n service: 'apigateway',\n version: '2018-08-08',\n path: '/apigateway',\n host: 'apigateway.tencentcloudapi.com',\n },\n tdmq: {\n service: 'tdmq',\n version: '2020-02-17',\n path: '/tdmq',\n host: 'tdmq.tencentcloudapi.com',\n },\n tdmq_rabbitmq: {\n service: 'tdmq',\n version: '2020-02-17',\n path: '/tdmq',\n host: 'tdmq.tencentcloudapi.com',\n },\n tdmq_rocketmq: {\n service: 'tdmq',\n version: '2020-02-17',\n path: '/tdmq',\n host: 'tdmq.tencentcloudapi.com',\n },\n gaap: {\n service: 'gaap',\n version: '2018-05-29',\n path: '/gaap',\n host: 'gaap.tencentcloudapi.com',\n },\n ecm: {\n service: 'ecm',\n version: '2019-07-19',\n path: '/ecm',\n host: 'ecm.tencentcloudapi.com',\n },\n gse: {\n service: 'gse',\n version: '2019-11-12',\n path: '/gse',\n host: 'gse.tencentcloudapi.com',\n },\n lighthouse: {\n service: 'lighthouse',\n version: '2020-03-24',\n path: '/lighthouse',\n host: 'lighthouse.tencentcloudapi.com',\n },\n tsf: {\n service: 'tsf',\n version: '2018-03-26',\n path: '/tsf',\n host: 'tsf.tencentcloudapi.com',\n },\n rum: {\n service: 'rum',\n version: '2021-06-22',\n path: '/rum',\n host: 'rum.tencentcloudapi.com',\n },\n tke: {\n service: 'tke',\n version: '2018-05-25',\n path: '/tke',\n host: 'tke.tencentcloudapi.com',\n },\n ecdn: {\n service: 'ecdn',\n version: '2019-10-12',\n path: '/ecdn',\n host: 'ecdn.tencentcloudapi.com',\n },\n waf: {\n service: 'waf',\n version: '2018-01-25',\n path: '/waf',\n host: 'waf.tencentcloudapi.com',\n },\n region: {\n service: 'region',\n version: '2022-06-27',\n path: '/region',\n host: 'region.tencentcloudapi.com',\n },\n // 不单独定义lb,因为lb同样用的是vpc的配置,同上\n // lb: {\n // service: 'lb',\n // version: '2017-03-12',\n // path: '/lb',\n // host: 'vpc.tencentcloudapi.com'\n // }\n // 负载均衡四层协议 lbPrivate\n // lbPrivate: {\n // service: 'lbPrivate',\n // version: '2018-03-17',\n // path: '/clb',\n // host: 'clb.tencentcloudapi.com',\n // },\n};\n\nconst FINACE_HOST = {\n scf: {\n 'ap-shanghai-fsi': {\n path: '/fsi/scf/shanghai',\n host: 'scf.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/scf/shenzhen',\n host: 'scf.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cfs: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cfs/shanghai',\n host: 'cfs.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cfs/shenzhen',\n host: 'cfs.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n ckafka: {\n 'ap-shanghai-fsi': {\n path: '/fsi/ckafka/shanghai',\n host: 'ckafka.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/ckafka/shenzhen',\n host: 'ckafka.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n clb: {\n 'ap-shanghai-fsi': {\n path: '/fsi/clb/shanghai',\n host: 'clb.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/clb/shenzhen',\n host: 'clb.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n mongodb: {\n 'ap-shanghai-fsi': {\n path: '/fsi/mongodb/shanghai',\n host: 'mongodb.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/mongodb/shenzhen',\n host: 'mongodb.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n vpc: {\n 'ap-shanghai-fsi': {\n path: '/fsi/vpc/shanghai',\n host: 'vpc.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/vpc/shenzhen',\n host: 'vpc.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cvm: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cvm/shanghai',\n host: 'cvm.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cvm/shenzhen',\n host: 'cvm.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cdb: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cdb/shanghai',\n host: 'cdb.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cdb/shenzhen',\n host: 'cdb.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n monitor: {\n 'ap-shanghai-fsi': {\n path: '/fsi/monitor/shanghai',\n host: 'monitor.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/monitor/shenzhen',\n host: 'monitor.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n postgres: {\n 'ap-shanghai-fsi': {\n path: '/fsi/postgres/shanghai',\n host: 'postgres.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/postgres/shenzhen',\n host: 'postgres.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n emr: {\n 'ap-shanghai-fsi': {\n path: '/fsi/emr/shanghai',\n host: 'emr.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/emr/shenzhen',\n host: 'emr.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cmq: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cmq/shanghai',\n host: 'cmq.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cmq/shenzhen',\n host: 'cmq.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n cls: {\n 'ap-shanghai-fsi': {\n path: '/fsi/cls/shanghai',\n host: 'cls.ap-shanghai-fsi.tencentcloudapi.com',\n },\n 'ap-shenzhen-fsi': {\n path: '/fsi/cls/shenzhen',\n host: 'cls.ap-shenzhen-fsi.tencentcloudapi.com',\n },\n },\n};\n\n// 获取对应业务的 API 接口信息\nexport function GetServiceAPIInfo(region, service) {\n return { ...(SERVICES_API_INFO[service] || {}), ...getHostAndPath(region, service) };\n}\n\n// get host and path for finance regions\nfunction getHostAndPath(region, service) {\n if (_.indexOf(FINACE_REGIONS, region) === -1) {\n return {};\n }\n return (\n _.find(\n _.find(FINACE_HOST, (__, key) => key === service),\n (__, key) => key === region\n ) || {}\n );\n}\n\n// 变量替换指定实例按照那个字段展示\nexport const VARIABLE_ALIAS = 'instancealias';\n\nexport function GetServiceFromNamespace(namespace) {\n return _.get(\n _.find(SERVICES, (service) => service.namespace === namespace),\n 'service'\n );\n}\n// 处理存量target中保存的qce/cvm\nexport function GetLabelFromNamespace(namespace) {\n return _.get(\n _.find(SERVICES, (service) => service.namespace === namespace || service.label === namespace),\n 'label'\n );\n}\n// parse template variable query params\nexport function ParseMetricQuery(query = '') {\n if (!query) {\n return {};\n }\n const result = {};\n const queries = _.split(query, '&');\n _.forEach(queries, (item) => {\n const str = _.split(item, '=');\n if (_.trim(_.get(str, '0', ''))) {\n let val = _.trim(_.get(str, '1', ''));\n try {\n val = JSON.parse(val);\n } catch (e) {\n // console.log({ val });\n }\n result[_.toLower(_.trim(_.get(str, '0', '')))] = val;\n }\n });\n return result;\n}\n\n// parse template variable regex params\nexport function ParseMetricRegex(regex = '') {\n if (!regex) {\n return [];\n }\n regex = regex.replace(/:/g, ':');\n regex = regex.replace(/,/g, ',');\n const regexParams = ParseMetricQuery(regex);\n const result: any[] = [];\n _.forEach(regexParams, (value, key) => {\n if (key === 'tag:tag-key') {\n const valuesArr = _.split(value, ',');\n _.forEach(valuesArr, (item) => {\n const temp = _.split(item, ':');\n if (temp.length === 2) {\n result.push({ Name: `tag:${temp[0]}`, Values: temp.slice(1) });\n }\n });\n } else {\n result.push({ Name: key, Values: _.split(value, ',') });\n }\n });\n return result;\n}\n\n// get the actual value of template variable\nfunction parseVariableFormat(varname: string) {\n varname = String(varname || '');\n // $varname\n let varFlag = false;\n const regResult1 = varname.match(/^\\${?(\\w+)}?/);\n if (regResult1) {\n varFlag = true;\n varname = `\\$\\{${regResult1[1]}\\:json\\}`;\n }\n // [[varname]]\n const regResult2 = varname.match(/^\\[\\[(\\w+)(\\:\\w+)?\\]\\]/);\n if (regResult2) {\n varFlag = true;\n varname = `\\$\\{${regResult2[1]}\\:json\\}`;\n }\n return { varname, varFlag };\n}\n\nexport function ReplaceVariable(templateSrv, scopedVars, field, multiple = false) {\n const { varname, varFlag } = parseVariableFormat(field);\n let replaceVar = templateSrv.replace(varname, scopedVars);\n if (varFlag) {\n try {\n replaceVar = JSON.parse(replaceVar);\n } catch (error) {}\n }\n if (!multiple && _.isArray(replaceVar)) {\n replaceVar = _.get(replaceVar, '0', '');\n }\n return replaceVar;\n}\n\n// get dimensions for instance query param\nexport function GetDimensions(obj) {\n if (_.isEmpty(obj)) {\n return [];\n }\n const dimensions: any[] = [];\n _.forEach(obj, (item) => {\n if (item.Value !== null && item.Value !== undefined && item.Value !== '') {\n dimensions.push({ Name: item.Name, Value: typeof item.Value === 'string' ? item.Value : `${item.Value}` });\n }\n });\n return dimensions;\n}\n\n// parse query data result for panel\nexport function ParseQueryResult(response, instances: any[] = [], timeshift = 0) {\n const instanceList = _.cloneDeep(instances);\n\n const dataPoints = _.get(response, 'DataPoints', []);\n return _.map(dataPoints, (dataPoint) => {\n let instanceAliasValue = _.get(dataPoint, 'Dimensions[0].Value');\n for (let i = 0; i < instanceList.length; i++) {\n if (isInstanceMatch(instanceList[i], _.get(dataPoint, 'Dimensions', []))) {\n instanceAliasValue = instanceList[i]._InstanceAliasValue;\n instanceList.splice(i, 1);\n break;\n }\n }\n return {\n target: `${response.MetricName} - ${instanceAliasValue}`,\n datapoints: parseDataPoint(dataPoint, timeshift),\n };\n });\n}\n\n// parse tencent cloud monitor response data to grafana panel data\nfunction parseDataPoint(dataPoint, timeshift = 0) {\n const timestamps = _.get(dataPoint, 'Timestamps', []);\n const values = _.get(dataPoint, 'Values', []);\n const result = timestamps.map((timestamp, index) => {\n return [values[index], timestamp * 1000 + timeshift];\n });\n\n return result;\n}\n\n// check whether instance is match or not\nfunction isInstanceMatch(instance, dimensions) {\n let match = true;\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < dimensions.length; i++) {\n if (_.get(instance, dimensions[i].Name, '').toString() !== dimensions[i].Value.toString()) {\n match = false;\n break;\n }\n }\n return match;\n}\n\n/**\n * 检查某个变量是否模板变量,即是否匹配 ${varnam} 或 [[varname]]\n *\n * @param field 变量字段名\n */\nexport function isVariable(value) {\n if (value && (value.match(/^\\${?(\\w+)}?/) || value.match(/^\\[\\[(\\w+)(\\:\\w+)?\\]\\]/))) {\n return true;\n }\n return false;\n}\n\n/**\n * 腾讯云 API 3.0 接口协议\n * @param options 接口请求对象 { url: string, data?: object }\n * @param service 产品名字 'cvm'\n * @param signObj 接口请求相关信息 { region?: string, action: string }\n * @param secretId\n * @param secretKey\n */\nexport async function GetRequestParams(options, service, signObj: any = {}, secretId, datasourceId, backendSrv) {\n const signParams = {\n secretId,\n payload: options.data || '',\n ...signObj,\n ...(_.pick(GetServiceAPIInfo(signObj.region || '', service), ['service', 'host', 'version']) || {}),\n backendSrv,\n datasourceId,\n };\n const sign = new Sign(signParams);\n const { intranet, ...headerSigned } = await sign.getHeader();\n // 传入x-tc-language实现国际化\n // zh-CN en-US ko-KR ja-JP\n options.headers = Object.assign(options.headers || {}, { ...headerSigned }, { 'x-tc-language': getLanguage() });\n options.method = 'POST';\n if (intranet) {\n options.url += '-internal';\n }\n return options;\n}\n\n/**\n * 腾讯云 API 2.0 接口协议\n * @param options 接口请求对象 { url: string, data?: object }\n * @param service 产品名字 'cvm'\n * @param signObj 接口请求相关信息 { region?: string, action: string }\n * @param secretId\n * @param secretKey\n */\nexport async function GetRequestParamsV2(\n options: any = {},\n service,\n signObj: any = {},\n secretId,\n datasourceId,\n backendSrv\n) {\n const data = options.data || {};\n const signParams = {\n secretId,\n data,\n ...signObj,\n ...(_.pick(GetServiceAPIInfo(signObj.region || '', service), ['host', 'version']) || {}),\n backendSrv,\n datasourceId,\n };\n options.method = 'POST';\n const sign = new SignV2(signParams);\n options.headers = Object.assign(options.headers || {}, { 'Content-Type': 'application/x-www-form-urlencoded' });\n const { queryString, path, host, intranet } = await sign.generateQueryString();\n options.data = qs.stringify({\n ...options.data,\n ...queryString,\n ...(host && { host: host }),\n });\n if (intranet) {\n // TODO: qcloud.com intranet host\n console.log('got intranet for sign v2');\n }\n options.url += path;\n return options;\n}\n\nexport function SliceLength(total = 0, len = 1) {\n const result: any[] = [];\n const num = Math.ceil(total / len);\n for (let i = 1; i < num; i++) {\n result.push({ Offset: len * i });\n }\n return result;\n}\n\nexport const FilterKeys = ['Namespace', 'Offset', 'Limit', 'SearchKey', 'Description', 'OrderBy', 'Order'];\n\nexport function parseDataFromBackendPlugin(res) {\n const { data } = toDataQueryResponse(res);\n return {\n authorization: _.get(data, '[0].meta.custom', ''),\n };\n}\n\n/** 当前环境是否为非生产环境 */\nexport const IS_DEVELOPMENT_ENVIRONMENT = !(process.env.NODE_ENV === 'production');\n\n/**\n * @link https://github.com/grafana/grafana/blob/3c6e0e8ef85048af952367751e478c08342e17b4/packages/grafana-data/src/types/app.ts#L12\n */\nexport enum CoreApp {\n CloudAlerting = 'cloud-alerting',\n UnifiedAlerting = 'unified-alerting',\n Dashboard = 'dashboard',\n Explore = 'explore',\n Unknown = 'unknown',\n PanelEditor = 'panel-editor',\n PanelViewer = 'panel-viewer',\n}\n","import _ from 'lodash';\nimport moment from 'moment';\nimport DatasourceInterface from '../MonitorDatasource';\nimport {\n GetRequestParams,\n GetServiceAPIInfo,\n ReplaceVariable,\n GetDimensions,\n ParseQueryResult,\n SliceLength,\n} from '../../common/constants';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { MetricQuery } from './types';\nimport { getNamesapceFromService, getTimeShiftInMs } from '../../common/utils';\nimport { Language, setLanguage } from '../../../locale';\n\nexport interface TemplateQueryIdType {\n instance: string;\n listener?: string;\n}\n\ninterface queryConfigType {\n dim_KeyInStorage: string;\n dim_KeyInTarget?: string;\n dim_KeyInIns?: string;\n dim_KeyInMap: string;\n}\n\nexport abstract class BaseDatasource implements DatasourceInterface {\n Namespace?: string;\n service: string;\n instanceListCache: any[] = [];\n extraMetricDims: string[] = [];\n url: string;\n instanceSettings: any;\n backendSrv: any;\n templateSrv: any;\n secretId: string;\n checkKeys: string[] = [];\n MetricReqConfig: {\n resultFilter?: Function;\n } = {};\n extrasAlias?: string[] = [];\n /*\n 一个配置:(用于处理除了InstanceId之外的)(Record中的key是指标修正之后的维度,即通过InvalidDemsion处理后)\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。为空则取即通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。即:templateQueryIdMap中内容。联合上面2的内容筛选出原始sourceMap\n 4 通过这个dim和sourceMap获取维度值。即sourceMap[dim]\n */\n queryMonitorExtraConfg: Record = {};\n CandiateDimensions?: Record = {};\n\n InstanceReqConfig?: {\n service?: string;\n action: string;\n responseField: string;\n interceptor?: {\n request?: (params: unknown) => unknown;\n response?: (data: unknown) => unknown;\n };\n };\n InvalidDimensions?: Record;\n\n abstract InstanceAliasList: string[];\n abstract templateQueryIdMap: TemplateQueryIdType; // 必须为标识\n\n /** @ngInject */\n constructor(instanceSettings, backendSrv, templateSrv) {\n this.instanceSettings = instanceSettings;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n this.url = instanceSettings.url;\n this.secretId = (instanceSettings.jsonData || {}).secretId || '';\n setLanguage(instanceSettings.jsonData.language || Language.Chinese);\n }\n\n get namespace() {\n // 需要注意的是this.service来自于原型上,在实例中导入时注入\n return this.Namespace || getNamesapceFromService(this.service);\n }\n\n // 获取额外要显示到图例里的内容\n getOtherAlias(instance: any, target: any): string {\n let result = '';\n const alias = instance._InstanceAliasValue;\n this.extrasAlias?.forEach((extra) => {\n const extraAlia = this.getVariable(target[extra]);\n if (extraAlia && alias.indexOf(extraAlia) === -1) {\n result += ` - ${extraAlia}`;\n }\n });\n return result;\n }\n\n /* 格式化模板变量上的显示 */\n getAliasValue(instance: Record, alias: string) {\n const result = instance[alias];\n return Array.isArray(result) ? result.join() : result;\n }\n\n formatVarDisplay(instance: Record, displayTpl: string | undefined, instanceAlias: string) {\n // 获取display=aaa${InstanceName}bbb${InstanceId}ccc\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !this.InstanceAliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(instance, b);\n });\n }\n return this.getAliasValue(instance, instanceAlias);\n }\n /**\n * @param query 模板变量配置填写的 Query 参数对象,由顶层将字符串转换为了对象\n */\n async metricFindQuery(query: MetricQuery, regex?: string) {\n const { action, namespace, display, payload = {} } = query;\n let { region, instancealias = this.templateQueryIdMap.instance } = query;\n if (!action || !namespace) {\n return [];\n }\n // 支持payload里传入模板变量\n if (_.isObject(payload)) {\n _.forEach(payload, (value, key) => {\n payload[key] = _.isString(value) ? this.getVariable(value) : value;\n });\n }\n\n // 查询地域列表\n const regionQuery = action.match(/^DescribeRegions$/i);\n if (regionQuery) {\n return this.getRegions();\n }\n\n region = this.getVariable(region); // 将模板region转换为真实值\n\n // 查询实例列表\n if (region && action.match(/^DescribeInstances/i)) {\n const result = await this.getVariableInstances(region, payload);\n instancealias = this.InstanceAliasList.includes(instancealias) ? instancealias : this.templateQueryIdMap.instance;\n\n const res = result.flatMap((item) => {\n const insAlias = this.formatVarDisplay(item, display, instancealias);\n\n item._InstanceAliasValue = insAlias; // FIXME:\n\n if (!item[instancealias]) return [];\n return [\n {\n text: insAlias,\n value: item[this.templateQueryIdMap.instance],\n },\n ];\n });\n\n // 缓存全量实例列表\n await instanceStorage.setInstance(this.service, result);\n return res;\n }\n\n // 在instance实例的基础上查询其他数据\n let instance = this.getVariable(query['instance']);\n if (_.isArray(instance)) instance = instance[0]; // 有额外维度,仅支持实例单选情况\n if (region && action && instance) {\n try {\n // instance = JSON.parse(instance);\n const instanceCache = await instanceStorage.getInstance(this.service);\n\n instance = _.cloneDeep(instanceCache.find((item) => item[this.templateQueryIdMap.instance] === instance)) ?? {};\n // eslint-disable-next-line no-empty\n } catch (error) {}\n return this.fetchMetricData(action, region, instance, query);\n }\n\n return Promise.resolve([]);\n }\n // 获取指标数据\n async fetchMetricData(action: string, region: string, instance: any, query?: any) {\n return [];\n }\n\n /**\n * 根据 Panel 的配置项,获取相应的监控数据\n *\n * @param options Panel 的配置参数\n * @return 返回数据数组,示例如下\n * [\n * {\n * \"target\": \"AccOuttraffic - ins-123\",\n * \"datapoints\": [\n * [861, 1450754160000],\n * [767, 1450754220000]\n * ]\n * }\n * ]\n */\n async dimensionsFormat(dimKeys, ins, dimensionObject, target, service, options) {\n for (let key of dimKeys) {\n let keyTmp = key;\n const invalidDim = this.InvalidDimensions || this.getInvalidDimensions(this, target[service]);\n if (invalidDim[key]) {\n // 从【维度中】的字段到【实例中】字段的映射。 { functionName: FunctionName }\n keyTmp = invalidDim[key];\n ins[key] = ins[keyTmp];\n }\n\n let extraDimValue = this.getVariable(target[service][keyTmp]);\n if (this.queryMonitorExtraConfg[keyTmp]) {\n const {\n dim_KeyInStorage,\n dim_KeyInTarget = keyTmp,\n dim_KeyInMap,\n dim_KeyInIns,\n } = this.queryMonitorExtraConfg[keyTmp];\n let extraIns = ReplaceVariable(this.templateSrv, options.scopedVars, target[service][dim_KeyInTarget], true);\n let extraSourceMap: any = {};\n try {\n extraSourceMap = JSON.parse(extraIns); // 兼容json字符串的 形式\n } catch (error) {\n if (_.isArray(extraIns)) extraIns = extraIns[0]; // 如果多个,取第一个。除了实例ID 暂不支持其他纬度多选\n const extraStorage = await instanceStorage.getExtraStorage(this.service, dim_KeyInStorage);\n\n extraSourceMap =\n extraStorage?.find((item) => {\n if (_.isArray(item[dim_KeyInMap])) {\n return item[dim_KeyInMap][0] === extraIns;\n }\n return item[dim_KeyInMap] === extraIns;\n }) ?? {};\n }\n const isStringOrNumber = _.isString(extraSourceMap) || _.isNumber(extraSourceMap);\n // 增加ins实例之外的alias,填入到ins._InstanceAliasValue\n const insAlias = ins._InstanceAliasValue;\n const otherAlias = isStringOrNumber ? extraSourceMap : extraSourceMap._InstanceAliasValue;\n if (otherAlias && insAlias.indexOf(otherAlias) === -1) {\n ins._InstanceAliasValue += ` - ${otherAlias}`;\n }\n\n extraDimValue = isStringOrNumber ? extraSourceMap : extraSourceMap?.[dim_KeyInIns || keyTmp];\n } else {\n ins._InstanceAliasValue += this.getOtherAlias(ins, target[service]);\n }\n\n if (\n getTimeShiftInMs(target[service].timeshift) > 0 &&\n ins._InstanceAliasValue.indexOf(target[service].timeshift) === -1\n ) {\n ins._InstanceAliasValue += `_${target[service].timeshift}`;\n }\n // 设置instance,针对额外的维度,需要注意模板变量的值\n // ins[key] = ins[keyTmp] ?? extraDimValue;\n ins[key] = this.getDimensionsVal(ins, keyTmp, extraDimValue);\n // cynosdb产品接口返回维度和入参不一致\n if (this.checkKeys.length > 0) {\n this.checkKeys.forEach((Ekey) => {\n ins[Ekey] = ins[key];\n });\n }\n dimensionObject[key] = { Name: key, Value: ins[key] };\n }\n return dimensionObject;\n }\n getDimensionsVal(ins: Record, key: string, extraDimValue: string) {\n let dimVal = ins[key];\n if (_.isEmpty(dimVal) && this.CandiateDimensions[key]) {\n dimVal = ins[this.CandiateDimensions[key]];\n }\n return dimVal ?? extraDimValue;\n }\n query(options: any) {\n const service = this.service!; // 强制声明非空\n\n const queries = _.filter(options.targets, (item) => {\n // 过滤无效的查询 target\n return (\n item.hide !== true &&\n !!item.namespace &&\n !!item[service].metricName &&\n !_.isEmpty(ReplaceVariable(this.templateSrv, options.scopedVars, item[service].region, false)) &&\n !_.isEmpty(ReplaceVariable(this.templateSrv, options.scopedVars, item[service].instance, true))\n );\n })\n .reduce((prev, target) => {\n if (getTimeShiftInMs(target[service].timeshift) > 0) {\n const cloneTarget = _.cloneDeep(target);\n cloneTarget[service].timeshift = '';\n return [...prev, cloneTarget, target];\n }\n return [...prev, target];\n }, [])\n .map(async (target) => {\n // 实例 instances 可能为模板变量,需先获取实际值\n // 针对JSON字符串和id的形式,分开做处理\n let instances = ReplaceVariable(this.templateSrv, options.scopedVars, target[service].instance, true);\n const instanceCache = await instanceStorage.getInstance(this.service);\n const timeshift = getTimeShiftInMs(target[service].timeshift);\n\n instances = [].concat(instances).map((inst) => {\n try {\n return JSON.parse(inst); // 兼容json字符串的 形式\n } catch (error) {\n // 如果没拿到缓存,取默认实例组\n if (!instanceCache) return this.getDefaultInsObj?.(inst);\n return _.cloneDeep(instanceCache.find((item) => item[this.templateQueryIdMap.instance] === inst)) ?? {};\n }\n });\n const region = ReplaceVariable(this.templateSrv, options.scopedVars, target[service].region, false);\n const insInReq: any = [];\n for (let ins of instances) {\n const dimensionObject = target[service].dimensionObject;\n // 处理dimensions的值\n const dimKeys = Object.keys(dimensionObject);\n const dimResult = await this.dimensionsFormat(dimKeys, ins, dimensionObject, target, service, options);\n\n insInReq.push([{ Dimensions: GetDimensions(dimResult) }]);\n }\n const data = {\n StartTime: moment(options.range.from).subtract(timeshift).format(),\n EndTime: moment(options.range.to).subtract(timeshift).format(),\n Period: target[service].period || 300,\n Instances: _.flatMap(insInReq),\n Namespace: target.namespace,\n MetricName: target[service].metricName,\n };\n return this.getMonitorData(data, region, instances, target[service], options);\n });\n\n if (queries.length === 0) {\n return [];\n }\n\n return Promise.all(queries)\n .then((responses) => {\n return _.flatten(responses);\n })\n .catch((error) => {\n return [];\n });\n }\n getDefaultInsObj(ins: string) {\n return {} as any;\n }\n getInstanceReqConfig(selfIns: any) {\n return {} as any;\n }\n getInvalidDimensions(selfIns: any, target?: any) {\n return {} as any;\n }\n // 获取某个变量的实际值,this.templateSrv.replace() 函数返回实际值的字符串\n getVariable(metric?: string) {\n const rs = this.templateSrv.replace((metric || '').trim());\n const valStr = rs.match(/\\{([\\w-,]+)\\}/);\n // 判断是否为多选\n if (valStr) {\n return valStr[1].split(',');\n }\n return rs;\n }\n\n /**\n * 获取 监控数据\n * @param params 获取监控数据的请求参数\n * @param region 地域信息\n * @param instances 实例列表,用于对返回结果的匹配解析\n */\n getMonitorData(params, region, instances, target, options) {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n const timeshift = getTimeShiftInMs(target.timeshift);\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { action: 'GetMonitorData', region }\n ).then((response) => {\n return ParseQueryResult(response, instances, timeshift);\n });\n }\n\n getRegions(): any {\n return this.doRequest(\n {\n url: this.url + '/cvm',\n },\n 'cvm',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n\n getMetrics(region = 'ap-guangzhou'): Promise {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Namespace: this.namespace,\n },\n },\n serviceInfo.service,\n { region, action: 'DescribeBaseMetrics' }\n ).then((response) => {\n const res = _.filter(\n _.filter(response.MetricSet || [], (item) => !(item.Namespace !== this.namespace || !item.MetricName))\n );\n const resFilterFn = this.MetricReqConfig.resultFilter;\n if (resFilterFn) {\n return res.map((item) => resFilterFn(item));\n }\n return res;\n });\n }\n\n getInstances(region, params = {}) {\n const {\n service = this.service,\n action,\n responseField: field,\n interceptor,\n } = this.InstanceReqConfig || this.getInstanceReqConfig(this);\n params = { Offset: 0, Limit: 100, ...params };\n const serviceInfo = GetServiceAPIInfo(region, service);\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: interceptor?.request ? interceptor.request(params) : params,\n },\n serviceInfo.service,\n { region, action }\n ).then((response) => {\n // 处理异常,则不按正常的情况处理,直接抛出错误\n if (response?.Error) {\n console.error(response.Error);\n return response;\n }\n\n let result;\n // 先,field处理\n if (field) {\n result = _.get(response, field) ?? _.get(response, `Result.${field}`) ?? [];\n }\n\n // 后,拦截器处理\n if (interceptor?.response) {\n result = interceptor.response(result);\n }\n return result;\n });\n }\n\n getVariableInstances(region, query = {}): Promise {\n let result: any[] = [];\n const params = { ...{ Offset: 0, Limit: 100 }, ...query };\n\n const {\n service = this.service,\n action,\n responseField: field,\n interceptor,\n } = this.InstanceReqConfig || this.getInstanceReqConfig(this);\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: interceptor?.request ? interceptor.request(params) : params,\n },\n serviceInfo.service,\n { region, action }\n ).then((response) => {\n result = _.get(response, field) ?? _.get(response, `Result.${field}`) ?? [];\n const total =\n response.TotalCount ?? response.TotalCnt ?? response.TotalNumber ?? _.get(response, `Result.TotalCount`) ?? 0;\n if (result.length >= total) {\n return interceptor?.response ? interceptor.response(result) : result;\n } else {\n const param = SliceLength(total, params?.Limit || 100);\n const promises: any[] = [];\n _.forEach(param, (item) => {\n promises.push(this.getInstances(region, { ...item, ...query }));\n });\n return Promise.all(promises)\n .then((responses) => {\n _.forEach(responses, (item) => {\n result = _.concat(result, item);\n });\n return interceptor?.response ? interceptor.response(result) : result;\n })\n .catch((error) => {\n return interceptor?.response ? interceptor.response(result) : result;\n });\n }\n });\n }\n\n // 检查某变量字段是否有值\n isValidConfigField(field: string) {\n return field && field.length > 0;\n }\n\n testDatasource() {\n // const { service = this.service, action } = this.InstanceReqConfig;\n // const serviceInfo = GetServiceAPIInfo('ap-guangzhou', service);\n\n if (!this.isValidConfigField(this.secretId)) {\n return {\n service: this.service,\n status: 'error',\n message: 'The SecretId/SecretKey field is required.',\n };\n }\n\n return Promise.all([\n this.getRegions(),\n this.getMetrics(),\n // this.doRequest(\n // {\n // url: this.url + serviceInfo.path,\n // data: {\n // Offset: 0,\n // Limit: 1,\n // },\n // },\n // service,\n // { region: 'ap-guangzhou', action },\n // ),\n this.getInstances('ap-guangzhou', {\n Offset: 0,\n Limit: 1,\n }),\n ])\n .then((responses) => {\n const cvmErr = _.get(responses, '[0].Error', {});\n const monitorErr = _.get(responses, '[1].Error', {});\n const serviceErr = _.get(responses, '[2].Error', {});\n // const cvmAuthFail = _.get(cvmErr, 'Code', '').indexOf('AuthFailure') !== -1;\n // const monitorAuthFail = _.get(monitorErr, 'Code', '').indexOf('AuthFailure') !== -1;\n // const serviceAuthFail = _.get(serviceErr, 'Code', '').indexOf('AuthFailure') !== -1;\n const cvmAuthFail = _.get(cvmErr, 'Code', '');\n const monitorAuthFail = _.get(monitorErr, 'Code', '');\n const serviceAuthFail = _.get(serviceErr, 'Code', '');\n if (cvmAuthFail || monitorAuthFail || serviceAuthFail) {\n const messages: any[] = [];\n if (cvmAuthFail) {\n messages.push(_.get(cvmErr, 'Code'));\n }\n if (monitorAuthFail) {\n messages.push(_.get(monitorErr, 'Code'));\n }\n if (serviceAuthFail) {\n messages.push(_.get(serviceErr, 'Code'));\n }\n const message = _.join(_.compact(_.uniq(messages)), '; ');\n return {\n service: this.service,\n status: 'error',\n message,\n };\n } else {\n return {\n namespace: this.namespace,\n service: this.service,\n status: 'success',\n message: `Successfully queried the ${this.service} service.`,\n title: 'Success',\n };\n }\n })\n .catch((error) => {\n let message = `${this.service} service:`;\n message += error.statusText ? error.statusText + '; ' : '';\n if (_.get(error, 'data.error.code', '')) {\n message += error.data.error.code + '. ' + error.data.error.message;\n } else if (_.get(error, 'data.error', '')) {\n message += error.data.error;\n } else if (_.get(error, 'data', '')) {\n message += error.data;\n } else {\n message += `Cannot connect to ${this.service} service.`;\n }\n return {\n service: this.service,\n status: 'error',\n message: message,\n };\n });\n }\n\n async doRequest(options, service, signObj: any = {}) {\n options = await GetRequestParams(\n options,\n service,\n signObj,\n this.secretId,\n this.instanceSettings.id,\n this.backendSrv\n );\n return this.backendSrv\n .datasourceRequest(options)\n .then((response) => {\n return _.get(response, 'data.Response', {});\n })\n .catch((error) => {\n throw error;\n });\n }\n}\n","import _ from 'lodash';\nimport { SERVICES } from '../tc_monitor';\n\n/* 从分页数据获取全量数据 */\nconst PageSize = 50;\nfunction getFieldsValue(value, fields) {\n return fields.map((item) => _.get(value, item, _.get(value, `Result.${item}`, [])));\n}\n\nexport async function fetchAllFactory(fetcher: (args: any) => Promise, _params: any, field: string | string[]) {\n const params = { ..._.omit(_params, ['isOffsetPage']) };\n params.Limit = params.Limit || PageSize; // 默认给个Limit大小为50\n params.Offset = params.Offset ?? 0; // 默认给个Offset为0\n\n // 第一次请求,获取总数\n const rs = (await fetcher(params)) ?? {};\n const fields = Array.isArray(field) ? field : [field];\n\n // rs.TotalCount = rs.TotalCount ?? rs.Result.TotalCount ?? [];\n // const { TotalCount } = rs;\n const TotalCount = rs.TotalCount ?? rs.Result?.TotalCount ?? rs.TotalCnt ?? rs.Result?.TotalCnt ?? 0;\n const firstLists = getFieldsValue(rs, fields);\n\n if (TotalCount === 0 || firstLists[0].length === TotalCount) {\n // 只有一页,结束\n return firstLists;\n }\n\n // 批量请求\n const delta = TotalCount - firstLists[0].length;\n const batchCount = Math.ceil(delta / PageSize);\n const pmList = new Array(batchCount).fill(0).map((_, index) => {\n params.Offset = _params.isOffsetPage ? 1 + index : (1 + index) * params.Limit;\n return fetcher(params);\n });\n\n // 合并\n const resultList = await Promise.all(pmList); // [ {a: [], b[] }, { a: [], b:[] }]\n\n return resultList.reduce((acc, cur) => {\n const lists = getFieldsValue(cur, fields);\n // [[], [], []] + [[], [], []]\n acc.forEach((list, index) => list.push(...lists[index]));\n return acc;\n }, firstLists);\n}\n\n/**\n * 实例列表接口入参处理\n *\n * @param queries 表单键入内容\n * @param isFilter 是否需要设置为Filters格式\n */\nexport function instanceQueryParamsBaseParse(queries: any, isFilter: boolean) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n const Filters: any[] = [];\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n if (isFilter) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n } else {\n params[key] = _.uniq(item);\n }\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n if (isFilter) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n } else {\n params[key] = _.get(item, 'value');\n }\n }\n } else if (item !== null && item !== undefined && item !== '') {\n if (isFilter) {\n Filters.push({ Name: key, Values: item });\n } else {\n params[key] = item;\n }\n }\n });\n if (isFilter && Filters.length > 0) {\n params.Filters = Filters;\n return params;\n }\n }\n return params;\n}\n\nexport function getNamesapceFromService(serviceName: string) {\n return _.get(\n _.find(SERVICES, (service) => service.service === serviceName),\n 'namespace'\n );\n}\n\nexport function serviceGroupBy(\n services: { service: string; label: string; namespace: string; href: string; groupName?: string }[]\n) {\n const result = services.reduce((acc, cur) => {\n const { namespace, label, groupName = label } = cur;\n\n const existedGroup = acc.find((item) => item.label === groupName);\n if (!existedGroup) {\n acc.push({ label: groupName, value: groupName, items: [{ label, value: namespace }] });\n return acc;\n }\n\n existedGroup.items.push({ label, value: namespace });\n return acc;\n }, [] as any[]);\n\n // 将只有一个子元素的项目进行特殊处理\n const rs = result.map((item) =>\n item.items.length === 1 ? { label: item.items[0].label, value: item.items[0].value } : item\n );\n return rs;\n}\n\nexport const isTargetEqual = (newTargetString: string, oldTargetString: string, key: string) => {\n try{\n const newTarget = JSON.parse(newTargetString);\n const oldTarget = JSON.parse(oldTargetString);\n return newTarget[key] === oldTarget[key];\n }catch(e){\n return newTargetString === oldTargetString;\n }\n}\n\nexport const getTimeShiftInMs = (timeShift: any) => {\n const parts = /^(\\d+)([d|h|m|s])$/.exec(timeShift);\n if (!parts) {\n return 0;\n }\n const amount = parseInt(parts[1], 10);\n const unit = parts[2];\n switch (unit) {\n case 'd':\n return amount * 86400 * 1000;\n case 'h':\n return amount * 3600 * 1000;\n case 'm':\n return amount * 60 * 1000;\n case 's':\n return amount * 1000;\n }\n return 0;\n}","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","module.exports = __WEBPACK_EXTERNAL_MODULE__6__;","import coreModule from 'grafana/app/core/core_module';\nimport { DetailQueryConfig } from './types';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nfunction classFactory(detailConfig) {\n return class QueryCtrl {\n static _config: DetailQueryConfig;\n\n /** @ngInject */\n constructor($scope, $rootScope) {\n Object.assign($scope, detailConfig);\n\n $scope.getDropdown = (field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n return $scope.datasource.getFilterDropdown(service, { field, region: $scope.region });\n };\n }\n };\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n`;\nfunction queryDDOFactory(QueryCtrl) {\n return function queryDDO() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n };\n}\n\nexport default (name: string, config: DetailQueryConfig) => {\n // QueryCtrl._config = config;\n const newQueryIns = classFactory(config);\n coreModule.directive(name, queryDDOFactory(newQueryIns));\n};\n","interface DBEvent {\n target: { result: any; error: any };\n}\n// 数据库结构\ninterface DBTypes {\n store: StoreType;\n name?: string;\n version?: number;\n}\n// store表结构\ninterface StoreType {\n name: string; // 表名\n key: string; // 主键名\n cursorIndex?: { name: string; unique: boolean }[]; // 索引列表\n}\n\n// 数据结构\n// {service: 'cvm', instance: [{ins: 23}]}\ninterface DataType {\n service: string;\n [x: string]: any; // 有产品需缓存其他列表\n}\n\n// interface UpdateProps {\n// storeName: string;\n// cursorKey: string;\n// cursorValue?: any;\n// data: any;\n// }\n\nconst store: StoreType = {\n name: 'grafanaInstanceList',\n key: 'service',\n};\nconst promisify = (request: any, type?: string) => {\n return new Promise((resolve, reject) => {\n request.onsuccess = (event: DBEvent) => {\n const returnMap: any = {\n event: event.target.result,\n request: request.result,\n msg: '操作成功',\n };\n resolve(returnMap[type || 'msg']);\n };\n request.onerror = (event: DBEvent) => reject(event.target.error || '操作失败');\n });\n};\n// 固定表名和数据库名\nclass IndexedDB {\n name = 'grafanaDatabase';\n version = 1;\n\n constructor(props: DBTypes) {\n const { name = 'database', version = 1, store } = props;\n this.name = name;\n this.version = version;\n\n this.initDB(store);\n }\n\n /**\n * 初始化数据库\n * @param store 库表的结构\n */\n initDB(store: StoreType) {\n const indexeddb = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;\n const request = indexeddb.open(this.name, this.version);\n\n request.onupgradeneeded = (event: IDBVersionChangeEvent) => {\n const db = (event.target as IDBOpenDBRequest).result;\n if (db.objectStoreNames.contains(store.name)) {\n // 存在表store\n }\n\n // 遍历store,设置数据表结构\n db.createObjectStore(store.name, {\n keyPath: store.key,\n });\n };\n request.onerror = () => Promise.reject(new Error('初始化数据库失败'));\n request.onsuccess = () => Promise.resolve('初始化数据库成功');\n }\n\n openDB() {\n const indexeddb = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;\n const request = indexeddb.open(this.name, this.version);\n\n return promisify(request, 'event');\n }\n\n /**\n * 新增数据\n * @param storeName 表名\n * @param data 添加的数据\n */\n async insertData(storeName: string, data: any) {\n try {\n // console.time('insertData');\n const db = await this.openDB();\n const transaction = db.transaction(storeName, 'readwrite');\n const objectStore = transaction.objectStore(storeName);\n\n objectStore.add(data);\n // console.timeEnd('insertData');\n\n return new Promise((resolve, reject) => {\n transaction.oncomplete = function () {\n // console.timeEnd('insertData');\n resolve('所有数据插入成功');\n };\n\n transaction.onerror = function (event) {\n reject(event);\n };\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n /**\n * 更新数据\n * @param props 查询数据的参数以及要修改的值的参数\n */\n async addData(data: DataType, isCover?: boolean) {\n try {\n // console.log('addData');\n const storeName = store.name; // 表名\n const oldData = await this.getData(data.service);\n const objectStore = await this.getObjectStore(storeName, 'readwrite');\n\n if (!oldData) {\n // 不存在则新建\n this.insertData(storeName, data);\n }\n // 存在则更新\n let newData: any = { ...oldData, ...data };\n if (isCover) newData = data; // 需要覆盖之前内容\n // 把更新过的对象放回数据库\n const requestUpdate = objectStore.put(newData);\n // console.timeEnd('updateData');\n return promisify(requestUpdate);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n /**\n * 获取数据库的值,返回查询到的第一项\n * @param storeName 表名/存储对象的键\n * @param cursorKey key\n * @param cursorValue 要查询索引的值\n */\n async getData(seviceName: string) {\n try {\n // console.time('getData');\n const storeName = store.name;\n const objectStore = await this.getObjectStore(storeName);\n const request = objectStore.get(seviceName);\n // console.timeEnd('getData');\n return promisify(request, 'request');\n } catch (error) {\n return Promise.reject(error);\n }\n }\n async getAllData(storeName: string) {\n try {\n // console.time('getAllData');\n const objectStore = await this.getObjectStore(storeName);\n const request = objectStore.getAll();\n const result = await promisify(request, 'request');\n // console.timeEnd('getAllData');\n return result ? result : [];\n } catch (error) {\n return Promise.reject(error);\n }\n }\n /**\n * 获取对象仓库\n * @param storeName 表名\n * @param type readonly 或者 readwrite等\n */\n private async getObjectStore(storeName: string, type?: any): Promise {\n try {\n const db = await this.openDB();\n return db.transaction(storeName, type).objectStore(storeName);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n}\n// console.log('testDDB')\n// const indexDB = new IndexedDB({store});\n// indexDB.addData({service: 'cvm', instance: [{ins: 23}]}).then(e=>{\n// indexDB.getData('cvm').then(dd=>{console.log({dd})})\n// })\nexport default new IndexedDB({ store });\n","import indexedDB from './indexedDB';\nclass InstanceStorage {\n // prefix = 'Datasource';\n // storageKey = 'grafanaInstanceCache';\n insKey = 'Instances';\n cacheWay = '';\n constructor() {}\n setInstance(service: string, value: Record) {\n return this.setStorage(service, this.insKey, value, true);\n }\n async getInstance(service: string) {\n return this.getStorage(service, this.insKey);\n }\n setExtraStorage(service: string, Ekey: string, EValue: Record) {\n return this.setStorage(service, Ekey, EValue, false);\n }\n async getExtraStorage(service: string, Ekey: string) {\n return this.getStorage(service, Ekey);\n }\n private setStorage(serviceKey: string, key: string, value: Record, isCover = false) {\n // console.log('set', serviceKey, key, value);\n return indexedDB.addData(\n {\n service: serviceKey,\n [key]: value,\n },\n isCover\n );\n }\n // 获取到模版变量信息\n private async getStorage(service: string, key?: string) {\n const storage = await indexedDB.getData(service);\n // console.log('get', key, storage);\n return key ? storage?.[key] : storage;\n }\n}\nexport default new InstanceStorage();\n","module.exports = __WEBPACK_EXTERNAL_MODULE__9__;","import _ from 'lodash';\n\nexport const CKAFKAQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'InstanceId',\n cnDescriptor: '按照实例ID过滤',\n link: '',\n type: 'input',\n },\n {\n key: 'SearchWord',\n enDescriptor: 'SearchWord',\n cnDescriptor: '按照实例名称过滤,支持模糊查询',\n link: '',\n type: 'input',\n },\n {\n key: 'TagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '匹配标签key值',\n link: '',\n type: 'input',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例的状态,不填默认返回全部',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '创建中', value: 0 },\n { text: '运行中', value: 1 },\n { text: '删除中', value: 2 },\n ],\n },\n];\n\nconst CKAFKA_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n topicId: '',\n topicName: '',\n consumerGroup: '',\n partition: '',\n queries: {\n Offset: 0,\n Limit: 10,\n Status: [],\n InstanceId: '',\n SearchWord: '',\n TagKey: '',\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst CKAFKAInstanceAliasList = ['InstanceId', 'InstanceName'];\nconst CKAFKATopicAliasList = ['TopicId', 'TopicName'];\n// 保存在模板变量value中的key\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n topicId: 'TopicId',\n groupName: 'GroupName',\n partition: 'PartitionId',\n};\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nconst CKAFKAInvalidDemensions = new Proxy(\n {\n topicId: 'TopicId',\n topicName: 'TopicName',\n consumerGroup: 'GroupName',\n partition: 'PartitionId',\n },\n {\n get: (obj, prop) => {\n if (String(prop).toLocaleLowerCase() === 'instanceid') return 'InstanceId';\n return obj[prop];\n },\n }\n);\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n TopicList: 'TopicList',\n GroupList: 'GroupList',\n PartitionList: 'PartitionList',\n};\n\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n TopicId: {\n dim_KeyInStorage: keyInStorage.TopicList,\n dim_KeyInTarget: 'topicId',\n dim_KeyInMap: templateQueryIdMap.topicId,\n },\n // topicName和topicId是同一个storage中的source,所以根据topicId帅选\n TopicName: {\n dim_KeyInStorage: keyInStorage.TopicList,\n dim_KeyInTarget: 'topicId',\n dim_KeyInMap: templateQueryIdMap.topicId,\n },\n GroupName: {\n dim_KeyInStorage: keyInStorage.GroupList,\n dim_KeyInTarget: 'consumerGroup',\n dim_KeyInMap: templateQueryIdMap.groupName,\n },\n PartitionId: {\n dim_KeyInStorage: keyInStorage.PartitionList,\n dim_KeyInTarget: 'partition',\n dim_KeyInMap: templateQueryIdMap.partition,\n },\n};\nexport default CKAFKA_STATE;\nexport {\n CKAFKAInstanceAliasList,\n CKAFKATopicAliasList,\n CKAFKAInvalidDemensions,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n GetInstanceQueryParams as CKAFKAGetInstanceQueryParams,\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__11__;","import _ from 'lodash';\n\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/LOADBALANCE';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'loadBalanceQuery';\n\nconst ForwardTypes = [\n { text: '通用的负载均衡', value: 1 },\n { text: '传统的负载均衡', value: 0 },\n];\n\nconst OrderBy = [\n { text: 'LoadBalancerName', value: 'LoadBalancerName' },\n { text: 'CreateTime', value: 'CreateTime' },\n { text: 'Domain', value: 'Domain' },\n { text: 'LoadBalancerType', value: 'LoadBalancerType' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\n\nconst WithRs = [\n { text: '没有绑定后端服务', value: 0 },\n { text: '绑定后端服务', value: 1 },\n { text: '查询全部', value: -1 },\n];\nconst LOADBALANCEFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1',\n link: '',\n type: 'inputNumber',\n min: 1,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancer ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancer Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'Forward',\n enDescriptor: 'Forward',\n cnDescriptor: '负载均衡实例类型',\n link: '',\n type: 'select',\n list: ForwardTypes,\n },\n {\n key: 'Domain',\n enDescriptor: 'Domain',\n cnDescriptor: '域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义',\n link: '',\n type: 'input',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancer Vips',\n cnDescriptor: '负载均衡实例的 VIP 地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPrivateIps',\n enDescriptor: 'BackendPrivate Ips',\n cnDescriptor: '负载均衡绑定的后端服务的内网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPublicIps',\n enDescriptor: 'BackendPublic Ips',\n cnDescriptor: '负载均衡绑定的后端服务的外网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ProjectId',\n enDescriptor: 'Project ID',\n cnDescriptor: '负载均衡实例所属的项目 ID',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'VpcId',\n enDescriptor: 'Vpc ID',\n cnDescriptor: '负载均衡实例所属私有网络',\n link: '',\n type: 'input',\n },\n {\n key: 'SecurityGroup',\n enDescriptor: 'Security Group',\n cnDescriptor: '安全组ID',\n link: '',\n type: 'input',\n },\n {\n key: 'MasterZone',\n enDescriptor: 'Master Zone',\n cnDescriptor: '主可用区ID',\n link: '',\n type: 'input',\n },\n {\n key: 'WithRs',\n enDescriptor: 'WithRs',\n cnDescriptor: '负载均衡是否绑定后端服务',\n link: '',\n type: 'select',\n list: WithRs,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderType,\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/214/30685',\n namespace,\n fieldDescriptor: LOADBALANCEFieldsDescriptor,\n};\nconst LBFields = {\n LoadBalancerIds: [],\n Forward: undefined,\n LoadBalancerName: '',\n Domain: '',\n LoadBalancerVips: [],\n BackendPublicIps: [],\n BackendPrivateIps: [],\n Limit: 20,\n Offset: 0,\n ProjectId: undefined,\n WithRs: {},\n VpcId: '',\n SecurityGroup: '',\n MasterZone: '',\n OrderBy: {},\n OrderType: {},\n};\n\nconst LOADBALANCE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n Port: '',\n Protocol: '',\n listener: '',\n servers: '',\n serverPort: '',\n // listenerAlias: 'ListenerId',\n queries: LBFields,\n};\n\n// function GetInstanceQueryParams(queries: any = {}) {\n// const params: any = {};\n// if (!_.isEmpty(queries)) {\n// params.Limit = _.get(queries, 'Limit', 20) || 20;\n// params.Offset = _.get(queries, 'Offset', 0) || 0;\n// queries = _.omit(queries, ['Offset', 'Limit']);\n// _.forEach(queries, (item: any, key) => {\n// if (_.isArray(item)) {\n// item = _.compact(item);\n// if (item.length > 0) {\n// params[key] = _.uniq(item);\n// }\n// } else if (_.isObject(item)) {\n// if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n// params[key] = _.get(item, 'value');\n// }\n// } else if (_.isNumber(item) || !_.isEmpty(item)) {\n// params[key] = item;\n// }\n// });\n// }\n// return params;\n// }\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nconst InstanceAliasList = ['LoadBalancerId', 'LoadBalancerName', 'LoadBalancerVips'];\nconst LOADBALANCEListenerAliasList = ['ListenerId', 'ListenerName', 'Port'];\nconst LOADBALANCEServerAliasList = ['PrivateIpAddresses', 'InstanceId'];\nconst LOADBALANCEVALIDDIMENSIONS = {\n vip: 'LoadBalancerVips',\n // vpcId: 'NumericalVpcId',\n loadBalancerPort: 'Port',\n protocol: 'Protocol',\n lanIp: 'PrivateIpAddresses',\n port: 'ServerPort',\n};\n// 对于ipv6类型,vip应该取AddressIPv6。\nconst CANDIATEDIMENSIONS = {\n LoadBalancerVips: 'AddressIPv6',\n};\n// dimensionObject[item] = { Name: item, Value: '' };\n// const LOADBALANCE_INSTANCE_DIMENSIONOBJECTS = {\n// vip: { Name: 'vip', Value: '' },\n// };\n// const LOADBALANCE_LISTENER_DIMENSIONOBJECTS = {\n// vip: { Name: 'vip', Value: '' },\n// loadBalancerPort: { Name: 'loadBalancerPort', Value: '' },\n// protocol: { Name: 'protocol', Value: '' },\n// };\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n listener: 'ListenerId',\n servers: 'PrivateIpAddresses',\n port: 'Port',\n};\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n listener: 'ListenerList',\n servers: 'ServersList',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n Port: {\n dim_KeyInStorage: keyInStorage.listener,\n dim_KeyInTarget: 'listener',\n dim_KeyInMap: templateQueryIdMap.listener,\n },\n Protocol: {\n dim_KeyInStorage: keyInStorage.listener,\n dim_KeyInTarget: 'listener',\n dim_KeyInMap: templateQueryIdMap.listener,\n },\n PrivateIpAddresses: {\n dim_KeyInStorage: keyInStorage.servers,\n dim_KeyInTarget: 'servers',\n dim_KeyInMap: templateQueryIdMap.servers,\n },\n ServerPort: {\n dim_KeyInStorage: keyInStorage.servers,\n dim_KeyInTarget: 'serverPort',\n dim_KeyInIns: 'Port',\n dim_KeyInMap: templateQueryIdMap.port,\n },\n};\nexport default LOADBALANCE_STATE;\nexport {\n LOADBALANCEFieldsDescriptor,\n InstanceAliasList,\n LOADBALANCEListenerAliasList,\n LOADBALANCEServerAliasList,\n LOADBALANCEVALIDDIMENSIONS,\n templateQueryIdMap,\n CANDIATEDIMENSIONS,\n // LOADBALANCE_LISTENER_DIMENSIONOBJECTS,\n // LOADBALANCE_INSTANCE_DIMENSIONOBJECTS,\n queryMonitorExtraConfg,\n keyInStorage,\n queryEditorConfig,\n namespace,\n queryEditorName,\n GetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/TDMQ';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'tdmqQuery';\n\nconst TDMQInvalidDemensions = {\n tenantId: 'ClusterId',\n tenant: 'ClusterId',\n topicName: 'TopicName',\n environmentId: 'EnvironmentId',\n};\n\n// 需和文件名对应\nconst TDMQInstanceAliasList = ['ClusterId', 'ClusterName'];\n\nconst templateQueryIdMap = {\n instance: 'ClusterId',\n topicName: 'TopicName',\n environmentId: 'EnvironmentId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst TDMQFilterFields = {\n Limit: 20,\n Offset: 0,\n};\n\nconst TDMQFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n];\n\nconst CDNPROVINCE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n // 此处key应该是经过TDMQInvalidDemensions处理后的\n topicName: '',\n environmentId: '',\n queries: TDMQFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-nanjing' },\n { value: 'ap-hongkong' },\n { value: 'ap-tokyo' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n { value: 'ap-bangkok' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n if (item.Dimensions.indexOf('topicName') !== -1 && item.Dimensions.indexOf('environmentId') === -1) {\n item.Dimensions.push('environmentId');\n }\n });\n return metricTmp;\n}\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n topicName: 'topicName',\n environmentId: 'environmentId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n TopicName: {\n dim_KeyInStorage: keyInStorage.topicName,\n dim_KeyInTarget: 'topicName',\n dim_KeyInMap: templateQueryIdMap.topicName,\n },\n EnvironmentId: {\n dim_KeyInStorage: keyInStorage.environmentId,\n dim_KeyInTarget: 'environmentId',\n dim_KeyInMap: templateQueryIdMap.environmentId,\n },\n};\nexport default CDNPROVINCE_STATE;\nexport {\n TDMQFilterFieldsDescriptor,\n templateQueryIdMap,\n TDMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n queryEditorName,\n queryMonitorExtraConfg,\n keyInStorage,\n modifyDimensons,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TDMQGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/GSE';\nconst fleetId = 'FleetId'; // 为和cvm其他产品保持一致,即将string[]改为Array<{fleetid: xxx}>,在此声明key\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'gseQuery';\n\nconst GSEInvalidDemensions = {\n instanceid: 'InstanceId',\n fleetid: 'FleetId',\n queuename: 'Name',\n};\n\n// 需和文件名对应\nconst GSEInstanceAliasList = ['InstanceId', 'PrivateIpAddress', 'IpAddress'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n Name: 'Name',\n FleetId: fleetId,\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n fleet: 'fleet', // 实例队列\n queue: 'queueName', // 会话队列\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n FleetId: {\n dim_KeyInStorage: keyInStorage.fleet,\n dim_KeyInTarget: 'FleetId',\n dim_KeyInMap: templateQueryIdMap.FleetId,\n },\n Name: {\n dim_KeyInStorage: keyInStorage.queue,\n dim_KeyInTarget: 'Name',\n dim_KeyInMap: templateQueryIdMap.Name,\n },\n};\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst GSEFilterFields = {\n Limit: 20,\n Offset: 0,\n InstanceId: '',\n FleetId: '',\n};\n\nconst GSEFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'resourceName',\n cnDescriptor: '资源名称',\n link: '',\n type: 'input',\n },\n {\n key: 'FleetId',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'input',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1165/42604',\n namespace,\n fieldDescriptor: GSEFilterFieldsDescriptor,\n};\n\nconst GSE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n FleetId: '', // 服务器实例\n Name: '', // 队列名称\n queries: GSEFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-bangkok' },\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n // { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-seoul' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n // { value: 'ap-shanghai-fsi' },\n // { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n // { value: 'na-toronto' },\n];\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = item.Dimensions.map((v) => GSEInvalidDemensions[v] || v);\n });\n return metricTmp;\n}\nexport default GSE_STATE;\nexport {\n GSEFilterFieldsDescriptor,\n templateQueryIdMap,\n GSEInstanceAliasList,\n GSEInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n queryMonitorExtraConfg,\n fleetId,\n keyInStorage,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as GSEGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { isArray, cloneDeep } from 'lodash';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/TDMYSQL';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'dcdbQuery';\n\nconst DCDBInvalidDemensions = {\n nodeid: 'NodeId',\n instanceid: 'InstanceId',\n shardid: 'ShardInstanceId',\n ShardId: 'ShardInstanceId',\n};\n\n// 需和文件名对应\nconst DCDBInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n NodeId: 'NodeId',\n ShardInstanceId: 'ShardInstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst DCDBFilterFields = {\n Limit: 20,\n Offset: 0,\n InstanceIds: [],\n SearchName: '',\n SearchKey: '',\n ProjectIds: [],\n // IsFilterVpc\n VpcId: '',\n SubnetId: '',\n\n OrderBy: {},\n OrderByType: {},\n // IsFilterExcluster: {},\n ExclusterType: {},\n\n ExclusterIds: [],\n FilterInstanceType: {},\n};\n\nconst DCDBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '实例 ID 查询',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'SearchName',\n enDescriptor: 'SearchName',\n cnDescriptor: '搜索的字段名,当前支持的值有:instancename、vip、all',\n link: '',\n type: 'input',\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '搜索的关键字',\n link: '',\n type: 'input',\n },\n {\n key: 'ProjectIds',\n enDescriptor: 'ProjectIds',\n cnDescriptor: '按项目 ID 查询',\n link: '',\n type: 'inputNumberMulti',\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '私有网络的子网 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: 'projectId', value: 'projectId' },\n { text: 'createtime', value: 'createtime' },\n { text: 'instancename', value: 'instancename' },\n ],\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '私有网络 ID',\n link: '',\n type: 'select',\n list: [\n { text: 'desc', value: 'desc' },\n { text: 'asc', value: 'asc' },\n ],\n },\n {\n key: 'ExclusterType',\n enDescriptor: 'ExclusterType',\n cnDescriptor: '集群类型',\n link: '',\n type: 'select',\n list: [\n { text: '非独享集群', value: 1 },\n { text: '独享集群', value: 2 },\n { text: '全部', value: 0 },\n { text: 'asc', value: 'asc' },\n ],\n },\n {\n key: 'ExclusterIds',\n enDescriptor: 'ExclusterIds',\n cnDescriptor: '独享集群ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'FilterInstanceType',\n enDescriptor: 'FilterInstanceType',\n cnDescriptor: '实例类型过滤',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '独享实例', value: 1 },\n { text: '主实例', value: 2 },\n { text: '灾备实例', value: 3 },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/557/16140',\n namespace,\n fieldDescriptor: DCDBFilterFieldsDescriptor,\n};\n\nconst DCDB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n ShardId: '',\n NodeId: '',\n queries: DCDBFilterFields,\n};\nconst modifyMetricConf = {\n shardid: 'ShardId',\n instanceid: 'InstanceId',\n nodeid: 'NodeId',\n};\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = item.Dimensions.map((v) => modifyMetricConf[v] || v);\n });\n return metricTmp;\n}\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params = instanceQueryParamsBaseParse(queries, false);\n // 特殊处理\n params.IsFilterVpc = false;\n params.IsFilterExcluster = false;\n if (params.VpcId || params.SubnetId) params.IsFilterVpc = true;\n if (params.ExclusterType) params.IsFilterExcluster = true;\n if (isArray(params.FilterInstanceType)) params.FilterInstanceType = params.FilterInstanceType.join(',');\n return params;\n}\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n NodeId: 'NodeId',\n ShardInstanceId: 'ShardId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n NodeId: {\n dim_KeyInStorage: keyInStorage.NodeId,\n dim_KeyInTarget: 'NodeId',\n dim_KeyInMap: templateQueryIdMap.NodeId,\n },\n ShardInstanceId: {\n dim_KeyInStorage: keyInStorage.ShardInstanceId,\n dim_KeyInTarget: 'ShardId',\n dim_KeyInMap: templateQueryIdMap.ShardInstanceId,\n },\n};\n// 和其他产品的展示保持一致\nconst regionSupported = [\n { text: '华北地区(北京)', value: 'ap-beijing' },\n { text: '西南地区(成都)', value: 'ap-chengdu' },\n { text: '西南地区(重庆)', value: 'ap-chongqing' },\n { text: '华南地区(广州)', value: 'ap-guangzhou' },\n { text: '港澳台地区(中国香港)', value: 'ap-hongkong' },\n { text: '亚太南部(孟买)', value: 'ap-mumbai' },\n { text: '华东地区(南京)', value: 'ap-nanjing' },\n { text: '华东地区(上海)', value: 'ap-shanghai' },\n { text: '华东地区(上海金融)', value: 'ap-shanghai-fsi' },\n { text: '华南地区(深圳金融)', value: 'ap-shenzhen-fsi' },\n { text: '亚太东南(新加坡)', value: 'ap-singapore' },\n { text: '亚太东北(东京)', value: 'ap-tokyo' },\n { text: '欧洲地区(法兰克福)', value: 'eu-frankfurt' },\n { text: '美国东部(弗吉尼亚)', value: 'na-ashburn' },\n { text: '美国西部(硅谷)', value: 'na-siliconvalley' },\n { text: '北美地区(多伦多)', value: 'na-toronto' },\n];\nexport default DCDB_STATE;\nexport {\n DCDBFilterFieldsDescriptor,\n templateQueryIdMap,\n DCDBInstanceAliasList,\n DCDBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n keyInStorage,\n modifyDimensons,\n queryMonitorExtraConfg,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as DCDBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nconst namespace = 'QCE/REDIS_MEM';\nconst BillingMode = [\n { text: '按量计费', value: 'postpaid' },\n { text: '包年包月', value: 'prepaid' },\n];\n\nconst AutoRenew = [\n { text: '手动续费', value: 0 },\n { text: '自动续费', value: 1 },\n { text: '明确不自动续费', value: 2 },\n];\n\nconst Status = [\n { text: '待初始化', value: 0 },\n { text: '流程执行中', value: 1 },\n { text: '运行中', value: 2 },\n { text: '已隔离', value: -2 },\n { text: '待删除', value: -3 },\n];\n\nconst TypeVersion = [\n { text: '单机版', value: 1 },\n { text: '主从版', value: 2 },\n { text: '集群版', value: 3 },\n];\n\nconst OrderBy = [\n { text: 'projectId', value: 'projectId' },\n { text: 'instancename', value: 'instancename' },\n { text: 'createtime', value: 'createtime' },\n { text: 'type', value: 'type' },\n { text: 'curDeadline', value: 'curDeadline' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\nconst Type = [\n { text: 'Redis老集群版', value: 1 },\n { text: 'Redis 2.8主从版', value: 2 },\n { text: 'CKV主从版', value: 3 },\n { text: 'CKV集群版', value: 4 },\n { text: 'Redis 2.8单机版', value: 5 },\n { text: 'Redis 4.0主从版', value: 6 },\n { text: 'Redis 4.0集群版', value: 7 },\n { text: 'Redis5.0主从版', value: 8 },\n { text: 'Redis5.0集群版', value: 9 },\n];\n\nconst RedisFields = {\n InstanceId: '',\n OrderBy: '',\n OrderType: null,\n VpcIds: [],\n SubnetIds: [],\n ProjectIds: [],\n SearchKey: '',\n InstanceName: '',\n UniqVpcIds: [],\n UniqSubnetIds: [],\n Status: [],\n TypeVersion: null,\n EngineName: '',\n AutoRenew: null,\n BillingMode: '',\n Type: null,\n};\n\nconst RedisMemFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'InstancesId',\n cnDescriptor: '实例id',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderType',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderType,\n },\n {\n key: 'VpcIds',\n enDescriptor: 'VpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:47525',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SubnetIds',\n enDescriptor: 'SubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:56854',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ProjectIds',\n enDescriptor: 'ProjectIds',\n cnDescriptor: '项目ID 组成的数组',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '查找实例的ID',\n link: '',\n type: 'input',\n },\n {\n key: 'InstanceName',\n enDescriptor: 'InstanceName',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'UniqVpcIds',\n enDescriptor: 'UniqVpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:vpc-sad23jfdfk',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'UniqSubnetIds',\n enDescriptor: 'UniqSubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:subnet-fdj24n34j2',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'TypeVersion',\n enDescriptor: 'TypeVersion',\n cnDescriptor: '类型版本',\n link: '',\n type: 'select',\n list: TypeVersion,\n },\n {\n key: 'EngineName',\n enDescriptor: 'EngineName',\n cnDescriptor: '引擎信息:Redis-2.8,Redis-4.0,CKV',\n link: '',\n type: 'input',\n },\n {\n key: 'AutoRenew',\n enDescriptor: 'AutoRenew',\n cnDescriptor: '续费模式',\n multiple: true,\n type: 'select',\n list: AutoRenew,\n },\n {\n key: 'BillingMode',\n enDescriptor: 'BillingMode',\n cnDescriptor: '计费模式:postpaid-按量计费;prepaid-包年包月',\n link: '',\n type: 'select',\n list: BillingMode,\n },\n {\n key: 'Type',\n enDescriptor: 'Type',\n cnDescriptor: '实例类型',\n link: '',\n type: 'select',\n list: Type,\n },\n];\n\nconst REDISMEM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...RedisFields },\n rnodeid: '',\n pnodeid: '',\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n // select 单选\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst REDISMEMInstanceAliasList = ['InstanceId', 'InstanceName', 'WanIp'];\n\nconst RedisMemInvalidDemensions = {\n instanceid: 'InstanceId',\n rnodeid: 'rnodeid',\n pnodeid: 'pnodeid',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n rnodeid: 'rnodeid',\n pnodeid: 'pnodeid',\n};\n\nconst NodeType = ['Redis', 'Proxy'];\n\nexport default REDISMEM_STATE;\nexport {\n RedisMemFieldsDescriptor,\n RedisMemInvalidDemensions,\n REDISMEMInstanceAliasList,\n templateQueryIdMap,\n namespace,\n NodeType,\n GetInstanceQueryParams as REDISMEMGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/RABBITMQ';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'tdmqQuery';\n\nconst TDMQInvalidDemensions = {\n instanceid: 'InstanceId',\n node: 'NodeName',\n};\n\n// 需和文件名对应\nconst TDMQRABBITMQInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n node: 'NodeName',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst TDMQFilterFields = {\n Limit: 20,\n Offset: 0,\n};\n\nconst TDMQFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n];\n\nconst TDMQ_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n // 此处key应该是经过TDMQInvalidDemensions处理后的\n node: '',\n queries: TDMQFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-nanjing' },\n { value: 'ap-hongkong' },\n { value: 'ap-tokyo' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n { value: 'ap-bangkok' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n node: 'NodeName',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n NodeName: {\n dim_KeyInStorage: keyInStorage.node,\n dim_KeyInTarget: 'node',\n dim_KeyInMap: templateQueryIdMap.node,\n },\n};\nexport default TDMQ_STATE;\nexport {\n TDMQFilterFieldsDescriptor,\n templateQueryIdMap,\n TDMQRABBITMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n queryEditorName,\n queryMonitorExtraConfg,\n keyInStorage,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TDMQGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/ROCKETMQ';\n\nconst TDMQInvalidDemensions = {\n tenant: 'ClusterId',\n namespace: 'NamespaceId',\n group: 'Name',\n};\n\n// 需和文件名对应\nconst TDMQROCKETMQInstanceAliasList = ['ClusterId', 'ClusterName'];\n\nconst templateQueryIdMap = {\n instance: 'ClusterId',\n namespace: 'NamespaceId',\n group: 'Name',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst TDMQFilterFields = {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: true,\n ClusterIdList: [''],\n Filters: {\n includeVip: { text: '是', value: 'true' },\n },\n};\n\nconst TDMQFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'includeVip',\n enDescriptor: 'includeVip',\n cnDescriptor: '包含专享集群',\n link: '',\n type: 'select',\n list: [\n { text: '是', value: 'true' },\n { text: '否', value: 'false' },\n ],\n },\n];\n\nconst TDMQ_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n // 此处key应该是经过TDMQInvalidDemensions处理后的\n namespace: '',\n group: '',\n queries: TDMQFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.ClusterIdList)) {\n const ClusterIdList = _.compact(queries.ClusterIdList);\n if (_.uniq(ClusterIdList).length > 0) {\n params.ClusterIdList = _.uniq(ClusterIdList).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: [_.get(item, 'value', [])].slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-nanjing' },\n { value: 'ap-hongkong' },\n { value: 'ap-tokyo' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n { value: 'ap-bangkok' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n namespace: 'NamespaceId',\n group: 'Name',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n NamespaceId: {\n dim_KeyInStorage: keyInStorage.namespace,\n dim_KeyInTarget: 'namespace',\n dim_KeyInMap: templateQueryIdMap.namespace,\n },\n Name: {\n dim_KeyInStorage: keyInStorage.group,\n dim_KeyInTarget: 'group',\n dim_KeyInMap: templateQueryIdMap.group,\n },\n};\nexport default TDMQ_STATE;\nexport {\n TDMQFilterFieldsDescriptor,\n templateQueryIdMap,\n TDMQROCKETMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n queryMonitorExtraConfg,\n keyInStorage,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TDMQROCKETMQGetInstanceQueryParams,\n};\n","import { t } from '../../locale';\n// name (产品名称), service(对应的真实service)\ninterface ServiceType {\n service: string;\n label: string;\n namespace: string;\n href: string;\n groupName?: string;\n hideRegion?: boolean;\n}\nconst SERVICES: ServiceType[] = [\n {\n service: 'cvm',\n get label() {\n return t('CVM');\n },\n namespace: 'QCE/CVM',\n href: 'https://cloud.tencent.com/document/api/213/15688',\n },\n {\n service: 'cdb',\n get label() {\n return t('CDB');\n },\n namespace: 'QCE/CDB',\n href: 'https://cloud.tencent.com/document/api/236/15829',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'mongoDB',\n get label() {\n return t('CMONGO');\n },\n namespace: 'QCE/CMONGO',\n href: 'https://cloud.tencent.com/document/api/240/38568',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'postgres',\n get label() {\n return t('POSTGRES');\n },\n namespace: 'QCE/POSTGRES',\n href: 'https://cloud.tencent.com/document/product/248/45105',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'redis',\n get label() {\n return t('REDIS');\n },\n namespace: 'QCE/REDIS',\n href: 'https://cloud.tencent.com/document/product/248/45110',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'redisMem',\n get label() {\n return t('REDIS_MEM');\n },\n namespace: 'QCE/REDIS_MEM',\n href: 'https://cloud.tencent.com/document/product/248/49729',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'sqlserver',\n get label() {\n return t('SQLSERVER');\n },\n namespace: 'QCE/SQLSERVER',\n href: 'https://cloud.tencent.com/document/product/248/45146',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'cynosdbMysql',\n get label() {\n return t('CYNOSDB_MYSQL');\n },\n namespace: 'QCE/CYNOSDB_MYSQL',\n href: 'https://cloud.tencent.com/document/product/248/45106',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'tcaplus',\n get label() {\n return t('TCAPLUS');\n },\n namespace: 'QCE/TCAPLUS',\n href: 'https://cloud.tencent.com/document/product/248/45107',\n get groupName() {\n return t('cloud_database');\n },\n },\n {\n service: 'dcdb',\n get label() {\n return t('TDMYSQL');\n },\n namespace: 'QCE/TDMYSQL',\n href: 'https://cloud.tencent.com/document/product/248/45108',\n },\n {\n service: 'pcx',\n get label() {\n return t('PCX');\n },\n namespace: 'QCE/PCX',\n href: 'https://cloud.tencent.com/document/product/215/5181',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'bwp',\n get label() {\n return t('BWP');\n },\n namespace: 'QCE/BWP',\n href: 'https://cloud.tencent.com/document/api/215/19209',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'natGateway',\n get label() {\n return t('NAT_GATEWAY');\n },\n namespace: 'QCE/NAT_GATEWAY',\n href: 'https://cloud.tencent.com/document/api/215/36034',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vpngw',\n get label() {\n return t('VPNGW');\n },\n namespace: 'QCE/VPNGW',\n href: 'https://cloud.tencent.com/document/product/248/45070',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vpnx',\n get label() {\n return t('VPNX');\n },\n namespace: 'QCE/VPNX',\n href: 'https://cloud.tencent.com/document/product/248/45071',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'dcg',\n get label() {\n return t('DCG');\n },\n namespace: 'QCE/DCG',\n href: 'https://cloud.tencent.com/document/product/248/45072',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'ceipSummary',\n get label() {\n return t('CEIP_SUMMARY');\n },\n namespace: 'QCE/CEIP_SUMMARY',\n href: 'https://cloud.tencent.com/document/product/248/50381',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vpcNetDetect',\n get label() {\n return t('VPC_NET_DETECT');\n },\n namespace: 'QCE/VPC_NET_DETECT',\n href: 'https://cloud.tencent.com/document/product/248/50384',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'vbc',\n get label() {\n return t('VBC');\n },\n namespace: 'QCE/VBC',\n href: 'https://cloud.tencent.com/document/product/248/45073',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'lb',\n get label() {\n return t('LB');\n },\n namespace: 'QCE/LB',\n href: 'https://cloud.tencent.com/document/product/248/45099',\n get groupName() {\n return t('virtual_private_cloud');\n },\n },\n {\n service: 'lbPublic',\n get label() {\n return t('LB_PUBLIC');\n },\n namespace: 'QCE/LB_PUBLIC',\n href: 'https://cloud.tencent.com/document/product/248/51898',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('multi_scene')})`;\n },\n },\n {\n service: 'lbPrivate',\n get label() {\n return t('LB_PRIVATE');\n },\n namespace: 'QCE/LB_PRIVATE',\n href: 'https://cloud.tencent.com/document/product/248/51899',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('multi_scene')})`;\n },\n },\n {\n service: 'loadBalance',\n get label() {\n return t('LOADBALANCE');\n },\n namespace: 'QCE/LOADBALANCE',\n href: 'https://cloud.tencent.com/document/product/248/51901',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('multi_scene')})`;\n },\n },\n {\n service: 'vClb',\n get label() {\n return `${t('cloud_load_balancer')}(${t('lite')})`;\n },\n namespace: 'QCE/V_CLB',\n href: 'https://cloud.tencent.com/document/product/248/51901',\n get groupName() {\n return `${t('cloud_load_balancer')}(${t('lite')})`;\n },\n },\n {\n service: 'cdn',\n get label() {\n return t('CDN');\n },\n namespace: 'QCE/CDN',\n hideRegion: true,\n href: 'https://cloud.tencent.com/document/product/248/50386',\n get groupName() {\n return t('content_delivery_network');\n },\n },\n {\n service: 'cdnProvince',\n get label() {\n return t('CDN_LOG_DATA');\n },\n namespace: 'QCE/CDN_LOG_DATA',\n hideRegion: true,\n href: 'https://cloud.tencent.com/document/product/248/50388',\n get groupName() {\n return t('content_delivery_network');\n },\n },\n {\n service: 'ovCdn',\n get label() {\n return t('OV_CDN');\n },\n namespace: 'QCE/OV_CDN',\n hideRegion: true,\n href: 'https://cloud.tencent.com/document/product/248/50387',\n get groupName() {\n return t('content_delivery_network');\n },\n },\n {\n service: 'scf',\n get label() {\n return t('SCF_V2');\n },\n namespace: 'QCE/SCF_V2',\n href: 'https://cloud.tencent.com/document/product/248/45130',\n },\n {\n service: 'cfs',\n get label() {\n return t('CFS');\n },\n namespace: 'QCE/CFS',\n href: 'https://cloud.tencent.com/document/product/248/45143',\n },\n {\n service: 'cos',\n get label() {\n return t('COS');\n },\n namespace: 'QCE/COS',\n href: 'https://cloud.tencent.com/document/product/248/45140',\n },\n {\n service: 'ckafka',\n get label() {\n return t('CKAFKA');\n },\n namespace: 'QCE/CKAFKA',\n href: 'https://cloud.tencent.com/document/product/248/45121',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'cmq',\n get label() {\n return t('CMQ');\n },\n namespace: 'QCE/CMQ',\n href: 'https://cloud.tencent.com/document/product/248/45114',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'cmqTopic',\n get label() {\n return t('CMQTOPIC');\n },\n namespace: 'QCE/CMQTOPIC',\n href: 'https://cloud.tencent.com/document/product/248/45113',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'tdmq',\n get label() {\n return t('TDMQ');\n },\n namespace: 'QCE/TDMQ',\n href: 'https://cloud.tencent.com/document/product/248/51450',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'tdmqRocketmq',\n get label() {\n return t('TDMQ_ROCKETMQ');\n },\n namespace: 'QCE/ROCKETMQ',\n href: 'https://cloud.tencent.com/document/product/248/51450',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'tdmqRabbitmq',\n get label() {\n return t('TDMQ_RABBITMQ');\n },\n namespace: 'QCE/RABBITMQ',\n href: 'https://cloud.tencent.com/document/product/248/51450',\n get groupName() {\n return t('message_queue');\n },\n },\n {\n service: 'dcx',\n get label() {\n return t('DCX');\n },\n namespace: 'QCE/DCX',\n href: 'https://cloud.tencent.com/document/product/248/45101',\n get groupName() {\n return t('direct_connect');\n },\n },\n {\n service: 'dc',\n get label() {\n return t('DC');\n },\n namespace: 'QCE/DC',\n href: 'https://cloud.tencent.com/document/product/248/45102',\n get groupName() {\n return t('direct_connect');\n },\n },\n {\n service: 'cpm',\n get label() {\n return t('CPM');\n },\n namespace: 'QCE/CPM',\n href: 'https://cloud.tencent.com/document/product/248/45881',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'bmPcx',\n get label() {\n return t('BM_PCX');\n },\n namespace: 'QCE/BM_PCX',\n href: 'https://cloud.tencent.com/document/product/248/45884',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'bmLb',\n get label() {\n return t('BM_LB');\n },\n namespace: 'QCE/BM_LB',\n href: 'https://cloud.tencent.com/document/product/248/45886',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'bmIntraLb',\n get label() {\n return t('BM_INTRA_LB');\n },\n namespace: 'QCE/BM_INTRA_LB',\n href: 'https://cloud.tencent.com/document/product/248/45885',\n get groupName() {\n return t('cloud_physical_machine');\n },\n },\n {\n service: 'ces',\n get label() {\n return t('CES');\n },\n namespace: 'QCE/CES',\n href: 'https://cloud.tencent.com/document/product/248/45129',\n },\n {\n service: 'mrHDFS',\n get label() {\n return `${t('elastic_mapReduce')}(HDFS)`;\n },\n namespace: 'QCE/TXMR_HDFS',\n href: 'https://cloud.tencent.com/document/product/248/44797',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrHBASE',\n get label() {\n return `${t('elastic_mapReduce')}(HBASE)`;\n },\n namespace: 'QCE/TXMR_HBASE',\n href: 'https://cloud.tencent.com/document/product/248/45567',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrHIVE',\n get label() {\n return `${t('elastic_mapReduce')}(HIVE)`;\n },\n namespace: 'QCE/TXMR_HIVE',\n href: 'https://cloud.tencent.com/document/product/248/45569',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrNODE',\n get label() {\n return `${t('elastic_mapReduce')}(NODE)`;\n },\n namespace: 'QCE/TXMR_NODE',\n href: 'https://cloud.tencent.com/document/product/248/45570',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrPRESTO',\n get label() {\n return `${t('elastic_mapReduce')}(PRESTO)`;\n },\n namespace: 'QCE/TXMR_PRESTO',\n href: 'https://cloud.tencent.com/document/product/248/45571',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrSPARK',\n get label() {\n return `${t('elastic_mapReduce')}(SPARK)`;\n },\n namespace: 'QCE/TXMR_SPARK',\n href: 'https://cloud.tencent.com/document/product/248/45572',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrYARN',\n get label() {\n return `${t('elastic_mapReduce')}(YARN)`;\n },\n namespace: 'QCE/TXMR_YARN',\n href: 'https://cloud.tencent.com/document/product/248/45573',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'mrZOOKEEPER',\n get label() {\n return `${t('elastic_mapReduce')}(ZOOKEEPER)`;\n },\n namespace: 'QCE/TXMR_ZOOKEEPER',\n href: 'https://cloud.tencent.com/document/product/248/45574',\n get groupName() {\n return t('elastic_mapReduce');\n },\n },\n {\n service: 'cbs',\n get label() {\n return t('BLOCK_STORAGE');\n },\n namespace: 'QCE/BLOCK_STORAGE',\n href: 'https://cloud.tencent.com/document/product/362/2345',\n },\n {\n service: 'apigateway',\n get label() {\n return t('APIGATEWAY');\n },\n namespace: 'QCE/APIGATEWAY',\n href: 'https://cloud.tencent.com/document/product/248/45127',\n },\n {\n service: 'qaap',\n get label() {\n return t('QAAP');\n },\n namespace: 'QCE/QAAP',\n href: 'https://cloud.tencent.com/document/product/608',\n },\n {\n service: 'ecm',\n get label() {\n return t('ECM');\n },\n hideRegion: true,\n namespace: 'QCE/ECM',\n href: 'https://cloud.tencent.com/document/product/1108',\n get groupName() {\n return t('edge_computing_machine');\n },\n },\n {\n service: 'ecmBlockStorage',\n get label() {\n return t('ECM_BLOCK_STORAGE');\n },\n hideRegion: true,\n namespace: 'QCE/ECM_BLOCK_STORAGE',\n href: 'https://cloud.tencent.com/document/product/1108',\n get groupName() {\n return t('edge_computing_machine');\n },\n },\n {\n service: 'ecmLb',\n get label() {\n return t('ECM_LB');\n },\n hideRegion: true,\n namespace: 'QCE/ECM_LB',\n href: 'https://cloud.tencent.com/document/product/1108',\n get groupName() {\n return t('edge_computing_machine');\n },\n },\n {\n service: 'gse',\n get label() {\n return t('GSE');\n },\n namespace: 'QCE/GSE',\n href: 'https://cloud.tencent.com/document/product/1165',\n },\n {\n service: 'cls',\n get label() {\n return t('CLS');\n },\n namespace: 'QCE/CLS',\n href: 'https://cloud.tencent.com/document/product/614',\n },\n {\n service: 'tke',\n get label() {\n return t('TKE');\n },\n namespace: 'QCE/TKE2',\n href: 'https://cloud.tencent.com/document/product/457',\n },\n {\n service: 'ecdn',\n get label() {\n return t('ECDN');\n },\n namespace: 'QCE/DSA',\n href: 'https://cloud.tencent.com/document/product/570',\n },\n // {\n // service: 'lighthouse',\n // label: '轻量应用服务器(LIGHTHOUSE)',\n // namespace: 'QCE/LIGHTHOUSE',\n // href: 'https://cloud.tencent.com/document/product/1207',\n // },\n // {\n // service: 'tsf',\n // label: ' 微服务平台(TSF)',\n // namespace: 'QCE/TSF',\n // href: 'https://cloud.tencent.com/document/product/649',\n // },\n {\n service: 'waf',\n get label() {\n return t('WAF');\n },\n // hideRegion: true,\n namespace: 'QCE/WAF',\n href: 'https://cloud.tencent.com/document/product/627',\n },\n];\nconst Datasources = {};\nconst InitStates = {};\nconst InstanceAliasList = {};\nconst GetInstanceQueryParams = {};\n\n/**\n * 由于目录命名不规范,导致需要使用额外逻辑保证正确性。从目录到具体service的映射\n */\nconst hackModuleName = {\n // lb_loadBalance: 'loadBalance',\n postgresql: 'postgres',\n mongodb: 'mongoDB',\n clb: ['lbPrivate', 'lbPublic', 'loadBalance'],\n mr: ['mrHDFS', 'mrHBASE', 'mrHIVE', 'mrNODE', 'mrPRESTO', 'mrSPARK', 'mrYARN', 'mrZOOKEEPER'],\n};\n\nconst requireModule = (require as any).context('./', true, /^\\.\\/[a-zA-Z]\\w+\\/(datasource)|(query(_def)?)\\.ts$/);\n\nrequireModule.keys().forEach((filePath) => {\n let [, moduleName, fileName] = filePath.split('/');\n\n // hack: 这里是由于产品目录命名不规范,所以才会多这么一段代码\n moduleName = hackModuleName[moduleName] ?? moduleName;\n\n // 目录与模块的映射关系,不管是一对一还是一对多,均按数组进行统一处理\n [].concat(moduleName).forEach((module: string) => {\n // 这个service就是产品配置中的service,需要注意这里的service是根据目录名称算出来的,因此目录名称一定要和service对应\n const service = module.replace(/_([a-zA-Z])/g, (_, b) => b.toUpperCase());\n const prefix = service.toUpperCase(); // 命名规则\n\n // datasource\n if (fileName === 'datasource.ts') {\n const Cls = require(`${filePath}`).default;\n\n // 想办法为实例注入service,不能为prototype或则类本身注入,因为会造成互相污染,详尽mrDatasource\n Datasources[`${prefix}Datasource`] = class {\n constructor(...params) {\n const target = new Cls(...params, service);\n target.service = service;\n // eslint-disable-next-line no-constructor-return\n return target;\n }\n };\n }\n // query\n if (fileName === 'query.ts') {\n require(`${filePath}`);\n }\n // query_def\n if (fileName === 'query_def.ts') {\n const alias = `${prefix}InstanceAliasList`;\n const getParams = `${prefix}GetInstanceQueryParams`;\n\n const target = require(`${filePath}`);\n\n InitStates[service] = target.default; // FIXME: 这里需不需要深拷贝?\n InstanceAliasList[alias] = target[alias] ?? target['InstanceAliasList'];\n GetInstanceQueryParams[getParams] = target[getParams] ?? target['GetInstanceQueryParams'];\n }\n });\n});\n\nexport {\n InitStates as InitServiceState,\n SERVICES,\n Datasources,\n InstanceAliasList,\n GetInstanceQueryParams,\n // DefaultDimensions\n};\n\n// console.log(Datasources, InitStates, InstanceAliasList, GetInstanceQueryParams);\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/ECM_BLOCK_STORAGE';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'ecmBlockStorageQuery';\n\nconst ECMBLOCKSTORAGEInvalidDemensions = {\n uuid: 'UUID',\n diskId: 'DiskId',\n};\n\n// 需和文件名对应\nconst ECMBLOCKSTORAGEInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n diskId: 'DiskId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst ECMBLOCKSTORAGEFilterFields = {\n Limit: 20,\n Offset: 0,\n 'zone-name': [],\n 'module-id': [],\n 'module-name': [],\n 'instance-id': [],\n 'instance-name': [],\n 'ip-address': [],\n 'instance-uuid': [],\n 'instance-state': {},\n 'internet-service-provider': [],\n 'instance-family': [],\n 'image-id': [],\n 'vpc-id': [],\n 'subnet-id': [],\n};\n\nconst ECMBLOCKSTORAGEFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'zone-name',\n enDescriptor: 'zone-name',\n cnDescriptor: '排列顺序',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-id',\n enDescriptor: 'module-id',\n cnDescriptor: '模块ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-name',\n enDescriptor: 'module-name',\n cnDescriptor: '模块名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-id',\n enDescriptor: 'instance-id',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-name',\n enDescriptor: 'instance-name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ip-address',\n enDescriptor: 'ip-address',\n cnDescriptor: '内网/公网IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-uuid',\n enDescriptor: 'instance-uuid',\n cnDescriptor: '实例uuid',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-state',\n enDescriptor: 'instance-state',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '创建中', value: 'PENDING' },\n { text: '创建失败', value: 'LAUNCH_FAILED' },\n { text: '运行中', value: 'RUNNING' },\n { text: '关机', value: 'STOPPED' },\n { text: '开机中', value: 'STARTING' },\n { text: '关机中', value: 'STOPPING' },\n { text: '重启中', value: 'REBOOTING' },\n { text: '停止待销毁', value: 'SHUTDOWN' },\n { text: '销毁中', value: 'TERMINATING' },\n ],\n },\n {\n key: 'internet-service-provider',\n enDescriptor: 'internet-service-provider',\n cnDescriptor: '公网IP所属的运营商',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-family',\n enDescriptor: 'instance-family',\n cnDescriptor: '机型family',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'image-id',\n enDescriptor: 'image-id',\n cnDescriptor: '镜像ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: '实例的vpc id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'subnet-id',\n cnDescriptor: '实例的subnet id',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1108/42565',\n namespace,\n fieldDescriptor: ECMBLOCKSTORAGEFilterFieldsDescriptor,\n};\n\nconst ECMBLOCKSTORAGE_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n diskId: '',\n queries: ECMBLOCKSTORAGEFilterFields,\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n diskId: 'diskId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n DiskId: {\n dim_KeyInStorage: keyInStorage.diskId,\n dim_KeyInTarget: 'diskId',\n dim_KeyInMap: templateQueryIdMap.diskId,\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default ECMBLOCKSTORAGE_STATE;\nexport {\n ECMBLOCKSTORAGEFilterFieldsDescriptor,\n templateQueryIdMap,\n ECMBLOCKSTORAGEInstanceAliasList,\n ECMBLOCKSTORAGEInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n keyInStorage,\n queryMonitorExtraConfg,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as ECMBLOCKSTORAGEGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/APIGATEWAY';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'apigatewayQuery';\n\nconst APIGATEWAYInvalidDemensions = {\n serviceId: 'ServiceId',\n environmentName: 'EnvironmentName',\n apiid: 'Apiid',\n apiId: 'Apiid',\n};\n\n// 需和文件名对应\nconst APIGATEWAYInstanceAliasList = ['ServiceId', 'ServiceName'];\n\nconst templateQueryIdMap = {\n instance: 'ServiceId',\n environmentName: 'EnvironmentName',\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n environmentList: 'EnvironmentList',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n EnvironmentName: {\n dim_KeyInStorage: keyInStorage.environmentList,\n dim_KeyInTarget: 'EnvironmentName',\n dim_KeyInMap: templateQueryIdMap.environmentName,\n },\n};\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst APIGATEWAYFilterFields = {\n Limit: 20,\n Offset: 0,\n ServiceId: [],\n ServiceName: [],\n NotUsagePlanId: [],\n Environment: [],\n IpVersion: [],\n};\n\nconst APIGATEWAYFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ServiceId',\n enDescriptor: 'ServiceId',\n cnDescriptor: '服务id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ServiceName',\n enDescriptor: 'ServiceName',\n cnDescriptor: '服务名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'NotUsagePlanId',\n enDescriptor: 'NotUsagePlanId',\n cnDescriptor: 'NotUsagePlanId',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Environment',\n enDescriptor: 'Environment',\n cnDescriptor: '环境名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'IpVersion',\n enDescriptor: 'IpVersion',\n cnDescriptor: 'IP版本',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/628/45198',\n namespace,\n fieldDescriptor: APIGATEWAYFilterFieldsDescriptor,\n};\n\nconst APIGATEWAY_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ServiceId',\n EnvironmentName: '',\n queries: APIGATEWAYFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nexport default APIGATEWAY_STATE;\nexport {\n APIGATEWAYFilterFieldsDescriptor,\n templateQueryIdMap,\n APIGATEWAYInstanceAliasList,\n APIGATEWAYInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as APIGATEWAYGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nexport const InstanceQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '按照一个或者多个实例ID查询。实例ID形如: emr-xxxxxxxx ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'OrderField',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: '实例ID', value: 'clusterId' },\n { text: '创建时间', value: 'addTime' },\n { text: '状态', value: 'status' },\n ],\n },\n {\n key: 'Asc',\n enDescriptor: 'Order Direction',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: [\n { text: '降序', value: 0 },\n { text: '升序', value: 1 },\n ],\n },\n {\n key: 'ProjectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '实例所属项目ID',\n link: '',\n type: 'inputnumber',\n },\n {\n key: 'DisplayStrategy',\n enDescriptor: 'DisplayStrategy',\n cnDescriptor: '集群筛选策略',\n link: '',\n type: 'select',\n list: [\n { text: '未销毁的实例', value: 'clusterList' },\n { text: '正常运行的实例', value: 'monitorManage' },\n ],\n },\n];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nexport const InvalidDemensions = new Proxy(\n {},\n {\n get(target, k, receiver) {\n if (typeof k === 'string') {\n if (k.startsWith('id4')) return 'ClusterId'; // id4****\n if (k.startsWith('host4')) return 'Ip'; // host4***\n }\n return Reflect.get(target, k, receiver);\n },\n has(target, propKey) {\n return true;\n },\n }\n);\n\nexport const templateQueryIdMap = {\n instance: 'ClusterId',\n node: 'Ip',\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n node: 'nodeIP',\n};\n\n/**\n * 如果有InstanceId额外的维度,原则上都需要传入此map结构配置\n *\n * `key` 的含义:\n * 经过InvalidDemensions处理后的string。topicId => TopicId。\n * 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\n *\n * `value` 的含义:\n * @param {1} dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n * @param {2} dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n * 默认取通过InvalidDemsion处理后的key\n * @param {3} dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n * 即:templateQueryIdMap中内容。\n * 联合上面 2 的内容筛选出原始sourceMap\n */\nconst queryMonitorExtraConfg = {\n Ip: {\n dim_KeyInStorage: keyInStorage.node,\n dim_KeyInTarget: 'nodeIP',\n dim_KeyInMap: templateQueryIdMap.node,\n },\n};\n\n// 与名称挂钩的变量\nconst InstanceAliasList = ['ClusterId', 'ClusterName'];\nexport { InstanceAliasList, GetInstanceQueryParams, queryMonitorExtraConfg, keyInStorage };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n nodeIP: '',\n queries: {\n Offset: 0,\n Limit: 10,\n DisplayStrategy: '',\n OrderBy: {},\n Order: {},\n InstanceIds: [],\n ProjectId: -1,\n OrderField: '',\n Asc: '',\n },\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/V_CLB';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'vClbQuery';\n\nconst VCLBInvalidDemensions = {\n InstanceId: 'LoadBalancerId',\n // vip: 'LoadBalancerVips',\n // loadBalancerPort: 'Port',\n // protocol: 'Protocol',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst VCLBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerVips', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\nconst ForwardTypes = [\n { text: '通用的负载均衡', value: 1 },\n { text: '传统的负载均衡', value: 0 },\n];\n\nconst OrderBy = [\n { text: 'LoadBalancerName', value: 'LoadBalancerName' },\n { text: 'CreateTime', value: 'CreateTime' },\n { text: 'Domain', value: 'Domain' },\n { text: 'LoadBalancerType', value: 'LoadBalancerType' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\n\nconst WithRs = [\n { text: '没有绑定后端服务', value: 0 },\n { text: '绑定后端服务', value: 1 },\n { text: '查询全部', value: -1 },\n];\nconst VCLBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1',\n link: '',\n type: 'inputNumber',\n min: 1,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancer ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancer Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'Forward',\n enDescriptor: 'Forward',\n cnDescriptor: '负载均衡实例类型',\n link: '',\n type: 'select',\n list: ForwardTypes,\n },\n {\n key: 'Domain',\n enDescriptor: 'Domain',\n cnDescriptor: '域名,腾讯云为负载均衡实例分配的域名,本参数仅对传统型公网负载均衡才有意义',\n link: '',\n type: 'input',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancer Vips',\n cnDescriptor: '负载均衡实例的 VIP 地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPrivateIps',\n enDescriptor: 'BackendPrivate Ips',\n cnDescriptor: '负载均衡绑定的后端服务的内网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPublicIps',\n enDescriptor: 'BackendPublic Ips',\n cnDescriptor: '负载均衡绑定的后端服务的外网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ProjectId',\n enDescriptor: 'Project ID',\n cnDescriptor: '负载均衡实例所属的项目 ID',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'VpcId',\n enDescriptor: 'Vpc ID',\n cnDescriptor: '负载均衡实例所属私有网络',\n link: '',\n type: 'input',\n },\n {\n key: 'SecurityGroup',\n enDescriptor: 'Security Group',\n cnDescriptor: '安全组ID',\n link: '',\n type: 'input',\n },\n {\n key: 'MasterZone',\n enDescriptor: 'Master Zone',\n cnDescriptor: '主可用区ID',\n link: '',\n type: 'input',\n },\n {\n key: 'WithRs',\n enDescriptor: 'WithRs',\n cnDescriptor: '负载均衡是否绑定后端服务',\n link: '',\n type: 'select',\n list: WithRs,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderType,\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/214/30685',\n namespace,\n fieldDescriptor: VCLBFilterFieldsDescriptor,\n};\nconst LBFields = {\n LoadBalancerIds: [],\n Forward: undefined,\n LoadBalancerName: '',\n Domain: '',\n LoadBalancerVips: [],\n BackendPublicIps: [],\n BackendPrivateIps: [],\n Limit: 20,\n Offset: 0,\n ProjectId: undefined,\n WithRs: {},\n VpcId: '',\n SecurityGroup: '',\n MasterZone: '',\n OrderBy: {},\n OrderType: {},\n};\n\nconst VCLB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n Port: '',\n Protocol: '',\n listener: '',\n // listenerAlias: 'ListenerId',\n queries: LBFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-bangkok' },\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'ap-seoul' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nconst clbNamespaceMap = {\n public: 'QCE/LB_PUBLIC',\n private: 'QCE/LB_PRIVATE',\n};\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\nexport default VCLB_STATE;\nexport {\n VCLBFilterFieldsDescriptor,\n templateQueryIdMap,\n VCLBInstanceAliasList,\n VCLBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n clbNamespaceMap,\n modifyDimensons,\n regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMLBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CYNOSDB_MYSQL';\n\n// 按照驼峰方式命名,和SERVICES保持一致,abcDeF会成为angular组件名字\nconst queryEditorName = 'cynosdbMysqlQuery';\n\nconst cynosdbMysqlFilterFields = {\n Limit: 20,\n Offset: 0,\n OrderBy: {},\n OrderByType: {},\n InstanceIds: [],\n DbType: {},\n // Status: '',\n};\n\nconst cynosdbMysqlFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 1000,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '实例id列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: '创建时间', value: 'CREATETIME' },\n { text: '过期时间', value: 'PERIODENDTIME' },\n ],\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序类型',\n link: '',\n type: 'select',\n list: [\n { text: '升序', value: 'ASC' },\n { text: '降序', value: 'DESC' },\n ],\n },\n {\n key: 'DbType',\n enDescriptor: 'DbType',\n cnDescriptor: '引擎类型',\n link: '',\n type: 'select',\n list: [\n { text: 'MYSQL', value: 'MYSQL' },\n { text: 'POSTGRESQL', value: 'POSTGRESQL' },\n ],\n },\n // {\n // key: 'Status',\n // enDescriptor: 'Status',\n // cnDescriptor: '实例状态',\n // link: '',\n // type: 'input',\n // },\n];\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n];\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1003/48334',\n namespace,\n fieldDescriptor: cynosdbMysqlFilterFieldsDescriptor,\n};\n\nconst CYNOSDB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: cynosdbMysqlFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n// 和文件名字一样CYNOSDBMYSQL\nconst CYNOSDBMYSQLInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\nconst CYNOSDBInvalidDemensions = {\n instanceid: 'InstanceId',\n instanceId: 'InstanceId',\n};\nconst checkKeys = ['instanceId'];\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\n\nexport default CYNOSDB_STATE;\nexport {\n cynosdbMysqlFilterFieldsDescriptor,\n templateQueryIdMap,\n CYNOSDBMYSQLInstanceAliasList,\n CYNOSDBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n checkKeys,\n // params前缀为service的全大写\n GetInstanceQueryParams as CYNOSDBMYSQLGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nexport const SCFQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '支持FunctionName模糊匹配',\n link: '',\n type: 'input',\n },\n {\n key: 'Namespace',\n enDescriptor: 'Namespace',\n cnDescriptor: '云函数命名空间',\n link: '',\n type: 'input',\n },\n {\n key: 'Description',\n enDescriptor: 'Description',\n cnDescriptor: '函数描述,支持模糊搜索',\n link: '',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: 'AddTime', value: 'AddTime' },\n { text: 'ModTime', value: 'ModTime' },\n { text: 'FunctionName', value: 'FunctionName' },\n ],\n },\n {\n key: 'Order',\n enDescriptor: 'Order Direction',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: [\n { text: 'ASC', value: 'ASC' },\n { text: 'DESC', value: 'DESC' },\n ],\n },\n // {\n // key: 'Filters',\n // enDescriptor: 'Filters',\n // cnDescriptor: '按照标签键值对进行过滤',\n // link: '',\n // type: 'dropdownmulti',\n // },\n];\n\nconst SCF_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'FunctionName',\n version: '',\n queries: {\n Offset: 0,\n Limit: 20,\n OrderBy: {},\n Order: {},\n SearchKey: '',\n Namespace: '',\n Description: '',\n // Filters: {},\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst SCFInstanceAliasList = ['FunctionId', 'FunctionName'];\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nconst SCFInvalidDemensions = {\n functionName: 'FunctionName',\n namespace: 'Namespace',\n version: 'Version',\n};\n\nconst templateQueryIdMap = {\n instance: 'FunctionName',\n version: 'Version',\n};\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n version: 'version',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n Version: {\n dim_KeyInStorage: keyInStorage.version,\n dim_KeyInTarget: 'version',\n dim_KeyInMap: templateQueryIdMap.version,\n },\n};\nexport default SCF_STATE;\nexport {\n SCFInstanceAliasList,\n SCFInvalidDemensions,\n queryMonitorExtraConfg,\n regionSupported,\n templateQueryIdMap,\n keyInStorage,\n GetInstanceQueryParams as SCFGetInstanceQueryParams,\n};\n\n// monitor监控数据默认支持的维度\nexport const SCFDefaultDimensionList = ['functionName', 'namespace', 'version'];\n","module.exports = __WEBPACK_EXTERNAL_MODULE__26__;","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/CLS';\nconst queryEditorName = 'clsQuery';\n\nconst CLSInvalidDemensions = {\n // instanceid: 'TopicId',\n};\n\n// 需和文件名对应\nconst CLSInstanceAliasList = ['TopicId', 'TopicName'];\n\nconst templateQueryIdMap = {\n instance: 'TopicId',\n};\n\n// 需要缓存到storage的内容的key列表\n// const keyInStorage = {\n// fleet: 'fleet', // 实例队列\n// queue: 'queueName', // 会话队列\n// };\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\n// const queryMonitorExtraConfg = {\n// FleetId: {\n// dim_KeyInStorage: keyInStorage.fleet,\n// dim_KeyInTarget: 'FleetId',\n// dim_KeyInMap: templateQueryIdMap.FleetId,\n// },\n// Name: {\n// dim_KeyInStorage: keyInStorage.queue,\n// dim_KeyInTarget: 'Name',\n// dim_KeyInMap: templateQueryIdMap.Name,\n// },\n// };\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst CLSFilterFields = {\n Limit: 20,\n Offset: 0,\n topicName: [],\n topicId: [],\n logsetName: [],\n logsetId: [],\n tagKey: [],\n 'tag:tagKey': [],\n storageType: {},\n};\n\nconst CLSFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'topicName',\n enDescriptor: 'topicName',\n cnDescriptor: '日志主题名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'topicId',\n enDescriptor: 'topicId',\n cnDescriptor: '日志主题ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'logsetName',\n enDescriptor: 'logsetName',\n cnDescriptor: '日志集名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'logsetId',\n enDescriptor: 'logsetId',\n cnDescriptor: '日志集ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'tag:tagKey',\n enDescriptor: 'tag - tagKey',\n cnDescriptor: '标签键值对',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'storageType',\n enDescriptor: 'storageType',\n cnDescriptor: '日志主题的存储类型',\n link: '',\n type: 'select',\n list: [\n { text: '实时存储', value: 'hot' },\n { text: '离线存储', value: 'cold' },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/614/56454',\n namespace,\n fieldDescriptor: CLSFilterFieldsDescriptor,\n};\n\nconst CLS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'TopicId',\n uin: '',\n queries: CLSFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-bangkok' },\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-jakarta' },\n { value: 'ap-mumbai' },\n { value: 'ap-seoul' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'eu-moscow' },\n { value: 'na-ashburn' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n // item.Dimensions = item.Dimensions.map((v) => CLSInvalidDemensions[v] || v);\n item.Dimensions = ['uin', 'TopicId'];\n });\n return metricTmp;\n}\nexport default CLS_STATE;\nexport {\n CLSFilterFieldsDescriptor,\n templateQueryIdMap,\n CLSInstanceAliasList,\n CLSInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n // queryMonitorExtraConfg,\n // fleetId,\n // keyInStorage,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CLSGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/SQLSERVER';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'sqlserverQuery';\n\nconst SQLSERVERInvalidDemensions = {\n resourceId: 'InstanceId',\n};\n\nconst SQLSERVERInstanceAliasList = ['InstanceId', 'Name'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst SQLSERVERNETFilterFields = {\n Limit: 20,\n Offset: 0,\n ProjectId: null,\n Status: {},\n InstanceIdSet: [],\n PayMode: {},\n VpcId: '',\n SubnetId: '',\n VipSet: [],\n InstanceNameSet: [],\n VersionSet: [],\n Zone: '',\n};\n\nconst SQLSERVERNETFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ProjectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n list: [\n { text: '申请中', value: 1 },\n { text: '运行中', value: 2 },\n { text: '受限运行中 (主备切换中)', value: 3 },\n { text: '已隔离', value: 4 },\n { text: '回收中', value: 5 },\n { text: '已回收', value: 6 },\n { text: '任务执行中', value: 7 },\n { text: '已下线', value: 8 },\n { text: '实例扩容中', value: 9 },\n { text: '实例迁移中', value: 10 },\n { text: '只读', value: 11 },\n { text: '重启中', value: 12 },\n ],\n },\n {\n key: 'InstanceIdSet',\n enDescriptor: 'InstanceIdSet',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'PayMode',\n enDescriptor: 'PayMode',\n cnDescriptor: '子网实例ID',\n link: '',\n type: 'select',\n list: [\n { text: '包年包月', value: 1 },\n { text: '按量计费', value: 0 },\n ],\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '实例所属VPC的唯一字符串ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '实例所属子网的唯一字符串ID',\n link: '',\n type: 'input',\n },\n {\n key: 'VipSet',\n enDescriptor: 'VipSet',\n cnDescriptor: '实例内网地址列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'InstanceNameSet',\n enDescriptor: 'InstanceNameSet',\n cnDescriptor: '实例名称列表, 模糊查询',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'VersionSet',\n enDescriptor: 'VersionSet',\n cnDescriptor: '实例版本代号列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Zone',\n enDescriptor: 'Zone',\n cnDescriptor: '实例可用区',\n link: '',\n type: 'dropdown',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/238/19969',\n namespace,\n fieldDescriptor: SQLSERVERNETFilterFieldsDescriptor,\n};\n\n// regions for dropdown\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-nanjing' },\n { value: 'ap-seoul' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-moscow' },\n { value: 'na-siliconvalley' },\n];\nconst SQLSERVER_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: SQLSERVERNETFilterFields,\n};\n\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['resourceId'];\n });\n return metricTmp;\n}\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nexport default SQLSERVER_STATE;\nexport {\n SQLSERVERNETFilterFieldsDescriptor,\n templateQueryIdMap,\n SQLSERVERInstanceAliasList,\n SQLSERVERInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regionSupported,\n modifyDimensons,\n // 对应产品的service的全大写拼接InstanceQueryParams\n GetInstanceQueryParams as SQLSERVERGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/BM_INTRA_LB';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'bmIntraLbQuery';\n\nconst BMINTRALBInvalidDemensions = {\n vip: 'LoadBalancerVips',\n vpcId: 'VpcId',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst BMINTRALBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerVips', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst BMINTRALBFilterFields = {\n Limit: 20,\n Offset: 0,\n LoadBalancerIds: [],\n LoadBalancerName: [],\n LoadBalancerVips: [],\n};\n\nconst BMINTRALBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancerIds',\n cnDescriptor: '负载均衡器ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancerName',\n cnDescriptor: '负载均衡器名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancerVips',\n cnDescriptor: '负载均衡获得的公网IP地址',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1027/33280',\n namespace,\n fieldDescriptor: BMINTRALBFilterFieldsDescriptor,\n};\n\nconst BMINTRALB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n queries: BMINTRALBFilterFields,\n};\nconst BMLBValidMetricsT = ['Inpkg', 'Outpkg', 'Intraffic', 'Outtraffic', 'Connum', 'Req'];\nfunction isValidMetric(metric) {\n const validMetrics = _.map(BMLBValidMetricsT, _.toUpper);\n return _.indexOf(validMetrics, _.toUpper(metric.MetricName)) !== -1;\n}\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nexport default BMINTRALB_STATE;\nexport {\n BMINTRALBFilterFieldsDescriptor,\n templateQueryIdMap,\n BMINTRALBInstanceAliasList,\n BMINTRALBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n isValidMetric,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMINTRALBGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/BM_LB';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'bmLbQuery';\n\nconst CPMInvalidDemensions = {\n vip: 'LoadBalancerVips',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst BMLBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerVips', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst CPMFilterFields = {\n Limit: 20,\n Offset: 0,\n LoadBalancerIds: [],\n LoadBalancerName: [],\n LoadBalancerVips: [],\n};\n\nconst CPMFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancerIds',\n cnDescriptor: '负载均衡器ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancerName',\n cnDescriptor: '负载均衡器名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancerVips',\n cnDescriptor: '负载均衡获得的公网IP地址',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1027/33280',\n namespace,\n fieldDescriptor: CPMFilterFieldsDescriptor,\n};\n\nconst CPM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n queries: CPMFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nconst BMLBValidMetricsT = ['Inpkg', 'Outpkg', 'Intraffic', 'Outtraffic', 'Connum', 'Req'];\nfunction isValidMetric(metric) {\n const validMetrics = _.map(BMLBValidMetricsT, _.toUpper);\n return _.indexOf(validMetrics, _.toUpper(metric.MetricName)) !== -1;\n}\nexport default CPM_STATE;\nexport {\n CPMFilterFieldsDescriptor,\n templateQueryIdMap,\n BMLBInstanceAliasList,\n CPMInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n isValidMetric,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMLBGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/BM_PCX';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'bmPcxQuery';\n\nconst BMPCXInvalidDemensions = {\n peeringConnectionId: 'VpcPeerConnectionId',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst BMPCXInstanceAliasList = ['VpcPeerConnectionId', 'VpcPeerConnectionName'];\n\nconst templateQueryIdMap = {\n instance: 'VpcPeerConnectionId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst BMPCXFilterFields = {\n Limit: 20,\n Offset: 0,\n VpcPeerConnectionIds: [],\n};\n\nconst BMPCXFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'VpcPeerConnectionIds',\n enDescriptor: 'VpcPeerConnectionIds',\n cnDescriptor: '对等连接实例ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/product/1024/36903',\n namespace,\n fieldDescriptor: BMPCXFilterFieldsDescriptor,\n};\n\nconst BMPCX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'VpcPeerConnectionId',\n queries: BMPCXFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['peeringConnectionId'];\n });\n return metricTmp;\n}\nexport default BMPCX_STATE;\nexport {\n BMPCXFilterFieldsDescriptor,\n templateQueryIdMap,\n BMPCXInstanceAliasList,\n BMPCXInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as BMPCXGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/BLOCK_STORAGE';\nconst queryEditorName = 'cbsQuery';\n\nconst CBSInvalidDemensions = {\n diskId: 'DiskId',\n InstanceId: 'InstanceId',\n diskname: 'DiskName',\n unInstanceId: 'InstanceId',\n};\n\nconst CBSInstanceAliasList = ['DiskId', 'DiskName'];\n\nconst templateQueryIdMap = {\n instance: 'DiskId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst CBSFilterFields = {\n Limit: 20,\n Offset: 0,\n DiskIds: [],\n OrderField: [],\n Order: [],\n ReturnBindAutoSnapshotPolicy: false,\n};\n\nconst CBSFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'DiskIds',\n enDescriptor: 'DiskIds',\n cnDescriptor: '云硬盘ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Order',\n enDescriptor: 'Order',\n cnDescriptor: '排列顺序',\n link: '',\n type: 'select',\n list: [\n { text: '升序排列', value: 'ASC' },\n { text: '降序排列', value: 'DESC' },\n ],\n },\n {\n key: 'OrderField',\n enDescriptor: 'OrderField',\n cnDescriptor: '排序的依据字段',\n link: '',\n type: 'select',\n list: [\n { text: '云盘的创建时间排序', value: 'CREATE_TIME' },\n { text: '云盘的到期时间排序', value: 'DEADLINE' },\n ],\n },\n {\n key: 'ReturnBindAutoSnapshotPolicy',\n enDescriptor: 'ReturnBindAutoSnapshotPolicy',\n cnDescriptor: '否需要返回云盘绑定的定期快照策略ID',\n link: '',\n type: 'switch',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/362/16315',\n namespace,\n fieldDescriptor: CBSFilterFieldsDescriptor,\n};\n\nconst CBS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DiskId',\n queries: CBSFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nfunction isValidMetric(metricObj: any = {}) {\n const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n // console.log('dimension', dimension, dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1);\n return dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1;\n}\nexport default CBS_STATE;\nexport {\n CBSFilterFieldsDescriptor,\n templateQueryIdMap,\n CBSInstanceAliasList,\n CBSInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n isValidMetric,\n GetInstanceQueryParams as CBSGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CDN_LOG_DATA';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'cdnProvinceQuery';\n\nconst CDNPROVINCEInvalidDemensions = {\n domain: 'Domain',\n // isp: 'Isp',\n projectid: 'ProjectId',\n province: 'district',\n appid: 'AppId',\n};\n\n// 需和文件名对应\nconst CDNPROVINCEInstanceAliasList = ['Domain', 'ProjectId'];\n\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst CDNPROVINCEFilterFields = {\n Limit: 20,\n Offset: 0,\n origin: [],\n domain: [],\n resourceId: [],\n status: {},\n serviceType: {},\n projectId: [],\n domainType: {},\n fullUrlCache: {},\n https: {},\n originPullProtocol: {},\n tagKey: [],\n};\n\nconst CDNPROVINCEFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumberMulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst CDNPROVINCE_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n // Isp Province分别在两个接口,单独保存在state\n isp: '',\n district: '',\n queries: CDNPROVINCEFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// const regionSupported = [\n// { text: '华北地区(北京)', value: 'ap-beijing' },\n// { text: '西南地区(成都)', value: 'ap-chengdu' },\n// { text: '西南地区(重庆)', value: 'ap-chongqing' },\n// { text: '华南地区(广州)', value: 'ap-guangzhou' },\n// { text: '港澳台地区(中国香港)', value: 'ap-hongkong' },\n// { text: '亚太南部(孟买)', value: 'ap-mumbai' },\n// { text: '华东地区(南京)', value: 'ap-nanjing' },\n// { text: '华东地区(上海)', value: 'ap-shanghai' },\n// { text: '华东地区(上海金融)', value: 'ap-shanghai-fsi' },\n// { text: '华南地区(深圳金融)', value: 'ap-shenzhen-fsi' },\n// { text: '亚太东南(新加坡)', value: 'ap-singapore' },\n// { text: '亚太东北(东京)', value: 'ap-tokyo' },\n// { text: '欧洲地区(法兰克福)', value: 'eu-frankfurt' },\n// { text: '美国东部(弗吉尼亚)', value: 'na-ashburn' },\n// { text: '美国西部(硅谷)', value: 'na-siliconvalley' },\n// { text: '北美地区(多伦多)', value: 'na-toronto' },\n// ];\nexport default CDNPROVINCE_STATE;\nexport {\n CDNPROVINCEFilterFieldsDescriptor,\n templateQueryIdMap,\n CDNPROVINCEInstanceAliasList,\n CDNPROVINCEInvalidDemensions,\n namespace,\n queryEditorName,\n // regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CDNPROVINCEGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CEIP_SUMMARY';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'ceipSummaryQuery';\n\nconst CEIPInvalidDemensions = {\n vip: 'AddressIp',\n eip: 'AddressIp',\n};\n\n// 要和文件名方式一致,ceip_summary=>CEIPSUMMARY\nconst CEIPSUMMARYInstanceAliasList = ['AddressId', 'AddressName', 'AddressIp'];\n\nconst templateQueryIdMap = {\n instance: 'AddressId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst CEIPFilterFields = {\n Limit: 20,\n Offset: 0,\n 'address-id': [],\n 'address-name': [],\n 'address-ip': [],\n 'address-status': {},\n 'is-arrears': {},\n 'address-isp': {},\n 'instance-id': [],\n 'private-ip-address': [],\n 'network-interface-id': [],\n};\n\nconst CEIPFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'address-id',\n enDescriptor: 'address-id',\n cnDescriptor: ' EIP 的唯一 ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'address-name',\n enDescriptor: 'address-name',\n cnDescriptor: 'EIP 名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'address-ip',\n enDescriptor: 'address-ip',\n cnDescriptor: 'EIP 的 IP 地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'address-status',\n enDescriptor: 'address-status',\n cnDescriptor: 'EIP 的状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: 'CREATING', value: 'CREATING' },\n { text: 'BINDING', value: 'BINDING' },\n { text: 'BIND', value: 'BIND' },\n { text: 'UNBINDING', value: 'UNBINDING' },\n { text: 'UNBIND', value: 'UNBIND' },\n { text: 'OFFLINING', value: 'OFFLINING' },\n { text: 'BIND_ENI', value: 'BIND_ENI' },\n ],\n },\n {\n key: 'instance-id',\n enDescriptor: 'instance-id',\n cnDescriptor: 'EIP 绑定的实例 ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'private-ip-address',\n cnDescriptor: 'EIP 绑定的内网 IP ',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'network-interface-id',\n enDescriptor: 'network-interface-id',\n cnDescriptor: ' EIP 绑定的弹性网卡 ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'is-arrears',\n enDescriptor: 'is-arrears',\n cnDescriptor: 'EIP 是否欠费',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '欠费状态', value: 'TRUE' },\n { text: '费用状态正常', value: 'FALSE' },\n ],\n },\n {\n key: 'address-isp',\n enDescriptor: 'address-isp',\n cnDescriptor: '运营商类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: 'BGP', value: 'BGP' },\n { text: 'CMCC', value: 'CMCC' },\n { text: 'CUCC', value: 'CUCC' },\n { text: 'CTCC', value: 'CTCC' },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/16702',\n namespace,\n fieldDescriptor: CEIPFilterFieldsDescriptor,\n};\n\nconst CEIP_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'AddressId',\n queries: CEIPFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['eip'];\n });\n return metricTmp;\n}\nexport default CEIP_STATE;\nexport {\n CEIPFilterFieldsDescriptor,\n templateQueryIdMap,\n CEIPSUMMARYInstanceAliasList,\n CEIPInvalidDemensions,\n namespace,\n queryEditorName,\n modifyDimensons,\n queryEditorConfig,\n GetInstanceQueryParams as CEIPSUMMARYGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { FildDescriptorType } from '../_base/types';\n\nexport const InstanceQueryDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 50,\n },\n {\n key: 'TopicName',\n enDescriptor: 'TopicName',\n cnDescriptor: '精确匹配TopicName',\n link: '',\n type: 'input',\n },\n {\n key: 'TagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '标签搜索',\n link: '',\n type: 'input',\n },\n];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nexport const InvalidDemensions = {\n topicId: 'TopicId',\n};\n\n// 因为cmq那边,以TopciName为主键\nexport const templateQueryIdMap = {\n instance: 'TopicName',\n subscription: 'SubscriptionId',\n};\n\n// 需要缓存到storage的内容的key列表\nconst keyInStorage = {\n subscriptionId: 'subscriptionId',\n};\n/*\n如果有InstanceId额外的维度,原则上都需要传入此map结构配置\nkey的含义:\n 经过InvalidDemensions处理后的string。topicId =》TopicId。\n 否则认为指标中维度正确,和指标中维度字段保持一致,即topicId\nvalue的含义:\n 1 dim_KeyInStorage 指标中维度dimension对应的storage中的key,获取缓存列表,sourceMapList、\n 2 dim_KeyInTarget 通过getVariable方法获取变量中选中项。比如ListnerId为Lis-xxxx;即:STATE中的key。\n 默认取通过InvalidDemsion处理后的key\n 3 dim_KeyInMap 保存在模板变量value比如(监听器ID)源自sourceMapList(接口返回内容)的哪个key(ListenerId)。\n 即:templateQueryIdMap中内容。\n 联合上面2的内容筛选出原始sourceMap\n*/\nconst queryMonitorExtraConfg = {\n subscriptionId: {\n dim_KeyInStorage: keyInStorage.subscriptionId,\n dim_KeyInTarget: 'subscriptionId',\n dim_KeyInMap: templateQueryIdMap.subscription,\n },\n};\n// 与名称挂钩的变量\nconst InstanceAliasList = ['TopicName', 'TopicId'];\nexport { InstanceAliasList, GetInstanceQueryParams, queryMonitorExtraConfg, keyInStorage };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'TopicName',\n subscriptionId: '',\n queries: {\n Offset: 0,\n Limit: 20,\n TopicName: '',\n TagKey: '',\n },\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/CPM';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'cpmQuery';\n\nconst CPMInvalidDemensions = {\n instanceId: 'InstanceId',\n // uniqid: 'InstanceId',\n};\n\nconst CPMInstanceAliasList = ['InstanceId', 'Name'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst CPMFilterFields = {\n Limit: 20,\n Offset: 0,\n DeviceClassCode: '',\n InstanceIds: [],\n WanIps: [],\n LanIps: [],\n Alias: '',\n VagueIp: '',\n AutoRenewFlag: {},\n VpcId: '',\n SubnetId: '',\n DeviceType: {},\n IsLuckyDevice: {},\n};\n\nconst CPMFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'DeviceClassCode',\n enDescriptor: 'DeviceClassCode',\n cnDescriptor: '机型ID',\n link: '',\n type: 'dropdown',\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '设备ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'WanIps',\n enDescriptor: 'WanIps',\n cnDescriptor: '外网IP数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LanIps',\n enDescriptor: 'LanIps',\n cnDescriptor: '内网IP数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'Alias',\n enDescriptor: 'Alias',\n cnDescriptor: '设备名称',\n link: '',\n type: 'input',\n },\n {\n key: 'VagueIp',\n enDescriptor: 'VagueIp',\n cnDescriptor: '模糊IP查询',\n link: '',\n type: 'input',\n },\n {\n key: 'AutoRenewFlag',\n enDescriptor: 'AutoRenewFlag',\n cnDescriptor: '自动续费标志',\n link: '',\n type: 'select',\n list: [\n { text: '不自动续费', value: 0 },\n { text: '自动续费', value: 1 },\n ],\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络唯一ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '子网唯一ID',\n link: '',\n type: 'input',\n },\n {\n key: 'DeviceType',\n enDescriptor: 'DeviceType',\n cnDescriptor: '子网实例ID',\n link: '',\n type: 'select',\n list: [\n { text: '计算型', value: 'compute' },\n { text: '标准型', value: 'standard' },\n { text: '存储型', value: 'storage' },\n ],\n },\n {\n key: 'IsLuckyDevice',\n enDescriptor: 'IsLuckyDevice',\n cnDescriptor: '竞价实例机器过滤',\n link: '',\n type: 'select',\n list: [\n { text: '非竞价实例机器', value: 0 },\n { text: '竞价实例的机器', value: 1 },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/386/32904',\n namespace,\n fieldDescriptor: CPMFilterFieldsDescriptor,\n};\n\nconst CPM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: CPMFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['instanceId'];\n });\n return metricTmp;\n}\nexport default CPM_STATE;\nexport {\n CPMFilterFieldsDescriptor,\n templateQueryIdMap,\n CPMInstanceAliasList,\n CPMInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CPMGetInstanceQueryParams,\n};\n","import { cloneDeep, compact, forEach, get, isArray, isEmpty, isObject, omit, uniq } from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\n\nconst namespace = 'QCE/DSA';\nconst queryEditorName = 'ecdnQuery';\n\nconst ECDNInstanceAliasList = ['Domain'];\n\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\n\nconst ECDNInvalidDemensions = {\n domain: 'Domain',\n projectid: 'ProjectId',\n};\n\nconst ECDN_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: {\n Limit: 100,\n Offset: 0,\n origin: [],\n domain: [],\n resourceId: [],\n status: [],\n disable: [],\n projectId: [],\n fullUrlCache: [],\n https: [],\n originPullProtocol: [],\n area: [],\n tagKey: [],\n },\n};\n\nconst ECDNFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'origin',\n enDescriptor: 'Origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'domain',\n enDescriptor: 'Domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'ResourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'status',\n enDescriptor: 'Status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'disable',\n enDescriptor: 'Disable',\n cnDescriptor: '域名封禁状态',\n link: '',\n type: 'select',\n list: [\n { text: 'normal', value: 'normal' },\n { text: 'unlicensed', value: 'unlicensed' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'FullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'Https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'OriginPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'https', value: 'https' },\n { text: 'follow', value: 'follow' },\n ],\n },\n {\n key: 'area',\n enDescriptor: 'Area',\n cnDescriptor: '加速区域',\n link: '',\n type: 'select',\n list: [\n { text: 'mainland', value: 'mainland' },\n { text: 'overseas', value: 'overseas' },\n { text: 'global', value: 'global' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/570/42462',\n namespace,\n fieldDescriptor: ECDNFilterFieldsDescriptor,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!isEmpty(queries)) {\n params.Limit = get(queries, 'Limit', 20) || 20;\n params.Offset = get(queries, 'Offset', 0) || 0;\n const _queries = omit(queries, ['Offset', 'Limit']);\n const Filters: any[] = [];\n forEach(_queries, (item: any, key) => {\n if (isArray(item)) {\n item = compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Value: uniq(item).slice(0, 5) });\n }\n } else if (isObject(item)) {\n if (!isEmpty(get(item, 'value', []))) {\n Filters.push({ Name: key, Value: [get(item, 'value', [])].slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters.map((item) => {\n if (item.Name === 'domain') {\n return { ...item, Fuzzy: true };\n }\n return item;\n });\n return params;\n }\n }\n return params;\n}\n\nfunction modifyDimensons(metricItem) {\n const metricTmp = cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['domain', 'projectid'];\n });\n return metricTmp;\n}\n\nexport default ECDN_STATE;\n\nexport {\n ECDNFilterFieldsDescriptor,\n templateQueryIdMap,\n ECDNInstanceAliasList,\n ECDNInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as ECDNGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/ECM';\nconst queryEditorName = 'ecmQuery';\n\nconst ECMInvalidDemensions = {\n // diskId: 'InstanceId',\n uuid: 'UUID',\n // unInstanceId: 'InstanceId',\n};\n\nconst ECMInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst ECMFilterFields = {\n Limit: 20,\n Offset: 0,\n zone: [],\n 'zone-name': [],\n 'module-id': [],\n 'module-name': [],\n 'instance-id': [],\n 'instance-name': [],\n 'ip-address': [],\n 'instance-uuid': [],\n 'instance-state': {},\n 'internet-service-provider': [],\n 'instance-family': [],\n 'image-id': [],\n 'vpc-id': [],\n 'subnet-id': [],\n};\n\nconst ECMFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'zone',\n enDescriptor: 'zone',\n cnDescriptor: '可用区英文标识',\n link: '',\n type: 'dropdownMulti',\n },\n {\n key: 'zone-name',\n enDescriptor: 'zone-name',\n cnDescriptor: '排列顺序',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-id',\n enDescriptor: 'module-id',\n cnDescriptor: '模块ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'module-name',\n enDescriptor: 'module-name',\n cnDescriptor: '模块名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-id',\n enDescriptor: 'instance-id',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-name',\n enDescriptor: 'instance-name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ip-address',\n enDescriptor: 'ip-address',\n cnDescriptor: '内网/公网IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-uuid',\n enDescriptor: 'instance-uuid',\n cnDescriptor: '实例uuid',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-state',\n enDescriptor: 'instance-state',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '创建中', value: 'PENDING' },\n { text: '创建失败', value: 'LAUNCH_FAILED' },\n { text: '运行中', value: 'RUNNING' },\n { text: '关机', value: 'STOPPED' },\n { text: '开机中', value: 'STARTING' },\n { text: '关机中', value: 'STOPPING' },\n { text: '重启中', value: 'REBOOTING' },\n { text: '停止待销毁', value: 'SHUTDOWN' },\n { text: '销毁中', value: 'TERMINATING' },\n ],\n },\n {\n key: 'internet-service-provider',\n enDescriptor: 'internet-service-provider',\n cnDescriptor: '公网IP所属的运营商',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'instance-family',\n enDescriptor: 'instance-family',\n cnDescriptor: '机型family',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'image-id',\n enDescriptor: 'image-id',\n cnDescriptor: '镜像ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: '实例的vpc id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'subnet-id',\n cnDescriptor: '实例的subnet id',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1108/42565',\n namespace,\n fieldDescriptor: ECMFilterFieldsDescriptor,\n};\n\nconst ECM_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: ECMFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n// function isValidMetric(metricObj: any = {}) {\n// const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n// // console.log('dimension', dimension, dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1);\n// return dimension.length === 1 &&( _.indexOf(dimension, 'UUID') !== -1 || _.indexOf(dimension, 'uuid') !== -1);\n// }\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['UUID'];\n });\n return metricTmp;\n}\nexport default ECM_STATE;\nexport {\n ECMFilterFieldsDescriptor,\n templateQueryIdMap,\n ECMInstanceAliasList,\n ECMInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as ECMGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\nconst namespace = 'QCE/POSTGRES';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'postgresQuery';\n\nconst PostgresFields = {\n 'db-instance-id': [],\n 'db-instance-name': [],\n};\n\nconst PostgresFieldsDescriptor: FildDescriptorType = [\n {\n key: 'db-instance-id',\n enDescriptor: 'DB Instance ID',\n cnDescriptor: 'DB 实例ID',\n link: '',\n type: 'inputMulti',\n min: 0,\n },\n {\n key: 'db-instance-name',\n enDescriptor: 'DB Instance Name',\n cnDescriptor: 'DB 实例名称',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/409/16773',\n namespace,\n fieldDescriptor: PostgresFieldsDescriptor,\n};\nconst POSTGRESInstanceAliasList = ['DBInstanceId', 'DBInstanceName'];\n\nconst POSTGRES_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DBInstanceId',\n queries: {\n Limit: 20,\n Offset: 0,\n Filters: { ...PostgresFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['resourceId'];\n });\n return metricTmp;\n}\nconst PostgreInvalidDemensions = {\n uid: 'DBInstanceId',\n resourceId: 'DBInstanceId',\n};\nconst templateQueryIdMap = {\n instance: 'DBInstanceId',\n};\nexport default POSTGRES_STATE;\n\nexport {\n PostgresFieldsDescriptor,\n POSTGRESInstanceAliasList,\n templateQueryIdMap,\n modifyDimensons,\n namespace,\n queryEditorName,\n queryEditorConfig,\n PostgreInvalidDemensions,\n GetInstanceQueryParams as POSTGRESGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VPC_NET_DETECT';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'vpcNetDetectQuery';\n\nconst VPCNETInvalidDemensions = {\n netdetectid: 'NetDetectId',\n netDetectId: 'NetDetectId',\n};\n\nconst VPCNETDETECTInstanceAliasList = ['NetDetectId', 'NetDetectName'];\n\nconst templateQueryIdMap = {\n instance: 'NetDetectId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst VPCNETFilterFields = {\n Limit: 20,\n Offset: 0,\n 'vpc-id': [],\n 'net-detect-id': [],\n 'subnet-id': [],\n 'net-detect-name': [],\n};\n\nconst VPCNETFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: 'VPC实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'net-detect-id',\n enDescriptor: 'net-detect-id',\n cnDescriptor: '网络探测实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'subnet-id',\n cnDescriptor: '子网实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'net-detect-name',\n enDescriptor: 'net-detect-name',\n cnDescriptor: '网络探测名称',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/38696',\n namespace,\n fieldDescriptor: VPCNETFilterFieldsDescriptor,\n};\n\nconst VPCNET_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'NetDetectId',\n queries: VPCNETFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['netDetectId'];\n });\n return metricTmp;\n}\nexport default VPCNET_STATE;\nexport {\n VPCNETFilterFieldsDescriptor,\n templateQueryIdMap,\n VPCNETDETECTInstanceAliasList,\n VPCNETInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as VPCNETDETECTGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/WAF';\nconst queryEditorName = 'wafQuery';\nconst WAFFilterFields = {\n Limit: 20,\n Offset: 0,\n origin: [],\n domain: [],\n resourceId: [],\n status: {},\n serviceType: {},\n projectId: [],\n domainType: {},\n fullUrlCache: {},\n https: {},\n originPullProtocol: {},\n tagKey: [],\n};\n\nconst WAFFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumberMulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/228/41118',\n namespace,\n fieldDescriptor: WAFFilterFieldsDescriptor,\n};\nconst WAF_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: WAFFilterFields,\n};\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-nanjing' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-seoul' },\n { value: 'ap-singapore' },\n];\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n\nconst WAFInstanceAliasList = ['Domain', 'ProjectId'];\n\nconst WAFInvalidDemensions = {\n projectId: 'ProjectId',\n domain: 'Domain',\n};\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\nexport default WAF_STATE;\nexport {\n WAFFilterFieldsDescriptor,\n templateQueryIdMap,\n WAFInstanceAliasList,\n WAFInvalidDemensions,\n namespace,\n regionSupported,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as WAFGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nconst InstanceTypes = [\n { text: '主实例', value: 1 },\n { text: '备灾实例', value: 2 },\n { text: '只读实例', value: 3 },\n];\n\nconst Status = [\n { text: '创建中', value: 0 },\n { text: '运行中', value: 1 },\n { text: '隔离中', value: 4 },\n { text: '已隔离', value: 5 },\n];\n\nconst PayTypes = [\n { text: '包年包月', value: 0 },\n { text: '小时计费', value: 1 },\n];\n\nconst TaskStatus = [\n { text: '没有任务', value: 0 },\n { text: '升级中', value: 1 },\n { text: '数据导入中', value: 2 },\n { text: '开放Slave中', value: 3 },\n { text: '外网访问开通中', value: 4 },\n { text: '批量操作执行中', value: 5 },\n { text: '回档中', value: 6 },\n { text: '外网访问关闭中', value: 7 },\n { text: '密码修改中', value: 8 },\n { text: '实例名修改中', value: 9 },\n { text: '重启中', value: 10 },\n { text: '自建迁移中', value: 12 },\n { text: '删除库表中', value: 13 },\n { text: '灾备实例创建同步中', value: 14 },\n { text: '升级待切换', value: 15 },\n { text: '升级切换中', value: 16 },\n { text: '升级切换完成', value: 17 },\n];\n\nconst EngineVersions = [\n { text: '5.1', value: '5.1' },\n { text: '5.5', value: '5.5' },\n { text: '5.6', value: '5.6' },\n { text: '5.7', value: '5.7' },\n];\n\nconst OrderBy = [\n { text: 'InstanceId', value: 'InstanceId' },\n { text: 'InstanceName', value: 'InstanceName' },\n { text: 'CreateTime', value: 'CreateTime' },\n { text: 'DeadlineTime', value: 'DeadlineTime' },\n];\n\nconst OrderDirection = [\n { text: 'ASC', value: 'ASC' },\n { text: 'DESC', value: 'DESC' },\n];\n\nconst InitFlag = [\n { text: '未初始化', value: 0 },\n { text: '初始化', value: 1 },\n];\n\nconst CdbErrors = [\n { text: '未锁定', value: 0 },\n { text: '锁定', value: 1 },\n];\n\nconst CDBFields = {\n ProjectId: '',\n InstanceTypes: {},\n Vips: [],\n Status: {},\n Offset: 0,\n Limit: 20,\n SecurityGroupId: '',\n PayTypes: {},\n InstanceNames: [],\n TaskStatus: {},\n EngineVersions: {},\n VpcIds: [],\n ZoneIds: [],\n SubnetIds: [],\n CdbErrors: {},\n OrderBy: {},\n OrderDirection: {},\n InstanceIds: [],\n InitFlag: {},\n};\n\nconst CDBFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceNames',\n enDescriptor: 'Instance Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'Instance ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ZoneIds',\n enDescriptor: 'Zone ID',\n cnDescriptor: '可用区的ID',\n link: '',\n type: 'dropdownmulti',\n },\n {\n key: 'InstanceTypes',\n enDescriptor: 'Instance Type',\n cnDescriptor: '实例类型',\n link: '',\n multiple: true,\n type: 'select',\n list: InstanceTypes,\n },\n {\n key: 'EngineVersions',\n enDescriptor: 'Engine Version',\n cnDescriptor: '实例数据库引擎版本',\n link: '',\n multiple: true,\n type: 'select',\n list: EngineVersions,\n },\n {\n key: 'TaskStatus',\n enDescriptor: 'Task Status',\n cnDescriptor: '实例任务',\n link: '',\n multiple: true,\n type: 'select',\n list: TaskStatus,\n },\n {\n key: 'InitFlag',\n enDescriptor: 'Init Flag',\n cnDescriptor: '实例初始化状态',\n link: '',\n multiple: true,\n type: 'select',\n list: InitFlag,\n },\n {\n key: 'PayTypes',\n enDescriptor: 'Pay Type',\n cnDescriptor: '付费类型',\n link: '',\n multiple: true,\n type: 'select',\n list: PayTypes,\n },\n {\n key: 'CdbErrors',\n enDescriptor: 'CDB Errors',\n cnDescriptor: '实例锁定标记',\n link: '',\n multiple: true,\n type: 'select',\n list: CdbErrors,\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n link: '',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderDirection',\n enDescriptor: 'Order Direction',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderDirection,\n },\n {\n key: 'Vips',\n enDescriptor: 'Vip',\n cnDescriptor: '实例内网IP地址',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'VpcIds',\n enDescriptor: 'Vpc ID',\n cnDescriptor: '私有网络ID',\n link: 'https://cloud.tencent.com/document/api/215/15778',\n type: 'inputmulti',\n },\n {\n key: 'SubnetIds',\n enDescriptor: 'Subnet ID',\n cnDescriptor: '子网ID',\n link: 'https://cloud.tencent.com/document/api/215/15784',\n type: 'inputmulti',\n },\n {\n key: 'ProjectId',\n enDescriptor: 'Project ID',\n cnDescriptor: '项目ID',\n link: 'https://cloud.tencent.com/document/product/378/4400',\n type: 'input',\n },\n { \n key: 'SecurityGroupId',\n enDescriptor: 'Security Group ID',\n cnDescriptor: '安全组ID',\n link: 'https://cloud.tencent.com/document/api/236/15854',\n type: 'input',\n },\n];\n\nconst CDB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...CDBFields },\n};\n\nconst CDBInstanceAliasList = ['InstanceId', 'InstanceName', 'Vip'];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\nfunction isValidMetric(metricObj: any = {}) {\n const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n return (\n dimension.length === 2 &&\n ((_.indexOf(dimension, 'instanceid') !== -1 && _.indexOf(dimension, 'insttype') !== -1) ||\n (_.indexOf(dimension, 'InstanceId') !== -1 && _.indexOf(dimension, 'InstanceType') !== -1))\n );\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = item.Dimensions.map((i) => CDBInvalidDemensions[i] || i);\n });\n return metricTmp;\n}\nconst CDBInvalidDemensions = {\n instanceid: 'InstanceId',\n insttype: 'InstanceType',\n region: 'Region',\n};\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nexport default CDB_STATE;\n\nexport {\n CDBFieldsDescriptor,\n CDBInstanceAliasList,\n templateQueryIdMap,\n CDBInvalidDemensions,\n isValidMetric,\n modifyDimensons,\n GetInstanceQueryParams as CDBGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/CES';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'cesQuery';\n\nconst CESInvalidDemensions = {\n uInstanceId: 'InstanceId',\n};\n\nconst CESInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst CESFilterFields = {\n Limit: 20,\n Offset: 0,\n InstanceIds: [],\n InstanceNames: [],\n OrderByKey: {},\n OrderByType: {},\n IpList: [],\n};\n\nconst CESFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstanceIds',\n cnDescriptor: '集群实例ID列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'InstanceNames',\n enDescriptor: 'InstanceNames',\n cnDescriptor: '集群实例名称列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'OrderByKey',\n enDescriptor: 'OrderByKey',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: [\n { text: '实例ID', value: 1 },\n { text: '实例名称', value: 2 },\n { text: '可用区', value: 3 },\n { text: '创建时间', value: 4 },\n ],\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n ],\n },\n {\n key: 'IpList',\n enDescriptor: 'IpList',\n cnDescriptor: '私有网络vip列表',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/845/30631',\n namespace,\n fieldDescriptor: CESFilterFieldsDescriptor,\n};\n\nconst CES_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: CESFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\nexport default CES_STATE;\nexport {\n CESFilterFieldsDescriptor,\n templateQueryIdMap,\n CESInstanceAliasList,\n CESInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as CESGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/DC';\nconst queryEditorName = 'dcQuery';\n\nconst DCFilterFields = {\n Limit: 20,\n Offset: 0,\n DirectConnectIds: [],\n};\n\nconst DCFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'DirectConnectIds',\n enDescriptor: 'DirectConnectIds',\n cnDescriptor: '物理专线 ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/216/34826',\n namespace,\n fieldDescriptor: DCFilterFieldsDescriptor,\n};\n\nconst DC_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DirectConnectId',\n queries: DCFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\nconst DCInstanceAliasList = ['DirectConnectId', 'DirectConnectName'];\n\nconst templateQueryIdMap = {\n instance: 'DirectConnectId',\n};\n\nconst DCInvalidDemensions = {\n directConnectId: 'DirectConnectId',\n directconnectid: 'DirectConnectId',\n};\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['directConnectId'];\n });\n return metricTmp;\n}\nexport default DC_STATE;\nexport {\n DCFilterFieldsDescriptor,\n templateQueryIdMap,\n DCInstanceAliasList,\n DCInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as DCGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/DCG';\nconst queryEditorName = 'dcgQuery';\n\nconst DCGInvalidDemensions = {\n directConnectGatewayId: 'DirectConnectGatewayId',\n};\n\nconst DCGInstanceAliasList = ['DirectConnectGatewayId', 'DirectConnectGatewayName'];\n\nconst templateQueryIdMap = {\n instance: 'DirectConnectGatewayId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst DCGFilterFields = {\n Limit: 20,\n Offset: 0,\n 'direct-connect-gateway-id': [],\n 'direct-connect-gateway-name': [],\n 'direct-connect-gateway-ip': [],\n 'gateway-type': {},\n 'network-type': {},\n 'ccn-id': [],\n 'vpc-id': [],\n};\n\nconst DCGFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'direct-connect-gateway-id',\n enDescriptor: 'direct-connect-gateway-id',\n cnDescriptor: '专线网关唯一ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-gateway-name',\n enDescriptor: 'direct-connect-gateway-name',\n cnDescriptor: '专线网关名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-gateway-ip',\n enDescriptor: 'direct-connect-gateway-ip',\n cnDescriptor: '专线网关IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'gateway-type',\n enDescriptor: 'gateway-type',\n cnDescriptor: '网关类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '普通型', value: 'NORMAL' },\n { text: 'NAT型', value: 'NAT' },\n ],\n },\n {\n key: 'network-type',\n enDescriptor: 'network-type',\n cnDescriptor: '网络类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '私有网络类型', value: 'VPC' },\n { text: '云联网类型', value: 'CCN' },\n ],\n },\n {\n key: 'ccn-id',\n enDescriptor: 'ccn-id',\n cnDescriptor: '专线网关所在云联网ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: '专线网关所在私有网络ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/30644',\n namespace,\n fieldDescriptor: DCGFilterFieldsDescriptor,\n};\n\nconst DCG_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DirectConnectGatewayId',\n queries: DCGFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default DCG_STATE;\nexport {\n DCGFilterFieldsDescriptor,\n templateQueryIdMap,\n DCGInstanceAliasList,\n DCGInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as DCGGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/DCX';\nconst queryEditorName = 'dcxQuery';\n\nconst DCXFilterFields = {\n 'direct-connect-tunnel-name': [],\n 'direct-connect-tunnel-id': [],\n 'direct-connect-id': [],\n};\n\nconst DCXFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'direct-connect-tunnel-name',\n enDescriptor: 'direct-connect-tunnel-name',\n cnDescriptor: '专用通道名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-tunnel-id',\n enDescriptor: 'direct-connect-tunnel-id',\n cnDescriptor: '专用通道实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'direct-connect-id',\n enDescriptor: 'direct-connect-id',\n cnDescriptor: '物理专线实例ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/216/19819',\n namespace,\n fieldDescriptor: DCXFilterFieldsDescriptor,\n};\n\nconst DCX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'DirectConnectTunnelId',\n queries: {\n Limit: 20,\n Offset: 0,\n ...DCXFilterFields,\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\n\nconst DCXInstanceAliasList = ['DirectConnectTunnelId', 'DirectConnectTunnelName'];\n\nconst templateQueryIdMap = {\n instance: 'DirectConnectTunnelId',\n};\n\nconst DCXInvalidDemensions = {\n directconnectconnid: 'DirectConnectTunnelId',\n directConnectConnId: 'DirectConnectTunnelId',\n};\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['directConnectConnId'];\n });\n return metricTmp;\n}\nexport default DCX_STATE;\nexport {\n DCXFilterFieldsDescriptor,\n templateQueryIdMap,\n DCXInstanceAliasList,\n DCXInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as DCXGetInstanceQueryParams,\n};\n","import * as _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/ECM_LB';\nconst queryEditorName = 'ecmLbQuery';\n\nconst ECMLBInvalidDemensions = {\n vip: 'LoadBalancerVips',\n};\n\nconst ECMLBInstanceAliasList = ['LoadBalancerId', 'LoadBalancerName'];\n\nconst templateQueryIdMap = {\n instance: 'LoadBalancerId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst ECMLBFilterFields = {\n Limit: 20,\n Offset: 0,\n LoadBalancerIds: [],\n LoadBalancerName: [],\n LoadBalancerVips: [],\n BackendPrivateIps: [],\n VpcId: '',\n};\n\nconst ECMLBFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'LoadBalancerIds',\n enDescriptor: 'LoadBalancerIds',\n cnDescriptor: '负载均衡器ID数组',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerName',\n enDescriptor: 'LoadBalancerName',\n cnDescriptor: '负载均衡器名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'LoadBalancerVips',\n enDescriptor: 'LoadBalancerVips',\n cnDescriptor: '负载均衡获得的公网IP地址',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'BackendPrivateIps',\n enDescriptor: 'BackendPrivateIps',\n cnDescriptor: '绑定的后端服务的内网 IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '实例所属私有网络唯一ID',\n link: '',\n type: 'input',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/1108/48459',\n namespace,\n fieldDescriptor: ECMLBFilterFieldsDescriptor,\n};\n\nconst ECM_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'LoadBalancerId',\n queries: ECMLBFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n// function isValidMetric(metricObj: any = {}) {\n// const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n// // console.log('dimension', dimension, dimension.length === 1 && _.indexOf(dimension, 'diskId') !== -1);\n// return dimension.length === 1 &&( _.indexOf(dimension, 'UUID') !== -1 || _.indexOf(dimension, 'uuid') !== -1);\n// }\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n // item.Dimensions = ['UUID'];\n });\n return metricTmp;\n}\nexport default ECM_STATE;\nexport {\n ECMLBFilterFieldsDescriptor,\n templateQueryIdMap,\n ECMLBInstanceAliasList,\n ECMLBInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as ECMLBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst InstanceTypes = [\n { text: '所有实例', value: 0 },\n { text: '正式实例', value: 1 },\n { text: '临时实例', value: 2 },\n { text: '只读实例', value: 3 },\n { text: '正式,只读,灾备实例', value: -1 },\n];\n\nconst ClusterTypes = [\n { text: '副本集实例', value: 0 },\n { text: '分片实例', value: 1 },\n { text: '所有实例', value: -1 },\n];\n\nconst Status = [\n { text: '待初始化', value: 0 },\n { text: '流程执行中', value: 1 },\n { text: '实例有效', value: 2 },\n { text: '实例已过期', value: -2 },\n];\n\nconst PayMode = [\n { text: '按量计费', value: 0 },\n { text: '包年包月', value: 1 },\n { text: '按量包年包月计费', value: -1 },\n];\n\nconst OrderBy = [\n { text: 'ProjectId', value: 'ProjectId' },\n { text: 'InstanceName', value: 'InstanceName' },\n { text: 'CreateTime', value: 'CreateTime' },\n];\n\nconst OrderByType = [\n { text: '升序', value: 'ASC' },\n { text: '降序', value: 'DESC' },\n];\n\nconst MongoDBFields = {\n InstanceIds: [],\n InstanceType: {},\n ClusterType: {},\n Status: [],\n VpcId: '',\n SubnetId: '',\n PayMode: {},\n Limit: 20,\n Offset: 0,\n OrderBy: '',\n OrderByType: '',\n};\n\nconst MONGODBFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceIds',\n enDescriptor: 'InstancesIds',\n cnDescriptor: '实例名称',\n type: 'inputmulti',\n },\n {\n key: 'InstanceType',\n enDescriptor: 'InstanceType',\n cnDescriptor: '实例类型',\n link: '',\n type: 'select',\n list: InstanceTypes,\n },\n {\n key: 'ClusterType',\n enDescriptor: 'ClusterType',\n cnDescriptor: '集群类型',\n link: '',\n type: 'select',\n list: ClusterTypes,\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n link: '',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络的ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '私有网络的子网ID,基础网络则不传该参数。入参设置该参数的同时,必须设置相应的VpcId',\n link: '',\n type: 'input',\n },\n {\n key: 'PayMode',\n enDescriptor: 'PayMode',\n cnDescriptor: '付费类型',\n link: '',\n type: 'select',\n list: PayMode,\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderByType',\n enDescriptor: 'OrderByType',\n cnDescriptor: '排序方式',\n link: '',\n type: 'select',\n list: OrderByType,\n },\n];\n\nconst MONGODB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...MongoDBFields },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n // select 单选\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst MONGODBInstanceAliasList = ['InstanceId', 'InstanceName'];\n\nconst MONGODBInvalidDemensions = {\n target: 'InstanceId',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n replica: 'ReplicaSetId',\n};\n\nconst queryMonitorExtraConfg = {\n Replica: {\n dim_KeyInStorage: 'ReplicaSets',\n dim_KeyInTarget: 'replica',\n dim_KeyInMap: 'ReplicaSetId',\n dim_KeyInIns: 'ReplicaSetId',\n },\n Node: {\n dim_KeyInStorage: 'ReplicaNodeSets',\n dim_KeyInTarget: 'node',\n dim_KeyInMap: 'NodeId',\n dim_KeyInIns: 'NodeId',\n },\n};\nexport default MONGODB_STATE;\nexport {\n MONGODBFieldsDescriptor,\n MONGODBInvalidDemensions,\n MONGODBInstanceAliasList,\n templateQueryIdMap,\n queryMonitorExtraConfg,\n GetInstanceQueryParams as MONGODBGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/QAAP';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'qaapQuery';\n\nconst QAAPInvalidDemensions = {\n channelId: 'InstanceId',\n};\n\nconst QAAPInstanceAliasList = ['InstanceId'];\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst QAAPFilterFields = {\n Limit: 20,\n Offset: 0,\n ProjectId: [],\n AccessRegion: [],\n RealServerRegion: [],\n GroupId: [],\n};\n\nconst QAAPFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ProjectId',\n enDescriptor: 'ProjectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'AccessRegion',\n enDescriptor: 'AccessRegion',\n cnDescriptor: '接入地域',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'RealServerRegion',\n enDescriptor: 'RealServerRegion',\n cnDescriptor: '源站地域',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'GroupId',\n enDescriptor: 'GroupId',\n cnDescriptor: '通道组ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/608/36963',\n namespace,\n fieldDescriptor: QAAPFilterFieldsDescriptor,\n};\n\nconst QAAP_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: QAAPFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n // metricTmp.Dimensions.forEach((item) => {\n // item.Dimensions = ['netDetectId'];\n // });\n return metricTmp;\n}\nexport default QAAP_STATE;\nexport {\n QAAPFilterFieldsDescriptor,\n templateQueryIdMap,\n QAAPInstanceAliasList,\n QAAPInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n modifyDimensons,\n GetInstanceQueryParams as QAAPGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport _ from 'lodash';\n\nconst namespace = 'QCE/TCAPLUS';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'tcaplusQuery';\n\nconst TCAPLUSInvalidDemensions = {\n // TableInstanceId: 'TableInstanceId',\n // ClusterId: 'ClusterId',\n};\n\n// 需和文件名对应\nconst TCAPLUSInstanceAliasList = ['TableInstanceId', 'TableName'];\n\nconst templateQueryIdMap = {\n instance: 'TableInstanceId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是类型\nconst TCAPLUSFilterFields = {\n Limit: 20,\n Offset: 0,\n ClusterId: '',\n TableGroupIds: [],\n\n TableName: '',\n TableInstanceId: '',\n TableIdlType: {},\n TableType: {},\n ListElementNum: null,\n ReservedVolume: null,\n ReservedReadQps: null,\n ReservedWriteQps: null,\n Memo: '',\n FileName: '',\n FileExtType: '',\n FileSize: null,\n FileContent: '',\n};\n\nconst TCAPLUSFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ClusterId',\n enDescriptor: 'ClusterId',\n cnDescriptor: '表格所属集群ID',\n link: '',\n type: 'input',\n },\n {\n key: 'TableGroupIds',\n enDescriptor: 'TableGroupIds',\n cnDescriptor: '表格组ID列表',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'TableName',\n enDescriptor: 'TableName',\n cnDescriptor: '表格名称',\n link: '',\n type: 'input',\n },\n {\n key: 'TableInstanceId',\n enDescriptor: 'TableInstanceId',\n cnDescriptor: '表实例ID',\n link: '',\n type: 'input',\n },\n {\n key: 'TableIdlType',\n enDescriptor: 'TableIdlType',\n cnDescriptor: '表格描述语言类型',\n link: '',\n type: 'select',\n list: [\n { text: 'PROTO', value: 'PROTO' },\n { text: 'TDR', value: 'TDR' },\n ],\n },\n {\n key: 'TableType',\n enDescriptor: 'TableType',\n cnDescriptor: '表格数据结构类型',\n link: '',\n type: 'select',\n list: [\n { text: 'GENERIC', value: 'GENERIC' },\n { text: 'LIST', value: 'LIST' },\n ],\n },\n {\n key: 'ListElementNum',\n enDescriptor: 'ListElementNum',\n cnDescriptor: 'LIST表元素个数',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'ReservedVolume',\n enDescriptor: 'ReservedVolume',\n cnDescriptor: '表格预留容量(GB)',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'ReservedReadQps',\n enDescriptor: 'ReservedReadQps',\n cnDescriptor: '表格预留读CU',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'ReservedWriteQps',\n enDescriptor: 'ReservedWriteQps',\n cnDescriptor: '表格预留写CU',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'Memo',\n enDescriptor: 'Memo',\n cnDescriptor: '表格备注信息',\n link: '',\n type: 'input',\n },\n {\n key: 'FileName',\n enDescriptor: 'FileName',\n cnDescriptor: 'Key回档文件名,回档专用',\n link: '',\n type: 'input',\n },\n {\n key: 'FileExtType',\n enDescriptor: 'FileExtType',\n cnDescriptor: 'Key回档文件扩展名,回档专用',\n link: '',\n type: 'input',\n },\n {\n key: 'FileSize',\n enDescriptor: 'FileSize',\n cnDescriptor: 'Key回档文件大小,回档专用',\n link: '',\n type: 'inputNumber',\n },\n {\n key: 'FileContent',\n enDescriptor: 'FileContent',\n cnDescriptor: 'Key回档文件内容,回档专用',\n link: '',\n type: 'input',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/596/39664',\n namespace,\n fieldDescriptor: TCAPLUSFilterFieldsDescriptor,\n};\n\nconst TCAPLUS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'TableInstanceId',\n queries: TCAPLUSFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n params.ClusterId = _.get(queries, 'ClusterId', '') || '';\n params.TableGroupIds = _.get(queries, 'TableGroupIds', []) || [];\n queries = _.omit(queries, ['Offset', 'Limit', 'TableGroupIds', 'ClusterId']);\n const SelectedTables: any[] = [];\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n SelectedTables[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n SelectedTables[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n SelectedTables[key] = item;\n }\n });\n params.SelectedTables = SelectedTables;\n return params;\n}\n// 和其他产品的展示保持一致\nconst regonsMap = {\n 'ap-beijing': '华北地区(北京)',\n 'ap-guangzhou': '华南地区(广州)',\n 'ap-hongkong': '港澳台地区(中国香港)',\n 'ap-seoul': '亚太东北(首尔)',\n 'ap-shanghai': '华东地区(上海)',\n 'ap-singapore': '亚太东南(新加坡)',\n 'ap-tokyo': '亚太东北(东京)',\n 'eu-frankfurt': '欧洲地区(法兰克福)',\n 'na-ashburn': '美国东部(弗吉尼亚)',\n 'na-siliconvalley': '美国西部(硅谷)',\n};\nexport default TCAPLUS_STATE;\nexport {\n TCAPLUSFilterFieldsDescriptor,\n templateQueryIdMap,\n TCAPLUSInstanceAliasList,\n TCAPLUSInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n regonsMap,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as TCAPLUSGetInstanceQueryParams,\n};\n","// 产品目录名字和service名字匹配即 lb_private(目录名) => lbPrivate(service)\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VBC';\n\n// 组件名称。这里名字要和index.ts中的SERVICES对应,后面会根据SERVICES中service字段拼接这个query组件名称\nconst queryEditorName = 'vbcQuery';\n\nconst VBCInvalidDemensions = {\n // CcnId: 'CcnId',\n};\n\n// 需和文件名对应\nconst VBCInstanceAliasList = ['CcnId', 'CcnName'];\n\nconst templateQueryIdMap = {\n instance: 'CcnId',\n};\n\n// select类型需要注意是{},multi后缀是[],dropdown是''\nconst VBCFilterFields = {\n Limit: 20,\n Offset: 0,\n 'ccn-id': [],\n 'ccn-name': [],\n 'ccn-description': [],\n state: {},\n};\n\nconst VBCFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'ccn-id',\n enDescriptor: 'ccn-id',\n cnDescriptor: 'CCN实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ccn-name',\n enDescriptor: 'ccn-name',\n cnDescriptor: 'CCN名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'ccn-description',\n enDescriptor: 'ccn-description',\n cnDescriptor: 'CCN描述',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'state',\n enDescriptor: 'state',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '隔离中', value: 'ISOLATED' },\n { text: '运行中', value: 'AVAILABLE' },\n ],\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/19199',\n namespace,\n fieldDescriptor: VBCFilterFieldsDescriptor,\n};\n\nconst VBC_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'CcnId',\n DRegion: '',\n SRegion: '',\n queries: VBCFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n// const regionSupported = [\n// { text: '华北地区(北京)', value: 'ap-beijing' },\n// { text: '西南地区(成都)', value: 'ap-chengdu' },\n// { text: '西南地区(重庆)', value: 'ap-chongqing' },\n// { text: '华南地区(广州)', value: 'ap-guangzhou' },\n// { text: '港澳台地区(中国香港)', value: 'ap-hongkong' },\n// { text: '亚太南部(孟买)', value: 'ap-mumbai' },\n// { text: '华东地区(南京)', value: 'ap-nanjing' },\n// { text: '华东地区(上海)', value: 'ap-shanghai' },\n// { text: '华东地区(上海金融)', value: 'ap-shanghai-fsi' },\n// { text: '华南地区(深圳金融)', value: 'ap-shenzhen-fsi' },\n// { text: '亚太东南(新加坡)', value: 'ap-singapore' },\n// { text: '亚太东北(东京)', value: 'ap-tokyo' },\n// { text: '欧洲地区(法兰克福)', value: 'eu-frankfurt' },\n// { text: '美国东部(弗吉尼亚)', value: 'na-ashburn' },\n// { text: '美国西部(硅谷)', value: 'na-siliconvalley' },\n// { text: '北美地区(多伦多)', value: 'na-toronto' },\n// ];\nexport default VBC_STATE;\nexport {\n VBCFilterFieldsDescriptor,\n templateQueryIdMap,\n VBCInstanceAliasList,\n VBCInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n // regionSupported,\n // 对应产品的service的全大写拼接GetInstanceQueryParams\n GetInstanceQueryParams as VBCGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VPNGW';\nconst queryEditorName = 'vpngwQuery';\n\nconst VPNGWInvalidDemensions = {\n vpnGwId: 'VpnGatewayId',\n};\n\nconst VPNGWInstanceAliasList = ['VpnGatewayId', 'VpnGatewayName'];\n\nconst templateQueryIdMap = {\n instance: 'VpnGatewayId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst VPNGWFilterFields = {\n Limit: 20,\n Offset: 0,\n 'vpc-id': [],\n 'vpn-gateway-id': [],\n 'vpn-gateway-name': [],\n type: {},\n 'public-ip-address': [],\n 'renew-flag': {},\n zone: [],\n};\n\nconst VPNGWFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: 'VPC实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-gateway-id',\n enDescriptor: 'vpn-gateway-id',\n cnDescriptor: 'VPN实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-gateway-name',\n enDescriptor: 'vpn-gateway-name',\n cnDescriptor: 'VPN实例名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'type',\n enDescriptor: 'type',\n cnDescriptor: 'VPN网关类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: 'IPSEC', value: 'IPSEC' },\n { text: 'SSL', value: 'SSL' },\n ],\n },\n {\n key: 'public-ip-address',\n enDescriptor: 'public-ip-address',\n cnDescriptor: '公网IP',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'renew-flag',\n enDescriptor: 'renew-flag',\n cnDescriptor: '网关续费类型',\n link: '',\n type: 'select',\n multiple: true,\n list: [\n { text: '手动续费', value: 'NOTIFY_AND_MANUAL_RENEW' },\n { text: '自动续费', value: 'NOTIFY_AND_AUTO_RENEW' },\n ],\n },\n {\n key: 'zone',\n enDescriptor: 'zone',\n cnDescriptor: 'VPN所在可用区',\n link: '',\n type: 'dropdownMulti',\n },\n];\n\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/17514',\n namespace,\n fieldDescriptor: VPNGWFilterFieldsDescriptor,\n};\n\nconst VPNGW_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'VpnGatewayId',\n queries: VPNGWFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default VPNGW_STATE;\nexport {\n VPNGWFilterFieldsDescriptor,\n templateQueryIdMap,\n VPNGWInstanceAliasList,\n VPNGWInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as VPNGWGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nimport { DetailQueryConfig, FildDescriptorType } from '../_base/types';\nimport { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst namespace = 'QCE/VPNX';\nconst queryEditorName = 'vpnxQuery';\n\nconst VPNXInvalidDemensions = {\n vpnConnId: 'VpnConnectionId',\n};\n\nconst VPNXInstanceAliasList = ['VpnConnectionId', 'VpnConnectionName'];\n\nconst templateQueryIdMap = {\n instance: 'VpnConnectionId',\n};\n\n// select类型需要注意是{},multi后缀是[]\nconst VPNXFilterFields = {\n Limit: 20,\n Offset: 0,\n 'vpc-id': [],\n 'vpn-gateway-id': [],\n 'customer-gateway-id': [],\n 'vpn-connection-name': [],\n 'vpn-connection-id': [],\n};\n\nconst VPNXFilterFieldsDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 100,\n },\n {\n key: 'vpc-id',\n enDescriptor: 'vpc-id',\n cnDescriptor: 'VPC实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-gateway-id',\n enDescriptor: 'vpn-gateway-id',\n cnDescriptor: 'VPN实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'customer-gateway-id ',\n enDescriptor: 'customer-gateway-id ',\n cnDescriptor: '对端网关实例ID',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-connection-name',\n enDescriptor: 'vpn-connection-name',\n cnDescriptor: '通道名称',\n link: '',\n type: 'inputMulti',\n },\n {\n key: 'vpn-connection-id',\n enDescriptor: 'vpn-connection-id',\n cnDescriptor: '通道实例ID',\n link: '',\n type: 'inputMulti',\n },\n];\n\n// 各产品实例列表detail配置\nconst queryEditorConfig: DetailQueryConfig = {\n instanceDocUrl: 'https://cloud.tencent.com/document/api/215/17515',\n namespace,\n fieldDescriptor: VPNXFilterFieldsDescriptor,\n};\n\nconst VPNX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'VpnConnectionId',\n queries: VPNXFilterFields,\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, true);\n}\nexport default VPNX_STATE;\nexport {\n VPNXFilterFieldsDescriptor,\n templateQueryIdMap,\n VPNXInstanceAliasList,\n VPNXInvalidDemensions,\n namespace,\n queryEditorName,\n queryEditorConfig,\n GetInstanceQueryParams as VPNXGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nconst LighthouseStateType = [\n { text: '创建中', value: 'PENDING' },\n { text: '创建失败', value: 'LAUNCH_FAILED' },\n { text: '运行中', value: 'RUNNING' },\n { text: '关机', value: 'STOPPED' },\n { text: '开机中', value: 'STARTING' },\n { text: '关机中', value: 'STOPPING' },\n { text: '重启中', value: 'REBOOTING' },\n { text: '停止待销毁', value: 'SHUTDOWN' },\n { text: '销毁中', value: 'TERMINATING' },\n];\n\nconst LighthouseFilterFields = {\n zone: [],\n 'instance-name': [],\n 'instance-state': {},\n 'private-ip-address': [],\n 'public-ip-address': [],\n};\n\nconst LighthouseFilterFieldsDescriptor = [\n {\n key: 'instance-name',\n enDescriptor: 'Instance Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'Private IP Address',\n cnDescriptor: '实例主网卡的内网IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'public-ip-address',\n enDescriptor: 'Public IP Address',\n cnDescriptor: '实例主网卡的公网IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'zone',\n enDescriptor: 'Zone',\n cnDescriptor: '可用区',\n link: '',\n type: 'dropdownmulti',\n },\n {\n key: 'instance-state',\n enDescriptor: 'Instance State',\n cnDescriptor: '实例状态',\n link: '',\n type: 'select',\n list: LighthouseStateType,\n },\n];\n\nconst LIGHTHOUSE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n InstanceIds: [''],\n Filters: { ...LighthouseFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.InstanceIds)) {\n const InstanceIds = _.compact(queries.InstanceIds);\n if (_.uniq(InstanceIds).length > 0) {\n params.InstanceIds = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst LIGHTHOUSEInstanceAliasList = ['InstanceId', 'InstanceName', 'PrivateIpAddresses', 'PublicIpAddresses'];\n\nconst LighthouseInvalidDemensions = {\n instanceid: 'InstanceId',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\n\nfunction modifyDimensons(metricItem: any) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\n\nexport default LIGHTHOUSE_STATE;\n\nexport {\n LighthouseFilterFieldsDescriptor,\n LIGHTHOUSEInstanceAliasList,\n LighthouseInvalidDemensions,\n templateQueryIdMap,\n modifyDimensons,\n GetInstanceQueryParams as LIGHTHOUSEGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\nexport const CFSQueryDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'FileSystemId',\n enDescriptor: 'File System Id',\n cnDescriptor: '文件系统 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'VpcId',\n enDescriptor: 'VpcId',\n cnDescriptor: '私有网络(VPC) ID',\n link: '',\n type: 'input',\n },\n {\n key: 'SubnetId',\n enDescriptor: 'SubnetId',\n cnDescriptor: '子网 ID',\n link: '',\n type: 'input',\n },\n];\n\nconst CFS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'FileSystemId',\n version: '',\n queries: {\n Offset: 0,\n Limit: 20,\n FileSystemId: '',\n VpcId: '',\n SubnetId: '',\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nconst CFSInstanceAliasList = ['FileSystemId', 'FsName'];\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nconst CFSInvalidDemensions = {\n // functionName: 'FunctionName',\n // namespace: 'Namespace'\n};\n\nconst regionSupported = [\n { value: 'ap-beijing' },\n { value: 'ap-chengdu' },\n { value: 'ap-chongqing' },\n { value: 'ap-guangzhou' },\n { value: 'ap-hongkong' },\n { value: 'ap-mumbai' },\n { value: 'ap-nanjing' },\n { value: 'ap-seoul' },\n { value: 'ap-shanghai' },\n { value: 'ap-shanghai-fsi' },\n { value: 'ap-shenzhen-fsi' },\n { value: 'ap-singapore' },\n { value: 'ap-tokyo' },\n { value: 'eu-frankfurt' },\n { value: 'na-siliconvalley' },\n { value: 'na-toronto' },\n];\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nexport default CFS_STATE;\nexport {\n CFSInstanceAliasList,\n CFSInvalidDemensions,\n templateQueryIdMap,\n regionSupported,\n GetInstanceQueryParams as CFSGetInstanceQueryParams,\n};\n\n// monitor监控数据默认支持的维度\n// export const SCFDefaultDimensionList = ['functionName', 'namespace', 'version'];\n","import _ from 'lodash';\nimport { FildDescriptorType } from '../_base/types';\n\nexport const InstanceQueryDescriptor: FildDescriptorType = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputNumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为10,最小值为1,最大值为100',\n link: '',\n type: 'inputNumber',\n min: 1,\n max: 50,\n },\n {\n key: 'QueueName',\n enDescriptor: 'QueueName',\n cnDescriptor: '精确匹配QueueName',\n link: '',\n type: 'input',\n },\n {\n key: 'TagKey',\n enDescriptor: 'TagKey',\n cnDescriptor: '标签搜索',\n link: '',\n type: 'input',\n },\n];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 向实例里面塞dimensions对应的值,dimension中的key对应到实例中的key\nexport const InvalidDemensions = {\n queueId: 'QueueId',\n queueName: 'QueueName',\n};\n\nexport const templateQueryIdMap = {\n instance: 'QueueName',\n};\n\n// 与名称挂钩的变量\nconst InstanceAliasList = ['QueueName', 'QueueId'];\nexport { InstanceAliasList, GetInstanceQueryParams };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'QueueName',\n queries: {\n Offset: 0,\n Limit: 20,\n QueueName: '',\n TagKey: '',\n },\n};\n","import _ from 'lodash';\nconst instanceChargeTypes = [\n { text: '预付费', value: 'PREPAID' },\n { text: '后付费', value: 'POSTPAID_BY_HOUR' },\n { text: 'CDH付费', value: 'CDHPAID' },\n];\n\nconst CVMFilterFields = {\n zone: [],\n 'project-id': [],\n 'host-id': [],\n 'vpc-id': [],\n 'subnet-id': [],\n 'instance-id': [],\n 'security-group-id': [],\n 'instance-name': [],\n 'instance-charge-type': {},\n 'private-ip-address': [],\n 'public-ip-address': [],\n 'tag-key': [],\n};\n\nconst CVMFilterFieldsDescriptor = [\n {\n key: 'zone',\n enDescriptor: 'Zone',\n cnDescriptor: '可用区',\n link: '',\n type: 'dropdownmulti',\n },\n {\n key: 'project-id',\n enDescriptor: 'Project ID',\n cnDescriptor: '项目ID',\n link: 'https://cloud.tencent.com/document/api/378/4400',\n type: 'inputNumbermulti',\n },\n {\n key: 'host-id',\n enDescriptor: 'CDH ID',\n cnDescriptor: 'CDH ID',\n link: 'https://cloud.tencent.com/document/product/416/19730',\n type: 'inputmulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'VPC ID',\n cnDescriptor: 'VPC ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'subnet-id',\n enDescriptor: 'Subnet ID',\n cnDescriptor: '子网ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'instance-id',\n enDescriptor: 'Instance ID',\n cnDescriptor: '实例ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'security-group-id',\n enDescriptor: 'Security Group ID',\n cnDescriptor: '安全组ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'instance-name',\n enDescriptor: 'Instance Name',\n cnDescriptor: '实例名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'tag-key',\n enDescriptor: '标签简',\n cnDescriptor: '标签简',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'instance-charge-type',\n enDescriptor: 'Instance Charge Type',\n cnDescriptor: '实例计费模式',\n link: '',\n type: 'select',\n list: instanceChargeTypes,\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'Private IP Address',\n cnDescriptor: '实例主网卡的内网IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'public-ip-address',\n enDescriptor: 'Public IP Address',\n cnDescriptor: '实例主网卡的公网IP,包含实例创建时自动分配的IP和实例创建后手动绑定的弹性IP',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst CVM_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n InstanceIds: [''],\n Filters: { ...CVMFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.InstanceIds)) {\n const InstanceIds = _.compact(queries.InstanceIds);\n if (_.uniq(InstanceIds).length > 0) {\n params.InstanceIds = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst CVMInstanceAliasList = ['InstanceId', 'InstanceName', 'PrivateIpAddresses', 'PublicIpAddresses'];\n\nconst CVMValidMetricsT = [\n 'CPUUsage',\n 'CpuLoadavg',\n 'Cpuloadavg5m',\n 'Cpuloadavg15m',\n 'BaseCpuUsage',\n 'GpuMemTotal',\n 'GpuMemUsage',\n 'GpuMemUsed',\n 'GpuPowDraw',\n 'GpuPowLimit',\n 'GpuPowUsage',\n 'GpuTemp',\n 'GpuUtil',\n 'LanOuttraffic',\n 'LanIntraffic',\n 'LanOutpkg',\n 'LanInpkg',\n 'WanOuttraffic',\n 'WanIntraffic',\n 'WanOutpkg',\n 'WanInpkg',\n 'AccOuttraffic',\n 'TcpCurrEstab',\n 'TimeOffset',\n 'MemUsed',\n 'MemUsage',\n 'CvmDiskUsage',\n 'BaseCpuUsage',\n 'VmDiskReadIops',\n];\n// const CVMInvalidDemensions = {\n// 'vm_uuid': 'InstanceId',\n// 'vmUuid': 'InstanceId',\n// };\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nfunction isValidMetric(metric) {\n const CVMValidMetrics = _.map(CVMValidMetricsT, _.toUpper);\n return _.indexOf(CVMValidMetrics, _.toUpper(metric.MetricName)) !== -1;\n}\nfunction modifyDimensons(metricItem) {\n const metricTmp = _.cloneDeep(metricItem);\n metricTmp.Dimensions.forEach((item) => {\n item.Dimensions = ['InstanceId'];\n });\n return metricTmp;\n}\nexport default CVM_STATE;\nexport {\n CVMFilterFieldsDescriptor,\n CVMInstanceAliasList,\n isValidMetric,\n modifyDimensons,\n templateQueryIdMap,\n // CVMInvalidDemensions,\n GetInstanceQueryParams as CVMGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst namespace = 'QCE/PCX';\n\nconst PCXFields = {\n limit: 20,\n offset: 0,\n peeringConnectionId: '',\n peeringConnectionName: '',\n vpcId: '',\n state: undefined,\n};\n\nconst PCX_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'peeringConnectionId',\n queries: { ...PCXFields },\n};\n\nconst StateTypes = [\n { text: '申请中', value: 0 },\n { text: '连接成功', value: 1 },\n { text: '已过期', value: 2 },\n { text: '对端已拒绝', value: 3 },\n { text: '对端已删除', value: 4 },\n];\n\nconst PCXFieldsDescriptor = [\n {\n key: 'offset',\n enDescriptor: 'offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'limit',\n enDescriptor: 'limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为50',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 50,\n },\n {\n key: 'peeringConnectionId',\n enDescriptor: 'PeeringConnection Id',\n cnDescriptor: '私有网络对等连接 ID',\n link: '',\n type: 'input',\n },\n {\n key: 'peeringConnectionName',\n enDescriptor: 'PeeringConnection Name',\n cnDescriptor: '对等连接名称',\n link: '',\n type: 'input',\n },\n {\n key: 'vpcId',\n enDescriptor: 'vpcId',\n cnDescriptor: '发起方私有网络 ID 值',\n link: 'https://cloud.tencent.com/document/api/215/1372',\n type: 'dropdown',\n },\n {\n key: 'state',\n enDescriptor: 'state',\n cnDescriptor: '连接状态',\n link: '',\n type: 'select',\n list: StateTypes,\n },\n];\n\nconst PCXInstanceAliasList = ['peeringConnectionId', 'peeringConnectionName'];\n\nconst templateQueryIdMap = {\n instance: 'peeringConnectionId',\n};\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.limit = _.get(queries, 'limit', 20) || 20;\n params.offset = _.get(queries, 'offset', 0) || 0;\n queries = _.omit(queries, ['offset', 'limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nexport default PCX_STATE;\n\nexport {\n PCXInstanceAliasList,\n PCXFieldsDescriptor,\n templateQueryIdMap,\n namespace,\n GetInstanceQueryParams as PCXGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst BillingMode = [\n { text: '按量计费', value: 'postpaid' },\n { text: '包年包月', value: 'prepaid' },\n];\n\nconst AutoRenew = [\n { text: '手动续费', value: 0 },\n { text: '自动续费', value: 1 },\n { text: '明确不自动续费', value: 2 },\n];\n\nconst Status = [\n { text: '待初始化', value: 0 },\n { text: '流程执行中', value: 1 },\n { text: '运行中', value: 2 },\n { text: '已隔离', value: -2 },\n { text: '待删除', value: -3 },\n];\n\nconst TypeVersion = [\n { text: '单机版', value: 1 },\n { text: '主从版', value: 2 },\n { text: '集群版', value: 3 },\n];\n\nconst OrderBy = [\n { text: 'projectId', value: 'projectId' },\n { text: 'instancename', value: 'instancename' },\n { text: 'createtime', value: 'createtime' },\n { text: 'type', value: 'type' },\n { text: 'curDeadline', value: 'curDeadline' },\n];\n\nconst OrderType = [\n { text: '升序', value: 0 },\n { text: '降序', value: 1 },\n];\nconst Type = [\n { text: 'Redis老集群版', value: 1 },\n { text: 'Redis 2.8主从版', value: 2 },\n { text: 'CKV主从版', value: 3 },\n { text: 'CKV集群版', value: 4 },\n { text: 'Redis 2.8单机版', value: 5 },\n { text: 'Redis 4.0主从版', value: 6 },\n { text: 'Redis 4.0集群版', value: 7 },\n { text: 'Redis5.0主从版', value: 8 },\n { text: 'Redis5.0集群版', value: 9 },\n];\n\nconst RedisFields = {\n InstanceId: '',\n OrderBy: '',\n OrderType: null,\n VpcIds: [],\n SubnetIds: [],\n ProjectIds: [],\n SearchKey: '',\n InstanceName: '',\n UniqVpcIds: [],\n UniqSubnetIds: [],\n Status: [],\n TypeVersion: null,\n EngineName: '',\n AutoRenew: null,\n BillingMode: '',\n Type: null,\n};\n\nconst RedisFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'InstanceId',\n enDescriptor: 'InstancesId',\n cnDescriptor: '实例id',\n type: 'input',\n },\n {\n key: 'OrderBy',\n enDescriptor: 'OrderBy',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderBy,\n },\n {\n key: 'OrderType',\n enDescriptor: 'OrderType',\n cnDescriptor: '排序字段',\n link: '',\n type: 'select',\n list: OrderType,\n },\n {\n key: 'VpcIds',\n enDescriptor: 'VpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:47525',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SubnetIds',\n enDescriptor: 'SubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:56854',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ProjectIds',\n enDescriptor: 'ProjectIds',\n cnDescriptor: '项目ID 组成的数组',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'SearchKey',\n enDescriptor: 'SearchKey',\n cnDescriptor: '查找实例的ID',\n link: '',\n type: 'input',\n },\n {\n key: 'InstanceName',\n enDescriptor: 'InstanceName',\n cnDescriptor: '实例名称',\n link: '',\n type: 'input',\n },\n {\n key: 'UniqVpcIds',\n enDescriptor: 'UniqVpcIds',\n cnDescriptor: '私有网络ID数组,数组下标从0开始,如果不传则默认选择基础网络,如:vpc-sad23jfdfk',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'UniqSubnetIds',\n enDescriptor: 'UniqSubnetIds',\n cnDescriptor: '子网ID数组,数组下标从0开始,如:subnet-fdj24n34j2',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'Status',\n enDescriptor: 'Status',\n cnDescriptor: '实例状态',\n multiple: true,\n type: 'select',\n list: Status,\n },\n {\n key: 'TypeVersion',\n enDescriptor: 'TypeVersion',\n cnDescriptor: '类型版本',\n link: '',\n type: 'select',\n list: TypeVersion,\n },\n {\n key: 'EngineName',\n enDescriptor: 'EngineName',\n cnDescriptor: '引擎信息:Redis-2.8,Redis-4.0,CKV',\n link: '',\n type: 'input',\n },\n {\n key: 'AutoRenew',\n enDescriptor: 'AutoRenew',\n cnDescriptor: '续费模式',\n multiple: true,\n type: 'select',\n list: AutoRenew,\n },\n {\n key: 'BillingMode',\n enDescriptor: 'BillingMode',\n cnDescriptor: '计费模式:postpaid-按量计费;prepaid-包年包月',\n link: '',\n type: 'select',\n list: BillingMode,\n },\n {\n key: 'Type',\n enDescriptor: 'Type',\n cnDescriptor: '实例类型',\n link: '',\n type: 'select',\n list: Type,\n },\n];\n\nconst REDIS_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'InstanceId',\n queries: { ...RedisFields },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n // select 单选\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\nfunction isValidMetric(metricObj: any = {}) {\n const dimension = _.get(metricObj, 'Dimensions[0].Dimensions');\n return dimension.length === 1 && _.indexOf(dimension, 'instanceid') !== -1;\n}\n\nconst REDISInstanceAliasList = ['InstanceId', 'InstanceName', 'WanIp'];\n\nconst RedisInvalidDemensions = {\n redis_uuid: 'InstanceId',\n instanceid: 'InstanceId',\n};\n\nconst templateQueryIdMap = {\n instance: 'InstanceId',\n};\nexport default REDIS_STATE;\nexport {\n RedisFieldsDescriptor,\n RedisInvalidDemensions,\n templateQueryIdMap,\n REDISInstanceAliasList,\n isValidMetric,\n GetInstanceQueryParams as REDISGetInstanceQueryParams,\n};\n","import { instanceQueryParamsBaseParse } from '../../common/utils';\n\nconst ApplicationType = [\n { text: '所有', value: '' },\n { text: '容器应用', value: 'C' },\n { text: '普通应用/虚拟机应用', value: 'V' },\n];\n\nconst MicroserviceType = [\n { text: '所有', value: '' },\n { text: '普通应用', value: 'N' },\n { text: 'Mesh应用', value: 'M' },\n { text: '微服务网关应用', value: 'G' },\n { text: '原生应用', value: 'NATIVE' },\n];\n\nconst ApplicationResourceType = [\n { text: '默认资源类型', value: 'DEF' },\n { text: '微服务网关资源', value: 'GW' },\n];\n\nconst TSFFieldsDescriptor = [\n {\n key: 'Offset',\n enDescriptor: 'Offset',\n cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n link: '',\n type: 'inputnumber',\n min: 0,\n },\n {\n key: 'Limit',\n enDescriptor: 'Limit',\n cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为100',\n link: '',\n type: 'inputnumber',\n min: 1,\n max: 100,\n },\n {\n key: 'SearchWord',\n enDescriptor: 'SearchWord',\n cnDescriptor: '搜索关键字',\n link: '',\n type: 'input',\n },\n {\n key: 'ApplicationIdList',\n enDescriptor: 'ApplicationIdList',\n cnDescriptor: '应用ID 组成的数组',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ApplicationType',\n enDescriptor: 'ApplicationType',\n cnDescriptor: '应用类型',\n link: '',\n type: 'select',\n list: ApplicationType,\n },\n {\n key: 'MicroserviceType',\n enDescriptor: 'MicroserviceType',\n cnDescriptor: '应用的微服务类型',\n link: '',\n type: 'select',\n list: MicroserviceType,\n },\n {\n key: 'ApplicationResourceTypeList',\n enDescriptor: 'ApplicationResourceTypeList',\n cnDescriptor: '应用资源类型数组',\n link: '',\n type: 'select',\n multiple: true,\n list: ApplicationResourceType,\n },\n];\n\nconst TSF_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ApplicationId',\n queries: {\n Limit: 20,\n Offset: 0,\n SearchWord: '',\n OrderBy: '',\n OrderType: null,\n ApplicationType: '',\n MicroserviceType: '',\n ApplicationResourceTypeList: [],\n ApplicationIdList: [],\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n return instanceQueryParamsBaseParse(queries, false);\n}\n\nconst TSFInstanceAliasList = ['ApplicationId', 'ApplicationName'];\n\nconst TSFInvalidDemensions = {\n applicationid: 'ApplicationId',\n};\n\nconst templateQueryIdMap = {\n instance: 'ApplicationId',\n};\n\nexport default TSF_STATE;\nexport {\n TSFInvalidDemensions,\n templateQueryIdMap,\n TSFInstanceAliasList,\n TSFFieldsDescriptor,\n GetInstanceQueryParams as TSFGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst networkTypes = [\n { text: 'BGP', value: 'BGP' },\n { text: 'SINGLEISP', value: 'SINGLEISP' },\n { text: 'ANYCAST', value: 'ANYCAST' },\n];\n\nconst chargeTypes = [\n { text: 'top5计费', value: 'TOP5_POSTPAID_BY_MONTH' },\n { text: '月95计费', value: 'PERCENT95_POSTPAID_BY_MONTH' },\n];\nconst BWPFilterFields = {\n 'bandwidth-package_id': [],\n 'bandwidth-package-name': [],\n 'network-type': [],\n 'charge-type': [],\n};\n\nconst BWPFilterFieldsDescriptor = [\n {\n key: 'bandwidth-package_id',\n enDescriptor: 'BandwidthPackage Id',\n cnDescriptor: '带宽包ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'bandwidth-package-name',\n enDescriptor: 'BandwidthPackage Name',\n cnDescriptor: '带宽包名称',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'network-type',\n enDescriptor: 'network type',\n cnDescriptor: '带宽包类型',\n link: '',\n type: 'select',\n list: networkTypes,\n },\n {\n key: 'charge-type',\n enDescriptor: 'charge type',\n cnDescriptor: '带宽包计费类型',\n link: '',\n type: 'select',\n list: chargeTypes,\n },\n];\n\nconst BWP_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'BandwidthPackageId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n BandwidthPackageIds: [''],\n Filters: { ...BWPFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.BandwidthPackageIds)) {\n const BandwidthPackageIds = _.compact(queries.BandwidthPackageIds);\n if (_.uniq(BandwidthPackageIds).length > 0) {\n params.BandwidthPackageIds = _.uniq(BandwidthPackageIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst BWPInstanceAliasList = ['BandwidthPackageId', 'BandwidthPackageName'];\n\nconst templateQueryIdMap = {\n instance: 'BandwidthPackageId',\n};\n\nconst BWPInvalidDemensions = {\n bandwidthPackageId: 'BandwidthPackageId',\n};\nexport default BWP_STATE;\nexport {\n BWPFilterFieldsDescriptor,\n templateQueryIdMap,\n BWPInstanceAliasList,\n BWPInvalidDemensions,\n GetInstanceQueryParams as BWPGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst CDNFilterFields = {\n origin: [],\n domain: [],\n resourceId: [],\n status: {},\n serviceType: {},\n projectId: [],\n domainType: {},\n fullUrlCache: {},\n https: {},\n originPullProtocol: {},\n tagKey: [],\n};\n\nconst CDNFilterFieldsDescriptor = [\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumbermulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst CDN_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: {\n Limit: 20,\n Offset: 0,\n Filters: { ...CDNFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n // console.log('item', item, queries);\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Value: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Value: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n return params;\n}\n\nconst CDNInstanceAliasList = ['Domain', 'ProjectId'];\n\nconst CDNInvalidDemensions = {\n projectId: 'ProjectId',\n domain: 'Domain',\n};\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\nexport default CDN_STATE;\nexport {\n CDNFilterFieldsDescriptor,\n templateQueryIdMap,\n CDNInstanceAliasList,\n CDNInvalidDemensions,\n GetInstanceQueryParams as CDNGetInstanceQueryParams,\n};\n","import _ from 'lodash';\n\n// export const LBQueryDescriptor = [{\n// key: 'Offset',\n// enDescriptor: 'Offset',\n// cnDescriptor: '偏移量, 例如Offset=20&Limit=20 返回第 20 到 40 项',\n// link: '',\n// type: 'inputnumber',\n// min: 0,\n// },\n// {\n// key: 'Limit',\n// enDescriptor: 'Limit',\n// cnDescriptor: '单次请求返回的数量,默认为20,最小值为1,最大值为2000',\n// link: '',\n// type: 'inputnumber',\n// min: 1,\n// max: 2000,\n// },\n// {\n// key: 'AddressId',\n// enDescriptor: 'Address Id',\n// cnDescriptor: '标识 EIP 的唯一 ID ',\n// link: '',\n// type: 'inputmulti',\n// }\n// ];\n\nexport const LBFilterDescriptor = [\n {\n key: 'address-id',\n enDescriptor: 'Address ID',\n cnDescriptor: 'EIP 的唯一 ID ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'address-name',\n enDescriptor: 'Address Name',\n cnDescriptor: 'EIP 名称 ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'address-ip',\n enDescriptor: 'Address IP',\n cnDescriptor: 'EIP 的 IP 地址 ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'address-status',\n enDescriptor: 'Address Status',\n cnDescriptor: 'EIP 的状态',\n link: '',\n type: 'select',\n list: [\n { value: 'CREATING', text: 'CREATING' },\n { value: 'BINDING', text: 'BINDING' },\n { value: 'BIND', text: 'BIND' },\n { value: 'UNBINDING', text: 'UNBINDING' },\n { value: 'UNBIND', text: 'UNBIND' },\n { value: 'OFFLINING', text: 'OFFLINING' },\n { value: 'BIND_ENI', text: 'BIND_ENI' },\n ],\n },\n {\n key: 'instance-id',\n enDescriptor: 'Instance ID',\n cnDescriptor: '实例ID ',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'private-ip-address',\n enDescriptor: 'Private IP Address',\n cnDescriptor: 'EIP 绑定的内网 IP',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'network-interface-id',\n enDescriptor: 'Network Interface ID',\n cnDescriptor: 'EIP 绑定的弹性网卡 ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'is-arrears',\n enDescriptor: 'Arrears',\n cnDescriptor: 'EIP 是否欠费 ',\n link: '',\n type: 'select',\n list: [\n { text: '正常', value: 'FALSE' },\n { text: '欠费', value: 'TRUE' },\n ],\n },\n];\n\n// const LBFilterFields = {\n// \"address-id\": [],\n// \"address-name\": [],\n// \"address-ip\": [],\n// \"address-status \": [],\n// \"instance-id \": [],\n// \"private-ip-address\": [],\n// \"network-interface-id \": [],\n// \"is-arrears \": [],\n// };\n\nconst InstanceKey = 'AddressIds';\nconst LB_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'AddressId',\n version: '',\n queries: {\n Offset: 0,\n Limit: 20,\n [InstanceKey]: [''],\n Filters: {\n 'address-id': [],\n 'address-name': [],\n 'address-ip': [],\n 'address-status ': [],\n 'instance-id ': [],\n 'private-ip-address': [],\n 'network-interface-id ': [],\n 'is-arrears ': [],\n },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries[InstanceKey])) {\n const InstanceIds = _.compact(queries[InstanceKey]);\n if (_.uniq(InstanceIds).length > 0) {\n params[InstanceKey] = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst LBInstanceAliasList = ['AddressId', 'AddressName', 'AddressIp'];\n\n// 维度eip对应于实例中的哪个字段?映射\nconst LBInvalidDemensions = {\n eip: 'AddressIp',\n};\n\nconst templateQueryIdMap = {\n instance: 'AddressId',\n};\n// 从monitor维度到LB实例对应字段的映射\n// export const metric2Instance = {\n// functionName: 'FunctionName',\n// namespace: 'Namespace'\n// };\n\nexport default LB_STATE;\nexport {\n LBInstanceAliasList,\n LBInvalidDemensions,\n templateQueryIdMap,\n GetInstanceQueryParams as LBGetInstanceQueryParams,\n};\n\n// monitor监控数据默认支持的维度\n// export const LBDefaultDimensionList = ['functionName', 'namespace', 'version'];\n","import _ from 'lodash';\n\nconst NATGATEWAYInstanceAliasList = ['NatGatewayId', 'NatGatewayName'];\n\nconst NATGatewayFilterFields = {\n 'nat-gateway-id': [],\n 'nat-gateway-name': [],\n 'vpc-id': [],\n};\n\nconst NATGatewayFilterFieldsDescriptor = [\n {\n key: 'nat-gateway-id',\n enDescriptor: 'NatGateway ID',\n cnDescriptor: 'NAT网关统一 ID',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'nat-gateway-name',\n enDescriptor: 'NatGateway Name',\n cnDescriptor: 'NatGateway Name',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'VPC ID',\n cnDescriptor: '私有网络 ID',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst NATGATEWAY_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'NatGatewayId',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: false,\n NatGatewayIds: [''],\n Filters: { ...NATGatewayFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.NatGatewayIds)) {\n const NatGatewayIds = _.compact(queries.NatGatewayIds);\n if (_.uniq(NatGatewayIds).length > 0) {\n params.InstanceIds = _.uniq(NatGatewayIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nconst templateQueryIdMap = {\n instance: 'NatGatewayId',\n};\n\nconst NATInvalidDemensions = {\n natId: 'NatGatewayId',\n};\n\nexport default NATGATEWAY_STATE;\nexport {\n NATGatewayFilterFieldsDescriptor,\n NATGATEWAYInstanceAliasList,\n templateQueryIdMap,\n NATInvalidDemensions,\n GetInstanceQueryParams as NATGATEWAYGetInstanceQueryParams,\n};\n","import _ from 'lodash';\nconst CDNFilterFields = {\n origin: [],\n domain: [],\n resourceId: [],\n status: [],\n serviceType: [],\n projectId: [],\n domainType: [],\n fullUrlCache: [],\n https: [],\n originPullProtocol: [],\n tagKey: [],\n};\n\nconst OVCDNFilterFieldsDescriptor = [\n {\n key: 'origin',\n enDescriptor: 'origin',\n cnDescriptor: '主源站',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'domain',\n enDescriptor: 'domain',\n cnDescriptor: '域名',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'resourceId',\n enDescriptor: 'resourceId',\n cnDescriptor: '域名id',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'status',\n enDescriptor: 'status',\n cnDescriptor: '域名状态',\n link: '',\n type: 'select',\n list: [\n { text: 'online', value: 'online' },\n { text: 'offline', value: 'offline' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'serviceType',\n enDescriptor: 'serviceType',\n cnDescriptor: '业务类型',\n link: '',\n type: 'select',\n list: [\n { text: 'web', value: 'web' },\n { text: 'download', value: 'download' },\n { text: 'media', value: 'media' },\n ],\n },\n {\n key: 'projectId',\n enDescriptor: 'projectId',\n cnDescriptor: '项目ID',\n link: '',\n type: 'inputNumbermulti',\n },\n {\n key: 'domainType',\n enDescriptor: 'domainType',\n cnDescriptor: '主源站类型',\n link: '',\n type: 'select',\n list: [\n { text: '自有源', value: 'cname' },\n { text: 'cos接入', value: 'cos' },\n ],\n },\n {\n key: 'fullUrlCache',\n enDescriptor: 'fullUrlCache',\n cnDescriptor: '全路径缓存',\n link: '',\n type: 'select',\n list: [\n { text: '打开', value: 'on' },\n { text: '关闭', value: 'off' },\n ],\n },\n {\n key: 'https',\n enDescriptor: 'https',\n cnDescriptor: '是否配置https',\n link: '',\n type: 'select',\n list: [\n { text: 'on', value: 'on' },\n { text: 'off', value: 'off' },\n { text: 'processing', value: 'processing' },\n ],\n },\n {\n key: 'originPullProtocol',\n enDescriptor: 'originPullProtocol',\n cnDescriptor: '回源协议类型',\n link: '',\n type: 'select',\n list: [\n { text: 'http', value: 'http' },\n { text: 'follow', value: 'follow' },\n { text: 'https', value: 'https' },\n ],\n },\n {\n key: 'tagKey',\n enDescriptor: 'tagKey',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst OVCDN_STATE = {\n region: 'ap-guangzhou',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'Domain',\n queries: {\n Limit: 20,\n Offset: 0,\n Filters: { ...CDNFilterFields },\n },\n};\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Value: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Value: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n return params;\n}\n\nconst OVCDNInstanceAliasList = ['Domain', 'ResourceId'];\n\nconst OVCDNInvalidDemensions = {\n projectId: 'ProjectId',\n domain: 'Domain',\n};\nconst templateQueryIdMap = {\n instance: 'Domain',\n};\nexport default OVCDN_STATE;\nexport {\n OVCDNFilterFieldsDescriptor,\n OVCDNInstanceAliasList,\n templateQueryIdMap,\n OVCDNInvalidDemensions,\n GetInstanceQueryParams as OVCDNGetInstanceQueryParams,\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__67__;","module.exports = __WEBPACK_EXTERNAL_MODULE__68__;","import _ from 'lodash';\n\nconst TKE_STATE = {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'ClusterId',\n conditions: [],\n groupBys: '',\n queries: {\n Limit: 20,\n Offset: 0,\n instanceIdsChecked: false,\n filtersChecked: true,\n ClusterIds: [''],\n Filters: {\n ClusterName: [],\n ClusterType: [],\n ClusterStatus: [],\n 'tag-key': [],\n },\n },\n};\n\nconst TKEFilterFieldsDescriptor = [\n {\n key: 'ClusterName',\n enDescriptor: 'Cluster Name',\n cnDescriptor: '集群名',\n link: '',\n type: 'input',\n },\n {\n key: 'ClusterType',\n enDescriptor: 'Cluster Type',\n cnDescriptor: '集群类型',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'ClusterStatus',\n enDescriptor: 'Cluster Status',\n cnDescriptor: '集群状态',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'Tags',\n enDescriptor: 'Tags',\n cnDescriptor: '标签键值对',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'vpc-id',\n enDescriptor: 'VPC',\n cnDescriptor: 'VPC',\n link: '',\n type: 'input',\n },\n {\n key: 'tag-key',\n enDescriptor: 'Tag Key',\n cnDescriptor: '标签键',\n link: '',\n type: 'inputmulti',\n },\n {\n key: 'tag-value',\n enDescriptor: 'Tag Value',\n cnDescriptor: '标签值',\n link: '',\n type: 'inputmulti',\n },\n];\n\nconst TKEInstanceAliasList = ['ClusterId', 'ClusterName'];\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n if (queries.instanceIdsChecked) {\n if (_.isArray(queries.InstanceIds)) {\n const InstanceIds = _.compact(queries.InstanceIds);\n if (_.uniq(InstanceIds).length > 0) {\n params.InstanceIds = _.uniq(InstanceIds).slice(0, 100);\n }\n }\n } else if (queries.filtersChecked) {\n const Filters: any[] = [];\n _.forEach(queries.Filters, (item: any, key) => {\n if (Filters.length > 9) {\n return;\n }\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n Filters.push({ Name: key, Values: _.uniq(item).slice(0, 5) });\n }\n } else if (_.isObject(item)) {\n if (!_.isEmpty(_.get(item, 'value', []))) {\n Filters.push({ Name: key, Values: _.get(item, 'value', []).slice(0, 5) });\n }\n }\n });\n if (Filters.length > 0) {\n params.Filters = Filters;\n }\n }\n }\n return params;\n}\n\nexport default TKE_STATE;\n\nexport { TKEFilterFieldsDescriptor, TKEInstanceAliasList, GetInstanceQueryParams as TKEGetInstanceQueryParams };\n","import {\n APIGATEWAYInstanceAliasList,\n APIGATEWAYInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = APIGATEWAYInstanceAliasList;\n InvalidDimensions = APIGATEWAYInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'apigateway',\n action: 'DescribeServicesStatus',\n responseField: 'ServiceSet',\n };\n\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n async getEnvironmentNameList(params: any) {\n const { region, instanceId } = params;\n const serviceInfo = GetServiceAPIInfo(region, this.service);\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeServiceEnvironmentList' }\n );\n },\n {\n ServiceId: instanceId,\n },\n 'EnvironmentList'\n );\n const [rs] = res;\n return rs;\n }\n async fetchMetricData(action: string, region: string, instance: any) {\n // console.log({ action, region, instance });\n if (action === 'DescribeServiceEnvironmentList') {\n const rs = await this.getEnvironmentNameList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.environmentName];\n return {\n text: o[this.templateQueryIdMap.environmentName],\n value: o[this.templateQueryIdMap.environmentName],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.environmentList, rs);\n return result;\n }\n return [];\n }\n}\n","import {\n BMINTRALBInstanceAliasList,\n BMINTRALBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n isValidMetric,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = BMINTRALBInstanceAliasList;\n InvalidDimensions = BMINTRALBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bmlb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n interceptor: {\n request: (params) => ({\n ...params,\n LoadBalancerType: 'internal',\n }), // 设置一些请求参数的 默认值\n },\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return item;\n }\n return null;\n })\n );\n }\n}\n","import { BMLBInstanceAliasList, CPMInvalidDemensions, namespace, templateQueryIdMap, isValidMetric } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = BMLBInstanceAliasList;\n InvalidDimensions = CPMInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bmlb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n interceptor: {\n request: (params) => ({\n ...params,\n LoadBalancerType: 'open',\n }), // 设置一些请求参数的 默认值\n },\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return item;\n }\n return null;\n })\n );\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n}\n","import {\n BMPCXInstanceAliasList,\n BMPCXInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = BMPCXInstanceAliasList;\n InvalidDimensions = BMPCXInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bmvpc',\n action: 'DescribeVpcPeerConnections',\n responseField: 'VpcPeerConnectionSet',\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n}\n","import { BWPInstanceAliasList, BWPInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class BWPDatasource extends BaseDatasource {\n Namespace = 'QCE/BWP';\n InstanceAliasList = BWPInstanceAliasList;\n InvalidDimensions = BWPInvalidDemensions;\n templateQueryIdMap = {\n instance: 'BandwidthPackageId',\n };\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeBandwidthPackages',\n responseField: 'BandwidthPackageSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { CBSInstanceAliasList, CBSInvalidDemensions, namespace, templateQueryIdMap, isValidMetric } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CBSInstanceAliasList;\n InvalidDimensions = CBSInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cbs',\n action: 'DescribeDisks',\n responseField: 'DiskSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.filter(rawSet, isValidMetric);\n }\n}\n","import _ from 'lodash';\nimport { CDBInstanceAliasList, CDBInvalidDemensions, isValidMetric, modifyDimensons, templateQueryIdMap } from './query_def';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CDBDatasource extends BaseDatasource {\n Namespace = 'QCE/CDB';\n InstanceAliasList = CDBInstanceAliasList;\n InvalidDimensions = CDBInvalidDemensions;\n templateQueryIdMap = {\n instance: 'InstanceId',\n };\n InstanceReqConfig = {\n service: 'cdb',\n action: 'DescribeDBInstances',\n responseField: 'Items',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return modifyDimensons(item);\n }\n return null;\n })\n );\n }\n /**\n * 获取 可用区\n * @param region 地域信息\n */\n getZones(region) {\n const serviceInfo = GetServiceAPIInfo(region, 'cvm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.ZoneId, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n // 仅对维度组合是InstanceId和InstanceType的指标,其他指标不支持\n getDefaultInsObj(ins: string) {\n return {\n [templateQueryIdMap.instance]: ins,\n InstanceType: 1,\n }\n }\n}\n","import _ from 'lodash';\nimport { CDNInstanceAliasList, CDNInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CDNDatasource extends BaseDatasource {\n Namespace = 'QCE/CDN';\n InstanceAliasList = CDNInstanceAliasList;\n InvalidDimensions = CDNInvalidDemensions;\n templateQueryIdMap = {\n instance: 'Domain',\n };\n InstanceReqConfig = {\n service: 'cdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import { CDNPROVINCEInstanceAliasList, CDNPROVINCEInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CDNPROVINCEInstanceAliasList;\n InvalidDimensions = CDNPROVINCEInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n extrasAlias = ['isp', 'district'];\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n async getConsumerList(params: any) {\n const { region, field } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'cdn');\n\n // 从分页数据,获取全量数据\n const rs = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Name: field,\n },\n },\n serviceInfo.service,\n { action: 'DescribeMapInfo' }\n );\n return (rs.MapInfoList || []).map((o) => {\n return {\n text: o.Name,\n value: o.Name,\n };\n });\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n if (action === 'DescribeMapInfo') {\n const { name: field } = query;\n const rs = await this.getConsumerList({ region, field });\n return rs;\n }\n return [];\n }\n}\n","import {\n CEIPSUMMARYInstanceAliasList,\n CEIPInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CEIPSUMMARYInstanceAliasList;\n InvalidDimensions = CEIPInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeAddresses',\n responseField: 'AddressSet',\n interceptor: {\n request: (params) => {\n const { Filters } = params;\n if (!Filters) {\n params.Filters = [];\n }\n params.Filters.push({\n Name: 'address-type',\n Values: ['AnycastEIP'],\n });\n return params;\n }, // 设置一些请求参数的 默认值\n // response: (data: unknown[]) =>[\n // {\n // AddressId: 'AddressId',\n // AddressIp: '111.22.3.4'\n // },\n // ],\n },\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n // async getInstances(region, params = {}) {\n // const rawSet = await super.getInstances(region, params);\n // return rawSet.filter((item) => item.AddressType === 'AnycastEIP');\n // }\n\n // async getVariableInstances(region, query = {}) {\n // const rawSet = await super.getVariableInstances(region, query);\n // return rawSet.filter((item) => item.AddressType === 'AnycastEIP');\n // }\n}\n","import { CESInstanceAliasList, CESInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CESInstanceAliasList;\n InvalidDimensions = CESInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'es',\n action: 'DescribeInstances',\n responseField: 'InstanceList',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import _ from 'lodash';\nimport { BaseDatasource } from '../_base/datasource';\nimport { CFSInstanceAliasList, CFSInvalidDemensions, regionSupported } from './query_def';\nimport { t } from '../../../locale'\nexport default class CFSDatasource extends BaseDatasource {\n InstanceKey: string;\n Namespace: string;\n InstanceAliasList: string[];\n InvalidDimensions: Record;\n templateQueryIdMap = {\n instance: 'FileSystemId',\n };\n extrasAlias = ['version'];\n InstanceReqConfig: { service?: string | undefined; action: string; responseField: string };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n\n this.Namespace = 'QCE/CFS';\n this.InstanceAliasList = CFSInstanceAliasList;\n this.InvalidDimensions = CFSInvalidDemensions;\n this.InstanceReqConfig = {\n service: 'cfs',\n action: 'DescribeCfsFileSystems',\n responseField: 'FileSystems',\n };\n }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n}\n","import _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n CKAFKAInstanceAliasList,\n CKAFKATopicAliasList,\n CKAFKAInvalidDemensions,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\n\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class CKFKADatasource extends BaseDatasource {\n Namespace = 'QCE/CKAFKA';\n InstanceAliasList = CKAFKAInstanceAliasList;\n TopicAliasList = CKAFKATopicAliasList;\n InvalidDimensions = CKAFKAInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'ckafka',\n action: 'DescribeInstances',\n responseField: 'InstanceList',\n };\n extraMetricDims = ['topicId'];\n // extrasAlias = ['topicId', 'consumerGroup', 'partition'];\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n consumerGroupCache = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getConsumerGroups(region, params) {\n const serviceInfo = GetServiceAPIInfo(region, 'ckafka');\n let { InstanceId, groupname = '', topicid = '' } = params;\n groupname = this.getVariable(groupname); // 将模板转换为真实值\n topicid = this.getVariable(topicid); // 将模板转换为真实值\n try {\n groupname = JSON.parse(groupname)[templateQueryIdMap.groupName];\n topicid = JSON.parse(topicid)[templateQueryIdMap.topicId];\n } catch (e) {}\n let consumerGoup = this.consumerGroupCache[InstanceId];\n if (!consumerGoup) {\n // 从分页数据,获取全量数据\n consumerGoup = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeConsumerGroup' }\n );\n },\n _.pick(params, 'InstanceId'),\n ['GroupListForMonitor', 'TopicListForMonitor', 'PartitionListForMonitor', 'GroupList']\n );\n this.consumerGroupCache[InstanceId] = consumerGoup;\n }\n\n let [GroupList, TopicList, PartitionList, GroupDetailList] = consumerGoup;\n // 无重复数组\n TopicList = _.uniqBy(TopicList, (item) => (item as any).TopicId);\n GroupList = _.uniqBy(GroupList, (item) => (item as any).GroupName);\n PartitionList = _.uniqBy(PartitionList, (item) => (item as any).PartitionId);\n GroupDetailList = _.uniqBy(GroupDetailList, (item) => (item as any).ConsumerGroupName);\n // 如果传入消费者信息,consumergroupname,获取该用户的订阅信息列表\n const SubscribedInfos = GroupDetailList.find((d) => d.ConsumerGroupName === groupname)?.SubscribedInfo || [];\n // 这里为了兼容PartitonList格式,最后转化为数组对象的方式\n const partitions =\n SubscribedInfos.find((sub) => sub.TopicId === topicid)?.Partition?.map((p) => ({\n [templateQueryIdMap.partition]: p,\n })) || [];\n return {\n GroupList,\n TopicList:\n SubscribedInfos.length > 0\n ? SubscribedInfos.map(({ TopicId, TopicName }) => ({ TopicId, TopicName }))\n : TopicList,\n PartitionList: partitions.length > 0 ? partitions : PartitionList,\n };\n }\n formatTopicVarDisplay(topic: Record, displayTpl: string | undefined, topicAlias: string) {\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !this.TopicAliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(topic, b);\n });\n }\n return this.getAliasValue(topic, topicAlias);\n }\n // 查询指标下的数据\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n let { topicalias, groupname, topicid } = query;\n const result = await this.getConsumerGroups(region, {\n InstanceId: instance.InstanceId,\n groupname,\n topicid,\n });\n let { display } = query;\n const { TopicList, GroupList, PartitionList } = result;\n topicalias = this.TopicAliasList.includes(topicalias) ? topicalias : this.templateQueryIdMap.topicId;\n\n const rs = {\n GroupList: GroupList.map((group) => {\n group._InstanceAliasValue = group.GroupName;\n return {\n text: group.GroupName,\n value: group[templateQueryIdMap.groupName],\n };\n }),\n TopicList: TopicList.map((topic) => {\n const topicAlias = this.formatTopicVarDisplay(topic, display, topicalias);\n topic._InstanceAliasValue = topicAlias || topic[templateQueryIdMap.topicId];\n return {\n text: topicAlias || topic[templateQueryIdMap.topicId],\n value: topic[templateQueryIdMap.topicId], // 为了获取多维度的值,这里完全可以使用JSON.stringify()将整个对象放进去\n TopicName: topic.TopicName,\n };\n }),\n PartitionList: PartitionList.map((par) => {\n par._InstanceAliasValue = par[templateQueryIdMap.partition];\n return {\n text: par[templateQueryIdMap.partition],\n value: par[templateQueryIdMap.partition],\n };\n }),\n };\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.TopicList, TopicList);\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.GroupList, GroupList);\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.PartitionList, PartitionList);\n // console.log({ res1, res2, res3 });\n // console.log({rs});\n // 根据action返回指定的维度数据列表\n switch (action) {\n case 'DescribeTopicList':\n return rs.TopicList;\n case 'DescribeGroup':\n return rs.GroupList;\n case 'DescribePartion':\n return rs.PartitionList;\n default:\n return [];\n }\n }\n\n // async getOtherAlias(datapoints) {\n // let dimension;\n // for(let j = 0; j < datapoints.Dimensions.length; j++){\n // if(datapoints.Dimensions[j] !== 'InstanceName'){\n // dimension.push(datapoints.Dimensions[j])\n // }\n // }\n // console.log(dimension);\n\n // return dimension\n // }\n}\n","import {\n InstanceAliasList,\n LOADBALANCEListenerAliasList,\n LOADBALANCEServerAliasList,\n LOADBALANCEVALIDDIMENSIONS,\n templateQueryIdMap,\n keyInStorage,\n CANDIATEDIMENSIONS,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class DCDatasource extends BaseDatasource {\n // Namespace = namespace;\n InstanceAliasList = InstanceAliasList;\n ListenerAliasList = LOADBALANCEListenerAliasList;\n ServerAliasList = LOADBALANCEServerAliasList;\n CandiateDimensions = CANDIATEDIMENSIONS;\n // InvalidDimensions = LOADBALANCEVALIDDIMENSIONS;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n // InstanceReqConfig = {\n // service: 'clb',\n // action: 'DescribeLoadBalancers',\n // responseField: 'LoadBalancerSet',\n // };\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getInvalidDimensions(selfIns: any, tagret: any) {\n if (selfIns.service === 'lbPrivate' || (selfIns.service === 'lbPublic' && tagret.servers))\n return { ...LOADBALANCEVALIDDIMENSIONS, vpcId: 'NumericalVpcId' };\n return LOADBALANCEVALIDDIMENSIONS;\n }\n getInstanceReqConfig(selfIns: any) {\n const res: any = {\n service: 'clb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n };\n if (selfIns.service === 'lbPrivate' || selfIns.service === 'loadBalance') {\n res.interceptor = {\n request: (param) => ({ ...param, LoadBalancerType: 'INTERNAL' }),\n };\n }\n if (selfIns.service === 'lbPublic') {\n res.interceptor = {\n request: (param) => ({ ...param, LoadBalancerType: 'OPEN' }),\n };\n }\n return res;\n }\n async getListenerList(params: any) {\n const { region, instanceId } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'clb');\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeListeners' }\n );\n },\n {\n LoadBalancerId: instanceId,\n },\n 'Listeners'\n );\n const [rs] = res;\n return rs;\n }\n formatVariableDisplay(data: Record, displayTpl: string | undefined, alias: string, aliasList: string[]) {\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !aliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(data, b);\n });\n }\n return this.getAliasValue(data, alias);\n }\n async getServerList(params: any) {\n const { region, instanceId, listenerId } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'clb');\n\n const res = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: { LoadBalancerId: instanceId, ListenerIds: [listenerId] },\n },\n serviceInfo.service,\n { region, action: 'DescribeTargets' }\n );\n const { Listeners } = res;\n const serversList = _.reduce(\n Listeners,\n (prev, item) => {\n const { Rules, Targets } = item;\n if (!_.isEmpty(Rules)) {\n return _.concat(prev, _.flatten(_.map(Rules, (elem) => (_.isEmpty(elem.Targets) ? [] : elem.Targets))));\n }\n if (!_.isEmpty(Targets)) {\n return _.concat(prev, Targets);\n }\n return prev;\n },\n []\n );\n return serversList;\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const { display } = query;\n if (action === 'DescribeListeners') {\n const rs = await this.getListenerList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n let { listeneralias } = query;\n listeneralias = this.ListenerAliasList.includes(listeneralias) ? listeneralias : this.templateQueryIdMap.listener;\n const result = rs.flatMap((o) => {\n const listenAlias = this.formatVariableDisplay(o, display, listeneralias, this.ListenerAliasList);\n const lisId = o[this.templateQueryIdMap.listener];\n o._InstanceAliasValue = listenAlias || lisId;\n // if (!o[listeneralias]) return [];\n return {\n text: listenAlias || lisId,\n value: lisId,\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.listener, rs);\n return result;\n }\n if (action === 'DescribeServer' || action === 'DescribeServerPort') {\n const { listenerid, serverprivateip, serveralias } = query;\n const serverPrivateIp = this.getVariable(serverprivateip);\n const serversList = await this.getServerList({\n region,\n instanceId: instance[this.templateQueryIdMap.instance],\n listenerId: this.getVariable(listenerid),\n });\n const serverAlias = this.ServerAliasList.includes(serveralias) ? serveralias : this.templateQueryIdMap.servers;\n const result = _.chain(serversList)\n .filter((item) => {\n if (action === 'DescribeServer') {\n return true;\n }\n return serverPrivateIp === _.get(item, 'PrivateIpAddresses.0');\n })\n .map((item) => {\n const alias = this.formatVariableDisplay(item, display, serverAlias, this.ServerAliasList);\n const id = item[this.templateQueryIdMap.servers][0];\n item._InstanceAliasValue = alias || id;\n return action === 'DescribeServer'\n ? {\n text: alias || id,\n value: id,\n }\n : {\n text: `${_.get(item, 'Port')}`,\n value: _.get(item, 'Port'),\n };\n })\n .value();\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.servers, serversList);\n return action === 'DescribeServer' ? result : _.uniqBy(result, 'text');\n }\n return [];\n }\n}\n","import {\n CLSInstanceAliasList,\n CLSInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CLSInstanceAliasList;\n InvalidDimensions = CLSInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cls',\n action: 'DescribeTopics',\n responseField: 'Topics',\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n // async getInstances(region, params = {}) {\n // const superRes = await super.getInstances(region, params);\n // console.log({ superRes });\n // }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n}\n","import { BaseDatasource } from '../_base/datasource';\nimport { InvalidDemensions, InstanceAliasList, templateQueryIdMap } from './query_def';\n\nexport default class CmqDatasource extends BaseDatasource {\n InvalidDimensions: Record = InvalidDemensions;\n InstanceAliasList: string[] = InstanceAliasList;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'cmq',\n action: 'DescribeQueueDetail',\n responseField: 'QueueSet',\n };\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawMetric = await super.getMetrics(region);\n return rawMetric.map((metric) => {\n let dims = metric.Dimensions[0].Dimensions;\n dims = Array.from(new Set([...dims, 'queueId', 'queueName']));\n metric.Dimensions[0].Dimensions = dims;\n return metric;\n });\n }\n}\n","import { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n InvalidDemensions,\n InstanceAliasList,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class CmqTopicDatasource extends BaseDatasource {\n Namespace = 'QCE/CMQTOPIC';\n InvalidDimensions: Record = InvalidDemensions;\n InstanceAliasList: string[] = InstanceAliasList;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'cmq',\n action: 'DescribeTopicDetail',\n responseField: 'TopicSet',\n };\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n extraMetricDims = ['subscriptionId']; // 多选\n\n async fetchAllSubscription(region: string, params: any) {\n const serviceInfo = GetServiceAPIInfo(region, 'cmq');\n // console.log(serviceInfo, 'serviceinfo');\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeSubscriptionDetail' }\n );\n },\n params,\n 'SubscriptionSet'\n );\n\n return rs[0];\n }\n\n async fetchMetricData(action: string, region: string, instance: any) {\n let result;\n switch (action) {\n case 'DescribeSubscriptionDetail':\n result = await this.fetchAllSubscription(region, { TopicName: instance.TopicName });\n // eslint-disable-next-line no-case-declarations\n const rs = result.map((item) => {\n item._InstanceAliasValue = item.SubscriptionId;\n return { text: item.SubscriptionId, value: item[templateQueryIdMap.subscription] };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.subscriptionId, result);\n return rs;\n default:\n return [];\n }\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawMetric = await super.getMetrics(region);\n return rawMetric.map((metric) => {\n let dims = metric.Dimensions[0].Dimensions;\n dims.push('topicId');\n if (['NumOfNotify', 'NumOfSuccNotify'].includes(metric.MetricName)) {\n dims.push('subscriptionId');\n }\n\n dims = Array.from(new Set(dims));\n metric.Dimensions[0].Dimensions = dims;\n return metric;\n });\n }\n}\n","import { BaseDatasource } from '../_base/datasource';\n\ninterface BucketListResult {\n Owner: { ID: 'string'; DisplayName: 'string' };\n Buckets: { Name: string; Region: string }[];\n}\n\nexport default class CosDatasource extends BaseDatasource {\n InvalidDimensions: Record = {};\n InstanceAliasList: string[] = ['BucketName'];\n templateQueryIdMap = {\n instance: 'BucketName',\n };\n InstanceReqConfig = {} as any; // 不必要的配置\n cosURL: string;\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n this.cosURL = `/api/datasources/${this.instanceSettings.id}/resources/tc_cos_list`;\n }\n async getInstances(region: string) {\n return this.backendSrv\n .datasourceRequest({\n url: this.cosURL,\n method: 'GET',\n params: { region },\n headers: { 'Content-Type': 'application/json' },\n })\n .then((res) => {\n let { data }: { data: BucketListResult } = res;\n data = data || ({} as any);\n let { Buckets } = data;\n Buckets = Buckets || [];\n\n // name contains appid,see detail https://cloud.tencent.com/document/product/436/8291\n return Buckets.map((item) => ({\n ...item,\n BucketName: item.Name,\n bucket: item.Name,\n appid: item.Name.split('-').slice(-1)[0],\n }));\n });\n }\n\n async getVariableInstances(region) {\n return this.getInstances(region);\n }\n}\n","import {\n CPMInstanceAliasList,\n CPMInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CPMInstanceAliasList;\n InvalidDimensions = CPMInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'bm',\n action: 'DescribeDevices',\n responseField: 'DeviceInfoSet',\n };\n RegionMap = {};\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/bm',\n },\n 'bm',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n // 缓存,后面获取可用区zone\n this.RegionMap = _.keyBy(response.RegionInfoSet, 'Region');\n return _.map(response.RegionInfoSet || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n };\n });\n });\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n\n getFilterDropdown({ field, region }) {\n if (field === 'DeviceClassCode') {\n const serviceInfo = GetServiceAPIInfo(region, 'bm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n 'bm',\n { region, action: 'DescribeDeviceClass' }\n ).then((response) => {\n return _.map(response.DeviceClassSet || [], (item) => {\n return { text: item.DeviceClassCode, value: item.DeviceClassCode };\n });\n });\n }\n return [];\n }\n}\n","import _ from 'lodash';\nimport { CVMInstanceAliasList, isValidMetric, modifyDimensons } from './query_def';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CVMDatasource extends BaseDatasource {\n Namespace = 'QCE/CVM';\n InstanceAliasList = CVMInstanceAliasList;\n InvalidDimensions = {};\n templateQueryIdMap = {\n instance: 'InstanceId',\n };\n InstanceReqConfig = {\n service: 'cvm',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n if (isValidMetric(item)) {\n return modifyDimensons(item);\n }\n return null;\n })\n );\n }\n\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/api',\n data: { Product: 'cvm' },\n },\n 'api',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n\n getZones(region) {\n const serviceInfo = GetServiceAPIInfo(region, 'api');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: { Product: 'cvm' },\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n}\n","import {\n CYNOSDBMYSQLInstanceAliasList,\n CYNOSDBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n checkKeys,\n} from './query_def';\nimport _ from 'lodash';\nimport { BaseDatasource } from '../_base/datasource';\n// import { t } from '../../../locale';\n\nexport default class CYNOSDBMYSQLDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = CYNOSDBMYSQLInstanceAliasList;\n InvalidDimensions = CYNOSDBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n checkKeys = checkKeys;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'cynosdb',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n // getRegions() {\n // return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n // }\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/api',\n data: { Product: 'cynosdbmysql' },\n },\n 'api',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n // 仅对维度组合是InstanceId的指标,其他指标不支持\n getDefaultInsObj(ins: string) {\n return {\n [templateQueryIdMap.instance]: ins,\n }\n }\n}\n","import { DCInstanceAliasList, DCInvalidDemensions, namespace, modifyDimensons } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCInstanceAliasList;\n InvalidDimensions = DCInvalidDemensions;\n templateQueryIdMap = {\n instance: 'DirectConnectId',\n };\n InstanceReqConfig = {\n service: 'dc',\n action: 'DescribeDirectConnects',\n responseField: 'DirectConnectSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n}\n","import {\n DCDBInstanceAliasList,\n DCDBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCDBInstanceAliasList;\n InvalidDimensions = DCDBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'dcdb',\n action: 'DescribeDCDBInstances',\n responseField: 'Instances',\n };\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n extraActionMap = {\n DescribeDCDBShards: {\n service: 'dcdb',\n action: 'DescribeDCDBShards',\n responseField: 'Shards',\n pickKey: 'ShardInstanceId',\n },\n DescribeDCDBInstanceNodeInfo: {\n service: 'dcdb',\n action: 'DescribeDCDBInstanceNodeInfo',\n responseField: 'NodesInfo',\n pickKey: 'NodeId',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion, 入参的region用广州\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/dcdb',\n },\n 'dcdb',\n { action: 'DescribeDCDBSaleInfo', region: 'ap-guangzhou' }\n ).then((response) => {\n return _.map(response.RegionList || [], (item) => {\n return {\n text: t(item.Region),\n value: item.Region,\n RegionState: item.RegionState,\n };\n });\n });\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n InstanceId: instance[this.templateQueryIdMap.instance],\n Limit: 100,\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import { DCGInstanceAliasList, DCGInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCGInstanceAliasList;\n InvalidDimensions = DCGInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeDirectConnectGateways',\n responseField: 'DirectConnectGatewaySet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { DCXInstanceAliasList, DCXInvalidDemensions, namespace, modifyDimensons } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCXDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = DCXInstanceAliasList;\n InvalidDimensions = DCXInvalidDemensions;\n templateQueryIdMap = {\n instance: 'DirectConnectTunnelId',\n };\n InstanceReqConfig = {\n service: 'dc',\n action: 'DescribeDirectConnectTunnels',\n responseField: 'DirectConnectTunnelSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n}\n","import { BaseDatasource } from '../_base/datasource';\nimport {\n ECDNInstanceAliasList,\n ECDNInvalidDemensions,\n modifyDimensons,\n namespace,\n templateQueryIdMap,\n} from './query_def';\n\nexport default class ECDNDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECDNInstanceAliasList;\n InvalidDimensions = ECDNInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'ecdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.map((item) => modifyDimensons(item));\n }\n}\n","import {\n ECMInstanceAliasList,\n ECMInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECMInstanceAliasList;\n InvalidDimensions = ECMInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'ecm',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import {\n ECMBLOCKSTORAGEInstanceAliasList,\n ECMBLOCKSTORAGEInvalidDemensions,\n namespace,\n templateQueryIdMap,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECMBLOCKSTORAGEInstanceAliasList;\n InvalidDimensions = ECMBLOCKSTORAGEInvalidDemensions;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n templateQueryIdMap = templateQueryIdMap;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'ecm',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async getDiskList(params: any) {\n const { payload } = params;\n const { InstanceId } = payload;\n const instanceCache = await instanceStorage.getInstance(this.service);\n const instanceObj: any =\n _.cloneDeep(instanceCache.find((item) => item[this.templateQueryIdMap.instance] === InstanceId)) ?? {};\n const { DataDisks: dataDisks } = instanceObj;\n return dataDisks;\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n InstanceId: instance,\n Limit: 100,\n };\n const rs = await this.getDiskList({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.diskId];\n return {\n text: o[this.templateQueryIdMap.diskId],\n value: o[this.templateQueryIdMap.diskId],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.diskId, rs);\n return result;\n }\n}\n","import { ECMLBInstanceAliasList, ECMLBInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = ECMLBInstanceAliasList;\n InvalidDimensions = ECMLBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'ecm',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import {\n GSEInstanceAliasList,\n GSEInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n keyInStorage,\n queryMonitorExtraConfg,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = GSEInstanceAliasList;\n InvalidDimensions = GSEInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'gse',\n action: 'DescribeInstances',\n responseField: 'Instances',\n };\n\n keyInStorage = keyInStorage;\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n async getQueueNameList(params: any) {\n const { region } = params;\n const serviceInfo = GetServiceAPIInfo(region, this.service);\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeGameServerSessionQueues' }\n );\n },\n {},\n 'GameServerSessionQueues'\n );\n const [rs] = res;\n return rs;\n }\n async getFleetList(params: any) {\n const { region } = params;\n const serviceInfo = GetServiceAPIInfo(region, this.service);\n\n // 从分页数据,获取全量数据\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'ListFleets' }\n );\n },\n {},\n 'FleetIds'\n );\n const [rs] = res;\n return rs.map((r) => ({ [this.templateQueryIdMap.FleetId]: r }));\n }\n async fetchMetricData(action: string, region: string, instance: any) {\n // console.log({ action, region, instance });\n if (action === 'DescribeGameServerSessionQueues') {\n const rs = await this.getQueueNameList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.Name];\n return {\n text: o[this.templateQueryIdMap.Name],\n value: o[this.templateQueryIdMap.Name],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.queue, rs);\n return result;\n }\n if (action === 'ListFleets') {\n const rs = await this.getFleetList({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.FleetId];\n return {\n text: o[this.templateQueryIdMap.FleetId],\n value: o[this.templateQueryIdMap.FleetId],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.fleet, rs);\n return result;\n }\n return [];\n }\n}\n","import _ from 'lodash';\nimport { BaseDatasource } from '../_base/datasource';\nimport { LBInstanceAliasList, LBInvalidDemensions } from './query_def';\n\nexport default class SCFDatasource extends BaseDatasource {\n Namespace = 'QCE/LB';\n InstanceAliasList = LBInstanceAliasList;\n InvalidDimensions = LBInvalidDemensions;\n templateQueryIdMap = {\n instance: 'AddressId',\n };\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeAddresses',\n responseField: 'AddressSet',\n interceptor: {\n request: (params) => {\n const { Filters } = params;\n if (!Filters) {\n params.Filters = [];\n }\n params.Filters.push({\n Name: 'address-type',\n Values: ['EIP'],\n });\n return params;\n }, // 设置一些请求参数的 默认值\n },\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter((item) =>\n /* hack:这里多加了筛选条件,是因为后端数据不准确,坑啊! 只拿取包含eip的指标 */\n item.Dimensions?.[0]?.Dimensions?.includes('eip')\n );\n }\n\n // async getInstances(region, params = {}) {\n // const rawSet = await super.getInstances(region, params);\n // /* hack:这里多加了筛选条件,是因为后端数据不准确,坑啊! 只拿取包含eip的指标 */\n // return rawSet.filter((item) => item.AddressType === 'EIP');\n // }\n\n // async getVariableInstances(region, query = {}) {\n // const rawSet = await super.getVariableInstances(region, query);\n // return rawSet.filter((item) => item.AddressType === 'EIP');\n // }\n}\n","import _ from 'lodash';\nimport {\n LIGHTHOUSEInstanceAliasList,\n templateQueryIdMap,\n LighthouseInvalidDemensions,\n modifyDimensons,\n} from './query_def';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class LighthouseDatasource extends BaseDatasource {\n Namespace = 'QCE/LIGHTHOUSE';\n InstanceAliasList = LIGHTHOUSEInstanceAliasList;\n InvalidDimensions = LighthouseInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'lighthouse',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/api',\n data: { Product: 'lighthouse' },\n },\n 'api',\n { action: 'DescribeRegions' }\n ).then((response) => {\n return _.filter(\n _.map(response.RegionSet || [], (item) => {\n return {\n text: item.RegionName,\n value: item.Region,\n RegionState: item.RegionState,\n };\n }),\n (item) => item.RegionState === 'AVAILABLE'\n );\n });\n }\n\n getZones(region) {\n const serviceInfo = GetServiceAPIInfo(region, 'api');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: { Product: 'lighthouse' },\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(\n rawSet.map((item) => {\n return modifyDimensons(item);\n })\n );\n }\n}\n","import _ from 'lodash';\nimport {\n MONGODBInstanceAliasList,\n MONGODBInvalidDemensions,\n templateQueryIdMap,\n queryMonitorExtraConfg,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class MONGODBDatasource extends BaseDatasource {\n Namespace = 'QCE/CMONGO';\n InstanceAliasList = MONGODBInstanceAliasList;\n ReplicaAliasList = ['ReplicaSetId', 'ReplicaSetName'];\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n\n InstanceReqConfig = {\n service: 'mongodb',\n action: 'DescribeDBInstances',\n responseField: 'InstanceDetails',\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n getInvalidDimensions(selfIns: any, target: any) {\n if (target.node && target.node !== '') {\n return { target: 'Node' };\n }\n if (target.replica && target.replica !== '') {\n return { target: 'Replica' };\n }\n return MONGODBInvalidDemensions;\n }\n formatVariableDisplay(data: Record, displayTpl: string | undefined, alias: string, aliasList: string[]) {\n if (displayTpl) {\n return displayTpl.replace(/\\$\\{(\\w+)\\}/g, (a, b) => {\n if (!b || !aliasList.includes(b)) {\n return '';\n }\n return this.getAliasValue(data, b);\n });\n }\n return this.getAliasValue(data, alias);\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const { display } = query;\n if (action === 'DescribeReplicas') {\n const [res] = await this.getInstances(region, { InstanceIds: [instance[this.templateQueryIdMap.instance]] });\n let { replicaalias } = query;\n replicaalias = this.ReplicaAliasList.includes(replicaalias) ? replicaalias : this.templateQueryIdMap.replica;\n const result = _.map(_.get(res, 'ReplicaSets', []), (item) => {\n const replicaAlias = this.formatVariableDisplay(item, display, replicaalias, this.ReplicaAliasList);\n item._InstanceAliasValue = replicaAlias || item[this.templateQueryIdMap.replica];\n return { text: item.ReplicaSetId, value: item.ReplicaSetId };\n });\n await instanceStorage.setExtraStorage(\n this.service,\n this.queryMonitorExtraConfg.Replica.dim_KeyInStorage,\n _.get(res, 'ReplicaSets', [])\n );\n return result;\n }\n if (action === 'DescribeReplicaNodes') {\n const [res] = await this.getInstances(region, { InstanceIds: [instance[this.templateQueryIdMap.instance]] });\n const { replicasetid } = query;\n const targetReplica = _.find(_.get(res, 'ReplicaSets', []), { ReplicaSetId: this.getVariable(replicasetid) });\n let result = _.times(targetReplica.SecondaryNum, (index) => {\n const nodeId = `${targetReplica.ReplicaSetId}-node-slave${index}`;\n return { text: nodeId, value: nodeId };\n });\n if (targetReplica) {\n result = [\n { text: `${targetReplica.ReplicaSetId}-node-primary`, value: `${targetReplica.ReplicaSetId}-node-primary` },\n ...result,\n ];\n }\n await instanceStorage.setExtraStorage(\n this.service,\n this.queryMonitorExtraConfg.Node.dim_KeyInStorage,\n result.map((item) => ({ NodeId: item.value, _InstanceAliasValue: item.value }))\n );\n return result;\n }\n\n return [];\n }\n}\n","import { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n InvalidDemensions,\n InstanceAliasList,\n templateQueryIdMap,\n keyInStorage,\n queryMonitorExtraConfg,\n} from './query_def';\nimport instanceStorage from '../../common/datasourceStorage';\n\nexport default class MrHdfsDatasource extends BaseDatasource {\n InvalidDimensions: Record = InvalidDemensions;\n InstanceAliasList: string[] = InstanceAliasList;\n templateQueryIdMap = templateQueryIdMap;\n extrasAlias = [];\n keyInStorage = keyInStorage;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n InstanceReqConfig = {\n service: 'emr',\n action: 'DescribeInstances',\n responseField: 'ClusterList',\n interceptor: {\n request: (params) => ({\n ...params,\n DisplayStrategy: params.DisplayStrategy || 'monitorManage',\n ProjectId: params.ProjectId || -1,\n }), // 设置一些请求参数的 默认值\n response: (data: any[]) => data.map(({ ClusterId, ClusterName }) => ({ ClusterId, ClusterName })),\n },\n };\n\n async fetchAllNodes(region: string, params: any) {\n const serviceInfo = GetServiceAPIInfo(region, 'emr');\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeClusterNodes' }\n );\n },\n { ...params, isOffsetPage: true },\n 'NodeList'\n );\n\n // return rs[0].map((item) => ({ text: item.Ip, value: item.Ip }));\n return rs[0];\n }\n\n async fetchMetricData(action: string, region: string, instance: any) {\n let result;\n switch (action) {\n case 'DescribeClusterNodes': {\n const resultT = await this.fetchAllNodes(region, { InstanceId: instance.ClusterId, NodeFlag: 'all' });\n result = resultT.map((item) => {\n item._InstanceAliasValue = item[templateQueryIdMap.node];\n return { text: item[templateQueryIdMap.node], value: item[templateQueryIdMap.node] };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.node, resultT);\n\n return result;\n }\n default:\n return [];\n }\n }\n}\n","import _ from 'lodash';\nimport { NATGATEWAYInstanceAliasList, NATInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class NATGATEWAYDatasource extends BaseDatasource {\n Namespace = 'QCE/NAT_GATEWAY';\n InstanceAliasList = NATGATEWAYInstanceAliasList;\n InvalidDimensions = NATInvalidDemensions;\n templateQueryIdMap = {\n instance: 'NatGatewayId',\n };\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeNatGateways',\n responseField: 'NatGatewaySet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import _ from 'lodash';\nimport { OVCDNInstanceAliasList, OVCDNInvalidDemensions } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class OVCDNDatasource extends BaseDatasource {\n Namespace = 'QCE/OV_CDN';\n InstanceAliasList = OVCDNInstanceAliasList;\n InvalidDimensions = OVCDNInvalidDemensions;\n templateQueryIdMap = {\n instance: 'Domain',\n };\n InstanceReqConfig = {\n service: 'cdn',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","import { PCXInstanceAliasList, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo, GetRequestParamsV2, SliceLength } from '../../common/constants';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = PCXInstanceAliasList;\n InvalidDimensions = {};\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'xx',\n action: 'xx',\n responseField: 'xx',\n };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getInstances(region = 'ap-guangzhou', params = {}) {\n params = { offset: 0, limit: 50, ...params };\n const serviceInfo = GetServiceAPIInfo(region, 'pcx');\n return this.doRequestV2(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcPeeringConnections' }\n ).then((response) => {\n return response.data || [];\n });\n }\n\n /**\n * 模板变量中获取全量的 PCX 实例列表\n * @param region 地域信息\n */\n getVariableInstances(region, query) {\n let result: any[] = [];\n const params = { Offset: 0, Limit: 50, ...query };\n const serviceInfo = GetServiceAPIInfo(region, 'pcx');\n return this.doRequestV2(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcPeeringConnections' }\n ).then((response) => {\n result = response.data || [];\n const total = response.totalCount || 0;\n if (result.length >= total) {\n return result;\n } else {\n const param = SliceLength(total, 50);\n const promises: any[] = [];\n _.forEach(param, (item) => {\n promises.push(this.getInstances(region, item));\n });\n return Promise.all(promises)\n .then((responses) => {\n _.forEach(responses, (item) => {\n result = _.concat(result, item);\n });\n return result;\n })\n .catch((error) => {\n return result;\n });\n }\n });\n }\n\n getVpcId(region, params: any = {}) {\n params = { Offset: 0, Limit: 20, ...params };\n // TODO 等待腾讯云接口查问题\n params.Offset = String(params.Offset);\n params.Limit = String(params.Limit);\n const serviceInfo = GetServiceAPIInfo(region, 'vpc');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcs' }\n ).then((response) => {\n return _.map(response.VpcSet || [], (item) => ({ text: item.VpcId, value: item.VpcId }));\n });\n }\n\n getVpcIds(region) {\n let result: any[] = [];\n const params: any = { Offset: 0, Limit: 100 };\n // TODO 等待腾讯云接口查问题\n params.Offset = String(params.Offset);\n params.Limit = String(params.Limit);\n const serviceInfo = GetServiceAPIInfo(region, 'vpc');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'DescribeVpcs' }\n ).then((response) => {\n result = _.map(response.VpcSet || [], (item) => ({ text: item.VpcId, value: item.VpcId }));\n const total = response.TotalCount || 0;\n if (result.length >= total) {\n return result;\n } else {\n const param = SliceLength(total, 100);\n const promises: any[] = [];\n _.forEach(param, (item) => {\n promises.push(this.getVpcId(region, item));\n });\n return Promise.all(promises)\n .then((responses) => {\n _.forEach(responses, (item) => {\n result = _.concat(result, item);\n });\n return result;\n })\n .catch((error) => {\n return result;\n });\n }\n });\n }\n\n /**\n * 腾讯云 API 2.0 请求接口\n * @param options\n * @param service\n * @param signObj\n */\n async doRequestV2(options, service, signObj: any = {}) {\n options = await GetRequestParamsV2(\n options,\n service,\n signObj,\n this.secretId,\n this.instanceSettings.id,\n this.backendSrv\n );\n return this.backendSrv\n .datasourceRequest(options)\n .then((response) => {\n return _.get(response, 'data', {});\n })\n .catch((error) => {\n throw error;\n });\n }\n}\n","import _ from 'lodash';\nimport {\n POSTGRESInstanceAliasList,\n PostgreInvalidDemensions,\n namespace,\n modifyDimensons,\n templateQueryIdMap,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class CDBDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = POSTGRESInstanceAliasList;\n InvalidDimensions = PostgreInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'postgres',\n action: 'DescribeDBInstances',\n responseField: 'DBInstanceSet',\n };\n\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { get } from 'lodash';\nimport { QAAPInstanceAliasList, QAAPInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class QAAPDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = QAAPInstanceAliasList;\n InvalidDimensions = QAAPInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'gaap',\n action: 'DescribeProxies',\n responseField: 'ProxySet',\n interceptor: {\n // response: (data: unknown[]) =>[\n // {\n // \"NetDetectId\": \"netd-12345678\",\n // },\n // ],\n },\n };\n // MetricReqConfig = {\n // resultFilter: modifyDimensons,\n // };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter(\n (item) =>\n get(item, 'Dimensions.length') === 1 &&\n get(item, 'Dimensions[0].Dimensions.length') === 1 &&\n get(item, 'Dimensions[0].Dimensions[0]') === 'channelId'\n );\n }\n}\n","import _ from 'lodash';\nimport { REDISInstanceAliasList, RedisInvalidDemensions, isValidMetric } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class REDISDatasource extends BaseDatasource {\n Namespace = 'QCE/REDIS';\n InstanceAliasList = REDISInstanceAliasList;\n InvalidDimensions = RedisInvalidDemensions;\n templateQueryIdMap = {\n instance: 'InstanceId',\n };\n InstanceReqConfig = {\n service: 'redis',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n interceptor: {\n request: (params) => ({ ...params, MonitorVersion: '1m' }),\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter((item) => isValidMetric(item));\n }\n}\n","import _ from 'lodash';\nimport {\n REDISMEMInstanceAliasList,\n namespace,\n RedisMemInvalidDemensions,\n templateQueryIdMap,\n NodeType,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\n\nexport default class REDISDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = REDISMEMInstanceAliasList;\n InvalidDimensions = RedisMemInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n extrasAlias = [RedisMemInvalidDemensions.pnodeid, RedisMemInvalidDemensions.rnodeid];\n InstanceReqConfig = {\n service: 'redis',\n action: 'DescribeInstances',\n responseField: 'InstanceSet',\n interceptor: {\n request: (params) => ({ ...params, MonitorVersion: '5s' }),\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getInstanceNodeInfo(params: any) {\n const { region, instanceId } = params;\n const serviceInfo = GetServiceAPIInfo(region, 'redis');\n\n const res = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action: 'DescribeInstanceNodeInfo' }\n );\n },\n {\n InstanceId: instanceId,\n },\n NodeType\n );\n\n return res;\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n if (action === 'DescribeInstanceNodeInfo') {\n const rs = await this.getInstanceNodeInfo({ region, instanceId: instance[this.templateQueryIdMap.instance] });\n const { nodetype } = query;\n const ndoeTypeIndex = NodeType.indexOf(nodetype);\n return ndoeTypeIndex === -1\n ? []\n : _.map(rs[ndoeTypeIndex], (item) => ({ text: item.NodeId, value: item.NodeId }));\n }\n return [];\n }\n}\n","import _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { BaseDatasource } from '../_base/datasource';\nimport {\n SCFInstanceAliasList,\n SCFInvalidDemensions,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n templateQueryIdMap,\n} from './query_def';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class SCFDatasource extends BaseDatasource {\n InstanceKey: string;\n Namespace: string;\n InstanceAliasList: string[];\n InvalidDimensions: Record;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n InstanceReqConfig: { service?: string | undefined; action: string; responseField: string };\n\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n\n this.Namespace = 'QCE/SCF_V2';\n this.InstanceAliasList = SCFInstanceAliasList;\n this.InvalidDimensions = SCFInvalidDemensions;\n this.InstanceReqConfig = {\n service: 'scf',\n action: 'ListFunctions',\n responseField: 'Functions',\n };\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter(\n (item) =>\n /* hack:这里多加了筛选条件,是因为后端数据不准确,坑啊! 只拿取包含functionName的指标 */\n item.Dimensions?.[0]?.Dimensions?.includes('functionName') &&\n item.Dimensions?.[0]?.Dimensions?.includes('namespace') &&\n !item.MetricName.startsWith('Name')\n );\n }\n\n getVersions(region, params) {\n const serviceInfo = GetServiceAPIInfo(region, 'scf');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: params,\n },\n serviceInfo.service,\n { region, action: 'ListVersionByFunction' }\n ).then((response) => {\n return response.Versions;\n });\n }\n\n async fetchMetricData(action: string, region: string, instance: any) {\n // console.log({ action, region, instance });\n if (action === 'ListVersionByFunction') {\n const rs = await this.getVersions(region, { FunctionName: instance[this.templateQueryIdMap.instance] });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap.version];\n return {\n text: o[this.templateQueryIdMap.version],\n value: o[this.templateQueryIdMap.version],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage.version, rs);\n return result;\n }\n return [];\n }\n}\n","import {\n SQLSERVERInstanceAliasList,\n SQLSERVERInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = SQLSERVERInstanceAliasList;\n InvalidDimensions = SQLSERVERInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'sqlserver',\n action: 'DescribeDBInstances',\n responseField: 'DBInstances',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(rawSet.map((item) => modifyDimensons(item)));\n }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n getFilterDropdown({ field, region }) {\n if (field === 'Zone') {\n const serviceInfo = GetServiceAPIInfo(region, 'cvm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n return [];\n }\n}\n","import {\n TCAPLUSInstanceAliasList,\n TCAPLUSInvalidDemensions,\n namespace,\n templateQueryIdMap,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TCAPLUSInstanceAliasList;\n InvalidDimensions = TCAPLUSInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tcaplusdb',\n action: 'DescribeTables',\n responseField: 'TableInfos',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // 重写getRegion\n getRegions() {\n return this.doRequest(\n {\n url: this.url + '/tcaplusdb',\n },\n 'tcaplusdb',\n { action: 'DescribeRegions', region: 'ap-guangzhou' }\n ).then((response) => {\n return _.map(response.RegionInfos || [], (item) => {\n return {\n text: t(item.RegionName),\n value: item.RegionName,\n };\n });\n });\n }\n}\n","import {\n TDMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n modifyDimensons,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class TDMQDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TDMQInstanceAliasList;\n InvalidDimensions = TDMQInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tdmq',\n action: 'DescribeClusters',\n responseField: 'ClusterSet',\n };\n extraActionMap = {\n DescribeTopics: {\n service: 'tdmq',\n action: 'DescribeTopics',\n responseField: 'TopicSets',\n pickKey: 'topicName',\n },\n DescribeEnvironments: {\n service: 'tdmq',\n action: 'DescribeEnvironments',\n responseField: 'EnvironmentSet',\n pickKey: 'environmentId',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n // getFilterDropdown({ field }) {\n // return super.getRegions();\n // }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return _.compact(rawSet.map((item) => modifyDimensons(item)));\n }\n\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n // console.log({ rs });\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n Limit: 100,\n ClusterId: instance[this.templateQueryIdMap.instance],\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n if (action === 'DescribeTopics') {\n payload.EnvironmentId = this.getVariable(query['environmentid']);\n }\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import {\n TDMQRABBITMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class TDMQDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TDMQRABBITMQInstanceAliasList;\n InvalidDimensions = TDMQInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tdmq',\n action: 'DescribeRabbitMQVipInstances',\n responseField: 'Instances',\n };\n extraActionMap = {\n DescribeRabbitMQNodeList: {\n service: 'tdmq',\n action: 'DescribeRabbitMQNodeList',\n responseField: 'NodeList',\n pickKey: 'node',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n Limit: 100,\n InstanceId: instance[this.templateQueryIdMap.instance],\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import {\n TDMQROCKETMQInstanceAliasList,\n TDMQInvalidDemensions,\n namespace,\n templateQueryIdMap,\n regionSupported,\n queryMonitorExtraConfg,\n keyInStorage,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { fetchAllFactory } from '../../common/utils';\nimport instanceStorage from '../../common/datasourceStorage';\nimport { t } from '../../../locale';\n\nexport default class TDMQDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = TDMQROCKETMQInstanceAliasList;\n InvalidDimensions = TDMQInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n queryMonitorExtraConfg = queryMonitorExtraConfg;\n keyInStorage = keyInStorage;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'tdmq',\n action: 'DescribeRocketMQClusters',\n responseField: 'ClusterList',\n interceptor: {\n response: (result) =>\n _.map(result, (item) => ({\n ...item,\n ClusterId: _.get(item, 'Info.ClusterId', ''),\n ClusterName: _.get(item, 'Info.ClusterName', ''),\n })),\n },\n };\n extraActionMap = {\n DescribeRocketMQNamespaces: {\n service: 'tdmq',\n action: 'DescribeRocketMQNamespaces',\n responseField: 'Namespaces',\n pickKey: 'namespace',\n },\n DescribeRocketMQGroups: {\n service: 'tdmq',\n action: 'DescribeRocketMQGroups',\n responseField: 'Groups',\n pickKey: 'group',\n },\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await super.getMetrics(region);\n return rawSet.filter((item) => !item.Dimensions?.[0]?.Dimensions?.includes('rmqcluster'));\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n\n async getConsumerList(params: any) {\n const { region, action: act, payload } = params;\n const { service, action, responseField } = this.extraActionMap[act];\n\n const serviceInfo = GetServiceAPIInfo(region, service);\n\n // 从分页数据,获取全量数据\n const rs = await fetchAllFactory(\n (data) => {\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data,\n },\n serviceInfo.service,\n { region, action }\n );\n },\n payload,\n responseField\n );\n return rs[0];\n }\n async fetchMetricData(action: string, region: string, instance: any, query: any) {\n const payload: any = {\n Limit: 100,\n ClusterId: instance[this.templateQueryIdMap.instance],\n };\n if (Object.keys(this.extraActionMap).indexOf(action) !== -1) {\n if (action === 'DescribeRocketMQGroups') {\n payload.NamespaceId = this.getVariable(query['clusternamespace']);\n }\n const rs = await this.getConsumerList({ region, action, payload });\n const { pickKey } = this.extraActionMap[action];\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[this.templateQueryIdMap[pickKey]];\n return {\n text: o[this.templateQueryIdMap[pickKey]],\n value: o[this.templateQueryIdMap[pickKey]],\n };\n });\n await instanceStorage.setExtraStorage(this.service, this.keyInStorage[pickKey], rs);\n return result;\n }\n return [];\n }\n}\n","import { map, flatten, reduce, isEmpty, filter, split, sortBy, findIndex, trim, isArray, isString } from 'lodash';\nimport { GetServiceAPIInfo, ReplaceVariable } from '../../common/constants';\nimport { getTimeShiftInMs } from '../../common/utils';\nimport { BaseDatasource } from '../_base/datasource';\n\nconst variableToArray = (variable) => {\n if (isEmpty(variable)) {\n return [];\n }\n if (isArray(variable)) {\n return variable;\n }\n if (isString(variable)) {\n return split(variable, ',').map((item) => trim(item));\n }\n return [];\n};\n\nexport default class TKEDatasource extends BaseDatasource {\n InstanceAliasList = ['ClusterId', 'ClusterName'];\n templateQueryIdMap = {\n instance: 'ClusterId',\n };\n InvalidDimensions = {\n tke_cluster_instance_id: 'ClusterId',\n };\n InstanceReqConfig = {\n service: 'tke',\n action: 'DescribeClusters',\n responseField: 'Clusters',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getMonitorData(params: any, region: any, instances: any, target: any, options: any) {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n const timeshift = getTimeShiftInMs(target.timeshift);\n const conditions = reduce(\n target.conditions,\n (prev, item) => {\n if (isEmpty(item.Key) || isEmpty(item.Operator) || isEmpty(item.Value)) {\n return prev;\n }\n return [\n ...filter(prev, (e) => e.Key !== item.Key),\n {\n Key: ReplaceVariable(this.templateSrv, options.scopedVars, item.Key, false),\n Operator: ReplaceVariable(this.templateSrv, options.scopedVars, item.Operator, false),\n Value: variableToArray(ReplaceVariable(this.templateSrv, options.scopedVars, item.Value, true)),\n },\n ];\n },\n [{ Key: 'tke_cluster_instance_id', Operator: '=', Value: instances.map((item) => item['ClusterId']) }]\n );\n\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Period: params.Period,\n MetricNames: [params.MetricName],\n Module: 'monitor',\n Namespace: 'QCE/TKE',\n EndTime: params.EndTime,\n StartTime: params.StartTime,\n Conditions: conditions,\n GroupBys: variableToArray(ReplaceVariable(this.templateSrv, options.scopedVars, target.groupBys, true)),\n },\n },\n serviceInfo.service,\n { action: 'DescribeStatisticData', region }\n ).then((response) => {\n return flatten(\n map(response.Data, (data) => {\n return map(data.Points, (point) => {\n const dimensionSort = sortBy(point.Dimensions, ['Name']);\n const dimensionString = [\n ...dimensionSort.splice(findIndex(dimensionSort, { Name: 'tke_cluster_instance_id' }), 1),\n ...dimensionSort,\n ]\n .map((dimension) => dimension.Value)\n .join(' - ');\n const timeshiftString = timeshift > 0 ? `_${target.timeshift}` : '';\n return {\n target: `${data.MetricName} - ${dimensionString}${timeshiftString}`,\n datapoints: map(point.Values, (value) => [value.Value, value.Timestamp * 1000 + timeshift]),\n };\n });\n })\n );\n });\n }\n}\n","import _ from 'lodash';\nimport { TSFInvalidDemensions, TSFInstanceAliasList, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class TSFDatasource extends BaseDatasource {\n Namespace = 'QCE/TSF';\n InstanceAliasList = TSFInstanceAliasList;\n InvalidDimensions = TSFInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n service: 'tsf',\n action: 'DescribeApplications',\n responseField: 'Content',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import {\n VCLBInstanceAliasList,\n VCLBInvalidDemensions,\n namespace,\n templateQueryIdMap,\n clbNamespaceMap,\n regionSupported,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport { t } from '../../../locale';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VCLBInstanceAliasList;\n InvalidDimensions = VCLBInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'clb',\n action: 'DescribeLoadBalancers',\n responseField: 'LoadBalancerSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n async getAllMetrics(region: string) {\n const serviceInfo = GetServiceAPIInfo(region, 'monitor');\n const { MetricSet: public_metrics } = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Namespace: clbNamespaceMap.public,\n },\n },\n serviceInfo.service,\n { region, action: 'DescribeBaseMetrics' }\n );\n const { MetricSet: private_metrics } = await this.doRequest(\n {\n url: this.url + serviceInfo.path,\n data: {\n Namespace: clbNamespaceMap.private,\n },\n },\n serviceInfo.service,\n { region, action: 'DescribeBaseMetrics' }\n );\n const res = Object.values(_.keyBy(_.concat(private_metrics, public_metrics), 'MetricName'));\n return res.map((t) => modifyDimensons(t));\n }\n async getMetrics(region = 'ap-guangzhou') {\n const rawSet = await this.getAllMetrics(region);\n return _.compact(rawSet);\n }\n}\n","import { VBCInstanceAliasList, VBCInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VBCInstanceAliasList;\n InvalidDimensions = VBCInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeCcns',\n responseField: 'CcnSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n getFilterDropdown({ field }) {\n return super.getRegions();\n }\n}\n","import {\n VPCNETDETECTInstanceAliasList,\n VPCNETInvalidDemensions,\n namespace,\n templateQueryIdMap,\n modifyDimensons,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VPCNETDETECTInstanceAliasList;\n InvalidDimensions = VPCNETInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeNetDetects',\n responseField: 'NetDetectSet',\n interceptor: {\n // response: (data: unknown[]) =>[\n // {\n // \"NetDetectId\": \"netd-12345678\",\n // },\n // ],\n },\n };\n MetricReqConfig = {\n resultFilter: modifyDimensons,\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import { VPNGWInstanceAliasList, VPNGWInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { GetServiceAPIInfo } from '../../common/constants';\nimport _ from 'lodash';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VPNGWInstanceAliasList;\n InvalidDimensions = VPNGWInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeVpnGateways',\n responseField: 'VpnGatewaySet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n\n getFilterDropdown({ field, region }) {\n if (field === 'zone') {\n const serviceInfo = GetServiceAPIInfo(region, 'cvm');\n return this.doRequest(\n {\n url: this.url + serviceInfo.path,\n },\n serviceInfo.service,\n { region, action: 'DescribeZones' }\n ).then((response) => {\n return _.filter(\n _.map(response.ZoneSet || [], (item) => {\n return { text: item.ZoneName, value: item.Zone, ZoneState: item.ZoneState, Zone: item.Zone };\n }),\n (item) => item.ZoneState === 'AVAILABLE'\n );\n });\n }\n return [];\n }\n}\n","import { VPNXInstanceAliasList, VPNXInvalidDemensions, namespace, templateQueryIdMap } from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\n\nexport default class DCDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = VPNXInstanceAliasList;\n InvalidDimensions = VPNXInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n // 此处service是接口的配置参数,需和plugin.json里一致,和constant.ts中SERVICES_API_INFO保持一致\n InstanceReqConfig = {\n service: 'vpc',\n action: 'DescribeVpnConnections',\n responseField: 'VpnConnectionSet',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n}\n","import _ from 'lodash';\nimport {\n WAFInstanceAliasList,\n WAFInvalidDemensions,\n templateQueryIdMap,\n namespace,\n regionSupported,\n} from './query_def';\nimport { BaseDatasource } from '../_base/datasource';\nimport { t } from '../../../locale';\n\nexport default class CDNDatasource extends BaseDatasource {\n Namespace = namespace;\n InstanceAliasList = WAFInstanceAliasList;\n InvalidDimensions = WAFInvalidDemensions;\n templateQueryIdMap = templateQueryIdMap;\n InstanceReqConfig = {\n // service: 'waf',\n action: 'DescribeDomains',\n responseField: 'Domains',\n };\n constructor(instanceSettings, backendSrv, templateSrv) {\n super(instanceSettings, backendSrv, templateSrv);\n }\n getRegions() {\n return Promise.resolve(regionSupported.map(({ value }) => ({ value, text: t(value) })));\n }\n async metricFindQuery(query: any, regex?: string) {\n return super.metricFindQuery({ ...query, ...{ region: 'ap-guangzhou' } }, regex);\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__125__;","import coreModule from 'grafana/app/core/core_module';\nimport { APIGATEWAYFilterFieldsDescriptor, templateQueryIdMap, queryEditorName, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.APIGATEWAYFilterFieldsDescriptor = APIGATEWAYFilterFieldsDescriptor;\n $scope.namespace = namespace;\n };\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n // console.log({namespace, service});\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraDropdown = async (target) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const instanceId = $scope.getInstanceId();\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getEnvironmentNameList')({ region, instanceId });\n\n const result = rs.map((o) => {\n return {\n text: o.EnvironmentName,\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { BWPFilterFieldsDescriptor } from './query_def';\n\nexport class BWPQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.BWPFilterFieldsDescriptor = BWPFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cvm', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function bwpQuery() {\n return {\n template: template,\n controller: BWPQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('bwpQuery', bwpQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CDBFieldsDescriptor } from './query_def';\n\nexport class CDBQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CDBFieldsDescriptor = CDBFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'ZoneIds':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cdb', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n`;\n\nexport function cdbQuery() {\n return {\n template: template,\n controller: CDBQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('cdbQuery', cdbQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CDNFilterFieldsDescriptor } from './query_def';\n\nexport class CDNQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CDNFilterFieldsDescriptor = CDNFilterFieldsDescriptor;\n };\n\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n`;\n\nexport function cdnQuery() {\n return {\n template: template,\n controller: CDNQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('cdnQuery', cdnQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CDNPROVINCEFilterFieldsDescriptor, queryEditorName, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'Isp',\n field: 'isp',\n },\n {\n label: 'Province',\n field: 'district',\n },\n];\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CDNPROVINCEFilterFieldsDescriptor = CDNPROVINCEFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, field });\n return rs;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CFSQueryDescriptor } from './query_def';\n\nexport class SCFQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CFSQueryDescriptor = CFSQueryDescriptor;\n };\n\n $scope.getVersions = async (target) => {\n // console.log(2222);\n\n // return [{ text: 1, value: 1 }];\n // console.log(target, 'target');\n const { instance, region } = target;\n const fetcher = $scope.datasource.getServiceFn('scf', 'getVersions');\n if (!instance || !region) return [];\n\n return fetcher(region, { FunctionName: JSON.parse(instance).FunctionName }).then((res) => {\n // console.log(res, 'res');\n\n return res;\n });\n };\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: SCFQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\ncoreModule.directive('cfsQuery', scfQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CKAFKAQueryDescriptor, templateQueryIdMap } from './query_def';\nimport { isTargetEqual } from '../../common/utils';\n\nconst ExtraFields = [\n {\n label: 'ConsumerGroup',\n field: 'consumerGroup',\n },\n {\n label: 'TopicId',\n field: 'topicId',\n },\n {\n label: 'Partition',\n field: 'partition',\n },\n];\n\nexport class CKAFKAQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CKAFKAQueryDescriptor = CKAFKAQueryDescriptor;\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n $scope.onInstanceChange = (n, o) => {\n if(isTargetEqual(n,o,'LoadBalancerId')) return;\n $scope.target.consumerGroup = '';\n $scope.target.topicId = '';\n $scope.target.topicName = '';\n $scope.target.partition = '';\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('ckafka', 'getVariable')(instance);\n if (Array.isArray(instance)) instance = instance[0];\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).InstanceId;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n const InstanceId = $scope.getInstanceId();\n const fetcher = $scope.datasource.getServiceFn('ckafka', 'getConsumerGroups');\n const region = $scope.datasource.getServiceFn('ckafka', 'getVariable')(target.region);\n const res = await fetcher(region, { InstanceId, groupname: target.consumerGroup, topicid: target.topicId });\n\n const { TopicList, GroupList, PartitionList } = res;\n const data = {\n GroupList: GroupList.map((group) => {\n group._InstanceAliasValue = group.GroupName;\n return {\n text: group.GroupName,\n value: JSON.stringify(group),\n };\n }),\n TopicList: TopicList.map((topic) => {\n topic._InstanceAliasValue = topic[templateQueryIdMap.topicId];\n return {\n text: topic[templateQueryIdMap.topicId],\n value: JSON.stringify(topic), // 为了获取多维度的值,这里完全可以使用JSON.stringify()将整个对象放进去\n };\n }),\n PartitionList: PartitionList.map((par) => {\n par._InstanceAliasValue = par[templateQueryIdMap.partition];\n return {\n text: String(par[templateQueryIdMap.partition]),\n value: JSON.stringify(par),\n };\n }),\n };\n\n switch (field) {\n case 'consumerGroup':\n return data.GroupList;\n case 'topicId':\n return data.TopicList;\n case 'partition':\n return data.PartitionList;\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: CKAFKAQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n instance: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', (newValue, oldValue) => {\n scope.onInstanceChange?.(newValue, oldValue);\n });\n },\n };\n}\ncoreModule.directive('ckafkaQuery', scfQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { get, chain } from 'lodash';\nimport { LOADBALANCEFieldsDescriptor, templateQueryIdMap, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\nimport { isTargetEqual } from '../../common/utils';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.LOADBALANCEFieldsDescriptor = LOADBALANCEFieldsDescriptor;\n $scope.serversList = [];\n };\n $scope.onFieldChange = (field) => {\n $scope.onRefresh();\n };\n $scope.onInstanceChange = (n, o) => {\n if(isTargetEqual(n,o,'InstanceId')) return;\n $scope.target.listener = '';\n $scope.target.servers = '';\n $scope.target.serverPort = '';\n };\n $scope.getVariableId = (data, type) => {\n let variableData = data;\n const service = GetServiceFromNamespace(namespace);\n\n variableData = $scope.datasource.getServiceFn(service, 'getVariable')(variableData);\n if (!variableData) {\n return '';\n }\n try {\n variableData = JSON.parse(variableData)[templateQueryIdMap[type]];\n } catch (error) {\n // console.log();\n }\n return variableData;\n };\n $scope.getExtraDropdown = async (target) => {\n const { instance } = $scope.target;\n const service = GetServiceFromNamespace(namespace);\n const instanceId = $scope.getVariableId(instance, 'instance');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getListenerList')({ region, instanceId });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap.listener];\n return {\n text: o[templateQueryIdMap.listener],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n $scope.getServersDropdown = async (target) => {\n const { instance, listener } = $scope.target;\n const service = GetServiceFromNamespace(namespace);\n const instanceId = $scope.getVariableId(instance, 'instance');\n const listenerId = $scope.getVariableId(listener, 'listener');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const serversList = await $scope.datasource.getServiceFn(\n service,\n 'getServerList'\n )({ region, instanceId, listenerId });\n $scope.serversList = serversList;\n const res = chain(serversList)\n .map((item) => {\n item._InstanceAliasValue = get(item, 'PrivateIpAddresses.0');\n return {\n text: get(item, 'PrivateIpAddresses.0'),\n value: JSON.stringify(item),\n };\n })\n .uniqBy('text')\n .value();\n return res;\n };\n $scope.getServerPortDropdown = async (target) => {\n const { servers } = $scope.target;\n let serverPortList: any[] = [];\n try {\n const serversSource = JSON.parse(servers);\n serverPortList = chain($scope.serversList)\n .filter((item) => get(serversSource, 'PrivateIpAddresses.0') === get(item, 'PrivateIpAddresses.0'))\n .map((item) => {\n item._InstanceAliasValue = get(item, 'Port');\n return {\n text: `${get(item, 'Port')}`,\n value: JSON.stringify(item),\n };\n })\n .value();\n } catch (error) {}\n return serverPortList;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n namespace: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', (newValue, oldValue) => {\n scope.onInstanceChange?.(newValue, oldValue);\n });\n },\n };\n}\ncoreModule.directive('clbQuery', sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CLSFilterFieldsDescriptor, queryEditorName } from './query_def';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.GSEFilterFieldsDescriptor = CLSFilterFieldsDescriptor;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n \n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import createQuery from '../_base/query';\nimport { InstanceQueryDescriptor } from './query_def';\n\ncreateQuery('cmqQuery', {\n fieldDescriptor: InstanceQueryDescriptor,\n instanceDocUrl: 'https://cloud.tencent.com/document/api/406/42624',\n namespace: 'QCE/CMQ',\n});\n","import coreModule from 'grafana/app/core/core_module';\nimport { InstanceQueryDescriptor } from './query_def';\n\nconst ExtraFields = [\n {\n label: 'Subscription(订阅)',\n field: 'subscriptionId',\n },\n];\n\nexport class CmqTopicQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.InstanceQueryDescriptor = InstanceQueryDescriptor;\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n // 各个实例下的订阅,由于不想每次都重复发请求,所以这里做了一层缓存,数据结构为{ [instanceId]: { } }\n $scope.cacheMap = {};\n\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getTopicName = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('cmqTopic', 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).TopicName;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.onExtraFieldChange = (field) => {\n $scope.onRefresh();\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n if (field === 'subscriptionId') {\n const TopicName = $scope.getTopicName();\n let data = $scope.cacheMap[TopicName];\n\n if (!data) {\n const region = $scope.datasource.getServiceFn('cmqTopic', 'getVariable')(target.region);\n const fetcher = $scope.datasource.getServiceFn('cmqTopic', 'fetchAllSubscription');\n const datas = await fetcher(region, { TopicName });\n data = datas.map((item) => {\n item._InstanceAliasValue = item.SubscriptionId;\n return { text: item.SubscriptionId, value: JSON.stringify(item) };\n });\n }\n\n // 缓存\n $scope.cacheMap[TopicName] = data;\n return data;\n }\n return [];\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: CmqTopicQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('cmqTopicQuery', scfQuery);\n","import _ from 'lodash';\n\nfunction GetInstanceQueryParams(queries: any = {}) {\n const params: any = {};\n if (!_.isEmpty(queries)) {\n params.Limit = _.get(queries, 'Limit', 20) || 20;\n params.Offset = _.get(queries, 'Offset', 0) || 0;\n queries = _.omit(queries, ['Offset', 'Limit']);\n _.forEach(queries, (item: any, key) => {\n if (_.isArray(item)) {\n item = _.compact(item);\n if (item.length > 0) {\n params[key] = _.uniq(item);\n }\n } else if (_.isObject(item)) {\n if (_.isNumber(_.get(item, 'value', undefined)) || !_.isEmpty(_.get(item, 'value', undefined))) {\n params[key] = _.get(item, 'value');\n }\n } else if (_.isNumber(item) || !_.isEmpty(item)) {\n params[key] = item;\n }\n });\n }\n return params;\n}\n\n// 与名称挂钩的变量\nconst InstanceAliasList = ['BucketName'];\nexport { InstanceAliasList, GetInstanceQueryParams };\n\n// 界面状态模型,default\nexport default {\n region: '',\n metricName: '',\n metricUnit: '',\n period: undefined,\n dimensionObject: null,\n instance: '',\n instanceAlias: 'BucketName',\n queries: {},\n};\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { CVMFilterFieldsDescriptor } from './query_def';\n\nexport class CVMQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.CVMFilterFieldsDescriptor = CVMFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cvm', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function cvmQuery() {\n return {\n template: template,\n controller: CVMQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('cvmQuery', cvmQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { DCDBFilterFieldsDescriptor, queryEditorName, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'nodeid',\n field: 'NodeId',\n action: 'DescribeDCDBInstanceNodeInfo',\n },\n {\n label: 'shardid',\n field: 'ShardId',\n action: 'DescribeDCDBShards',\n },\n];\nconst dropdownTextConfig = {\n DescribeDCDBInstanceNodeInfo: 'NodeId',\n DescribeDCDBShards: 'ShardInstanceId',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.DCDBFilterFieldsDescriptor = DCDBFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const instanceId = $scope.getInstanceId();\n const payload: any = {\n InstanceId: instanceId,\n Limit: 100,\n };\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { ECMBLOCKSTORAGEFilterFieldsDescriptor, queryEditorName, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n // {\n // label: 'nodeid',\n // field: 'NodeId',\n // action: 'DescribeInstanceNodeInfo',\n // },\n {\n label: 'diskId',\n field: 'diskId',\n },\n];\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.ECMBLOCKSTORAGEFilterFieldsDescriptor = ECMBLOCKSTORAGEFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n // $scope.getInstanceId = () => {\n // let { instance } = $scope.target;\n // const service = GetServiceFromNamespace($scope.namespace);\n // instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n // if (!instance) {\n // return '';\n // }\n // try {\n // instance = JSON.parse(instance)[templateQueryIdMap.instance];\n // } catch (error) {\n // console.log();\n // }\n // return instance;\n // };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = (target, action) => {\n let { instance } = target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n try {\n instance = JSON.parse(instance);\n const { DataDisks: dataDisks } = instance;\n return dataDisks.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap.diskId];\n return {\n text: o[templateQueryIdMap.diskId],\n value: JSON.stringify(o),\n };\n });\n } catch (error) {\n // console.log('instance error', instance);\n const payload: any = {\n InstanceId: instance,\n };\n const rs = $scope.datasource.getServiceFn(service, 'getDiskList')({ payload });\n const result = rs.map((o) => {\n return {\n text: o[templateQueryIdMap.diskId],\n value: JSON.stringify(o),\n };\n });\n return result;\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { GSEFilterFieldsDescriptor, templateQueryIdMap, queryEditorName, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'fleetId',\n field: 'FleetId',\n },\n {\n label: 'queueName',\n field: 'Name',\n },\n];\nconst actionMaps = {\n FleetId: 'getFleetList',\n Name: 'getQueueNameList',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.GSEFilterFieldsDescriptor = GSEFilterFieldsDescriptor;\n $scope.namespace = namespace;\n };\n\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n // console.log({namespace, service});\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraDropdown = async (target, field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const instanceId = $scope.getInstanceId();\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n // const rs = await $scope.datasource.getServiceFn(service, 'getEnvironmentNameList')({ region, instanceId });\n let rs = await $scope.datasource.getServiceFn(service, actionMaps[field])({ region, instanceId });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[field]];\n return {\n text: o[templateQueryIdMap[field]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { LBFilterDescriptor } from './query_def';\n\nexport class LBQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n // $scope.LBQueryDescriptor = LBQueryDescriptor;\n $scope.LBFilterDescriptor = LBFilterDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('cvm', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n\n\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function lbQuery() {\n return {\n template: template,\n controller: LBQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('lbQuery', lbQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { LighthouseFilterFieldsDescriptor } from './query_def';\n\nexport class LighthouseQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.LighthouseFilterFieldsDescriptor = LighthouseFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'zone':\n return $scope.getZones();\n default:\n return [];\n }\n };\n\n $scope.getZones = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getZones('lighthouse', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n`;\n\nexport function lighthouseQuery() {\n return {\n template: template,\n controller: LighthouseQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('lighthouseQuery', lighthouseQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { map, get, find, times } from 'lodash';\nimport { MONGODBFieldsDescriptor, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nexport class MongoDBQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.MONGODBFieldsDescriptor = MONGODBFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.onInstanceChange = (n, o) => {\n if (n === o) {\n return;\n }\n $scope.target.replica = '';\n $scope.target.node = '';\n };\n\n $scope.getVariableId = (data, type) => {\n let variableData = data;\n const service = GetServiceFromNamespace('QCE/CMONGO');\n\n variableData = $scope.datasource.getServiceFn(service, 'getVariable')(variableData);\n if (!variableData) {\n return '';\n }\n try {\n variableData = JSON.parse(variableData)[templateQueryIdMap[type]];\n } catch (error) {\n // console.log();\n }\n return variableData;\n };\n\n $scope.getExtraDropdown = async (target, type) => {\n const { instance, replica } = $scope.target;\n const service = GetServiceFromNamespace('QCE/CMONGO');\n const instanceId = $scope.getVariableId(instance, 'instance');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const [res] = await $scope.datasource.getServiceFn(service, 'getInstances')(region, {\n InstanceIds: [instanceId],\n });\n if (type === 'replica') {\n return map(get(res, 'ReplicaSets', []), (item) => {\n item._InstanceAliasValue = item.ReplicaSetId;\n return { text: item.ReplicaSetId, value: JSON.stringify(item) };\n });\n }\n if (type === 'node' && replica !== '') {\n const replicaId = $scope.getVariableId(replica, 'replica');\n const targetReplica = find(get(res, 'ReplicaSets', []), { ReplicaSetId: replicaId });\n const options = times(targetReplica.SecondaryNum, (index) => {\n const nodeId = `${targetReplica.ReplicaSetId}-node-slave${index}`;\n return {\n text: nodeId,\n value: JSON.stringify({ NodeId: nodeId, _InstanceAliasValue: `${targetReplica.ReplicaSetId} - ${nodeId}` }),\n };\n });\n return [\n {\n text: `${targetReplica.ReplicaSetId}-node-primary`,\n value: JSON.stringify({\n NodeId: `${targetReplica.ReplicaSetId}-node-primary`,\n _InstanceAliasValue: `${targetReplica.ReplicaSetId} - ${`${targetReplica.ReplicaSetId}-node-primary`}`,\n }),\n },\n ...options,\n ];\n }\n return [];\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n`;\n\nexport function mongodbQuery() {\n return {\n template: template,\n controller: MongoDBQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onRefresh: '&',\n onChange: '&',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', (newValue, oldValue) => {\n scope.onInstanceChange?.(newValue, oldValue);\n });\n },\n };\n}\n\ncoreModule.directive('mongodbQuery', mongodbQuery);\n","import { InstanceQueryDescriptor, templateQueryIdMap } from './query_def';\nimport coreModule from 'grafana/app/core/core_module';\n\nconst ExtraFields = [\n {\n label: 'NodeIP',\n field: 'nodeIP',\n },\n];\n\nexport class MrQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.InstanceQueryDescriptor = InstanceQueryDescriptor;\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n // 各个实例下的订阅,由于不想每次都重复发请求,所以这里做了一层缓存,数据结构为{ [instanceId]: { } }\n $scope.cacheMap = {};\n\n $scope.getExtraFields = () => {\n return Object.keys($scope.dims ?? {}).some((item: string) => item.startsWith('host4')) ? ExtraFields : [];\n // return ExtraFields;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('mrHDFS', 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).ClusterId;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.onExtraFieldChange = (field) => {\n $scope.onRefresh();\n };\n\n $scope.getExtraDropdown = async (target, field) => {\n if (field === 'nodeIP') {\n const InstanceId = $scope.getInstanceId();\n let data = $scope.cacheMap[InstanceId];\n\n if (!data) {\n const region = $scope.datasource.getServiceFn('mrHDFS', 'getVariable')(target.region);\n const fetcher = $scope.datasource.getServiceFn('mrHDFS', 'fetchAllNodes');\n const dataT = await fetcher(region, { InstanceId, NodeFlag: 'all' });\n data = dataT.map((item) => {\n item._InstanceAliasValue = item[templateQueryIdMap.node];\n return {\n text: item[templateQueryIdMap.node],\n value: JSON.stringify(item),\n };\n });\n }\n\n // 缓存\n $scope.cacheMap[InstanceId] = data;\n return data;\n }\n return [];\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n
\n\n \n \n
\n
\n
\n
\n\n
\n`;\n\nexport function mrQuery() {\n return {\n template: template,\n controller: MrQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('mrQuery', mrQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { NATGatewayFilterFieldsDescriptor } from './query_def';\n\nexport class NatGatewayQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.NATGatewayFilterFieldsDescriptor = NATGatewayFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function natGatewayQuery() {\n return {\n template: template,\n controller: NatGatewayQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('natGatewayQuery', natGatewayQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { OVCDNFilterFieldsDescriptor } from './query_def';\n\nexport class OVCDNQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.OVCDNFilterFieldsDescriptor = OVCDNFilterFieldsDescriptor;\n };\n\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n\n\n\n
\n\n
\n`;\n\nexport function ovCdnQuery() {\n return {\n template: template,\n controller: OVCDNQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('ovCdnQuery', ovCdnQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { PCXFieldsDescriptor } from './query_def';\n\nexport class PCXQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.PCXFieldsDescriptor = PCXFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n case 'vpcId':\n return $scope.getVpcIds();\n default:\n return [];\n }\n };\n\n $scope.getVpcIds = () => {\n if (!$scope.region) {\n return [];\n }\n return $scope.datasource.getVpcIds('pcx', $scope.region);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function pcxQuery() {\n return {\n template: template,\n controller: PCXQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('pcxQuery', pcxQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { RedisFieldsDescriptor } from './query_def';\n\nexport class RedisQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.RedisFieldsDescriptor = RedisFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function redisQuery() {\n return {\n template: template,\n controller: RedisQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('redisQuery', redisQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { map } from 'lodash';\nimport { RedisMemFieldsDescriptor, templateQueryIdMap, NodeType, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nexport class RedisMemQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.RedisMemFieldsDescriptor = RedisMemFieldsDescriptor;\n };\n\n $scope.clearExtrasAlias = () => {\n $scope.target.rnodeid = '';\n $scope.target.pnodeid = '';\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getDropdown = (field) => {\n switch (field) {\n default:\n return [];\n }\n };\n\n $scope.getVariableId = (data, type) => {\n let variableData = data;\n const service = GetServiceFromNamespace(namespace);\n\n variableData = $scope.datasource.getServiceFn(service, 'getVariable')(variableData);\n if (!variableData) {\n return '';\n }\n try {\n variableData = JSON.parse(variableData)[templateQueryIdMap[type]];\n } catch (error) {}\n return variableData;\n };\n\n $scope.getExtraDropdown = async (target, nodetype) => {\n const { instance } = $scope.target;\n const service = GetServiceFromNamespace(namespace);\n const instanceId = $scope.getVariableId(instance, 'instance');\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const rs = await $scope.datasource.getServiceFn(service, 'getInstanceNodeInfo')({ region, instanceId });\n\n const ndoeTypeIndex = NodeType.indexOf(nodetype);\n return ndoeTypeIndex === -1 ? [] : map(rs[ndoeTypeIndex], (item) => ({ text: item.NodeId, value: item.NodeId }));\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n
\n\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n`;\n\nexport function redisMemQuery() {\n return {\n template: template,\n controller: RedisMemQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', () => {\n scope.clearExtrasAlias?.();\n });\n scope.$watch('target.metricName', () => {\n scope.clearExtrasAlias?.();\n });\n },\n };\n}\n\ncoreModule.directive('redisMemQuery', redisMemQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { SCFQueryDescriptor, templateQueryIdMap } from './query_def';\n\nexport class SCFQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.SCFQueryDescriptor = SCFQueryDescriptor;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n instance = $scope.datasource.getServiceFn('scf', 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance).FunctionName;\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n\n $scope.getVersions = async (target) => {\n // console.log(2222);\n\n // return [{ text: 1, value: 1 }];\n // console.log(target, 'target');\n // let { instance, region } = target;\n const FunctionName = $scope.getInstanceId();\n const region = $scope.datasource.getServiceFn('scf', 'getVariable')(target.region);\n if (!FunctionName || !region) return [];\n\n const fetcher = $scope.datasource.getServiceFn('scf', 'getVersions');\n\n return fetcher(region, { FunctionName }).then((res) => {\n // console.log(res, 'res');\n const result = res.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap.version];\n return {\n text: o[templateQueryIdMap.version],\n value: JSON.stringify(o),\n };\n });\n return result;\n });\n };\n // $scope.onChecked = (srcField, dstField) => {\n // if ($scope.target.queries[srcField] === true) {\n // $scope.target.queries[dstField] = false;\n // }\n // $scope.onChange();\n // };\n\n // $scope.getDropdown = (field) => {\n // switch (field) {\n // case 'zone':\n // return $scope.getZones();\n // default:\n // return [];\n // }\n // };\n\n // $scope.getZones = () => {\n // if (!$scope.region) {\n // return [];\n // }\n // return $scope.datasource.getZones('cvm', $scope.region);\n // };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: SCFQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n },\n };\n}\ncoreModule.directive('scfQuery', scfQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TDMQFilterFieldsDescriptor, queryEditorName, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'environmentId',\n field: 'environmentId',\n action: 'DescribeEnvironments',\n },\n {\n label: 'topicName',\n field: 'topicName',\n action: 'DescribeTopics',\n },\n];\n\nconst dropdownTextConfig = {\n DescribeTopics: 'topicName',\n DescribeEnvironments: 'environmentId',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TDMQFilterFieldsDescriptor = TDMQFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const payload: any = {\n Limit: 100,\n ClusterId: $scope.getInstanceId(),\n };\n if (action === 'DescribeTopics') {\n let evId = $scope.target.environmentId;\n try {\n evId = JSON.parse(evId);\n evId = evId[templateQueryIdMap.environmentId];\n } catch (e) {}\n payload.EnvironmentId = evId;\n }\n\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n label: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive(queryEditorName, sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TDMQFilterFieldsDescriptor, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'Node',\n field: 'node',\n action: 'DescribeRabbitMQNodeList',\n },\n];\n\nconst dropdownTextConfig = {\n DescribeRabbitMQNodeList: 'node',\n};\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TDMQFilterFieldsDescriptor = TDMQFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.clearExtrasAlias = () => {\n $scope.target.node = '';\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const payload: any = {\n Limit: 100,\n InstanceId: $scope.getInstanceId(),\n };\n\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n label: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', () => {\n scope.clearExtrasAlias?.();\n });\n scope.$watch('target.metricName', () => {\n scope.clearExtrasAlias?.();\n });\n },\n };\n}\ncoreModule.directive('tdmqRabbitmqQuery', sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TDMQFilterFieldsDescriptor, namespace, templateQueryIdMap } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields = [\n {\n label: 'Namespace',\n field: 'namespace',\n action: 'DescribeRocketMQNamespaces',\n },\n {\n label: 'Group',\n field: 'group',\n action: 'DescribeRocketMQGroups',\n },\n];\n\nconst dropdownTextConfig = {\n DescribeRocketMQNamespaces: 'namespace',\n DescribeRocketMQGroups: 'group',\n};\nexport class TdmqRocketmqQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TDMQFilterFieldsDescriptor = TDMQFilterFieldsDescriptor;\n $scope.ExtraFields = ExtraFields;\n $scope.namespace = namespace;\n };\n\n $scope.clearExtrasAlias = () => {\n $scope.target.namespace = '';\n $scope.target.group = '';\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.getInstanceId = () => {\n let { instance } = $scope.target;\n const service = GetServiceFromNamespace($scope.namespace);\n instance = $scope.datasource.getServiceFn(service, 'getVariable')(instance);\n if (!instance) {\n return '';\n }\n try {\n instance = JSON.parse(instance)[templateQueryIdMap.instance];\n } catch (error) {\n // console.log();\n }\n return instance;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}) || item.label in ($scope.dims ?? {}));\n };\n $scope.getExtraDropdown = async (target, action) => {\n const service = GetServiceFromNamespace($scope.namespace);\n const region = $scope.datasource.getServiceFn(service, 'getVariable')(target.region);\n const payload: any = {\n Limit: 100,\n ClusterId: $scope.getInstanceId(),\n };\n if (action === 'DescribeRocketMQGroups') {\n let namespace = $scope.target.namespace;\n try {\n namespace = JSON.parse(namespace)[templateQueryIdMap.namespace];\n } catch (e) {}\n payload.NamespaceId = $scope.datasource.getServiceFn(service, 'getVariable')(namespace);\n }\n\n const rs = await $scope.datasource.getServiceFn(service, 'getConsumerList')({ region, action, payload });\n const result = rs.map((o) => {\n o._InstanceAliasValue = o[templateQueryIdMap[dropdownTextConfig[action]]];\n return {\n text: o[templateQueryIdMap[dropdownTextConfig[action]]],\n value: JSON.stringify(o),\n };\n });\n return result;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function tdmqRocketmqQuery() {\n return {\n template: template,\n controller: TdmqRocketmqQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n link: (scope, element, attrs) => {\n scope.$watch('target.instance', () => {\n scope.clearExtrasAlias?.();\n });\n scope.$watch('target.metricName', () => {\n scope.clearExtrasAlias?.();\n });\n },\n };\n}\ncoreModule.directive('tdmqRocketmqQuery', tdmqRocketmqQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { isEmpty } from 'lodash';\nimport { TKEFilterFieldsDescriptor } from './query_def';\n\nexport class QueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TKEFilterFieldsDescriptor = TKEFilterFieldsDescriptor;\n };\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.addCondition = () => {\n $scope.target.conditions.push({ Key: '', Operator: '=', Value: '' });\n };\n\n $scope.deleteCondition = (index) => {\n const targetCondition = $scope.target.conditions[index];\n if (isEmpty(targetCondition.Key) || isEmpty(targetCondition.Operator) || isEmpty(targetCondition.Value)) {\n $scope.target.conditions.splice(index, 1);\n } else {\n $scope.target.conditions.splice(index, 1);\n $scope.onRefresh();\n }\n };\n\n $scope.getOperator = () => {\n return Promise.resolve([\n { text: '=', value: '=' },\n { text: 'in', value: 'in' },\n ]);\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n \n
\n
\n \n
\n \n \n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n`;\n\nexport function sQuery() {\n return {\n template: template,\n controller: QueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('tkeQuery', sQuery);\n","import coreModule from 'grafana/app/core/core_module';\nimport { TSFFieldsDescriptor } from './query_def';\n\nexport class TSFQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.TSFFieldsDescriptor = TSFFieldsDescriptor;\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n \n
\n
\n \n \n \n \n \n
\n
\n\n
\n`;\n\nexport function tsfQuery() {\n return {\n template: template,\n controller: TSFQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n onChange: '&',\n },\n };\n}\n\ncoreModule.directive('tsfQuery', tsfQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import coreModule from 'grafana/app/core/core_module';\nimport { VBCFilterFieldsDescriptor, namespace } from './query_def';\nimport { GetServiceFromNamespace } from '../../common/constants';\n\nconst ExtraFields: any = [\n // {\n // label: 'SRegion',\n // field: 'SRegion',\n // },\n // {\n // label: 'DRegion',\n // field: 'DRegion',\n // },\n];\n\nexport class VBCQueryCtrl {\n /** @ngInject */\n constructor($scope, $rootScope) {\n $scope.init = () => {\n $scope.VBCFilterFieldsDescriptor = VBCFilterFieldsDescriptor;\n $scope.namespace = namespace;\n };\n $scope.getExtraFields = () => {\n return ExtraFields.filter((item) => item.field in ($scope.dims ?? {}));\n };\n\n $scope.getExtraDropdown = (field) => {\n const service = GetServiceFromNamespace($scope.namespace);\n // return $scope.datasource.getServiceFn(service, 'getFilterDropdown')({ field })\n return $scope.datasource.getFilterDropdown(service, { field });\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n`;\n\nexport function scfQuery() {\n return {\n template: template,\n controller: VBCQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n onRefresh: '&',\n dims: '=',\n },\n };\n}\ncoreModule.directive('vbcQuery', scfQuery);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","import queryFactory from '../_base/query';\nimport { queryEditorConfig, queryEditorName } from './query_def';\nqueryFactory(queryEditorName, queryEditorConfig);\n","var map = {\n\t\".\": 19,\n\t\"./\": 19,\n\t\"./MonitorDatasource\": 182,\n\t\"./MonitorDatasource.ts\": 182,\n\t\"./_base/datasource\": 3,\n\t\"./_base/datasource.ts\": 3,\n\t\"./_base/query\": 7,\n\t\"./_base/query.ts\": 7,\n\t\"./_base/query_filter\": 185,\n\t\"./_base/query_filter.ts\": 185,\n\t\"./_base/types\": 186,\n\t\"./_base/types.ts\": 186,\n\t\"./apigateway/datasource\": 70,\n\t\"./apigateway/datasource.ts\": 70,\n\t\"./apigateway/query\": 126,\n\t\"./apigateway/query.ts\": 126,\n\t\"./apigateway/query_def\": 21,\n\t\"./apigateway/query_def.ts\": 21,\n\t\"./bmIntraLb/datasource\": 71,\n\t\"./bmIntraLb/datasource.ts\": 71,\n\t\"./bmIntraLb/query\": 127,\n\t\"./bmIntraLb/query.ts\": 127,\n\t\"./bmIntraLb/query_def\": 29,\n\t\"./bmIntraLb/query_def.ts\": 29,\n\t\"./bm_lb/datasource\": 72,\n\t\"./bm_lb/datasource.ts\": 72,\n\t\"./bm_lb/query\": 128,\n\t\"./bm_lb/query.ts\": 128,\n\t\"./bm_lb/query_def\": 30,\n\t\"./bm_lb/query_def.ts\": 30,\n\t\"./bm_pcx/datasource\": 73,\n\t\"./bm_pcx/datasource.ts\": 73,\n\t\"./bm_pcx/query\": 129,\n\t\"./bm_pcx/query.ts\": 129,\n\t\"./bm_pcx/query_def\": 31,\n\t\"./bm_pcx/query_def.ts\": 31,\n\t\"./bwp/datasource\": 74,\n\t\"./bwp/datasource.ts\": 74,\n\t\"./bwp/query\": 130,\n\t\"./bwp/query.ts\": 130,\n\t\"./bwp/query_def\": 61,\n\t\"./bwp/query_def.ts\": 61,\n\t\"./cbs/datasource\": 75,\n\t\"./cbs/datasource.ts\": 75,\n\t\"./cbs/query\": 131,\n\t\"./cbs/query.ts\": 131,\n\t\"./cbs/query_def\": 32,\n\t\"./cbs/query_def.ts\": 32,\n\t\"./cdb/datasource\": 76,\n\t\"./cdb/datasource.ts\": 76,\n\t\"./cdb/query\": 132,\n\t\"./cdb/query.ts\": 132,\n\t\"./cdb/query_def\": 42,\n\t\"./cdb/query_def.ts\": 42,\n\t\"./cdn/datasource\": 77,\n\t\"./cdn/datasource.ts\": 77,\n\t\"./cdn/query\": 133,\n\t\"./cdn/query.ts\": 133,\n\t\"./cdn/query_def\": 62,\n\t\"./cdn/query_def.ts\": 62,\n\t\"./cdn_province/datasource\": 78,\n\t\"./cdn_province/datasource.ts\": 78,\n\t\"./cdn_province/query\": 134,\n\t\"./cdn_province/query.ts\": 134,\n\t\"./cdn_province/query_def\": 33,\n\t\"./cdn_province/query_def.ts\": 33,\n\t\"./ceip_summary/datasource\": 79,\n\t\"./ceip_summary/datasource.ts\": 79,\n\t\"./ceip_summary/query\": 135,\n\t\"./ceip_summary/query.ts\": 135,\n\t\"./ceip_summary/query_def\": 34,\n\t\"./ceip_summary/query_def.ts\": 34,\n\t\"./ces/datasource\": 80,\n\t\"./ces/datasource.ts\": 80,\n\t\"./ces/query\": 136,\n\t\"./ces/query.ts\": 136,\n\t\"./ces/query_def\": 43,\n\t\"./ces/query_def.ts\": 43,\n\t\"./cfs/datasource\": 81,\n\t\"./cfs/datasource.ts\": 81,\n\t\"./cfs/query\": 137,\n\t\"./cfs/query.ts\": 137,\n\t\"./cfs/query_def\": 55,\n\t\"./cfs/query_def.ts\": 55,\n\t\"./ckafka/datasource\": 82,\n\t\"./ckafka/datasource.ts\": 82,\n\t\"./ckafka/query\": 138,\n\t\"./ckafka/query.ts\": 138,\n\t\"./ckafka/query_def\": 10,\n\t\"./ckafka/query_def.ts\": 10,\n\t\"./clb/datasource\": 83,\n\t\"./clb/datasource.ts\": 83,\n\t\"./clb/query\": 139,\n\t\"./clb/query.ts\": 139,\n\t\"./clb/query_def\": 12,\n\t\"./clb/query_def.ts\": 12,\n\t\"./cls/datasource\": 84,\n\t\"./cls/datasource.ts\": 84,\n\t\"./cls/query\": 140,\n\t\"./cls/query.ts\": 140,\n\t\"./cls/query_def\": 27,\n\t\"./cls/query_def.ts\": 27,\n\t\"./cmq/datasource\": 85,\n\t\"./cmq/datasource.ts\": 85,\n\t\"./cmq/query\": 141,\n\t\"./cmq/query.ts\": 141,\n\t\"./cmq/query_def\": 56,\n\t\"./cmq/query_def.ts\": 56,\n\t\"./cmq_topic/datasource\": 86,\n\t\"./cmq_topic/datasource.ts\": 86,\n\t\"./cmq_topic/query\": 142,\n\t\"./cmq_topic/query.ts\": 142,\n\t\"./cmq_topic/query_def\": 35,\n\t\"./cmq_topic/query_def.ts\": 35,\n\t\"./cos/datasource\": 87,\n\t\"./cos/datasource.ts\": 87,\n\t\"./cos/query_def\": 143,\n\t\"./cos/query_def.ts\": 143,\n\t\"./cpm/datasource\": 88,\n\t\"./cpm/datasource.ts\": 88,\n\t\"./cpm/query\": 144,\n\t\"./cpm/query.ts\": 144,\n\t\"./cpm/query_def\": 36,\n\t\"./cpm/query_def.ts\": 36,\n\t\"./cvm/datasource\": 89,\n\t\"./cvm/datasource.ts\": 89,\n\t\"./cvm/query\": 145,\n\t\"./cvm/query.ts\": 145,\n\t\"./cvm/query_def\": 57,\n\t\"./cvm/query_def.ts\": 57,\n\t\"./cynosdb_mysql/datasource\": 90,\n\t\"./cynosdb_mysql/datasource.ts\": 90,\n\t\"./cynosdb_mysql/query\": 146,\n\t\"./cynosdb_mysql/query.ts\": 146,\n\t\"./cynosdb_mysql/query_def\": 24,\n\t\"./cynosdb_mysql/query_def.ts\": 24,\n\t\"./dc/datasource\": 91,\n\t\"./dc/datasource.ts\": 91,\n\t\"./dc/query\": 147,\n\t\"./dc/query.ts\": 147,\n\t\"./dc/query_def\": 44,\n\t\"./dc/query_def.ts\": 44,\n\t\"./dcdb/datasource\": 92,\n\t\"./dcdb/datasource.ts\": 92,\n\t\"./dcdb/query\": 148,\n\t\"./dcdb/query.ts\": 148,\n\t\"./dcdb/query_def\": 15,\n\t\"./dcdb/query_def.ts\": 15,\n\t\"./dcg/datasource\": 93,\n\t\"./dcg/datasource.ts\": 93,\n\t\"./dcg/query\": 149,\n\t\"./dcg/query.ts\": 149,\n\t\"./dcg/query_def\": 45,\n\t\"./dcg/query_def.ts\": 45,\n\t\"./dcx/datasource\": 94,\n\t\"./dcx/datasource.ts\": 94,\n\t\"./dcx/query\": 150,\n\t\"./dcx/query.ts\": 150,\n\t\"./dcx/query_def\": 46,\n\t\"./dcx/query_def.ts\": 46,\n\t\"./ecdn/datasource\": 95,\n\t\"./ecdn/datasource.ts\": 95,\n\t\"./ecdn/query\": 151,\n\t\"./ecdn/query.ts\": 151,\n\t\"./ecdn/query_def\": 37,\n\t\"./ecdn/query_def.ts\": 37,\n\t\"./ecm/datasource\": 96,\n\t\"./ecm/datasource.ts\": 96,\n\t\"./ecm/query\": 152,\n\t\"./ecm/query.ts\": 152,\n\t\"./ecm/query_def\": 38,\n\t\"./ecm/query_def.ts\": 38,\n\t\"./ecm_block_storage/datasource\": 97,\n\t\"./ecm_block_storage/datasource.ts\": 97,\n\t\"./ecm_block_storage/query\": 153,\n\t\"./ecm_block_storage/query.ts\": 153,\n\t\"./ecm_block_storage/query_def\": 20,\n\t\"./ecm_block_storage/query_def.ts\": 20,\n\t\"./ecm_lb/datasource\": 98,\n\t\"./ecm_lb/datasource.ts\": 98,\n\t\"./ecm_lb/query\": 154,\n\t\"./ecm_lb/query.ts\": 154,\n\t\"./ecm_lb/query_def\": 47,\n\t\"./ecm_lb/query_def.ts\": 47,\n\t\"./gse/datasource\": 99,\n\t\"./gse/datasource.ts\": 99,\n\t\"./gse/query\": 155,\n\t\"./gse/query.ts\": 155,\n\t\"./gse/query_def\": 14,\n\t\"./gse/query_def.ts\": 14,\n\t\"./index\": 19,\n\t\"./index.ts\": 19,\n\t\"./lb/datasource\": 100,\n\t\"./lb/datasource.ts\": 100,\n\t\"./lb/query\": 156,\n\t\"./lb/query.ts\": 156,\n\t\"./lb/query_def\": 63,\n\t\"./lb/query_def.ts\": 63,\n\t\"./lighthouse/datasource\": 101,\n\t\"./lighthouse/datasource.ts\": 101,\n\t\"./lighthouse/query\": 157,\n\t\"./lighthouse/query.ts\": 157,\n\t\"./lighthouse/query_def\": 54,\n\t\"./lighthouse/query_def.ts\": 54,\n\t\"./mongodb/datasource\": 102,\n\t\"./mongodb/datasource.ts\": 102,\n\t\"./mongodb/query\": 158,\n\t\"./mongodb/query.ts\": 158,\n\t\"./mongodb/query_def\": 48,\n\t\"./mongodb/query_def.ts\": 48,\n\t\"./mr/datasource\": 103,\n\t\"./mr/datasource.ts\": 103,\n\t\"./mr/query\": 159,\n\t\"./mr/query.ts\": 159,\n\t\"./mr/query_def\": 22,\n\t\"./mr/query_def.ts\": 22,\n\t\"./nat_gateway/datasource\": 104,\n\t\"./nat_gateway/datasource.ts\": 104,\n\t\"./nat_gateway/query\": 160,\n\t\"./nat_gateway/query.ts\": 160,\n\t\"./nat_gateway/query_def\": 64,\n\t\"./nat_gateway/query_def.ts\": 64,\n\t\"./ov_cdn/datasource\": 105,\n\t\"./ov_cdn/datasource.ts\": 105,\n\t\"./ov_cdn/query\": 161,\n\t\"./ov_cdn/query.ts\": 161,\n\t\"./ov_cdn/query_def\": 65,\n\t\"./ov_cdn/query_def.ts\": 65,\n\t\"./pcx/datasource\": 106,\n\t\"./pcx/datasource.ts\": 106,\n\t\"./pcx/query\": 162,\n\t\"./pcx/query.ts\": 162,\n\t\"./pcx/query_def\": 58,\n\t\"./pcx/query_def.ts\": 58,\n\t\"./postgresql/datasource\": 107,\n\t\"./postgresql/datasource.ts\": 107,\n\t\"./postgresql/query\": 163,\n\t\"./postgresql/query.ts\": 163,\n\t\"./postgresql/query_def\": 39,\n\t\"./postgresql/query_def.ts\": 39,\n\t\"./qaap/datasource\": 108,\n\t\"./qaap/datasource.ts\": 108,\n\t\"./qaap/query\": 164,\n\t\"./qaap/query.ts\": 164,\n\t\"./qaap/query_def\": 49,\n\t\"./qaap/query_def.ts\": 49,\n\t\"./redis/datasource\": 109,\n\t\"./redis/datasource.ts\": 109,\n\t\"./redis/query\": 165,\n\t\"./redis/query.ts\": 165,\n\t\"./redis/query_def\": 59,\n\t\"./redis/query_def.ts\": 59,\n\t\"./redis_mem/datasource\": 110,\n\t\"./redis_mem/datasource.ts\": 110,\n\t\"./redis_mem/query\": 166,\n\t\"./redis_mem/query.ts\": 166,\n\t\"./redis_mem/query_def\": 16,\n\t\"./redis_mem/query_def.ts\": 16,\n\t\"./scf/datasource\": 111,\n\t\"./scf/datasource.ts\": 111,\n\t\"./scf/query\": 167,\n\t\"./scf/query.ts\": 167,\n\t\"./scf/query_def\": 25,\n\t\"./scf/query_def.ts\": 25,\n\t\"./sqlserver/datasource\": 112,\n\t\"./sqlserver/datasource.ts\": 112,\n\t\"./sqlserver/query\": 168,\n\t\"./sqlserver/query.ts\": 168,\n\t\"./sqlserver/query_def\": 28,\n\t\"./sqlserver/query_def.ts\": 28,\n\t\"./tcaplus/datasource\": 113,\n\t\"./tcaplus/datasource.ts\": 113,\n\t\"./tcaplus/query\": 169,\n\t\"./tcaplus/query.ts\": 169,\n\t\"./tcaplus/query_def\": 50,\n\t\"./tcaplus/query_def.ts\": 50,\n\t\"./tdmq/datasource\": 114,\n\t\"./tdmq/datasource.ts\": 114,\n\t\"./tdmq/query\": 170,\n\t\"./tdmq/query.ts\": 170,\n\t\"./tdmq/query_def\": 13,\n\t\"./tdmq/query_def.ts\": 13,\n\t\"./tdmq_rabbitmq/datasource\": 115,\n\t\"./tdmq_rabbitmq/datasource.ts\": 115,\n\t\"./tdmq_rabbitmq/query\": 171,\n\t\"./tdmq_rabbitmq/query.ts\": 171,\n\t\"./tdmq_rabbitmq/query_def\": 17,\n\t\"./tdmq_rabbitmq/query_def.ts\": 17,\n\t\"./tdmq_rocketmq/datasource\": 116,\n\t\"./tdmq_rocketmq/datasource.ts\": 116,\n\t\"./tdmq_rocketmq/query\": 172,\n\t\"./tdmq_rocketmq/query.ts\": 172,\n\t\"./tdmq_rocketmq/query_def\": 18,\n\t\"./tdmq_rocketmq/query_def.ts\": 18,\n\t\"./tke/datasource\": 117,\n\t\"./tke/datasource.ts\": 117,\n\t\"./tke/query\": 173,\n\t\"./tke/query.ts\": 173,\n\t\"./tke/query_def\": 69,\n\t\"./tke/query_def.ts\": 69,\n\t\"./tsf/datasource\": 118,\n\t\"./tsf/datasource.ts\": 118,\n\t\"./tsf/query\": 174,\n\t\"./tsf/query.ts\": 174,\n\t\"./tsf/query_def\": 60,\n\t\"./tsf/query_def.ts\": 60,\n\t\"./v_clb/datasource\": 119,\n\t\"./v_clb/datasource.ts\": 119,\n\t\"./v_clb/query\": 175,\n\t\"./v_clb/query.ts\": 175,\n\t\"./v_clb/query_def\": 23,\n\t\"./v_clb/query_def.ts\": 23,\n\t\"./vbc/datasource\": 120,\n\t\"./vbc/datasource.ts\": 120,\n\t\"./vbc/query\": 176,\n\t\"./vbc/query.ts\": 176,\n\t\"./vbc/query_def\": 51,\n\t\"./vbc/query_def.ts\": 51,\n\t\"./vpc_net_detect/datasource\": 121,\n\t\"./vpc_net_detect/datasource.ts\": 121,\n\t\"./vpc_net_detect/query\": 177,\n\t\"./vpc_net_detect/query.ts\": 177,\n\t\"./vpc_net_detect/query_def\": 40,\n\t\"./vpc_net_detect/query_def.ts\": 40,\n\t\"./vpngw/datasource\": 122,\n\t\"./vpngw/datasource.ts\": 122,\n\t\"./vpngw/query\": 178,\n\t\"./vpngw/query.ts\": 178,\n\t\"./vpngw/query_def\": 52,\n\t\"./vpngw/query_def.ts\": 52,\n\t\"./vpnx/datasource\": 123,\n\t\"./vpnx/datasource.ts\": 123,\n\t\"./vpnx/query\": 179,\n\t\"./vpnx/query.ts\": 179,\n\t\"./vpnx/query_def\": 53,\n\t\"./vpnx/query_def.ts\": 53,\n\t\"./waf/datasource\": 124,\n\t\"./waf/datasource.ts\": 124,\n\t\"./waf/query\": 180,\n\t\"./waf/query.ts\": 180,\n\t\"./waf/query_def\": 41,\n\t\"./waf/query_def.ts\": 41\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 181;","import _ from 'lodash';\nimport { Datasources, SERVICES } from './index';\nimport { GetServiceFromNamespace, ParseMetricQuery } from '../common/constants';\nimport { serviceGroupBy } from '../common/utils';\nimport { LoadingState } from '@grafana/data';\n\nexport default interface DatasourceInterface {\n instanceSettings: any;\n backendSrv: any;\n templateSrv: any;\n query: (options: any) => any;\n testDatasource: () => any;\n metricFindQuery: (query: any) => any;\n getRegions?: (service: string) => any;\n getMetrics: (service: string, region: string) => any;\n getInstances: (service: string, region: string, params: any) => any;\n getZones?: (service: string, region: string) => any;\n}\n\nexport class TCMonitorDatasource implements DatasourceInterface {\n instanceSettings: any;\n backendSrv: any;\n templateSrv: any;\n\n /** @ngInject */\n constructor(instanceSettings, backendSrv, templateSrv) {\n this.instanceSettings = instanceSettings;\n this.backendSrv = backendSrv;\n this.templateSrv = templateSrv;\n _.forEach(Datasources, (_class: any, key) => {\n this[key] = new _class(this.instanceSettings, this.backendSrv, this.templateSrv);\n });\n }\n\n // 根据 Datasource Config 配置时勾选的监控服务项,获取相应的命名空间\n getNamespaces() {\n const namespaces: any[] = [];\n _.forEach(SERVICES, (service) => {\n if (this.instanceSettings.jsonData[service.service] === true) {\n // namespaces.push(service.namespace);\n namespaces.push(service);\n }\n });\n return namespaces;\n }\n\n getCascaderNamespaces() {\n const validServices = SERVICES.filter((service) => this.instanceSettings.jsonData[service.service]);\n return serviceGroupBy(validServices);\n }\n\n getSelectedServices() {\n const namespaces = this.getNamespaces();\n return _.map(namespaces, ({ namespace }) => {\n return GetServiceFromNamespace(namespace);\n });\n }\n\n /**\n * 根据 Panel 的配置项,获取相应的监控数据\n *\n * @param options Panel 的配置参数,示例如下\n * {\n * cacheTimeout: undefined,\n * dashboardId: 41,\n * interval: \"30s\",\n * intervalMs: 30000,\n * maxDataPoints: 554,\n * panelId: 2,\n * range: {\n * from: Moment,\n * to: Moment,\n * raw: {from: \"now-6h\", to: \"now\"}\n * },\n * rangeRaw: {from: \"now-6h\", to: \"now\"},\n * scopedVars: {__interval: {…}, __interval_ms: {…}}\n * targets: [\n * {\n * namespace: \"QCE/CVM\",\n * refId: \"A\",\n * service: \"cvm\",\n * showInstanceDetails: false,\n * cvm: {\n * dimensionObject: {InstanceId: {…}}\n * instance: \"\",\n * instanceAlias: \"InstanceId\",\n * metricName: \"AccOuttraffic\",\n * metricUnit: \"MB\",\n * period: 10,\n * queries: {Filters: {…}, InstanceIds: Array(1), Limit: 20, Offset: 0, filtersChecked: false, …},\n * region: \"ap-beijing\"\n * },\n * cdb: {},\n * },\n * ],\n * timezone: \"browser\"\n * }\n * @return 返回数据对象,示例如下\n * {\n * data: [\n * {\n * \"target\": \"AccOuttraffic - ins-123\",\n * \"datapoints\": [\n * [861, 1450754160000],\n * [767, 1450754220000]\n * ]\n * }\n * ]\n * }\n */\n query(options: any) {\n const promises: any[] = [];\n const services = this.getSelectedServices();\n _.forEach(services, (service) => {\n const optionsTemp = _.cloneDeep(options);\n const targets = _.filter(optionsTemp.targets, (item) => item.service === service);\n optionsTemp.targets = targets;\n if (optionsTemp.targets.length > 0) {\n const promiseTemp = this[`${_.toUpper(service)}Datasource`].query(optionsTemp);\n if (promiseTemp) {\n promises.push(promiseTemp);\n }\n }\n });\n if (promises.length === 0) {\n return Promise.resolve({ data: [], state: LoadingState.Done });\n }\n return Promise.all(promises).then((results) => {\n return { data: _.flatten(results), state: LoadingState.Done };\n });\n }\n\n /**\n * 获取模板变量的选择项列表\n *\n * @param query 模板变量配置填写的 Query 参数字符串\n */\n metricFindQuery(query: string, options?: any) {\n const queries = ParseMetricQuery(query);\n const service = GetServiceFromNamespace(queries['namespace'] || '');\n\n if (_.isEmpty(queries) || !queries['namespace'] || !queries['action'] || !service) {\n return Promise.resolve([]);\n }\n if (this[`${_.toUpper(service)}Datasource`].metricFindQuery) {\n const result = this[`${_.toUpper(service)}Datasource`].metricFindQuery(\n queries,\n _.get(options, 'variable.regex', undefined)\n );\n if (result) {\n return result;\n }\n }\n return Promise.resolve([]);\n }\n\n /**\n * 获取地域列表\n * @param service\n */\n getRegions(service) {\n if (this[`${_.toUpper(service)}Datasource`].getRegions) {\n return this[`${_.toUpper(service)}Datasource`].getRegions();\n }\n return [];\n }\n\n /**\n * 获取监控指标列表\n * @param service\n * @param region\n */\n getMetrics(service, region) {\n return this[`${_.toUpper(service)}Datasource`].getMetrics(region);\n }\n\n /**\n * 获取可用区列表\n * @param service\n * @param region\n */\n getZones(service, region) {\n if (this[`${_.toUpper(service)}Datasource`].getZones) {\n return this[`${_.toUpper(service)}Datasource`].getZones(region);\n }\n return [];\n }\n\n /**\n * 获取filter中dropdown列表\n * @param service\n * @param param\n */\n getFilterDropdown(service, param) {\n if (this[`${_.toUpper(service)}Datasource`].getFilterDropdown) {\n return this[`${_.toUpper(service)}Datasource`].getFilterDropdown(param);\n }\n return [];\n }\n\n /**\n * 获取实例列表\n * @param service\n * @param region\n * @param params\n */\n getInstances(service, region, params) {\n return this[`${_.toUpper(service)}Datasource`].getInstances(region, params);\n }\n\n /**\n * 获取监听器列表\n * @param service\n * @param region\n * @param params\n */\n getListeners(service, region, instance) {\n if (!this[`${_.toUpper(service)}Datasource`].getListeners) {\n return [];\n }\n return this[`${_.toUpper(service)}Datasource`].getListeners(region, instance);\n }\n\n /**\n * 获取 私有网络列表\n * @param service\n */\n getVpcIds(service, region) {\n if (this[`${_.toUpper(service)}Datasource`].getVpcIds) {\n return this[`${_.toUpper(service)}Datasource`].getVpcIds(region);\n }\n }\n\n // 在 Datasource Config 配置时,验证 SerectId、SerectKey 的有效性,并测试勾选的监控服务项的对应 API 连通性\n testDatasource() {\n const promises: any[] = [];\n const services = this.getSelectedServices();\n _.forEach(services, (service) => {\n promises.push(this[`${_.toUpper(service)}Datasource`].testDatasource());\n });\n if (promises.length === 0) {\n return Promise.resolve(null);\n }\n\n return Promise.all(promises).then((results) => {\n let status = 'success';\n let message = 'DataSource Connection OK';\n\n const errorMsg = _.reduce(\n results,\n (acc, cur) => {\n if (cur.status === 'error') {\n if (acc === '') acc += 'Oops! Found an error in: ';\n acc += `${cur.service}: ${cur.message}; \\n`;\n }\n return acc;\n },\n ''\n );\n\n if (errorMsg) {\n status = 'error';\n message = errorMsg;\n }\n\n return {\n status,\n message,\n title: _.upperFirst(status),\n };\n });\n }\n\n getServiceFn(service, fnName) {\n return (...argu) => {\n if (!this[`${_.toUpper(service)}Datasource`][fnName]) {\n return [];\n }\n return this[`${_.toUpper(service)}Datasource`][fnName](...argu);\n };\n }\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (typeof target === 'object') {\n if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n if (target[i] && typeof target[i] === 'object') {\n target[i] = merge(target[i], item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return value;\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n","import coreModule from 'grafana/app/core/core_module';\nimport { DetailQueryConfig } from './types';\n\nclass SPQueryCtrl {\n static _config: DetailQueryConfig;\n\n /** @ngInject */\n constructor($scope, $rootScope) {\n Object.assign($scope, SPQueryCtrl._config);\n\n $scope.onChecked = (srcField, dstField) => {\n if ($scope.target.queries[srcField] === true) {\n $scope.target.queries[dstField] = false;\n }\n $scope.onChange();\n };\n\n $scope.init();\n }\n}\n\nconst template = `\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n`;\n\nexport function queryDDO() {\n return {\n template: template,\n controller: SPQueryCtrl,\n restrict: 'E',\n scope: {\n target: '=',\n showDetail: '=',\n region: '=',\n datasource: '=',\n getDropdownOptions: '&',\n onChange: '&',\n },\n };\n}\n\nexport default (name: string, config: DetailQueryConfig) => {\n SPQueryCtrl._config = config;\n coreModule.directive(name, queryDDO);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) { // eslint-disable-line func-name-matching\n return prefix + '[]';\n },\n indices: function indices(prefix, key) { // eslint-disable-line func-name-matching\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) { // eslint-disable-line func-name-matching\n return prefix;\n }\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify( // eslint-disable-line func-name-matching\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (Array.isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (Array.isArray(obj)) {\n values = values.concat(stringify(\n obj[key],\n generateArrayPrefix(prefix, key),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n } else {\n values = values.concat(stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n }\n\n return values;\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n var sort = typeof options.sort === 'function' ? options.sort : null;\n var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n if (typeof options.format === 'undefined') {\n options.format = formats['default'];\n } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n var formatter = formats.formatters[options.format];\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (Array.isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (options.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = options.arrayFormat;\n } else if ('indices' in options) {\n arrayFormat = options.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (sort) {\n objKeys.sort(sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n keys = keys.concat(stringify(\n obj[key],\n key,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encode ? encoder : null,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n\n var joined = keys.join(delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]') {\n obj = [];\n obj = obj.concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","var map = {\n\t\"./_base/query.ts\": 7,\n\t\"./apigateway/datasource\": 70,\n\t\"./apigateway/datasource.ts\": 70,\n\t\"./apigateway/query.ts\": 126,\n\t\"./apigateway/query_def.ts\": 21,\n\t\"./bmIntraLb/datasource\": 71,\n\t\"./bmIntraLb/datasource.ts\": 71,\n\t\"./bmIntraLb/query.ts\": 127,\n\t\"./bmIntraLb/query_def.ts\": 29,\n\t\"./bm_lb/datasource\": 72,\n\t\"./bm_lb/datasource.ts\": 72,\n\t\"./bm_lb/query.ts\": 128,\n\t\"./bm_lb/query_def.ts\": 30,\n\t\"./bm_pcx/datasource\": 73,\n\t\"./bm_pcx/datasource.ts\": 73,\n\t\"./bm_pcx/query.ts\": 129,\n\t\"./bm_pcx/query_def.ts\": 31,\n\t\"./bwp/datasource\": 74,\n\t\"./bwp/datasource.ts\": 74,\n\t\"./bwp/query.ts\": 130,\n\t\"./bwp/query_def.ts\": 61,\n\t\"./cbs/datasource\": 75,\n\t\"./cbs/datasource.ts\": 75,\n\t\"./cbs/query.ts\": 131,\n\t\"./cbs/query_def.ts\": 32,\n\t\"./cdb/datasource\": 76,\n\t\"./cdb/datasource.ts\": 76,\n\t\"./cdb/query.ts\": 132,\n\t\"./cdb/query_def.ts\": 42,\n\t\"./cdn/datasource\": 77,\n\t\"./cdn/datasource.ts\": 77,\n\t\"./cdn/query.ts\": 133,\n\t\"./cdn/query_def.ts\": 62,\n\t\"./cdn_province/datasource\": 78,\n\t\"./cdn_province/datasource.ts\": 78,\n\t\"./cdn_province/query.ts\": 134,\n\t\"./cdn_province/query_def.ts\": 33,\n\t\"./ceip_summary/datasource\": 79,\n\t\"./ceip_summary/datasource.ts\": 79,\n\t\"./ceip_summary/query.ts\": 135,\n\t\"./ceip_summary/query_def.ts\": 34,\n\t\"./ces/datasource\": 80,\n\t\"./ces/datasource.ts\": 80,\n\t\"./ces/query.ts\": 136,\n\t\"./ces/query_def.ts\": 43,\n\t\"./cfs/datasource\": 81,\n\t\"./cfs/datasource.ts\": 81,\n\t\"./cfs/query.ts\": 137,\n\t\"./cfs/query_def.ts\": 55,\n\t\"./ckafka/datasource\": 82,\n\t\"./ckafka/datasource.ts\": 82,\n\t\"./ckafka/query.ts\": 138,\n\t\"./ckafka/query_def.ts\": 10,\n\t\"./clb/datasource\": 83,\n\t\"./clb/datasource.ts\": 83,\n\t\"./clb/query.ts\": 139,\n\t\"./clb/query_def.ts\": 12,\n\t\"./cls/datasource\": 84,\n\t\"./cls/datasource.ts\": 84,\n\t\"./cls/query.ts\": 140,\n\t\"./cls/query_def.ts\": 27,\n\t\"./cmq/datasource\": 85,\n\t\"./cmq/datasource.ts\": 85,\n\t\"./cmq/query.ts\": 141,\n\t\"./cmq/query_def.ts\": 56,\n\t\"./cmq_topic/datasource\": 86,\n\t\"./cmq_topic/datasource.ts\": 86,\n\t\"./cmq_topic/query.ts\": 142,\n\t\"./cmq_topic/query_def.ts\": 35,\n\t\"./cos/datasource\": 87,\n\t\"./cos/datasource.ts\": 87,\n\t\"./cos/query_def.ts\": 143,\n\t\"./cpm/datasource\": 88,\n\t\"./cpm/datasource.ts\": 88,\n\t\"./cpm/query.ts\": 144,\n\t\"./cpm/query_def.ts\": 36,\n\t\"./cvm/datasource\": 89,\n\t\"./cvm/datasource.ts\": 89,\n\t\"./cvm/query.ts\": 145,\n\t\"./cvm/query_def.ts\": 57,\n\t\"./cynosdb_mysql/datasource\": 90,\n\t\"./cynosdb_mysql/datasource.ts\": 90,\n\t\"./cynosdb_mysql/query.ts\": 146,\n\t\"./cynosdb_mysql/query_def.ts\": 24,\n\t\"./dc/datasource\": 91,\n\t\"./dc/datasource.ts\": 91,\n\t\"./dc/query.ts\": 147,\n\t\"./dc/query_def.ts\": 44,\n\t\"./dcdb/datasource\": 92,\n\t\"./dcdb/datasource.ts\": 92,\n\t\"./dcdb/query.ts\": 148,\n\t\"./dcdb/query_def.ts\": 15,\n\t\"./dcg/datasource\": 93,\n\t\"./dcg/datasource.ts\": 93,\n\t\"./dcg/query.ts\": 149,\n\t\"./dcg/query_def.ts\": 45,\n\t\"./dcx/datasource\": 94,\n\t\"./dcx/datasource.ts\": 94,\n\t\"./dcx/query.ts\": 150,\n\t\"./dcx/query_def.ts\": 46,\n\t\"./ecdn/datasource\": 95,\n\t\"./ecdn/datasource.ts\": 95,\n\t\"./ecdn/query.ts\": 151,\n\t\"./ecdn/query_def.ts\": 37,\n\t\"./ecm/datasource\": 96,\n\t\"./ecm/datasource.ts\": 96,\n\t\"./ecm/query.ts\": 152,\n\t\"./ecm/query_def.ts\": 38,\n\t\"./ecm_block_storage/datasource\": 97,\n\t\"./ecm_block_storage/datasource.ts\": 97,\n\t\"./ecm_block_storage/query.ts\": 153,\n\t\"./ecm_block_storage/query_def.ts\": 20,\n\t\"./ecm_lb/datasource\": 98,\n\t\"./ecm_lb/datasource.ts\": 98,\n\t\"./ecm_lb/query.ts\": 154,\n\t\"./ecm_lb/query_def.ts\": 47,\n\t\"./gse/datasource\": 99,\n\t\"./gse/datasource.ts\": 99,\n\t\"./gse/query.ts\": 155,\n\t\"./gse/query_def.ts\": 14,\n\t\"./lb/datasource\": 100,\n\t\"./lb/datasource.ts\": 100,\n\t\"./lb/query.ts\": 156,\n\t\"./lb/query_def.ts\": 63,\n\t\"./lighthouse/datasource\": 101,\n\t\"./lighthouse/datasource.ts\": 101,\n\t\"./lighthouse/query.ts\": 157,\n\t\"./lighthouse/query_def.ts\": 54,\n\t\"./mongodb/datasource\": 102,\n\t\"./mongodb/datasource.ts\": 102,\n\t\"./mongodb/query.ts\": 158,\n\t\"./mongodb/query_def.ts\": 48,\n\t\"./mr/datasource\": 103,\n\t\"./mr/datasource.ts\": 103,\n\t\"./mr/query.ts\": 159,\n\t\"./mr/query_def.ts\": 22,\n\t\"./nat_gateway/datasource\": 104,\n\t\"./nat_gateway/datasource.ts\": 104,\n\t\"./nat_gateway/query.ts\": 160,\n\t\"./nat_gateway/query_def.ts\": 64,\n\t\"./ov_cdn/datasource\": 105,\n\t\"./ov_cdn/datasource.ts\": 105,\n\t\"./ov_cdn/query.ts\": 161,\n\t\"./ov_cdn/query_def.ts\": 65,\n\t\"./pcx/datasource\": 106,\n\t\"./pcx/datasource.ts\": 106,\n\t\"./pcx/query.ts\": 162,\n\t\"./pcx/query_def.ts\": 58,\n\t\"./postgresql/datasource\": 107,\n\t\"./postgresql/datasource.ts\": 107,\n\t\"./postgresql/query.ts\": 163,\n\t\"./postgresql/query_def.ts\": 39,\n\t\"./qaap/datasource\": 108,\n\t\"./qaap/datasource.ts\": 108,\n\t\"./qaap/query.ts\": 164,\n\t\"./qaap/query_def.ts\": 49,\n\t\"./redis/datasource\": 109,\n\t\"./redis/datasource.ts\": 109,\n\t\"./redis/query.ts\": 165,\n\t\"./redis/query_def.ts\": 59,\n\t\"./redis_mem/datasource\": 110,\n\t\"./redis_mem/datasource.ts\": 110,\n\t\"./redis_mem/query.ts\": 166,\n\t\"./redis_mem/query_def.ts\": 16,\n\t\"./scf/datasource\": 111,\n\t\"./scf/datasource.ts\": 111,\n\t\"./scf/query.ts\": 167,\n\t\"./scf/query_def.ts\": 25,\n\t\"./sqlserver/datasource\": 112,\n\t\"./sqlserver/datasource.ts\": 112,\n\t\"./sqlserver/query.ts\": 168,\n\t\"./sqlserver/query_def.ts\": 28,\n\t\"./tcaplus/datasource\": 113,\n\t\"./tcaplus/datasource.ts\": 113,\n\t\"./tcaplus/query.ts\": 169,\n\t\"./tcaplus/query_def.ts\": 50,\n\t\"./tdmq/datasource\": 114,\n\t\"./tdmq/datasource.ts\": 114,\n\t\"./tdmq/query.ts\": 170,\n\t\"./tdmq/query_def.ts\": 13,\n\t\"./tdmq_rabbitmq/datasource\": 115,\n\t\"./tdmq_rabbitmq/datasource.ts\": 115,\n\t\"./tdmq_rabbitmq/query.ts\": 171,\n\t\"./tdmq_rabbitmq/query_def.ts\": 17,\n\t\"./tdmq_rocketmq/datasource\": 116,\n\t\"./tdmq_rocketmq/datasource.ts\": 116,\n\t\"./tdmq_rocketmq/query.ts\": 172,\n\t\"./tdmq_rocketmq/query_def.ts\": 18,\n\t\"./tke/datasource\": 117,\n\t\"./tke/datasource.ts\": 117,\n\t\"./tke/query.ts\": 173,\n\t\"./tke/query_def.ts\": 69,\n\t\"./tsf/datasource\": 118,\n\t\"./tsf/datasource.ts\": 118,\n\t\"./tsf/query.ts\": 174,\n\t\"./tsf/query_def.ts\": 60,\n\t\"./v_clb/datasource\": 119,\n\t\"./v_clb/datasource.ts\": 119,\n\t\"./v_clb/query.ts\": 175,\n\t\"./v_clb/query_def.ts\": 23,\n\t\"./vbc/datasource\": 120,\n\t\"./vbc/datasource.ts\": 120,\n\t\"./vbc/query.ts\": 176,\n\t\"./vbc/query_def.ts\": 51,\n\t\"./vpc_net_detect/datasource\": 121,\n\t\"./vpc_net_detect/datasource.ts\": 121,\n\t\"./vpc_net_detect/query.ts\": 177,\n\t\"./vpc_net_detect/query_def.ts\": 40,\n\t\"./vpngw/datasource\": 122,\n\t\"./vpngw/datasource.ts\": 122,\n\t\"./vpngw/query.ts\": 178,\n\t\"./vpngw/query_def.ts\": 52,\n\t\"./vpnx/datasource\": 123,\n\t\"./vpnx/datasource.ts\": 123,\n\t\"./vpnx/query.ts\": 179,\n\t\"./vpnx/query_def.ts\": 53,\n\t\"./waf/datasource\": 124,\n\t\"./waf/datasource.ts\": 124,\n\t\"./waf/query.ts\": 180,\n\t\"./waf/query_def.ts\": 41\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 191;","module.exports = __WEBPACK_EXTERNAL_MODULE__192__;","module.exports = __WEBPACK_EXTERNAL_MODULE__193__;","module.exports = __WEBPACK_EXTERNAL_MODULE__196__;","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && btoa) {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of