42aaade8852fde54550dfa0e2193f623.json 63 KB

1
  1. {"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\eslint-loader\\index.js??ref--13-0!E:\\boman-framwork\\ruoyi-ui\\src\\utils\\flow-display.js","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\utils\\flow-display.js","mtime":1623215520361},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\eslint-loader\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:InVzZSBzdHJpY3QiOwoKdmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKCJFOi9ib21hbi1mcmFtd29yay9ydW95aS11aS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHQiKS5kZWZhdWx0OwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7Cgp2YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZSgiRTovYm9tYW4tZnJhbXdvcmsvcnVveWktdWkvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkiKSk7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNwbGl0LmpzIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiKTsKCnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWxsLmpzIik7CgpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIik7CgpmdW5jdGlvbiBGbG93RGlzcGxheShkaWFncmFtRGl2LCBldmVudCkgewogIHZhciBHID0gZ28uR3JhcGhPYmplY3QubWFrZTsKICB2YXIgX3RoaXMgPSB7fTsKICB2YXIgX2Rpc3BsYXllciA9IHt9OwogIC8qKiDlpITnkIbkvKDlhaXkuovku7YgKi8KCiAgaWYgKCFldmVudCkgewogICAgZXZlbnQgPSB7CiAgICAgIHNob3dFZGl0Tm9kZTogZnVuY3Rpb24gc2hvd0VkaXROb2RlKCkge30sCiAgICAgIFNlbGVjdGlvbkRlbGV0ZWQ6IGZ1bmN0aW9uIFNlbGVjdGlvbkRlbGV0ZWQoKSB7fSwKICAgICAgTGlua0RyYXduOiBmdW5jdGlvbiBMaW5rRHJhd24oKSB7fSwKICAgICAgZXh0ZXJuYWxvYmplY3RzZHJvcHBlZDogZnVuY3Rpb24gZXh0ZXJuYWxvYmplY3RzZHJvcHBlZCgpIHt9CiAgICB9OwogIH0KCiAgaWYgKGV2ZW50LnNob3dFZGl0Tm9kZSkgewogICAgLy/nvJbovpHoioLngrkKICAgIF90aGlzLnNob3dFZGl0Tm9kZSA9IGV2ZW50LnNob3dFZGl0Tm9kZTsKICB9CgogIGlmIChldmVudC5TZWxlY3Rpb25EZWxldGVkKSB7CiAgICAvL+WIoOmZpOS6i+S7tgogICAgX3RoaXMuU2VsZWN0aW9uRGVsZXRlZCA9IGV2ZW50LlNlbGVjdGlvbkRlbGV0ZWQ7CiAgfQoKICBpZiAoZXZlbnQuTGlua0RyYXduKSB7CiAgICAvL+e6v+eahOeUn+aIkOS6i+S7tgogICAgX3RoaXMuTGlua0RyYXduID0gZXZlbnQuTGlua0RyYXduOwogIH0KCiAgaWYgKGV2ZW50LmV4dGVybmFsb2JqZWN0c2Ryb3BwZWQpIHsKICAgIC8v6IqC54K555qE55Sf5oiQ5LqL5Lu2CiAgICBfdGhpcy5leHRlcm5hbG9iamVjdHNkcm9wcGVkID0gZXZlbnQuZXh0ZXJuYWxvYmplY3RzZHJvcHBlZDsKICB9CiAgLyoqIC0tLS0tLS0tcHVibGljIG1ldGhvZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKi8KCiAgLyoqDQogICAqIOaYvuekuua1geeoi+Wbvg0KICAgKiBAcGFyYW0gZmxvd0RhdGEgIOa1geeoi+Wbvmpzb27mlbDmja4NCiAgICovCgoKICB0aGlzLmxvYWRGbG93ID0gZnVuY3Rpb24gKGZsb3dEYXRhKSB7CiAgICBpZiAoIWZsb3dEYXRhKSByZXR1cm47CiAgICBfZGlzcGxheWVyLm1vZGVsID0gZ28uTW9kZWwuZnJvbUpzb24oZmxvd0RhdGEpOwogICAgdmFyIHBvcyA9IF9kaXNwbGF5ZXIubW9kZWwubW9kZWxEYXRhLnBvc2l0aW9uOyAvLyBpZiAocG9zKSBfZGlzcGxheWVyLmluaXRpYWxQb3NpdGlvbiA9IGdvLlBvaW50LnBhcnNlKHBvcyk7CgogICAgdGhpcy5kaWFncmFtID0gX2Rpc3BsYXllcjsgLy8g5pu05pS55omA5pyJ6L+e57q/5Lit6Ze055qE5paH5pys6IOM5pmv6ImyCgogICAgc2V0TGlua1RleHRCZygpOwogIH07CiAgLyoqDQogICAqIOiOt+WPlua1geeoi+WbvuaVsOaNrg0KICAgKiBAcmV0dXJucyB7Kn0NCiAgICovCgoKICB0aGlzLmdldEZsb3dEYXRhID0gZnVuY3Rpb24gKCkgewogICAgX2Rpc3BsYXllci5tb2RlbC5tb2RlbERhdGEucG9zaXRpb24gPSBnby5Qb2ludC5zdHJpbmdpZnkoX2Rpc3BsYXllci5wb3NpdGlvbik7CiAgICByZXR1cm4gX2Rpc3BsYXllci5tb2RlbC50b0pzb24oKTsKICB9OwogIC8qKg0KICAgKiDliqjnlLvmmL7npLrmtYHnqIvot6/lvoTnirbmgIENCiAgICogc3RyU3RlcEtleXMg5bey57uP6YCa6L+H55qE5rWB56iL6IqC54K5a2V5DQogICAqIGlzQ29tcGxldGVkIOa1geeoi+aYr+WQpuW3suWujOaIkA0KICAgKiBpc0VuZCDmmK/lkKbmmK/lt7LlhbPpl63mtYHnqIvvvIzlt7LlhbPpl63mtYHnqIvnmoTlvoXlpITnkIboioLngrnliJnkuLrlhbPpl63nirbmgIENCiAgICovCgoKICB0aGlzLmFuaW1hdGVGbG93UGF0aCA9IGZ1bmN0aW9uIChzdHJTdGVwS2V5cywgZXJyb3JQYXRoSWRzLCBpc0NvbXBsZXRlZCwgaXNFbmQpIHsKICAgIGlmICghc3RyU3RlcEtleXMpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBzdGVwS2V5cyA9IHN0clN0ZXBLZXlzLnNwbGl0KCcsJyk7IC8vIOafpeaJvuaJgOacieOAkOW3suWujOaIkOOAkeatpemqpO+8muOAkOW8gOWni+OAkS0+IOOAkOW3suWujOaIkOOAke+8iE7kuKrvvIkKCiAgICB2YXIgc3RlcHMgPSBmaW5kRmluaXNoZWRTdGVwcyhzdGVwS2V5cywgaXNDb21wbGV0ZWQpOyAvLyDpq5jkuq7miYDmnInigJzlt7LlrozmiJDigJ3mraXpqqQKCiAgICBzaG93RmluaXNoZWROb2RlcyhzdGVwcyk7IC8v44CQ5byA5aeL44CRLT4g44CQ5bey5a6M5oiQ44CR77yITuS4qu+8iS0+44CQ5b6F5aSE55CG44CRCiAgICAvLyDmiJYKICAgIC8v44CQ5byA5aeL44CRLT4g44CQ5bey5a6M5oiQ44CR77yITuS4qu+8iS0+44CQ57uT5p2f44CRCgogICAgdmFyIGxhc3RTdGVwID0gZmluZExhc3RTdGVwKHN0ZXBLZXlzLCBzdGVwcywgaXNDb21wbGV0ZWQsIGlzRW5kKTsKICAgIHN0ZXBzLnB1c2gobGFzdFN0ZXApOwoKICAgIGlmICghaXNDb21wbGV0ZWQpIHsKICAgICAgLy8g4oCc5b6F5aSE55CG4oCd5q2l6aqk77yM5Yqg5LiK6Zeq54OB5Yqo55S7CiAgICAgIGxvb3BSdW5uaW5nTm9kZShsYXN0U3RlcCwgaXNFbmQpOwogICAgfSAvLyDlnKjov57nur/kuIrliqDpl6rng4HliqjnlLsKCgogICAgaWYgKGVycm9yUGF0aElkcyAmJiBlcnJvclBhdGhJZHMubGVuZ3RoID4gMCkgewogICAgICB2YXIgbGlua3MgPSBmaW5kRmluaXNoZWRMaW5rcyhsYXN0U3RlcCk7CiAgICAgIGxvb3BMaW5rcyhsaW5rcyk7CiAgICB9CiAgfTsgLy8g5b2T5YmN55S75biD5a6e5L6LCgogIC8qKiAtLS0tLS0tLXB1YmxpYyBtZXRob2QtLS0tLS0tLS0tLS0tZW5kLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiovCgoKICB0aGlzLmRpYWdyYW0gPSBpbml0KGRpYWdyYW1EaXYpOwogIC8qKiAtLS0tLS0tLXByaXZhdGUgbWV0aG9kLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoqLwoKICAvKioNCiAgICog5Yid5aeL5YyW5rWB56iL6K6+6K6h5ZmoDQogICAqIEBwYXJhbSBkaXZJZCDorr7orqHlmahEaXYNCiAgICovCgogIGZ1bmN0aW9uIGluaXQoZGl2SWQpIHsKICAgIF9kaXNwbGF5ZXIgPSBHKGdvLkRpYWdyYW0sIGRpdklkLCB7CiAgICAgIGFsbG93RHJvcDogZmFsc2UsCiAgICAgIGFsbG93U2VsZWN0OiBmYWxzZSwKICAgICAgYWxsb3dIb3Jpem9udGFsU2Nyb2xsOiB0cnVlLAogICAgICBhbGxvd1ZlcnRpY2FsU2Nyb2xsOiB0cnVlLAogICAgICBhbGxvd01vdmU6IGZhbHNlLAogICAgICBhbGxvd0xpbms6IGZhbHNlLAogICAgICBhbGxvd1JlbGluazogZmFsc2UsCiAgICAgICJkcmFnZ2luZ1Rvb2wuZHJhZ3NMaW5rIjogZmFsc2UKICAgIH0pOyAvLyDmtYHnqIvmraXpqqTnmoTmoLflvI/mqKHmnb8KCiAgICBfZGlzcGxheWVyLm5vZGVUZW1wbGF0ZSA9IG1ha2VOb2RlVGVtcGxhdGUoKTsgLy8g5Y+M5Ye75LqL5Lu2CgogICAgX2Rpc3BsYXllci5hZGREaWFncmFtTGlzdGVuZXIoIk9iamVjdERvdWJsZUNsaWNrZWQiLCBvbk9iamVjdERvdWJsZUNsaWNrZWQpOyAvLyDmt7vliqDlvIDlp4voioLngrkKCgogICAgX2Rpc3BsYXllci5ub2RlVGVtcGxhdGVNYXAuYWRkKCJTdGFydCIsIEcoZ28uTm9kZSwgIlNwb3QiLCB7CiAgICAgIGxvY2F0aW9uU3BvdDogZ28uU3BvdC5DZW50ZXIKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJsb2NhdGlvbiIsICJsb2MiLCBnby5Qb2ludC5wYXJzZSkubWFrZVR3b1dheShnby5Qb2ludC5zdHJpbmdpZnkpLCB7CiAgICAgIHNlbGVjdGFibGU6IHRydWUsCiAgICAgIHNlbGVjdGlvbkFkb3JubWVudFRlbXBsYXRlOiBtYWtlTm9kZVNlbGVjdGlvbkFkb3JubWVudFRlbXBsYXRlKCkKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJhbmdsZSIpLm1ha2VUd29XYXkoKSwgRyhnby5QYW5lbCwgIkF1dG8iLCB7CiAgICAgIG5hbWU6ICJQQU5FTCIKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJkZXNpcmVkU2l6ZSIsICJzaXplIiwgZ28uU2l6ZS5wYXJzZSkubWFrZVR3b1dheShnby5TaXplLnN0cmluZ2lmeSksIEcoZ28uU2hhcGUsICJDaXJjbGUiLCAvLyBkZWZhdWx0IGZpZ3VyZQogICAgewogICAgICBwb3J0SWQ6ICIiLAogICAgICAvLyB0aGUgZGVmYXVsdCBwb3J0OiBpZiBubyBzcG90IG9uIGxpbmsgZGF0YSwgdXNlIGNsb3Nlc3Qgc2lkZQogICAgICBuYW1lOiAiUElQRSIsCiAgICAgIGZyb21MaW5rYWJsZTogdHJ1ZSwKICAgICAgdG9MaW5rYWJsZTogdHJ1ZSwKICAgICAgY3Vyc29yOiAicG9pbnRlciIsCiAgICAgIGZpbGw6ICIjNUY3NzkwIiwKICAgICAgLy8gZGVmYXVsdCBjb2xvcgogICAgICBzdHJva2VXaWR0aDogMSwKICAgICAgc3Ryb2tlOiAiIzVGNzc5MCIKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJmaWd1cmUiKSwgbmV3IGdvLkJpbmRpbmcoInN0cm9rZSIpLCBuZXcgZ28uQmluZGluZygic3Ryb2tlRGFzaEFycmF5IiksIG5ldyBnby5CaW5kaW5nKCJzdHJva2VXaWR0aCIpLCBuZXcgZ28uQmluZGluZygiZmlsbCIpKSwgRyhnby5UZXh0QmxvY2ssIHsKICAgICAgZm9udDogImJvbGQgMTFwdCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIiwKICAgICAgbWFyZ2luOiA4LAogICAgICB3cmFwOiBnby5UZXh0QmxvY2suV3JhcEZpdCwKICAgICAgc3Ryb2tlOiAid2hpdGUiLAogICAgICBvdmVyZmxvdzogZ28uVGV4dEJsb2NrLk92ZXJmbG93RWxsaXBzaXMKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJ0ZXh0IikubWFrZVR3b1dheSgpKSAvLyB7CiAgICAvLyAgICAgdG9vbFRpcDogRyhnby5BZG9ybm1lbnQsICJBdXRvIiwKICAgIC8vICAgICAgICAgRyhnby5TaGFwZSwgeyBmaWxsOiAiI0ZGRkZDQyIgfSksCiAgICAvLyAgICAgICAgIEcoZ28uVGV4dEJsb2NrLCB7IG1hcmdpbjogNCB9LAogICAgLy8gICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoInRleHQiLCAiIiwgbm9kZUluZm8pKQogICAgLy8gICAgICkKICAgIC8vIH0KICAgICkpKTsgLy8g5re75Yqg57uT5p2f6IqC54K5CgoKICAgIF9kaXNwbGF5ZXIubm9kZVRlbXBsYXRlTWFwLmFkZCgiRW5kIiwgRyhnby5Ob2RlLCAiU3BvdCIsIHsKICAgICAgbG9jYXRpb25TcG90OiBnby5TcG90LkNlbnRlcgogICAgfSwgbmV3IGdvLkJpbmRpbmcoImxvY2F0aW9uIiwgImxvYyIsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KGdvLlBvaW50LnN0cmluZ2lmeSksIHsKICAgICAgc2VsZWN0YWJsZTogdHJ1ZSwKICAgICAgc2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGU6IG1ha2VOb2RlU2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGUoKQogICAgfSwgbmV3IGdvLkJpbmRpbmcoImFuZ2xlIikubWFrZVR3b1dheSgpLCBHKGdvLlBhbmVsLCAiQXV0byIsIHsKICAgICAgbmFtZTogIlBBTkVMIgogICAgfSwgbmV3IGdvLkJpbmRpbmcoImRlc2lyZWRTaXplIiwgInNpemUiLCBnby5TaXplLnBhcnNlKS5tYWtlVHdvV2F5KGdvLlNpemUuc3RyaW5naWZ5KSwgRyhnby5TaGFwZSwgIkNpcmNsZSIsIC8vIGRlZmF1bHQgZmlndXJlCiAgICB7CiAgICAgIHBvcnRJZDogIiIsCiAgICAgIC8vIHRoZSBkZWZhdWx0IHBvcnQ6IGlmIG5vIHNwb3Qgb24gbGluayBkYXRhLCB1c2UgY2xvc2VzdCBzaWRlCiAgICAgIG5hbWU6ICJQSVBFIiwKICAgICAgZnJvbUxpbmthYmxlOiB0cnVlLAogICAgICB0b0xpbmthYmxlOiB0cnVlLAogICAgICBjdXJzb3I6ICJwb2ludGVyIiwKICAgICAgZmlsbDogIiM1Rjc3OTAiLAogICAgICAvLyBkZWZhdWx0IGNvbG9yCiAgICAgIHN0cm9rZVdpZHRoOiAxLAogICAgICBzdHJva2U6ICIjNUY3NzkwIgogICAgfSwgbmV3IGdvLkJpbmRpbmcoImZpZ3VyZSIpLCBuZXcgZ28uQmluZGluZygic3Ryb2tlIiksIG5ldyBnby5CaW5kaW5nKCJzdHJva2VEYXNoQXJyYXkiKSwgbmV3IGdvLkJpbmRpbmcoInN0cm9rZVdpZHRoIiksIG5ldyBnby5CaW5kaW5nKCJmaWxsIikpLCBHKGdvLlRleHRCbG9jaywgewogICAgICBmb250OiAiYm9sZCAxMXB0IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYiLAogICAgICBtYXJnaW46IDgsCiAgICAgIHdyYXA6IGdvLlRleHRCbG9jay5XcmFwRml0LAogICAgICBzdHJva2U6ICJ3aGl0ZSIKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJ0ZXh0IikubWFrZVR3b1dheSgpKSAvLyB7CiAgICAvLyAgICAgdG9vbFRpcDogRyhnby5BZG9ybm1lbnQsICJBdXRvIiwKICAgIC8vICAgICAgICAgRyhnby5TaGFwZSwgeyBmaWxsOiAiI0ZGRkZDQyIgfSksCiAgICAvLyAgICAgICAgIEcoZ28uVGV4dEJsb2NrLCB7IG1hcmdpbjogNCB9LAogICAgLy8gICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoInRleHQiLCAiIiwgbm9kZUluZm8pKQogICAgLy8gICAgICkKICAgIC8vIH0KICAgICkpKTsgLy8g5rWB56iL6L+e5o6l57q/55qE5qC35byP5qih5p2/CgoKICAgIF9kaXNwbGF5ZXIubGlua1RlbXBsYXRlID0gbWFrZUxpbmtUZW1wbGF0ZSgpOwogICAgcmV0dXJuIF9kaXNwbGF5ZXI7CiAgfQogIC8qKg0KICAgKiDmraXpqqTlm77nmoTmoLflvI/mqKHmnb8NCiAgICogQHJldHVybnMgeyp9DQogICAqLwoKCiAgZnVuY3Rpb24gbWFrZU5vZGVUZW1wbGF0ZSgpIHsKICAgIHZhciBfRzsKCiAgICByZXR1cm4gRyhnby5Ob2RlLCAiU3BvdCIsIHsKICAgICAgbG9jYXRpb25TcG90OiBnby5TcG90LkNlbnRlcgogICAgfSwgbmV3IGdvLkJpbmRpbmcoImxvY2F0aW9uIiwgImxvYyIsIGdvLlBvaW50LnBhcnNlKS5tYWtlVHdvV2F5KGdvLlBvaW50LnN0cmluZ2lmeSksIHsKICAgICAgc2VsZWN0YWJsZTogdHJ1ZSwKICAgICAgc2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGU6IG1ha2VOb2RlU2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGUoKQogICAgfSwgbmV3IGdvLkJpbmRpbmcoImFuZ2xlIikubWFrZVR3b1dheSgpLCBHKGdvLlBhbmVsLCAiQXV0byIsIHsKICAgICAgbmFtZTogIlBBTkVMIgogICAgfSwgbmV3IGdvLkJpbmRpbmcoImRlc2lyZWRTaXplIiwgInNpemUiLCBnby5TaXplLnBhcnNlKS5tYWtlVHdvV2F5KGdvLlNpemUuc3RyaW5naWZ5KSwgRyhnby5TaGFwZSwgIlJvdW5kZWRSZWN0YW5nbGUiLCAvLyBkZWZhdWx0IGZpZ3VyZQogICAgewogICAgICBwb3J0SWQ6ICIiLAogICAgICAvLyB0aGUgZGVmYXVsdCBwb3J0OiBpZiBubyBzcG90IG9uIGxpbmsgZGF0YSwgdXNlIGNsb3Nlc3Qgc2lkZQogICAgICBuYW1lOiAiUElQRSIsCiAgICAgIGZyb21MaW5rYWJsZTogdHJ1ZSwKICAgICAgdG9MaW5rYWJsZTogdHJ1ZSwKICAgICAgY3Vyc29yOiAicG9pbnRlciIsCiAgICAgIGZpbGw6ICJ3aGl0ZSIsCiAgICAgIC8vIGRlZmF1bHQgY29sb3IKICAgICAgc3Ryb2tlV2lkdGg6IDEsCiAgICAgIHN0cm9rZTogIiNEQ0RFRTIiCiAgICB9LCBuZXcgZ28uQmluZGluZygiZmlndXJlIiksIG5ldyBnby5CaW5kaW5nKCJzdHJva2UiKSwgbmV3IGdvLkJpbmRpbmcoInN0cm9rZURhc2hBcnJheSIpLCBuZXcgZ28uQmluZGluZygic3Ryb2tlV2lkdGgiKSwgbmV3IGdvLkJpbmRpbmcoImZpbGwiKSksIEcoZ28uVGV4dEJsb2NrLCAoX0cgPSB7CiAgICAgIGZvbnQ6ICJib2xkIDExcHQgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiIsCiAgICAgIG1hcmdpbjogOCwKICAgICAgd3JhcDogZ28uVGV4dEJsb2NrLldyYXBGaXQsCiAgICAgIHN0cm9rZTogIiMzNDM0MzQiLAogICAgICB0ZXh0QWxpZ246ICJjZW50ZXIiLAogICAgICBhbGlnbm1lbnQ6IGdvLlNwb3QuQ2VudGVyLAogICAgICB2ZXJ0aWNhbEFsaWdubWVudDogZ28uU3BvdC5DZW50ZXIKICAgIH0sICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKF9HLCAid3JhcCIsIGdvLlRleHRCbG9jay5XcmFwRml0KSwgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkoX0csICJtaW5TaXplIiwgbmV3IGdvLlNpemUoMTI2LCAyNykpLCAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KShfRywgIm1heFNpemUiLCBuZXcgZ28uU2l6ZSgxMjYsIE5hTikpLCBfRyksIG5ldyBnby5CaW5kaW5nKCJ0ZXh0IikubWFrZVR3b1dheSgpKSAvLyB7CiAgICAvLyAgICAgdG9vbFRpcDogRyhnby5BZG9ybm1lbnQsICJBdXRvIiwKICAgIC8vICAgICAgICAgRyhnby5TaGFwZSwgeyBmaWxsOiAiI0ZGRkZDQyIgfSksCiAgICAvLyAgICAgICAgIEcoZ28uVGV4dEJsb2NrLCB7IG1hcmdpbjogNCB9LAogICAgLy8gICAgICAgICAgICAgbmV3IGdvLkJpbmRpbmcoInRleHQiLCAiIiwgbm9kZUluZm8pKQogICAgLy8gICAgICkKICAgIC8vIH0KICAgICkpOwogIH0KICAvKioNCiAgICog6YCJ5Lit6IqC54K555qE5qC35byPDQogICAqIEByZXR1cm5zIHsqfQ0KICAgKi8KCgogIGZ1bmN0aW9uIG1ha2VOb2RlU2VsZWN0aW9uQWRvcm5tZW50VGVtcGxhdGUoKSB7CiAgICByZXR1cm4gRyhnby5BZG9ybm1lbnQsICJBdXRvIiwgRyhnby5TaGFwZSwgewogICAgICBmaWxsOiBudWxsLAogICAgICBzdHJva2U6ICJkZWVwc2t5Ymx1ZSIsCiAgICAgIHN0cm9rZVdpZHRoOiAxLjUsCiAgICAgIHN0cm9rZURhc2hBcnJheTogWzQsIDJdCiAgICB9KSwgRyhnby5QbGFjZWhvbGRlcikpOwogIH0KICAvKioNCiAgICog5rWB56iL5Zu+5YWD57Sg55qE5Y+M5Ye75LqL5Lu2DQogICAqIEBwYXJhbSBldg0KICAgKi8KCgogIGZ1bmN0aW9uIG9uT2JqZWN0RG91YmxlQ2xpY2tlZChldikgewogICAgdmFyIHBhcnQgPSBldi5zdWJqZWN0LnBhcnQ7CiAgICBzaG93RWRpdE5vZGUocGFydCk7CiAgfQogIC8qKg0KICAgKiDnvJbovpHoioLngrnkv6Hmga8NCiAgICovCgoKICBmdW5jdGlvbiBzaG93RWRpdE5vZGUobm9kZSkgewogICAgX3RoaXMuc2hvd0VkaXROb2RlKG5vZGUpOwoKICAgIHJldHVybiBub2RlOwogIH0KICAvKioNCiAgICogdG9vbHRpcOS4iuaYvuekuueahOS/oeaBrw0KICAgKiBAcGFyYW0gZA0KICAgKiBAcmV0dXJucyB7c3RyaW5nfQ0KICAgKi8KCgogIGZ1bmN0aW9uIG5vZGVJbmZvKGQpIHsKICAgIGlmICghZC5rZXkpIHJldHVybiAi5pega2V5IjsKICAgIHJldHVybiAi57yW5Y+377yaIiArIGQua2V5OwogIH0KICAvKioNCiAgICog5a6a5LmJ6L+e5o6l57q/55qE5qC35byP5qih5p2/DQogICAqIEByZXR1cm5zIHsqfQ0KICAgKi8KCgogIGZ1bmN0aW9uIG1ha2VMaW5rVGVtcGxhdGUoKSB7CiAgICByZXR1cm4gRyhnby5MaW5rLCB7CiAgICAgIHNlbGVjdGFibGU6IGZhbHNlCiAgICB9LCB7CiAgICAgIHJlbGlua2FibGVGcm9tOiB0cnVlLAogICAgICByZWxpbmthYmxlVG86IHRydWUsCiAgICAgIHJlc2hhcGFibGU6IHRydWUKICAgIH0sIHsKICAgICAgcm91dGluZzogZ28uTGluay5Bdm9pZHNOb2RlcywKICAgICAgY3VydmU6IGdvLkxpbmsuSnVtcE92ZXIsCiAgICAgIGNvcm5lcjogNSwKICAgICAgdG9TaG9ydExlbmd0aDogNAogICAgfSwgbmV3IGdvLkJpbmRpbmcoImxheWVyTmFtZSIsICJjb2xvciIpLCBuZXcgZ28uQmluZGluZygiek9yZGVyIiksIC8vIEcoZ28uU2hhcGUsIHsgaXNQYW5lbE1haW46IHRydWUsIHN0cm9rZTogImJsYWNrIiwgc3Ryb2tlV2lkdGg6IDMgfSwgbmV3IGdvLkJpbmRpbmcoInN0cm9rZSIpLG5ldyBnby5CaW5kaW5nKCJ6T3JkZXIiKSksCiAgICBHKGdvLlNoYXBlLCB7CiAgICAgIGlzUGFuZWxNYWluOiB0cnVlLAogICAgICBzdHJva2U6ICIjRDVENUQ1IiwKICAgICAgc3Ryb2tlV2lkdGg6IDIKICAgIH0pLCBHKGdvLlNoYXBlLCB7CiAgICAgIGlzUGFuZWxNYWluOiB0cnVlLAogICAgICBzdHJva2U6ICIjRDVENUQ1IiwKICAgICAgc3Ryb2tlV2lkdGg6IDEsCiAgICAgIG5hbWU6ICJQSVBFIgogICAgfSksIEcoZ28uU2hhcGUsIHsKICAgICAgdG9BcnJvdzogInN0YW5kYXJkIiwKICAgICAgc3Ryb2tlOiBudWxsLAogICAgICBmaWxsOiAnI0Q1RDVENScKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJzdHJva2UiKSwgbmV3IGdvLkJpbmRpbmcoImZpbGwiKSwgbmV3IGdvLkJpbmRpbmcoInpPcmRlciIpKSwgRyhnby5QYW5lbCwgIkF1dG8iLCBHKGdvLlNoYXBlLCB7CiAgICAgIGZpbGw6IG51bGwsCiAgICAgIHN0cm9rZTogbnVsbAogICAgfSwgbmV3IGdvLkJpbmRpbmcoImZpbGwiLCAicEZpbGwiKSwgbmV3IGdvLkJpbmRpbmcoInpPcmRlciIpKSwgRyhnby5UZXh0QmxvY2ssIHsKICAgICAgdGV4dEFsaWduOiAiY2VudGVyIiwKICAgICAgZm9udDogIjEwcHQgaGVsdmV0aWNhLCBhcmlhbCwgc2Fucy1zZXJpZiIsCiAgICAgIHN0cm9rZTogIiM1NTU1NTUiLAogICAgICBtYXJnaW46IDQKICAgIH0sIG5ldyBnby5CaW5kaW5nKCJ0ZXh0IiwgInRleHQiKSwgbmV3IGdvLkJpbmRpbmcoInpPcmRlciIpKSkpOwogIH0KICAvKioNCiAgICog6L+U5Zue5omA5pyJ44CQ5bey5a6M5oiQ44CR55qE5q2l6aqkDQogICAqIEBwYXJhbSBzdGVwS2V5cw0KICAgKiBAcGFyYW0gaXNDb21wbGV0ZWQNCiAgICogQHJldHVybnMge0FycmF5fQ0KICAgKi8KCgogIGZ1bmN0aW9uIGZpbmRGaW5pc2hlZFN0ZXBzKHN0ZXBLZXlzLCBpc0NvbXBsZXRlZCkgewogICAgdmFyIGFyclN0ZXAgPSBbXTsKICAgIGlmICghc3RlcEtleXMpIHJldHVybiBhcnJTdGVwOwogICAgdmFyIHN0YXJ0U3RlcCA9IGZpbmRTdGFydFN0ZXAoKTsgLy8g44CQ5byA5aeL44CR5q2l6aqkCgogICAgYXJyU3RlcC5wdXNoKHN0YXJ0U3RlcCk7IC8vIOOAkOW3suWujOaIkOOAkeeahOatpemqpAoKICAgIHZhciBmaW5pc2hlZENvdW50ID0gc3RlcEtleXMubGVuZ3RoIC0gMTsgLy8g5LiN5YyF5ZCr5pyA5ZCO5LiA5Liq4oCc5b6F5aSE55CG4oCc5q2l6aqkCgogICAgaWYgKGlzQ29tcGxldGVkKSB7CiAgICAgIGZpbmlzaGVkQ291bnQgPSBzdGVwS2V5cy5sZW5ndGg7IC8vIOWMheWQq+aJgOacieatpemqpAogICAgfQoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmluaXNoZWRDb3VudDsgaSsrKSB7CiAgICAgIHZhciBzdGVwS2V5ID0gc3RlcEtleXNbaV07CgogICAgICB2YXIgc3RlcCA9IF9kaXNwbGF5ZXIuZmluZE5vZGVGb3JLZXkoc3RlcEtleSk7CgogICAgICBpZiAoIXN0ZXApIGNvbnRpbnVlOwogICAgICBhcnJTdGVwLnB1c2goc3RlcCk7CiAgICB9CgogICAgcmV0dXJuIGFyclN0ZXA7CiAgfQogIC8qKg0KICAgKiDpq5jkuq7igJzlt7LlrozmiJDigJ3mraXpqqQNCiAgICogQHBhcmFtIHN0ZXBzDQogICAqLwoKCiAgZnVuY3Rpb24gc2hvd0ZpbmlzaGVkTm9kZXMoc3RlcHMpIHsKICAgIGlmICghc3RlcHMpIHJldHVybjsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ZXBzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzdGVwID0gc3RlcHNbaV07IC8vIOatpemqpCjljrvpmaTlvIDlp4vlkoznu5PmnZ/oioLngrkpCgogICAgICBpZiAoc3RlcC5kYXRhLnR5cGUgIT09IDEgJiYgc3RlcC5kYXRhLnR5cGUgIT09IDIpIHsKICAgICAgICBfZGlzcGxheWVyLnN0YXJ0VHJhbnNhY3Rpb24oInZhY2F0ZSIpOwoKICAgICAgICBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShzdGVwLmRhdGEsICJmaWxsIiwgInJnYmEoOSwxNjEsODUsMC4wNCkiKTsKCiAgICAgICAgX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkoc3RlcC5kYXRhLCAic3Ryb2tlIiwgInJnYmEoOSwxNjEsODUsMSkiKTsKCiAgICAgICAgX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkoc3RlcC5kYXRhLCAic3Ryb2tlV2lkdGgiLCAxKTsKCiAgICAgICAgX2Rpc3BsYXllci5jb21taXRUcmFuc2FjdGlvbigidmFjYXRlIik7CiAgICAgIH0KICAgIH0KICB9CiAgLyoqDQogICAqDQogICAqIOafpeaJvuOAkOW8gOWni+OAkeiKgueCuQ0KICAgKiBAcGFyYW0ge30gc3RlcHMNCiAgICogQHJldHVybnMge30NCiAgICovCgoKICBmdW5jdGlvbiBmaW5kU3RhcnRTdGVwKCkgewogICAgdmFyIHN0YXJ0U3RlcCA9IG51bGw7CgogICAgX2Rpc3BsYXllci5ub2Rlcy5lYWNoKGZ1bmN0aW9uIChzdGVwKSB7CiAgICAgIGlmIChzdGVwLmRhdGEuaGFzT3duUHJvcGVydHkoJ2tleScpICYmIHN0ZXAuZGF0YS5rZXkgPT0gLTEpIHsKICAgICAgICBzdGFydFN0ZXAgPSBzdGVwOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfSk7CgogICAgcmV0dXJuIHN0YXJ0U3RlcDsKICB9CiAgLyoqDQogICAqIOW+queOr+mXqueDgeKAnOW3suWujOaIkOKAneatpemqpOS5i+mXtOeahOi/nue6vw0KICAgKiBAcGFyYW0gbGlua3MNCiAgICovCgoKICBmdW5jdGlvbiBsb29wTGlua3MobGlua3MpIHsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICBzaG93RmluaXNoZWRMaW5rcyhsaW5rcyk7IC8vIOKAnOW3suWujOaIkOKAnei/nue6vwogICAgfSwgMzAwKTsKICB9CiAgLyoqDQogICAqIOW+queOr+mXqueDgeKAnOW+heWkhOeQhuKAneatpemqpA0KICAgKiBAcGFyYW0gbm9kZQ0KICAgKi8KCgogIGZ1bmN0aW9uIGxvb3BSdW5uaW5nTm9kZShub2RlLCBpc0VuZCkgewogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgIHNob3dSdW5uaW5nTm9kZShub2RlLCBpc0VuZCk7IC8vIGxvb3BSdW5uaW5nTm9kZShub2RlKTsKICAgIH0sIDIwMCk7CiAgfQogIC8qKg0KICAgKiDpq5jkuq7igJzlvoXlpITnkIbigJ3mraXpqqQNCiAgICogQHBhcmFtIG5vZGUNCiAgICovCgoKICBmdW5jdGlvbiBzaG93UnVubmluZ05vZGUobm9kZSwgaXNFbmQpIHsKICAgIGlmICghbm9kZSkgcmV0dXJuOyAvLyDljrvpmaTnu5PmnZ/oioLngrnlkozlvIDlp4voioLngrkKCiAgICBpZiAobm9kZS5kYXRhLnR5cGUgPT09IDEgfHwgbm9kZS5kYXRhLnR5cGUgPT09IDIpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICghaXNFbmQpIHsKICAgICAgX2Rpc3BsYXllci5zdGFydFRyYW5zYWN0aW9uKCJ2YWNhdGUiKTsKCiAgICAgIF9kaXNwbGF5ZXIubW9kZWwuc2V0RGF0YVByb3BlcnR5KG5vZGUuZGF0YSwgImZpbGwiLCBub2RlLmRhdGEuZmlsbCA9PT0gIiNmZjkwMDEiID8gIiNmZkIwMDEiIDogInJnYmEoMjU1LDE1MywwLDAuMDQpIik7CgogICAgICBfZGlzcGxheWVyLmNvbW1pdFRyYW5zYWN0aW9uKCJ2YWNhdGUiKTsKICAgIH0gZWxzZSB7CiAgICAgIF9kaXNwbGF5ZXIuc3RhcnRUcmFuc2FjdGlvbigidmFjYXRlIik7CgogICAgICBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShub2RlLmRhdGEsICJmaWxsIiwgbm9kZS5kYXRhLmZpbGwgPT09ICIjZmY5MDAxIiA/ICIjZmZCMDAxIiA6ICJyZ2JhKDIzNyw2NCwyMCwwLjA0KSIpOwoKICAgICAgX2Rpc3BsYXllci5jb21taXRUcmFuc2FjdGlvbigidmFjYXRlIik7CiAgICB9IC8vIOi+ueahhuWKoOS4iua1geawtOWKqOeUuwogICAgLy8gdmFyIHNoYXBlID0gbm9kZS5maW5kT2JqZWN0KCJQSVBFIik7CiAgICAvLyB2YXIgb2ZmID0gc2hhcGUuc3Ryb2tlRGFzaE9mZnNldCAtIDI7CiAgICAvLyBzaGFwZS5zdHJva2VEYXNoT2Zmc2V0ID0gKG9mZiA8PSAwKSA/IDIwIDogb2ZmOwoKICB9CiAgLyoqDQogICAqIOiOt+WPluacgOWQjuS4gOS4quatpemqpO+8iOOAkOW+heWkhOeQhuOAkeaIluOAkOe7k+adn+OAke+8iQ0KICAgKiBAcGFyYW0gc3RlcEtleXMNCiAgICogQHBhcmFtIHN0ZXBzDQogICAqIEBwYXJhbSBpc0NvbXBsZXRlZA0KICAgKiBAcmV0dXJucyB7Kn0NCiAgICovCgoKICBmdW5jdGlvbiBmaW5kTGFzdFN0ZXAoc3RlcEtleXMsIHN0ZXBzLCBpc0NvbXBsZXRlZCwgaXNFbmQpIHsKICAgIHZhciBsYXN0U3RlcDsKCiAgICBpZiAoIWlzQ29tcGxldGVkKSB7CiAgICAgIC8vIOiOt+WPluKAnOW+heWkhOeQhuKAneatpemqpAogICAgICB2YXIgbGFzdEtleSA9IHN0ZXBLZXlzW3N0ZXBLZXlzLmxlbmd0aCAtIDFdOwoKICAgICAgdmFyIHN0ZXAgPSBfZGlzcGxheWVyLmZpbmROb2RlRm9yS2V5KGxhc3RLZXkpOwoKICAgICAgaWYgKHN0ZXAuZGF0YS50eXBlID09PSAxIHx8IHN0ZXAuZGF0YS50eXBlID09PSAyKSB7CiAgICAgICAgcmV0dXJuIHN0ZXA7CiAgICAgIH0KCiAgICAgIGlmICghaXNFbmQpIHsKICAgICAgICBfZGlzcGxheWVyLnN0YXJ0VHJhbnNhY3Rpb24oInZhY2F0ZSIpOwoKICAgICAgICBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShzdGVwLmRhdGEsICJzdHJva2UiLCAiI0ZGOTkwMCIpOwoKICAgICAgICBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShzdGVwLmRhdGEsICJzdHJva2VXaWR0aCIsIDEpOyAvLyBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShzdGVwLmRhdGEsICJzdHJva2VEYXNoQXJyYXkiLCBbMTAsIDEwXSk7CgoKICAgICAgICBfZGlzcGxheWVyLmNvbW1pdFRyYW5zYWN0aW9uKCJ2YWNhdGUiKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfZGlzcGxheWVyLnN0YXJ0VHJhbnNhY3Rpb24oInZhY2F0ZSIpOwoKICAgICAgICBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShzdGVwLmRhdGEsICJzdHJva2UiLCAiI0VENDAxNCIpOwoKICAgICAgICBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShzdGVwLmRhdGEsICJzdHJva2VXaWR0aCIsIDEpOyAvLyBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShzdGVwLmRhdGEsICJzdHJva2VEYXNoQXJyYXkiLCBbMTAsIDEwXSk7CgoKICAgICAgICBfZGlzcGxheWVyLmNvbW1pdFRyYW5zYWN0aW9uKCJ2YWNhdGUiKTsKICAgICAgfSAvL+OAkOW8gOWni+OAkS0+IOOAkOW3suWujOaIkOOAke+8iE7kuKrvvIktPuOAkOW+heWkhOeQhuOAkQoKCiAgICAgIGxhc3RTdGVwID0gc3RlcDsKICAgIH0gZWxzZSB7CiAgICAgIC8vIOeUqOacgOWQjuS4gOaguei/nue6v+iOt+WPluOAkOe7k+adn+OAkeatpemqpAogICAgICB2YXIgbGFzdEZpbmlzaGVkU3RlcCA9IHN0ZXBzW3N0ZXBzLmxlbmd0aCAtIDFdOwogICAgICB2YXIgaXQgPSBsYXN0RmluaXNoZWRTdGVwLmZpbmRMaW5rc091dE9mKCk7CiAgICAgIHZhciBsYXN0TGluayA9IGl0LmZpcnN0KCk7CiAgICAgIHZhciBlbmRTdGVwID0gbGFzdExpbmsudG9Ob2RlOyAvL+OAkOW8gOWni+OAkS0+IOOAkOW3suWujOaIkOOAke+8iE7kuKrvvIktPuOAkOe7k+adn+OAkQoKICAgICAgbGFzdFN0ZXAgPSBlbmRTdGVwOwogICAgfQoKICAgIHJldHVybiBsYXN0U3RlcDsKICB9CiAgLyoqDQogICAqIOafpeaJvumUmeivr+i/nue6vw0KICAgKiBAcGFyYW0gc3RlcHMNCiAgICogQHJldHVybnMge0FycmF5fQ0KICAgKi8KCgogIGZ1bmN0aW9uIGZpbmRGaW5pc2hlZExpbmtzKGxhc3RTdGVwKSB7CiAgICB2YXIgYXJyTGlua3MgPSBbXTsKICAgIGxhc3RTdGVwLmZpbmRMaW5rc091dE9mKCkubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgIGFyckxpbmtzLnB1c2goaXRlbSk7CiAgICB9KTsKICAgIHJldHVybiBhcnJMaW5rczsKICB9CiAgLyoqDQogICAqIOmrmOS6ruaJgOacieKAnOW3suWujOaIkOKAneatpemqpOeahOi/nue6vw0KICAgKiBAcGFyYW0gbGlua3MNCiAgICovCgoKICBmdW5jdGlvbiBzaG93RmluaXNoZWRMaW5rcyhsaW5rcykgewogICAgaWYgKCFsaW5rcykgcmV0dXJuOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyBpKyspIHsKICAgICAgLy8g6L+e57q/CiAgICAgIHZhciBsaW5rID0gbGlua3NbaV07CgogICAgICBfZGlzcGxheWVyLnN0YXJ0VHJhbnNhY3Rpb24oInZhY2F0ZSIpOwoKICAgICAgX2Rpc3BsYXllci5tb2RlbC5zZXREYXRhUHJvcGVydHkobGluay5kYXRhLCAic3Ryb2tlIiwgbGluay5kYXRhLnN0cm9rZSA9PT0gIiM0ZmJhNGYiID8gIiM0ZmJhNGYiIDogIiNFRDQwMTQiKTsKCiAgICAgIF9kaXNwbGF5ZXIubW9kZWwuc2V0RGF0YVByb3BlcnR5KGxpbmsuZGF0YSwgImZpbGwiLCBsaW5rLmRhdGEuZmlsbCA9PT0gIiM0ZmJhNGYiID8gIiM0ZmJhNGYiIDogIiNFRDQwMTQiKTsKCiAgICAgIF9kaXNwbGF5ZXIubW9kZWwuc2V0RGF0YVByb3BlcnR5KGxpbmsuZGF0YSwgInpPcmRlciIsIDk5OSk7CgogICAgICBfZGlzcGxheWVyLmNvbW1pdFRyYW5zYWN0aW9uKCJ2YWNhdGUiKTsgLy8g572u5LqO5pyA5LiK5bGC77yM6Ziy5q2i6KKr6YGu5oyhCgoKICAgICAgX2Rpc3BsYXllci5zdGFydFRyYW5zYWN0aW9uKCdtb2RpZmllZCB6T3JkZXInKTsKCiAgICAgIF9kaXNwbGF5ZXIubW9kZWwuc2V0RGF0YVByb3BlcnR5KGxpbmsuZGF0YSwgInpPcmRlciIsIDEpOwoKICAgICAgX2Rpc3BsYXllci5jb21taXRUcmFuc2FjdGlvbignbW9kaWZpZWQgek9yZGVyJyk7IC8vIOi/nue6v+WKoOS4iua1geawtOWKqOeUuwoKCiAgICAgIHZhciBzaGFwZSA9IGxpbmsuZmluZE9iamVjdCgiUElQRSIpOwogICAgICBzaGFwZS5zdHJva2UgPSAnI0VENDAxNCc7CiAgICAgIHZhciBvZmYgPSBzaGFwZS5zdHJva2VEYXNoT2Zmc2V0IC0gMjsKICAgICAgc2hhcGUuc3Ryb2tlRGFzaE9mZnNldCA9IG9mZiA8PSAwID8gMjAgOiBvZmY7CiAgICB9CiAgfQogIC8qKg0KICAgKiDmm7TmlLnmiYDmnInov57nur/kuK3pl7TnmoTmlofmnKzog4zmma/oibINCiAgICovCgoKICBmdW5jdGlvbiBzZXRMaW5rVGV4dEJnKCkgewogICAgX2Rpc3BsYXllci5saW5rcy5lYWNoKGZ1bmN0aW9uIChsaW5rKSB7CiAgICAgIF9kaXNwbGF5ZXIuc3RhcnRUcmFuc2FjdGlvbigidmFjYXRlIik7CgogICAgICBpZiAobGluay5kYXRhLnRleHQpIHsKICAgICAgICBfZGlzcGxheWVyLm1vZGVsLnNldERhdGFQcm9wZXJ0eShsaW5rLmRhdGEsICJwRmlsbCIsIHdpbmRvdy5nby5HcmFwaE9iamVjdC5tYWtlKGdvLkJydXNoLCAiUmFkaWFsIiwgewogICAgICAgICAgMDogInJnYigyNDAsIDI0MCwgMjQwKSIsCiAgICAgICAgICAwLjM6ICJyZ2IoMjQwLCAyNDAsIDI0MCkiLAogICAgICAgICAgMTogInJnYmEoMjQwLCAyNDAsIDI0MCwgMCkiCiAgICAgICAgfSkpOwogICAgICB9CgogICAgICBfZGlzcGxheWVyLmNvbW1pdFRyYW5zYWN0aW9uKCJ2YWNhdGUiKTsKICAgIH0pOwogIH0KICAvKiogLS0tLS0tLS1wcml2YXRlIG1ldGhvZC0tLS0tLS0tLS0tLS0tLS0tLWVuZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKi8KCgogIHJldHVybiB0aGlzOwp9Cgp2YXIgX2RlZmF1bHQgPSBGbG93RGlzcGxheTsKZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7"},{"version":3,"sources":["E:/boman-framwork/ruoyi-ui/src/utils/flow-display.js"],"names":["FlowDisplay","diagramDiv","event","G","go","GraphObject","make","_this","_displayer","showEditNode","SelectionDeleted","LinkDrawn","externalobjectsdropped","loadFlow","flowData","model","Model","fromJson","pos","modelData","position","diagram","setLinkTextBg","getFlowData","Point","stringify","toJson","animateFlowPath","strStepKeys","errorPathIds","isCompleted","isEnd","stepKeys","split","steps","findFinishedSteps","showFinishedNodes","lastStep","findLastStep","push","loopRunningNode","length","links","findFinishedLinks","loopLinks","init","divId","Diagram","allowDrop","allowSelect","allowHorizontalScroll","allowVerticalScroll","allowMove","allowLink","allowRelink","nodeTemplate","makeNodeTemplate","addDiagramListener","onObjectDoubleClicked","nodeTemplateMap","add","Node","locationSpot","Spot","Center","Binding","parse","makeTwoWay","selectable","selectionAdornmentTemplate","makeNodeSelectionAdornmentTemplate","Panel","name","Size","Shape","portId","fromLinkable","toLinkable","cursor","fill","strokeWidth","stroke","TextBlock","font","margin","wrap","WrapFit","overflow","OverflowEllipsis","linkTemplate","makeLinkTemplate","textAlign","alignment","verticalAlignment","NaN","Adornment","strokeDashArray","Placeholder","ev","part","subject","node","nodeInfo","d","key","Link","relinkableFrom","relinkableTo","reshapable","routing","AvoidsNodes","curve","JumpOver","corner","toShortLength","isPanelMain","toArrow","arrStep","startStep","findStartStep","finishedCount","i","stepKey","step","findNodeForKey","data","type","startTransaction","setDataProperty","commitTransaction","nodes","each","hasOwnProperty","setTimeout","showFinishedLinks","showRunningNode","lastKey","lastFinishedStep","it","findLinksOutOf","lastLink","first","endStep","toNode","arrLinks","map","item","link","shape","findObject","off","strokeDashOffset","text","window","Brush"],"mappings":"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","sourcesContent":["function FlowDisplay (diagramDiv,event) {\r\n var G = go.GraphObject.make;\r\n var _this = {};\r\n var _displayer = {};\r\n\r\n /** 处理传入事件 */\r\n if(!event){\r\n event = {\r\n showEditNode:()=>{},\r\n SelectionDeleted:() => {},\r\n LinkDrawn:() => {},\r\n externalobjectsdropped: () => {}\r\n }\r\n }\r\n if(event.showEditNode){ //编辑节点\r\n _this.showEditNode = event.showEditNode\r\n }\r\n if(event.SelectionDeleted){ //删除事件\r\n _this.SelectionDeleted = event.SelectionDeleted\r\n }\r\n if(event.LinkDrawn){ //线的生成事件\r\n _this.LinkDrawn = event.LinkDrawn\r\n }\r\n if(event.externalobjectsdropped){ //节点的生成事件\r\n _this.externalobjectsdropped = event.externalobjectsdropped\r\n }\r\n\r\n /** --------public method----------------------------------------**/\r\n\r\n /**\r\n * 显示流程图\r\n * @param flowData 流程图json数据\r\n */\r\n this.loadFlow = function (flowData) {\r\n if(!flowData) return;\r\n\r\n _displayer.model = go.Model.fromJson(flowData);\r\n\r\n var pos = _displayer.model.modelData.position;\r\n // if (pos) _displayer.initialPosition = go.Point.parse(pos);\r\n\r\n\r\n this.diagram = _displayer\r\n\r\n // 更改所有连线中间的文本背景色\r\n setLinkTextBg();\r\n };\r\n\r\n /**\r\n * 获取流程图数据\r\n * @returns {*}\r\n */\r\n this.getFlowData = function () {\r\n _displayer.model.modelData.position = go.Point.stringify(_displayer.position);\r\n return _displayer.model.toJson();\r\n };\r\n\r\n /**\r\n * 动画显示流程路径状态\r\n * strStepKeys 已经通过的流程节点key\r\n * isCompleted 流程是否已完成\r\n * isEnd 是否是已关闭流程,已关闭流程的待处理节点则为关闭状态\r\n */\r\n this.animateFlowPath = function(strStepKeys, errorPathIds, isCompleted, isEnd) {\r\n if(!strStepKeys){\r\n return\r\n }\r\n var stepKeys = strStepKeys.split(',');\r\n \r\n // 查找所有【已完成】步骤:【开始】-> 【已完成】(N个)\r\n var steps = findFinishedSteps(stepKeys, isCompleted);\r\n // 高亮所有“已完成”步骤\r\n showFinishedNodes(steps);\r\n\r\n //【开始】-> 【已完成】(N个)->【待处理】\r\n // 或\r\n //【开始】-> 【已完成】(N个)->【结束】\r\n var lastStep = findLastStep(stepKeys, steps, isCompleted,isEnd);\r\n steps.push(lastStep);\r\n if (!isCompleted) {\r\n // “待处理”步骤,加上闪烁动画\r\n loopRunningNode(lastStep,isEnd);\r\n }\r\n\r\n // 在连线上加闪烁动画\r\n if(errorPathIds && errorPathIds.length > 0){\r\n var links = findFinishedLinks(lastStep);\r\n loopLinks(links);\r\n }\r\n \r\n };\r\n\r\n // 当前画布实例\r\n /** --------public method-------------end---------------------------**/\r\n\r\n this.diagram = init(diagramDiv);\r\n\r\n /** --------private method----------------------------------------**/\r\n\r\n /**\r\n * 初始化流程设计器\r\n * @param divId 设计器Div\r\n */\r\n function init(divId) {\r\n _displayer = G(go.Diagram, divId,\r\n {\r\n allowDrop: false,\r\n allowSelect: false,\r\n allowHorizontalScroll: true,\r\n allowVerticalScroll: true,\r\n allowMove: false,\r\n allowLink: false,\r\n allowRelink: false,\r\n \"draggingTool.dragsLink\": false\r\n });\r\n\r\n // 流程步骤的样式模板\r\n _displayer.nodeTemplate = makeNodeTemplate();\r\n\r\n // 双击事件\r\n _displayer.addDiagramListener(\"ObjectDoubleClicked\", onObjectDoubleClicked);\r\n \r\n\r\n // 添加开始节点\r\n _displayer.nodeTemplateMap.add(\"Start\",\r\n G(go.Node, \"Spot\",\r\n { locationSpot: go.Spot.Center },\r\n new go.Binding(\"location\", \"loc\", go.Point.parse).makeTwoWay(go.Point.stringify),\r\n { selectable: true, selectionAdornmentTemplate: makeNodeSelectionAdornmentTemplate() },\r\n new go.Binding(\"angle\").makeTwoWay(),\r\n G(go.Panel, \"Auto\",\r\n { name: \"PANEL\" },\r\n new go.Binding(\"desiredSize\", \"size\", go.Size.parse).makeTwoWay(go.Size.stringify),\r\n G(go.Shape, \"Circle\", // default figure\r\n {\r\n portId: \"\", // the default port: if no spot on link data, use closest side\r\n name: \"PIPE\",\r\n fromLinkable: true,\r\n toLinkable: true,\r\n cursor: \"pointer\",\r\n fill: \"#5F7790\", // default color\r\n strokeWidth: 1,\r\n stroke: \"#5F7790\"\r\n },\r\n new go.Binding(\"figure\"),\r\n new go.Binding(\"stroke\"),\r\n new go.Binding(\"strokeDashArray\"),\r\n new go.Binding(\"strokeWidth\"),\r\n new go.Binding(\"fill\")),\r\n G(go.TextBlock,\r\n {\r\n font: \"bold 11pt Helvetica, Arial, sans-serif\",\r\n margin:8,\r\n wrap: go.TextBlock.WrapFit,\r\n stroke: \"white\",\r\n overflow:go.TextBlock.OverflowEllipsis\r\n },\r\n new go.Binding(\"text\").makeTwoWay()),\r\n // {\r\n // toolTip: G(go.Adornment, \"Auto\",\r\n // G(go.Shape, { fill: \"#FFFFCC\" }),\r\n // G(go.TextBlock, { margin: 4 },\r\n // new go.Binding(\"text\", \"\", nodeInfo))\r\n // )\r\n // }\r\n )\r\n ));\r\n \r\n // 添加结束节点\r\n _displayer.nodeTemplateMap.add(\"End\",\r\n G(go.Node, \"Spot\",\r\n { locationSpot: go.Spot.Center },\r\n new go.Binding(\"location\", \"loc\", go.Point.parse).makeTwoWay(go.Point.stringify),\r\n { selectable: true, selectionAdornmentTemplate: makeNodeSelectionAdornmentTemplate() },\r\n new go.Binding(\"angle\").makeTwoWay(),\r\n G(go.Panel, \"Auto\",\r\n { name: \"PANEL\" },\r\n new go.Binding(\"desiredSize\", \"size\", go.Size.parse).makeTwoWay(go.Size.stringify),\r\n G(go.Shape, \"Circle\", // default figure\r\n {\r\n portId: \"\", // the default port: if no spot on link data, use closest side\r\n name: \"PIPE\",\r\n fromLinkable: true,\r\n toLinkable: true,\r\n cursor: \"pointer\",\r\n fill: \"#5F7790\", // default color\r\n strokeWidth: 1,\r\n stroke: \"#5F7790\"\r\n },\r\n new go.Binding(\"figure\"),\r\n new go.Binding(\"stroke\"),\r\n new go.Binding(\"strokeDashArray\"),\r\n new go.Binding(\"strokeWidth\"),\r\n new go.Binding(\"fill\")),\r\n G(go.TextBlock,\r\n {\r\n font: \"bold 11pt Helvetica, Arial, sans-serif\",\r\n margin: 8,\r\n wrap: go.TextBlock.WrapFit,\r\n stroke: \"white\"\r\n },\r\n new go.Binding(\"text\").makeTwoWay()),\r\n // {\r\n // toolTip: G(go.Adornment, \"Auto\",\r\n // G(go.Shape, { fill: \"#FFFFCC\" }),\r\n // G(go.TextBlock, { margin: 4 },\r\n // new go.Binding(\"text\", \"\", nodeInfo))\r\n // )\r\n // }\r\n )\r\n ));\r\n\r\n // 流程连接线的样式模板\r\n _displayer.linkTemplate = makeLinkTemplate();\r\n\r\n return _displayer\r\n }\r\n\r\n\r\n /**\r\n * 步骤图的样式模板\r\n * @returns {*}\r\n */\r\n function makeNodeTemplate(){\r\n return G(go.Node, \"Spot\",\r\n { locationSpot: go.Spot.Center },\r\n new go.Binding(\"location\", \"loc\", go.Point.parse).makeTwoWay(go.Point.stringify),\r\n { selectable: true, selectionAdornmentTemplate: makeNodeSelectionAdornmentTemplate() },\r\n new go.Binding(\"angle\").makeTwoWay(),\r\n G(go.Panel, \"Auto\",\r\n { name: \"PANEL\" },\r\n new go.Binding(\"desiredSize\", \"size\", go.Size.parse).makeTwoWay(go.Size.stringify),\r\n G(go.Shape, \"RoundedRectangle\", // default figure\r\n {\r\n portId: \"\", // the default port: if no spot on link data, use closest side\r\n name: \"PIPE\",\r\n fromLinkable: true,\r\n toLinkable: true,\r\n cursor: \"pointer\",\r\n fill: \"white\", // default color\r\n strokeWidth: 1,\r\n stroke: \"#DCDEE2\"\r\n },\r\n new go.Binding(\"figure\"),\r\n new go.Binding(\"stroke\"),\r\n new go.Binding(\"strokeDashArray\"),\r\n new go.Binding(\"strokeWidth\"),\r\n new go.Binding(\"fill\")),\r\n G(go.TextBlock,\r\n {\r\n font: \"bold 11pt Helvetica, Arial, sans-serif\",\r\n margin: 8,\r\n wrap: go.TextBlock.WrapFit,\r\n stroke: \"#343434\",\r\n textAlign: \"center\",\r\n alignment: go.Spot.Center,\r\n verticalAlignment: go.Spot.Center,\r\n wrap: go.TextBlock.WrapFit,\r\n minSize: new go.Size(126, 27),\r\n maxSize: new go.Size(126, NaN)\r\n },\r\n new go.Binding(\"text\").makeTwoWay()),\r\n // {\r\n // toolTip: G(go.Adornment, \"Auto\",\r\n // G(go.Shape, { fill: \"#FFFFCC\" }),\r\n // G(go.TextBlock, { margin: 4 },\r\n // new go.Binding(\"text\", \"\", nodeInfo))\r\n // )\r\n // }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * 选中节点的样式\r\n * @returns {*}\r\n */\r\n function makeNodeSelectionAdornmentTemplate(){\r\n return G(go.Adornment, \"Auto\",\r\n G(go.Shape, { fill: null, stroke: \"deepskyblue\", strokeWidth: 1.5, strokeDashArray: [4, 2] }),\r\n G(go.Placeholder)\r\n );\r\n }\r\n\r\n /**\r\n * 流程图元素的双击事件\r\n * @param ev\r\n */\r\n function onObjectDoubleClicked(ev) {\r\n var part = ev.subject.part;\r\n showEditNode(part);\r\n }\r\n\r\n /**\r\n * 编辑节点信息\r\n */\r\n function showEditNode(node) {\r\n _this.showEditNode(node)\r\n return node\r\n }\r\n\r\n /**\r\n * tooltip上显示的信息\r\n * @param d\r\n * @returns {string}\r\n */\r\n function nodeInfo(d) {\r\n if (!d.key) return \"无key\";\r\n return \"编号:\" + d.key;\r\n }\r\n\r\n /**\r\n * 定义连接线的样式模板\r\n * @returns {*}\r\n */\r\n function makeLinkTemplate(){\r\n return G(go.Link,\r\n { selectable: false },\r\n { relinkableFrom: true, relinkableTo: true, reshapable: true },\r\n {\r\n routing: go.Link.AvoidsNodes,\r\n curve: go.Link.JumpOver,\r\n corner: 5,\r\n toShortLength: 4\r\n },\r\n new go.Binding(\"layerName\", \"color\"),\r\n new go.Binding(\"zOrder\"),\r\n // G(go.Shape, { isPanelMain: true, stroke: \"black\", strokeWidth: 3 }, new go.Binding(\"stroke\"),new go.Binding(\"zOrder\")),\r\n G(go.Shape, { isPanelMain: true, stroke: \"#D5D5D5\", strokeWidth: 2 }),\r\n G(go.Shape, { isPanelMain: true, stroke: \"#D5D5D5\", strokeWidth: 1, name: \"PIPE\", }),\r\n G(go.Shape,\r\n { toArrow: \"standard\", stroke: null, fill: '#D5D5D5' }, new go.Binding(\"stroke\"), new go.Binding(\"fill\"), new go.Binding(\"zOrder\")),\r\n G(go.Panel, \"Auto\",\r\n G(go.Shape, {\r\n fill: null,\r\n stroke: null\r\n }, new go.Binding(\"fill\", \"pFill\"), new go.Binding(\"zOrder\")),\r\n G(go.TextBlock,\r\n {\r\n textAlign: \"center\",\r\n font: \"10pt helvetica, arial, sans-serif\",\r\n stroke: \"#555555\",\r\n margin: 4\r\n },\r\n new go.Binding(\"text\", \"text\"), new go.Binding(\"zOrder\"))\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * 返回所有【已完成】的步骤\r\n * @param stepKeys\r\n * @param isCompleted\r\n * @returns {Array}\r\n */\r\n function findFinishedSteps(stepKeys, isCompleted) {\r\n\r\n var arrStep = [];\r\n\r\n if (!stepKeys) return arrStep;\r\n\r\n var startStep = findStartStep();// 【开始】步骤\r\n arrStep.push(startStep);\r\n\r\n // 【已完成】的步骤\r\n var finishedCount = stepKeys.length - 1;// 不包含最后一个“待处理“步骤\r\n if (isCompleted) {\r\n finishedCount = stepKeys.length;// 包含所有步骤\r\n }\r\n for (var i = 0; i < finishedCount; i++) {\r\n var stepKey = stepKeys[i];\r\n var step = _displayer.findNodeForKey(stepKey);\r\n if (!step) continue;\r\n\r\n arrStep.push(step);\r\n }\r\n return arrStep;\r\n }\r\n\r\n /**\r\n * 高亮“已完成”步骤\r\n * @param steps\r\n */\r\n function showFinishedNodes(steps) {\r\n\r\n if (!steps) return;\r\n for (var i = 0; i < steps.length; i++) {\r\n var step = steps[i];\r\n // 步骤(去除开始和结束节点)\r\n if(step.data.type !== 1 && step.data.type !== 2){\r\n _displayer.startTransaction(\"vacate\");\r\n _displayer.model.setDataProperty(step.data, \"fill\", \"rgba(9,161,85,0.04)\");\r\n _displayer.model.setDataProperty(step.data, \"stroke\", \"rgba(9,161,85,1)\");\r\n _displayer.model.setDataProperty(step.data, \"strokeWidth\", 1);\r\n _displayer.commitTransaction(\"vacate\");\r\n }\r\n \r\n \r\n }\r\n }\r\n\r\n /**\r\n *\r\n * 查找【开始】节点\r\n * @param {} steps\r\n * @returns {}\r\n */\r\n function findStartStep() {\r\n var startStep = null;\r\n _displayer.nodes.each(function(step) {\r\n if (step.data.hasOwnProperty('key') && step.data.key == -1) {\r\n startStep = step;\r\n return false;\r\n }\r\n });\r\n return startStep;\r\n }\r\n\r\n /**\r\n * 循环闪烁“已完成”步骤之间的连线\r\n * @param links\r\n */\r\n function loopLinks(links) {\r\n setTimeout(function () {\r\n showFinishedLinks(links);// “已完成”连线\r\n }, 300);\r\n }\r\n\r\n /**\r\n * 循环闪烁“待处理”步骤\r\n * @param node\r\n */\r\n function loopRunningNode(node,isEnd) {\r\n setTimeout(function () {\r\n showRunningNode(node,isEnd);\r\n // loopRunningNode(node);\r\n }, 200);\r\n }\r\n\r\n /**\r\n * 高亮“待处理”步骤\r\n * @param node\r\n */\r\n function showRunningNode(node,isEnd) {\r\n if (!node) return;\r\n // 去除结束节点和开始节点\r\n if(node.data.type === 1 || node.data.type === 2){\r\n return\r\n }\r\n if(!isEnd){\r\n _displayer.startTransaction(\"vacate\");\r\n _displayer.model.setDataProperty(node.data, \"fill\", (node.data.fill === \"#ff9001\") ? \"#ffB001\" : \"rgba(255,153,0,0.04)\");\r\n _displayer.commitTransaction(\"vacate\");\r\n }else{\r\n _displayer.startTransaction(\"vacate\");\r\n _displayer.model.setDataProperty(node.data, \"fill\", (node.data.fill === \"#ff9001\") ? \"#ffB001\" : \"rgba(237,64,20,0.04)\");\r\n _displayer.commitTransaction(\"vacate\");\r\n }\r\n \r\n \r\n\r\n // 边框加上流水动画\r\n // var shape = node.findObject(\"PIPE\");\r\n // var off = shape.strokeDashOffset - 2;\r\n // shape.strokeDashOffset = (off <= 0) ? 20 : off;\r\n }\r\n\r\n /**\r\n * 获取最后一个步骤(【待处理】或【结束】)\r\n * @param stepKeys\r\n * @param steps\r\n * @param isCompleted\r\n * @returns {*}\r\n */\r\n function findLastStep(stepKeys, steps, isCompleted, isEnd) {\r\n var lastStep;\r\n if (!isCompleted) {\r\n // 获取“待处理”步骤\r\n var lastKey = stepKeys[stepKeys.length - 1];\r\n var step = _displayer.findNodeForKey(lastKey);\r\n if(step.data.type === 1 || step.data.type === 2){\r\n\r\n return step\r\n }\r\n if(!isEnd){\r\n _displayer.startTransaction(\"vacate\");\r\n _displayer.model.setDataProperty(step.data, \"stroke\", \"#FF9900\");\r\n _displayer.model.setDataProperty(step.data, \"strokeWidth\", 1);\r\n // _displayer.model.setDataProperty(step.data, \"strokeDashArray\", [10, 10]);\r\n _displayer.commitTransaction(\"vacate\");\r\n }else{\r\n _displayer.startTransaction(\"vacate\");\r\n _displayer.model.setDataProperty(step.data, \"stroke\", \"#ED4014\");\r\n _displayer.model.setDataProperty(step.data, \"strokeWidth\", 1);\r\n // _displayer.model.setDataProperty(step.data, \"strokeDashArray\", [10, 10]);\r\n _displayer.commitTransaction(\"vacate\");\r\n }\r\n \r\n\r\n //【开始】-> 【已完成】(N个)->【待处理】\r\n lastStep = step;\r\n } else {\r\n // 用最后一根连线获取【结束】步骤\r\n var lastFinishedStep = steps[steps.length - 1];\r\n\r\n var it = lastFinishedStep.findLinksOutOf();\r\n var lastLink = it.first();\r\n var endStep = lastLink.toNode;\r\n\r\n //【开始】-> 【已完成】(N个)->【结束】\r\n lastStep = endStep;\r\n }\r\n\r\n return lastStep;\r\n }\r\n\r\n /**\r\n * 查找错误连线\r\n * @param steps\r\n * @returns {Array}\r\n */\r\n function findFinishedLinks(lastStep) {\r\n\r\n var arrLinks = [];\r\n lastStep.findLinksOutOf().map(item => {\r\n arrLinks.push(item)\r\n })\r\n\r\n return arrLinks;\r\n }\r\n\r\n /**\r\n * 高亮所有“已完成”步骤的连线\r\n * @param links\r\n */\r\n function showFinishedLinks(links) {\r\n\r\n if (!links) return;\r\n\r\n for (var i = 0; i < links.length; i++) {\r\n // 连线\r\n var link = links[i];\r\n _displayer.startTransaction(\"vacate\");\r\n _displayer.model.setDataProperty(link.data, \"stroke\", (link.data.stroke === \"#4fba4f\" ? \"#4fba4f\" : \"#ED4014\"));\r\n _displayer.model.setDataProperty(link.data, \"fill\", (link.data.fill === \"#4fba4f\" ? \"#4fba4f\" : \"#ED4014\"));\r\n _displayer.model.setDataProperty(link.data, \"zOrder\", 999);\r\n _displayer.commitTransaction(\"vacate\");\r\n\r\n // 置于最上层,防止被遮挡\r\n _displayer.startTransaction('modified zOrder');\r\n _displayer.model.setDataProperty(link.data, \"zOrder\", 1);\r\n _displayer.commitTransaction('modified zOrder');\r\n\r\n // 连线加上流水动画\r\n var shape = link.findObject(\"PIPE\");\r\n shape.stroke = '#ED4014'\r\n var off = shape.strokeDashOffset - 2;\r\n shape.strokeDashOffset = (off <= 0) ? 20 : off;\r\n }\r\n }\r\n\r\n /**\r\n * 更改所有连线中间的文本背景色\r\n */\r\n function setLinkTextBg() {\r\n _displayer.links.each(function (link) {\r\n _displayer.startTransaction(\"vacate\");\r\n if (link.data.text) {\r\n _displayer.model.setDataProperty(link.data, \"pFill\", window.go.GraphObject.make(go.Brush, \"Radial\", {\r\n 0: \"rgb(240, 240, 240)\",\r\n 0.3: \"rgb(240, 240, 240)\",\r\n 1: \"rgba(240, 240, 240, 0)\"\r\n }));\r\n }\r\n _displayer.commitTransaction(\"vacate\");\r\n });\r\n }\r\n\r\n /** --------private method------------------end----------------------**/\r\n\r\n return this;\r\n}\r\n\r\nexport default FlowDisplay\r\n"]}]}