862b3c76a1e58bd5447375955bf77ebe.json 77 KB

1
  1. {"remainingRequest":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\babel-loader\\lib\\index.js!D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\wnmp\\www\\vue\\seaBlueAdmin\\src\\views\\Marketing\\MarketingList\\AddCoupon.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\src\\views\\Marketing\\MarketingList\\AddCoupon.vue","mtime":1678954023553},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\babel.config.js","mtime":1681371897685},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1681371913603},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1681371912860},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1681371913603},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1681371925849}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IEdvb2RzQ2hvb3NlU2hvcCBmcm9tICIuLi8uLi8uLi9jb21wb25lbnQvZ29vZHMvR29vZHNDaG9vc2VTaG9wIjsKaW1wb3J0IEdvb2RzQ2F0ZWdvcnkgZnJvbSAiQC9jb21wb25lbnQvY29tbW9uL0dvb2RzQ2F0ZWdvcnkudnVlIjsKaW1wb3J0IEJyYW5kU2VsTW9kZWwgZnJvbSAiQC9jb21wb25lbnQvZ29vZHMvQnJhbmRTZWxNb2RlbC52dWUiOwppbXBvcnQgQ2xpZW50TGlzdE1vZGFsIGZyb20gIkAvY29tcG9uZW50L2NvbW1vbi9DbGllbnRMaXN0TW9kYWwiOwppbXBvcnQgU2FsZUdvb2RzTGlzdCBmcm9tICJAL2NvbXBvbmVudC9nb29kcy9TYWxlR29vZHNMaXN0IjsKaW1wb3J0IHsgYWRkQ3VzdG9tZXJTb3VyY2UsIGVkaXRDdXN0b21lclNvdXJjZSwgZ2V0QWxsQ3VzdG9tZXJTb3VyY2UgfSBmcm9tICJAL2FwaS9TeXN0ZW0iOwppbXBvcnQgeyBhZGRQYXVzZVNhdmUsIGRlbFBhdXNlU2F2ZSwgZ2V0UGF1c2VTYXZlIH0gZnJvbSAiQC9hcGkvY29tbW9uIjsKaW1wb3J0IHsgZWRpdE1hcmtldCwgYWRkTWFya2V0LCBnZXRJbmZvIH0gZnJvbSAiQC9hcGkvTWFya2V0IjsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJBZGRDb3Vwb24iLAogIGNvbXBvbmVudHM6IHsKICAgIEdvb2RzQ2hvb3NlU2hvcCwKICAgIEdvb2RzQ2F0ZWdvcnksCiAgICBDbGllbnRMaXN0TW9kYWwsCiAgICBCcmFuZFNlbE1vZGVsLAogICAgU2FsZUdvb2RzTGlzdAogIH0sCgogIGRhdGEoKSB7CiAgICBjb25zdCBhcHBseVJhbmdlVmFsaSA9IChydWxlLCB2YWx1ZSwgY2FsbGJhY2spID0+IHsKICAgICAgaWYgKHZhbHVlID09PSAyMCAmJiAhdGhpcy5hZGRfZm9ybS5jYXRlZ29yeUNvbGxlY3QubGVuZ3RoKSB7CiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCLor7fpgInmi6nmjIflrprliIbnsbsiKSk7CiAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IDMwICYmICF0aGlzLmFkZF9mb3JtLmJyYW5kQ29sbGVjdC5sZW5ndGgpIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuivt+mAieaLqeaMh+WumuWTgeeJjCIpKTsKICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gNDAgJiYgIXRoaXMuZ29vZHNfbGlzdC5sZW5ndGgpIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuivt+mAieaLqeaMh+WumuWVhuWTgSIpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9OwoKICAgIGNvbnN0IHVzZXJUeXBlSWRWYWxpID0gKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgPT4gewogICAgICBpZiAodmFsdWUgPT09IDIgJiYgdGhpcy5hZGRfZm9ybS5taW5QcmljZSA8PSAwKSB7CiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCLor7fovpPlhaXmraPnoa7nmoTpl6jmp5vph5Hpop0iKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY2FsbGJhY2soKTsKICAgICAgfQogICAgfTsKCiAgICBjb25zdCBtdXN0Q29uZGl0aW9uVmFsaSA9IChydWxlLCB2YWx1ZSwgY2FsbGJhY2spID0+IHsKICAgICAgaWYgKHRoaXMuYWRkX2Zvcm0uZ3JhbnRUeXBlID09PSA0MCAmJiB2YWx1ZSA8PSAwKSB7CiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCLor7fovpPlhaXmraPnoa7nmoTmu6Hlh4/ph5Hpop0iKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY2FsbGJhY2soKTsKICAgICAgfQogICAgfTsKCiAgICBjb25zdCBncmFudEVuZFRpbWVWYWxpID0gKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgPT4gewogICAgICBpZiAodGhpcy5hZGRfZm9ybS5jb3Vwb25UeXBlICE9PSAyMCAmJiAhdmFsdWUpIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuivt+mAieaLqeWPkeaUvuaXtumXtCIpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9OwoKICAgIGNvbnN0IGN1c3RvbWVyU291cmNlSWRWYWxpID0gKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgPT4gewogICAgICBpZiAodGhpcy5jdXN0b21lclJhbmdlID09PSA0ICYmIHBhcnNlSW50KHRoaXMuYWRkX2Zvcm0uZ3JhbnRUeXBlKSAhPT0gMjAgJiYgcGFyc2VJbnQodGhpcy5hZGRfZm9ybS5jb3Vwb25UeXBlKSAhPT0gMjAgJiYgIXZhbHVlLmxlbmd0aCkgewogICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcigi6K+36YCJ5oup6aKG5Y+W6IyD5Zu0IikpOwogICAgICB9IGVsc2UgewogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgIH0KICAgIH07CgogICAgY29uc3QgY3VzdG9tZXJJZHNWYWxpID0gKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgPT4gewogICAgICBpZiAodGhpcy5hZGRfZm9ybS5ncmFudFR5cGUgPT09IDIwICYmICF2YWx1ZS5sZW5ndGgpIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuivt+mAieaLqemAieaLqeWuouaItyIpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9OwoKICAgIGNvbnN0IGVuZFRpbWVWYWxpID0gKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgPT4gewogICAgICBpZiAodGhpcy5hZGRfZm9ybS5jb3Vwb25UeXBlICE9PSAyMCAmJiB0aGlzLmFkZF9mb3JtLmdyYW50VHlwZSAhPT0gMTAgJiYgIXZhbHVlKSB7CiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCLor7fpgInmi6nmnInmlYjml7bpl7QiKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY2FsbGJhY2soKTsKICAgICAgfQogICAgfTsKCiAgICByZXR1cm4gewogICAgICBnb29kc19saXN0OiBbXSwKICAgICAgLy8g5ZWG5ZOB6IyD5Zu077yM5oyH5a6a5ZWG5ZOBCiAgICAgIGdvb2RzX3Nob3c6IGZhbHNlLAogICAgICAvLyDllYblk4HojIPlm7TvvIzpgInmi6nmjIflrprllYblk4HlvLnnqpcKICAgICAgc2hvd19tb2RlbDogZmFsc2UsCiAgICAgIC8vIOWuouaIt+exu+WeiwogICAgICAvLyDmlrDlop7lrqLmiLfnsbvlnovmlbDmja4KICAgICAgYWRkX2N1c3Rvcm06IHsKICAgICAgICBuYW1lOiAiIiwKICAgICAgICBkZWZhdWx0U3RhdHVzOiA0LAogICAgICAgIGVuYWJsZVN0YXR1czogNQogICAgICB9LAogICAgICAvLyDmlrDlop7lrqLmiLfnsbvlnovnmoTpqozor4EKICAgICAgcnVsZXM6IHsKICAgICAgICBuYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5a6i5oi357G75Z6LIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICBjYXRlZ29yeUNvbGxlY3Q6IFtdLAogICAgICBtYXJrZXRJZDogIiIsCiAgICAgIHNob3dfc2hvcDogZmFsc2UsCiAgICAgIGN1c3RvbWVyX3Nob3c6IGZhbHNlLAogICAgICBkaXN0cmlidXRpb25NZXRob2RMaXN0OiBbewogICAgICAgIGRpc3RyaWJ1dGlvbk1ldGhvZDogMTAsCiAgICAgICAgdGl0bGU6ICLkuLvliqjpooblj5YiCiAgICAgIH0sIHsKICAgICAgICBkaXN0cmlidXRpb25NZXRob2Q6IDIwLAogICAgICAgIHRpdGxlOiAi5a6a5ZCR5Y+R5pS+IgogICAgICB9LCB7CiAgICAgICAgZGlzdHJpYnV0aW9uTWV0aG9kOiAzMCwKICAgICAgICB0aXRsZTogIuazqOWGjOmihuWPliIKICAgICAgfSwgewogICAgICAgIGRpc3RyaWJ1dGlvbk1ldGhvZDogNDAsCiAgICAgICAgdGl0bGU6ICLlnKjnur/mlK/ku5jpooblj5YiCiAgICAgIH1dLAogICAgICAvLyDlvZPpgInmi6nkvJrlkZjljaHkvJjmg6DliLgKICAgICAgdmlwTGlzdDogW3sKICAgICAgICBkaXN0cmlidXRpb25NZXRob2Q6IDEwLAogICAgICAgIHRpdGxlOiAi5Li75Yqo6aKG5Y+WIgogICAgICB9LCB7CiAgICAgICAgZGlzdHJpYnV0aW9uTWV0aG9kOiA1MCwKICAgICAgICB0aXRsZTogIuW8gOWNoei1oOmAgSIKICAgICAgfV0sCiAgICAgIHByb2R1Y3RSYW5nZTogW3sKICAgICAgICBwcm9kdWN0UmFuZ2VJZDogMTAsCiAgICAgICAgdGl0bGU6ICLlhajpg6jllYblk4EiCiAgICAgIH0sIHsKICAgICAgICBwcm9kdWN0UmFuZ2VJZDogNDAsCiAgICAgICAgdGl0bGU6ICLmjIflrprllYblk4EiCiAgICAgIH0sIHsKICAgICAgICBwcm9kdWN0UmFuZ2VJZDogMjAsCiAgICAgICAgdGl0bGU6ICLmjIflrprliIbnsbsiCiAgICAgIH0sIHsKICAgICAgICBwcm9kdWN0UmFuZ2VJZDogMzAsCiAgICAgICAgdGl0bGU6ICLmjIflrprlk4HniYwiCiAgICAgIH1dLAogICAgICBjb3Vwb25MaXN0OiBbewogICAgICAgIGlkOiAxMCwKICAgICAgICB0aXRsZTogIuaZrumAmuS8mOaDoOWIuCIKICAgICAgfSwgewogICAgICAgIGlkOiAyMCwKICAgICAgICB0aXRsZTogIuS8muWRmOWNoeS8mOaDoOWIuCIKICAgICAgfV0sCiAgICAgIHVzZXJUeXBlOiBbewogICAgICAgIHVzZXJUeXBlSWQ6IC0xLAogICAgICAgIHRpdGxlOiAi5LiN6ZmQ55SoIgogICAgICB9LCB7CiAgICAgICAgdXNlclR5cGVJZDogMiwKICAgICAgICB0aXRsZTogIua7oSIKICAgICAgfV0sCiAgICAgIGFkZF9ydWxlczogewogICAgICAgIG5hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXkvJjmg6DliLjlkI3np7AiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0sCiAgICAgICAgcmVkdWNlUHJpY2U6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXkvJjmg6DliLjlgLwiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0sCiAgICAgICAgZW5kVGltZTogW3sKICAgICAgICAgIHZhbGlkYXRvcjogZW5kVGltZVZhbGksCiAgICAgICAgICB0cmlnZ2VyOiAiY2hhbmdlIgogICAgICAgIH1dLAogICAgICAgIGdyYW50RW5kVGltZTogW3sKICAgICAgICAgIHZhbGlkYXRvcjogZ3JhbnRFbmRUaW1lVmFsaSwKICAgICAgICAgIHRyaWdnZXI6ICJjaGFuZ2UiCiAgICAgICAgfV0sCiAgICAgICAgdXNlclR5cGVJZDogW3sKICAgICAgICAgIHZhbGlkYXRvcjogdXNlclR5cGVJZFZhbGksCiAgICAgICAgICB0cmlnZ2VyOiAiY2hhbmdlIgogICAgICAgIH1dLAogICAgICAgIGdyYW50VHlwZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+mAieaLqeWPkeaUvuaWueW8jyIsCiAgICAgICAgICB0cmlnZ2VyOiAiY2hhbmdlIgogICAgICAgIH1dLAogICAgICAgIHRvdGFsTnVtOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5oC75Y+R5pS+5pWwIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIHVzZXJEZXRhaWw6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXmr4/kurrlj5HmlL7mlbAiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0sCiAgICAgICAgdXNlU2hvcDogW3sKICAgICAgICAgIHR5cGU6ICJhcnJheSIsCiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fpgInmi6nkvb/nlKjojIPlm7QiLAogICAgICAgICAgdHJpZ2dlcjogImNoYW5nZSIKICAgICAgICB9XSwKICAgICAgICBjdXN0b21lclNvdXJjZUlkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICB2YWxpZGF0b3I6IGN1c3RvbWVyU291cmNlSWRWYWxpLAogICAgICAgICAgdHJpZ2dlcjogImNoYW5nZSIKICAgICAgICB9XSwKICAgICAgICBjdXN0b21lcklkczogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgdmFsaWRhdG9yOiBjdXN0b21lcklkc1ZhbGksCiAgICAgICAgICB0cmlnZ2VyOiAiY2hhbmdlIgogICAgICAgIH1dLAogICAgICAgIGFwcGx5UmFuZ2U6IFt7CiAgICAgICAgICB2YWxpZGF0b3I6IGFwcGx5UmFuZ2VWYWxpLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0sCiAgICAgICAgYWxsb3dOdW06IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXmr4/kurrpooblj5bmlbAiLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfV0sCiAgICAgICAgbXVzdENvbmRpdGlvbjogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgdmFsaWRhdG9yOiBtdXN0Q29uZGl0aW9uVmFsaSwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIHRpbWU6IFtdLAogICAgICBncmFudFRpbWU6IFtdLAogICAgICBicmFuZE5hbWVBcnI6IFtdLAogICAgICBhZGRyZXNzX2xpc3Q6IFtdLAogICAgICBjdXN0b21lclR5cGU6IFtdLAogICAgICB1c2VTaG9wTmFtZUFycjogW10sCiAgICAgIGNob29zZUN1c3RvbWVyOiBbXSwKICAgICAgLy8g6YCJ5oup5a6i5oi3CiAgICAgIHNlbF9icmFuZDogZmFsc2UsCiAgICAgIGFkZF9mb3JtOiB7CiAgICAgICAgbmFtZTogIiIsCiAgICAgICAgc3RhcnRUaW1lOiAiIiwKICAgICAgICBlbmRUaW1lOiAiIiwKICAgICAgICByZWR1Y2VQcmljZTogIiIsCiAgICAgICAgY291cG9uVHlwZTogMTAsCiAgICAgICAgLy8g5LyY5oOg5Yi457G75Z6LCiAgICAgICAgcmVtYXJrOiAiIiwKICAgICAgICBtaW5QcmljZTogIiIsCiAgICAgICAgLy8g5L2/55So6Zeo5qebKC0x5LiN6ZmQ55SoKQogICAgICAgIHVzZXJUeXBlSWQ6IC0xLAogICAgICAgIGdyYW50VHlwZTogMTAsCiAgICAgICAgLy8g5Y+R5pS+5pa55byPCiAgICAgICAgdG90YWxOdW06ICIiLAogICAgICAgIGFsbG93TnVtOiAiIiwKICAgICAgICBtdXN0Q29uZGl0aW9uOiAiIiwKICAgICAgICAvLyDmu6Hlh4/otaDpgIEKICAgICAgICBjdXN0b21lclNvdXJjZUlkOiBbXSwKICAgICAgICB1c2VTaG9wOiBbXSwKICAgICAgICAvLyDkvb/nlKjojIPlm7QKICAgICAgICBjdXN0b21lcklkczogW10sCiAgICAgICAgLy8g6YCJ5oup5a6i5oi3CiAgICAgICAgZ3JhbnRTdGFydFRpbWU6ICIiLAogICAgICAgIGdyYW50RW5kVGltZTogIiIsCiAgICAgICAgYXBwbHlSYW5nZTogMTAsCiAgICAgICAgaXNNdXRleDogNCwKICAgICAgICAvLyDmmK/lkKbkuI7lhbbku5bmtLvliqjkupLmlqUKICAgICAgICBjYXRlZ29yeUNvbGxlY3Q6IFtdLAogICAgICAgIGJyYW5kQ29sbGVjdDogW10sCiAgICAgICAgZ29vZHNDb2xsZWN0OiBbXSAvLyDllYblk4FpZOmbhuWQiAoKICAgICAgfSwKICAgICAgdXNlcl9jZW50ZXJfaWQ6IDAsCiAgICAgIHBhZ2VOYW1lOiAiIiwKICAgICAgLy8gIOS/ruaUueWuouaIt+exu+Wei+mAieaLqeaWueW8jwogICAgICBjdXN0b21lclJhbmdlOiA1LAogICAgICBpc0luZGV0ZXJtaW5hdGU6IGZhbHNlLAogICAgICBjaGVja0FsbDogZmFsc2UKICAgIH07CiAgfSwKCiAgY3JlYXRlZCgpIHsKICAgIHRoaXMucGFnZU5hbWUgPSB0aGlzLiRyb3V0ZS5uYW1lOwogICAgdGhpcy5tYXJrZXRJZCA9IHRoaXMuJHJvdXRlLnBhcmFtcy5pZDsKCiAgICBpZiAodGhpcy5tYXJrZXRJZCkgewogICAgICB0aGlzLmdldEluZm8oKTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuZ2V0UGF1c2VTYXZlKCk7CiAgICB9CgogICAgdGhpcy5nZXRBbGxDdXN0b21lclNvdXJjZSgpOwogIH0sCgogIG1ldGhvZHM6IHsKICAgIENoZWNrQWxsQ2hhbmdlKHZhbCkgewogICAgICB0aGlzLmFkZF9mb3JtLmN1c3RvbWVyU291cmNlSWQgPSB2YWwgPyB0aGlzLmN1c3RvbWVyVHlwZS5tYXAoaXRlbSA9PiBpdGVtLmlkKSA6IFtdOwogICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlOwogICAgfSwKCiAgICBjdXN0b21lclR5cGVDaGFuZ2UodmFsdWUpIHsKICAgICAgbGV0IGNoZWNrZWRDb3VudCA9IHZhbHVlLmxlbmd0aDsKICAgICAgdGhpcy5jaGVja0FsbCA9IGNoZWNrZWRDb3VudCA9PT0gdGhpcy5jdXN0b21lclR5cGUubGVuZ3RoOwogICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGNoZWNrZWRDb3VudCA+IDAgJiYgY2hlY2tlZENvdW50IDwgdGhpcy5jdXN0b21lclR5cGUubGVuZ3RoOwogICAgfSwKCiAgICAvLyDlhbPpl63lvLnnqpcKICAgIGhhbmRsZUNsb3NlKCkgewogICAgICB0aGlzLmFkZF9jdXN0b3JtID0gewogICAgICAgIG5hbWU6ICIiLAogICAgICAgIGRlZmF1bHRTdGF0dXM6IDQsCiAgICAgICAgZW5hYmxlU3RhdHVzOiA1CiAgICAgIH07CiAgICAgIHRoaXMuc2hvd19tb2RlbCA9IGZhbHNlOwogICAgfSwKCiAgICAvLyDmlrDlop7lrqLmiLfnsbvlnosKICAgIGFzeW5jIGFkZERhdGEoKSB7CiAgICAgIHRoaXMuJHJlZnMuYWRkX2Zvcm0udmFsaWRhdGUoYXN5bmMgdmFsaWQgPT4gewogICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgbGV0IHRhcmdldCA9IHt9OwoKICAgICAgICAgIGlmICghdGhpcy5pc19lZGl0KSB7CiAgICAgICAgICAgIHRhcmdldCA9IGF3YWl0IGFkZEN1c3RvbWVyU291cmNlKHsgLi4udGhpcy5hZGRfY3VzdG9ybQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRhcmdldCA9IGF3YWl0IGVkaXRDdXN0b21lclNvdXJjZSh0aGlzLnR5cGVfaWQsIHsgLi4udGhpcy5hZGRfY3VzdG9ybQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KCiAgICAgICAgICBjb25zdCBkYXRhID0gdGFyZ2V0OwogICAgICAgICAgdGhpcy4kbWVzc2FnZSgi5a6i5oi357G75Z6L5Yib5bu65oiQ5YqfIik7CiAgICAgICAgICB0aGlzLnNob3dfbW9kZWwgPSBmYWxzZTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAvLyDmmoLlrZgKICAgIGFzeW5jIGFkZFBhdXNlU2F2ZSgpIHsKICAgICAgY29uc3QgdXNlU2hvcCA9IHRoaXMuYWRkX2Zvcm0udXNlU2hvcC5sZW5ndGggPiAwID8gdGhpcy5hZGRfZm9ybS51c2VTaG9wLmpvaW4oIiwiKSA6IDA7CiAgICAgIGNvbnN0IG1pblByaWNlID0gdGhpcy5hZGRfZm9ybS51c2VyVHlwZUlkID09PSAtMSA/IDAgOiB0aGlzLmFkZF9mb3JtLm1pblByaWNlOwogICAgICBjb25zdCBjdXN0b21lclNvdXJjZUlkID0gdGhpcy5hZGRfZm9ybS5jdXN0b21lclNvdXJjZUlkLmxlbmd0aCA+IDAgPyB0aGlzLmFkZF9mb3JtLmN1c3RvbWVyU291cmNlSWQuam9pbigiLCIpIDogMDsKICAgICAgY29uc3QgY3VzdG9tZXJJZHMgPSB0aGlzLmFkZF9mb3JtLmN1c3RvbWVySWRzLmxlbmd0aCA+IDAgPyB0aGlzLmFkZF9mb3JtLmN1c3RvbWVySWRzLmpvaW4oIiwiKSA6IDA7CiAgICAgIGNvbnN0IGZvcm0gPSB7CiAgICAgICAgbmFtZTogdGhpcy5hZGRfZm9ybS5uYW1lLAogICAgICAgIHN0YXJ0VGltZTogdGhpcy5hZGRfZm9ybS5zdGFydFRpbWUsCiAgICAgICAgZW5kVGltZTogdGhpcy5hZGRfZm9ybS5lbmRUaW1lLAogICAgICAgIHJlZHVjZVByaWNlOiB0aGlzLmFkZF9mb3JtLnJlZHVjZVByaWNlLAogICAgICAgIHJlbWFyazogdGhpcy5hZGRfZm9ybS5yZW1hcmssCiAgICAgICAgLy8gJ3VzZXJUeXBlSWQnOiB0aGlzLmFkZF9mb3JtLnVzZXJUeXBlSWQsCiAgICAgICAgbWluUHJpY2U6IG1pblByaWNlLAogICAgICAgIC8vIOS9v+eUqOmXqOanmygtMeS4jemZkOeUqCkKICAgICAgICBncmFudFR5cGU6IHRoaXMuYWRkX2Zvcm0uZ3JhbnRUeXBlLAogICAgICAgIC8vIOWPkeaUvuaWueW8jwogICAgICAgIGNvdXBvblR5cGU6IHRoaXMuYWRkX2Zvcm0uY291cG9uVHlwZSwKICAgICAgICAvLyDkvJjmg6DliLjnsbvlnosKICAgICAgICB0b3RhbE51bTogdGhpcy5hZGRfZm9ybS50b3RhbE51bSwKICAgICAgICBhbGxvd051bTogdGhpcy5hZGRfZm9ybS5hbGxvd051bSwKICAgICAgICBtdXN0Q29uZGl0aW9uOiB0aGlzLmFkZF9mb3JtLm11c3RDb25kaXRpb24sCiAgICAgICAgLy8g5ruh5YeP6LWg6YCBCiAgICAgICAgaXNNdXRleDogdGhpcy5hZGRfZm9ybS5pc011dGV4LAogICAgICAgIC8vIOaYr+WQpuS4juWFtuS7lua0u+WKqOS6kuaWpQogICAgICAgIGN1c3RvbWVyU291cmNlSWQ6IGN1c3RvbWVyU291cmNlSWQsCiAgICAgICAgdXNlU2hvcDogdXNlU2hvcCwKICAgICAgICAvLyDkvb/nlKjojIPlm7QKICAgICAgICB1c2VTaG9wTmFtZTogdGhpcy51c2VTaG9wTmFtZSwKICAgICAgICBicmFuZE5hbWVBcnI6IHRoaXMuYnJhbmROYW1lQXJyLAogICAgICAgIGN1c3RvbWVySWRzOiBjdXN0b21lcklkcywKICAgICAgICAvLyDpgInmi6nlrqLmiLcKICAgICAgICBjdXN0b21lck5hbWVzOiB0aGlzLmNob29zZUN1c3RvbWVyLAogICAgICAgIGdyYW50U3RhcnRUaW1lOiB0aGlzLmFkZF9mb3JtLmdyYW50U3RhcnRUaW1lLAogICAgICAgIGdyYW50RW5kVGltZTogdGhpcy5hZGRfZm9ybS5ncmFudEVuZFRpbWUsCiAgICAgICAgYXBwbHlSYW5nZTogdGhpcy5hZGRfZm9ybS5hcHBseVJhbmdlLAogICAgICAgIGNhdGVnb3J5Q29sbGVjdDogdGhpcy5hZGRfZm9ybS5jYXRlZ29yeUNvbGxlY3Quam9pbigiLCIpLAogICAgICAgIGJyYW5kQ29sbGVjdDogdGhpcy5hZGRfZm9ybS5icmFuZENvbGxlY3Quam9pbigiLCIpCiAgICAgIH07CiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBhZGRQYXVzZVNhdmUoewogICAgICAgIGtleTogdGhpcy5wYWdlTmFtZSwKICAgICAgICBkYXRhOiBmb3JtCiAgICAgIH0pOwogICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgdHlwZTogInN1Y2Nlc3MiLAogICAgICAgIG1lc3NhZ2U6ICLmmoLlrZjmiJDlip8hIgogICAgICB9KTsKICAgICAgdGhpcy4kY2xvc2VDdXJyZW50R29FZGl0KCIvTWFya2V0aW5nL01hcmtldGluZ0xpc3QvQ291cG9uIik7CiAgICB9LAoKICAgIC8vIOa4hemZpOaaguWtmAogICAgYXN5bmMgZGVsUGF1c2VTYXZlKHR5cGUpIHsKICAgICAgY29uc3QgZGF0YSA9IGRlbFBhdXNlU2F2ZSh7CiAgICAgICAga2V5OiB0aGlzLnBhZ2VOYW1lCiAgICAgIH0pOwoKICAgICAgaWYgKHR5cGUpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICJzdWNjZXNzIiwKICAgICAgICAgIG1lc3NhZ2U6ICLmuIXpmaTmmoLlrZjmiJDlip8iCiAgICAgICAgfSk7CiAgICAgICAgdGhpcy4kY2xvc2VDdXJyZW50R29FZGl0KCIvTWFya2V0aW5nL01hcmtldGluZ0xpc3QvQWRkQ291cG9uIik7CiAgICAgIH0KICAgIH0sCgogICAgLy8g6I635Y+W5pqC5a2Y5L+h5oGvCiAgICBhc3luYyBnZXRQYXVzZVNhdmUoKSB7CiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhCiAgICAgIH0gPSBhd2FpdCBnZXRQYXVzZVNhdmUoewogICAgICAgIGtleTogdGhpcy5wYWdlTmFtZQogICAgICB9KTsKICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGRhdGEpID09PSAie30iKSByZXR1cm47CiAgICAgIHRoaXMuYWRkX2Zvcm0gPSB7IC4uLmRhdGEsCiAgICAgICAgdXNlU2hvcDogZGF0YS51c2VTaG9wID8gZGF0YS51c2VTaG9wLnNwbGl0KCIsIikgOiBbXSwKICAgICAgICBicmFuZENvbGxlY3Q6IGRhdGEuYnJhbmRDb2xsZWN0ID8gZGF0YS5icmFuZENvbGxlY3Quc3BsaXQoIiwiKSA6IFtdLAogICAgICAgIGNhdGVnb3J5Q29sbGVjdDogZGF0YS5jYXRlZ29yeUNvbGxlY3QgPyBkYXRhLmNhdGVnb3J5Q29sbGVjdC5zcGxpdCgiLCIpLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiBwYXJzZUludChpdGVtKTsKICAgICAgICB9KSA6IFtdLAogICAgICAgIGN1c3RvbWVyU291cmNlSWQ6IGRhdGEuY3VzdG9tZXJTb3VyY2VJZCA/IGRhdGEuY3VzdG9tZXJTb3VyY2VJZC5zcGxpdCgiLCIpLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiBwYXJzZUludChpdGVtKTsKICAgICAgICB9KSA6IFtdLAogICAgICAgIHVzZXJUeXBlSWQ6IGRhdGEubWluUHJpY2UgPiAwID8gMiA6IC0xCiAgICAgIH07CiAgICAgIHRoaXMudXNlU2hvcE5hbWVBcnIgPSBkYXRhLnVzZVNob3BOYW1lID8gZGF0YS51c2VTaG9wTmFtZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIG5hbWU6IGl0ZW0sCiAgICAgICAgICBpZDogcGFyc2VJbnQodGhpcy5hZGRfZm9ybS51c2VTaG9wW2luZGV4XSkKICAgICAgICB9OwogICAgICB9KSA6IFtdOwogICAgICB0aGlzLmNob29zZUN1c3RvbWVyID0gZGF0YS5jdXN0b21lck5hbWVzID8gZGF0YS5jdXN0b21lck5hbWVzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgbmFtZTogaXRlbS5uYW1lLAogICAgICAgICAgaWQ6IHBhcnNlSW50KHRoaXMuYWRkX2Zvcm0udXNlU2hvcFtpbmRleF0pCiAgICAgICAgfTsKICAgICAgfSkgOiBbXTsKICAgICAgdGhpcy5icmFuZE5hbWVBcnIgPSBkYXRhLmJyYW5kTmFtZUFyciA/IGRhdGEuYnJhbmROYW1lQXJyLm1hcCgoaXRlbSwgaW5kZXgpID0+IHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsCiAgICAgICAgICBpZDogcGFyc2VJbnQodGhpcy5hZGRfZm9ybS5icmFuZENvbGxlY3RbaW5kZXhdKQogICAgICAgIH07CiAgICAgIH0pIDogW107CgogICAgICBpZiAoZGF0YS5zdGFydFRpbWUgIT09ICIiICYmIGRhdGEuZW5kVGltZSAhPT0gIiIpIHsKICAgICAgICB0aGlzLnRpbWUgPSBbZGF0YS5zdGFydFRpbWUgKiAxMDAwLCBkYXRhLmVuZFRpbWUgKiAxMDAwXTsKICAgICAgfQoKICAgICAgaWYgKGRhdGEuZ3JhbnRTdGFydFRpbWUgIT09ICIiICYmIGRhdGEuZ3JhbnRFbmRUaW1lICE9PSAiIikgewogICAgICAgIHRoaXMuZ3JhbnRUaW1lID0gW2RhdGEuZ3JhbnRTdGFydFRpbWUgKiAxMDAwLCBkYXRhLmdyYW50RW5kVGltZSAqIDEwMDBdOwogICAgICB9CiAgICB9LAoKICAgIC8vICDpgInmi6nllYbpk7oKICAgIHNlbFNob3Aocm93KSB7CiAgICAgIGlmICh0aGlzLnVzZVNob3BOYW1lQXJyLmxlbmd0aCkgewogICAgICAgIHRoaXMudXNlU2hvcE5hbWVBcnIgPSB0aGlzLiRfY29tbW9uLnVuaXF1ZSh0aGlzLnVzZVNob3BOYW1lQXJyLmNvbmNhdChyb3cpLCBbImlkIl0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMudXNlU2hvcE5hbWVBcnIgPSByb3c7CiAgICAgIH0KCiAgICAgIHRoaXMuYWRkX2Zvcm0udXNlU2hvcCA9IHRoaXMudXNlU2hvcE5hbWVBcnIubWFwKGl0ZW0gPT4gewogICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICB9KTsKICAgICAgdGhpcy51c2VTaG9wTmFtZSA9IHRoaXMudXNlU2hvcE5hbWVBcnIubWFwKGl0ZW0gPT4gewogICAgICAgIHJldHVybiBpdGVtLm5hbWU7CiAgICAgIH0pOwogICAgfSwKCiAgICAvLyAg6YCJ5oup5ZOB54mMCiAgICBicmFuZENvbmZpcm0ocm93KSB7CiAgICAgIGlmICh0aGlzLmJyYW5kTmFtZUFyci5sZW5ndGgpIHsKICAgICAgICB0aGlzLmJyYW5kTmFtZUFyciA9IHRoaXMuJF9jb21tb24udW5pcXVlKHRoaXMuYnJhbmROYW1lQXJyLmNvbmNhdChyb3cpLCBbImlkIl0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuYnJhbmROYW1lQXJyID0gcm93OwogICAgICB9CgogICAgICB0aGlzLmFkZF9mb3JtLmJyYW5kQ29sbGVjdCA9IHRoaXMuYnJhbmROYW1lQXJyLm1hcChpdGVtID0+IHsKICAgICAgICByZXR1cm4gaXRlbS5pZDsKICAgICAgfSk7CiAgICB9LAoKICAgIC8vIOmAieaLqeWuouaItwogICAgY3VzdG9tZXJTZWwocm93KSB7CiAgICAgIGlmICh0aGlzLmNob29zZUN1c3RvbWVyLmxlbmd0aCkgewogICAgICAgIHRoaXMuY2hvb3NlQ3VzdG9tZXIgPSB0aGlzLiRfY29tbW9uLnVuaXF1ZSh0aGlzLmNob29zZUN1c3RvbWVyLmNvbmNhdChyb3cpLCBbImlkIl0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuY2hvb3NlQ3VzdG9tZXIgPSByb3c7CiAgICAgIH0KCiAgICAgIHRoaXMuYWRkX2Zvcm0uY3VzdG9tZXJJZHMgPSB0aGlzLmNob29zZUN1c3RvbWVyLm1hcChpdGVtID0+IHsKICAgICAgICByZXR1cm4gaXRlbS5pZDsKICAgICAgfSk7CiAgICB9LAoKICAgIC8vIOmAieaLqeWVhuWTgeiMg+WbtOWIhuexuyDmjIflrprliIbnsbsKICAgIGNhdGVDaGFuZ2Uobm93RGF0YSwgY2hlY2tlZEtleXNPYmopIHsKICAgICAgY29uc3QgewogICAgICAgIGNoZWNrZWRLZXlzLAogICAgICAgIGNoZWNrZWROb2RlcwogICAgICB9ID0gY2hlY2tlZEtleXNPYmo7CiAgICAgIHRoaXMuYWRkX2Zvcm0uY2F0ZWdvcnlDb2xsZWN0ID0gY2hlY2tlZEtleXM7CiAgICB9LAoKICAgIC8vICDpgInmi6nnmoTlrqLmiLfnsbvlnosKICAgIGFzeW5jIGdldEFsbEN1c3RvbWVyU291cmNlKCkgewogICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0QWxsQ3VzdG9tZXJTb3VyY2UoewogICAgICAgIHBhZ2U6IDEsCiAgICAgICAgcGFnZVNpemU6IDk5OQogICAgICB9KTsKICAgICAgdGhpcy5jdXN0b21lclR5cGUgPSBkYXRhLmRhdGE7CgogICAgICBpZiAoIXRoaXMubWFya2V0SWQpIHsKICAgICAgICB0aGlzLmN1c3RvbWVyUmFuZ2UgPSA1OwogICAgICAgIC8qIHRoaXMuYWRkX2Zvcm0uY3VzdG9tZXJTb3VyY2VJZCA9IGRhdGEuZGF0YS5tYXAoaXRlbSA9PiB7CiAgICAgICAgICByZXR1cm4gaXRlbS5pZAogICAgICAgIH0pICovCiAgICAgIH0KICAgIH0sCgogICAgZ2V0QWxsU2hvcChsaXN0KSB7CiAgICAgIGlmICghdGhpcy5tYXJrZXRJZCkgewogICAgICAgIHRoaXMudXNlU2hvcE5hbWVBcnIgPSBsaXN0OwogICAgICAgIHRoaXMuYWRkX2Zvcm0udXNlU2hvcCA9IHRoaXMudXNlU2hvcE5hbWVBcnIubWFwKGl0ZW0gPT4gewogICAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy51c2VTaG9wTmFtZSA9IHRoaXMudXNlU2hvcE5hbWVBcnIubWFwKGl0ZW0gPT4gewogICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKCiAgICAvLyDmnInmlYjml7bpl7QKICAgIExvY2F0aW9uRnJvbSh2YWwpIHsKICAgICAgaWYgKHZhbCAmJiB2YWwubGVuZ3RoKSB7CiAgICAgICAgdGhpcy5hZGRfZm9ybS5zdGFydFRpbWUgPSB2YWxbMF0gLyAxMDAwOwogICAgICAgIHRoaXMuYWRkX2Zvcm0uZW5kVGltZSA9IHRoaXMuJE5QLnBsdXModmFsWzFdIC8gMTAwMCwgODYzOTkpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuYWRkX2Zvcm0uc3RhcnRUaW1lID0gIiI7CiAgICAgICAgdGhpcy5hZGRfZm9ybS5lbmRUaW1lID0gIiI7CiAgICAgIH0KICAgIH0sCgogICAgLy8g5Y+R5pS+5pe26Ze0CiAgICBncmFudFRpbWVDaGFuZ2UodmFsKSB7CiAgICAgIGlmICh2YWwgJiYgdmFsLmxlbmd0aCkgewogICAgICAgIHRoaXMuYWRkX2Zvcm0uZ3JhbnRTdGFydFRpbWUgPSB2YWxbMF0gLyAxMDAwOwogICAgICAgIHRoaXMuYWRkX2Zvcm0uZ3JhbnRFbmRUaW1lID0gdGhpcy4kTlAucGx1cyh2YWxbMV0gLyAxMDAwLCA4NjM5OSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5hZGRfZm9ybS5ncmFudFN0YXJ0VGltZSA9ICIiOwogICAgICAgIHRoaXMuYWRkX2Zvcm0uZ3JhbnRFbmRUaW1lID0gIiI7CiAgICAgIH0KICAgIH0sCgogICAgLy8gIOWFs+mXreagh+etvgogICAgY2xvc2VUYWcobmFtZSwgaW5kZXgpIHsKICAgICAgaWYgKG5hbWUgPT09ICJ1c2Vyc2hvcCIpIHsKICAgICAgICB0aGlzLnVzZVNob3BOYW1lQXJyLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAgdGhpcy5hZGRfZm9ybS51c2VTaG9wID0gdGhpcy51c2VTaG9wTmFtZUFyci5tYXAoaXRlbSA9PiB7CiAgICAgICAgICByZXR1cm4gaXRlbS5pZDsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIGlmIChuYW1lID09PSAiY3VzdG9tZXIiKSB7CiAgICAgICAgdGhpcy5jaG9vc2VDdXN0b21lci5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgIHRoaXMuYWRkX2Zvcm0uY3VzdG9tZXJJZHMgPSB0aGlzLmNob29zZUN1c3RvbWVyLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICJicmFuZCIpIHsKICAgICAgICB0aGlzLmJyYW5kTmFtZUFyci5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgIHRoaXMuYWRkX2Zvcm0uYnJhbmRDb2xsZWN0ID0gdGhpcy5icmFuZE5hbWVBcnIubWFwKGl0ZW0gPT4gewogICAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCgogICAgLy8gICAg5o+Q5Lqk5L+d5a2YCiAgICBhc3luYyBzdWJEYXRhKCkgewogICAgICB0aGlzLiRyZWZzLmFkZF9mb3JtLnZhbGlkYXRlKGFzeW5jIHZhbGlkID0+IHsKICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgIGlmICghKHBhcnNlSW50KHRoaXMuYWRkX2Zvcm0uZ3JhbnRUeXBlKSAhPT0gMjAgJiYgcGFyc2VJbnQodGhpcy5hZGRfZm9ybS5jb3Vwb25UeXBlKSAhPT0gMjApKSB7CiAgICAgICAgICAgIHRoaXMuYWRkX2Zvcm0uY3VzdG9tZXJTb3VyY2VJZCA9ICIiOwogICAgICAgICAgfQoKICAgICAgICAgIGlmICh0aGlzLmFkZF9mb3JtLmdyYW50VHlwZSAhPT0gMjApIHsKICAgICAgICAgICAgdGhpcy5hZGRfZm9ybS5jdXN0b21lcklkcyA9ICIiOwogICAgICAgICAgfQoKICAgICAgICAgIGNvbnN0IHVzZVNob3AgPSB0aGlzLmFkZF9mb3JtLnVzZVNob3AubGVuZ3RoID4gMCA/IHRoaXMuYWRkX2Zvcm0udXNlU2hvcC5qb2luKCIsIikgOiAiIjsKICAgICAgICAgIGNvbnN0IG1pblByaWNlID0gdGhpcy5hZGRfZm9ybS51c2VyVHlwZUlkID09PSAtMSA/IDAgOiB0aGlzLmFkZF9mb3JtLm1pblByaWNlOwogICAgICAgICAgY29uc3QgY3VzdG9tZXJTb3VyY2VJZCA9IHRoaXMuY3VzdG9tZXJSYW5nZSA9PT0gNSA/IDAgOiB0aGlzLmFkZF9mb3JtLmN1c3RvbWVyU291cmNlSWQubGVuZ3RoID4gMCA/IHRoaXMuYWRkX2Zvcm0uY3VzdG9tZXJTb3VyY2VJZC5qb2luKCIsIikgOiAiIjsKICAgICAgICAgIGNvbnN0IGN1c3RvbWVySWRzID0gdGhpcy5hZGRfZm9ybS5jdXN0b21lcklkcy5sZW5ndGggPiAwID8gdGhpcy5hZGRfZm9ybS5jdXN0b21lcklkcy5qb2luKCIsIikgOiAiIjsKICAgICAgICAgIGNvbnN0IGdvb2RzQ29sbGVjdCA9IHRoaXMuZ29vZHNfbGlzdC5tYXAoaXRlbSA9PiB7CiAgICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgICAgfSkuam9pbigiLCIpOwogICAgICAgICAgY29uc3QgZm9ybSA9IHsKICAgICAgICAgICAgbmFtZTogdGhpcy5hZGRfZm9ybS5uYW1lLAogICAgICAgICAgICBzdGFydFRpbWU6IHRoaXMuYWRkX2Zvcm0uc3RhcnRUaW1lLAogICAgICAgICAgICBlbmRUaW1lOiB0aGlzLmFkZF9mb3JtLmVuZFRpbWUsCiAgICAgICAgICAgIHJlZHVjZVByaWNlOiB0aGlzLmFkZF9mb3JtLnJlZHVjZVByaWNlLAogICAgICAgICAgICByZW1hcms6IHRoaXMuYWRkX2Zvcm0ucmVtYXJrLAogICAgICAgICAgICAvLyAndXNlclR5cGVJZCc6IHRoaXMuYWRkX2Zvcm0udXNlclR5cGVJZCwKICAgICAgICAgICAgbWluUHJpY2U6IG1pblByaWNlLAogICAgICAgICAgICAvLyDkvb/nlKjpl6jmp5soLTHkuI3pmZDnlKgpCiAgICAgICAgICAgIGdyYW50VHlwZTogdGhpcy5hZGRfZm9ybS5ncmFudFR5cGUsCiAgICAgICAgICAgIC8vIOWPkeaUvuaWueW8jwogICAgICAgICAgICBjb3Vwb25UeXBlOiB0aGlzLmFkZF9mb3JtLmNvdXBvblR5cGUsCiAgICAgICAgICAgIC8vIOS8mOaDoOWIuOexu+WeiwogICAgICAgICAgICB0b3RhbE51bTogdGhpcy5hZGRfZm9ybS50b3RhbE51bSwKICAgICAgICAgICAgYWxsb3dOdW06IHRoaXMuYWRkX2Zvcm0uYWxsb3dOdW0sCiAgICAgICAgICAgIG11c3RDb25kaXRpb246IHRoaXMuYWRkX2Zvcm0ubXVzdENvbmRpdGlvbiwKICAgICAgICAgICAgLy8g5ruh5YeP6LWg6YCBCiAgICAgICAgICAgIGlzTXV0ZXg6IHRoaXMuYWRkX2Zvcm0uaXNNdXRleCwKICAgICAgICAgICAgLy8g5piv5ZCm5LiO5YW25LuW5rS75Yqo5LqS5palCiAgICAgICAgICAgIGN1c3RvbWVyU291cmNlSWQ6IGN1c3RvbWVyU291cmNlSWQsCiAgICAgICAgICAgIHVzZVNob3A6IHVzZVNob3AsCiAgICAgICAgICAgIC8vIOS9v+eUqOiMg+WbtAogICAgICAgICAgICBjdXN0b21lcklkczogY3VzdG9tZXJJZHMsCiAgICAgICAgICAgIC8vIOmAieaLqeWuouaItwogICAgICAgICAgICBncmFudFN0YXJ0VGltZTogdGhpcy5hZGRfZm9ybS5ncmFudFN0YXJ0VGltZSwKICAgICAgICAgICAgZ3JhbnRFbmRUaW1lOiB0aGlzLmFkZF9mb3JtLmdyYW50RW5kVGltZSwKICAgICAgICAgICAgYXBwbHlSYW5nZTogdGhpcy5hZGRfZm9ybS5hcHBseVJhbmdlLAogICAgICAgICAgICBjYXRlZ29yeUNvbGxlY3Q6IHRoaXMuYWRkX2Zvcm0uY2F0ZWdvcnlDb2xsZWN0LmpvaW4oIiwiKSwKICAgICAgICAgICAgYnJhbmRDb2xsZWN0OiB0aGlzLmFkZF9mb3JtLmJyYW5kQ29sbGVjdC5qb2luKCIsIiksCiAgICAgICAgICAgIGdvb2RzQ29sbGVjdDogZ29vZHNDb2xsZWN0CiAgICAgICAgICB9OwogICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgIGxldCB0YXJnZXQgPSB7fTsKCiAgICAgICAgICBpZiAodGhpcy5tYXJrZXRJZCkgewogICAgICAgICAgICB0YXJnZXQgPSBhd2FpdCBlZGl0TWFya2V0KHRoaXMubWFya2V0SWQsIGZvcm0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGFyZ2V0ID0gYXdhaXQgYWRkTWFya2V0KGZvcm0pOwogICAgICAgICAgfQoKICAgICAgICAgIGNvbnN0IGRhdGEgPSB0YXJnZXQ7CiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgICAgIG1lc3NhZ2U6ICLmj5DkuqTmiJDlip8hIgogICAgICAgICAgfSk7CiAgICAgICAgICB0aGlzLmRlbFBhdXNlU2F2ZSgpOwogICAgICAgICAgdGhpcy4kY2xvc2VDdXJyZW50R29FZGl0KCIvTWFya2V0aW5nL01hcmtldGluZ0xpc3QvQ291cG9uIik7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCgogICAgLy8gIOiOt+WPluivpuaDhQogICAgYXN5bmMgZ2V0SW5mbygpIHsKICAgICAgY29uc3QgewogICAgICAgIGRhdGEKICAgICAgfSA9IGF3YWl0IGdldEluZm8odGhpcy5tYXJrZXRJZCk7CiAgICAgIHRoaXMuYWRkX2Zvcm0gPSB7IC4uLmRhdGEsCiAgICAgICAgY3VzdG9tZXJJZHM6IGRhdGEuY3VzdG9tZXJJZHMuc3BsaXQoIiwiKS5maWx0ZXIoaXRlbSA9PiBpdGVtID4gMCksCiAgICAgICAgdXNlU2hvcDogZGF0YS51c2VTaG9wLnNwbGl0KCIsIiksCiAgICAgICAgYnJhbmRDb2xsZWN0OiBkYXRhLmJyYW5kQ29sbGVjdC5zcGxpdCgiLCIpLAogICAgICAgIGNhdGVnb3J5Q29sbGVjdDogZGF0YS5jYXRlZ29yeUNvbGxlY3QgPyBkYXRhLmNhdGVnb3J5Q29sbGVjdC5zcGxpdCgiLCIpLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiBwYXJzZUludChpdGVtKTsKICAgICAgICB9KSA6IFtdLAogICAgICAgIGN1c3RvbWVyU291cmNlSWQ6IGRhdGEuY3VzdG9tZXJTb3VyY2VJZCA/IGRhdGEuY3VzdG9tZXJTb3VyY2VJZC5zcGxpdCgiLCIpLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiBwYXJzZUludChpdGVtKTsKICAgICAgICB9KS5maWx0ZXIoaXRlbSA9PiBpdGVtID4gMCkgOiBbXSwKICAgICAgICB1c2VyVHlwZUlkOiBkYXRhLm1pblByaWNlID4gMCA/IDIgOiAtMQogICAgICB9OwoKICAgICAgaWYgKHRoaXMuYWRkX2Zvcm0uY3VzdG9tZXJTb3VyY2VJZC5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLmN1c3RvbWVyUmFuZ2UgPSA1OwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuY3VzdG9tZXJSYW5nZSA9IDQ7CiAgICAgIH0KCiAgICAgIHRoaXMudXNlU2hvcE5hbWVBcnIgPSBkYXRhLnVzZVNob3BOYW1lLm1hcCgoaXRlbSwgaW5kZXgpID0+IHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgbmFtZTogaXRlbSwKICAgICAgICAgIGlkOiBwYXJzZUludCh0aGlzLmFkZF9mb3JtLnVzZVNob3BbaW5kZXhdKQogICAgICAgIH07CiAgICAgIH0pOwogICAgICB0aGlzLmNob29zZUN1c3RvbWVyID0gZGF0YS5jdXN0b21lck5hbWVzID8gZGF0YS5jdXN0b21lck5hbWVzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgbmFtZTogaXRlbSwKICAgICAgICAgIGlkOiBwYXJzZUludCh0aGlzLmFkZF9mb3JtLmN1c3RvbWVySWRzW2luZGV4XSkKICAgICAgICB9OwogICAgICB9KSA6IFtdOwogICAgICB0aGlzLmJyYW5kTmFtZUFyciA9IGRhdGEuYnJhbmRDb2xsZWN0TmFtZSA/IGRhdGEuYnJhbmRDb2xsZWN0TmFtZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHRpdGxlOiBpdGVtLAogICAgICAgICAgaWQ6IHBhcnNlSW50KHRoaXMuYWRkX2Zvcm0uYnJhbmRDb2xsZWN0W2luZGV4XSkKICAgICAgICB9OwogICAgICB9KSA6IFtdOwogICAgICB0aGlzLnRpbWUgPSBbZGF0YS5zdGFydFRpbWUgKiAxMDAwLCBkYXRhLmVuZFRpbWUgKiAxMDAwXTsKICAgICAgdGhpcy5ncmFudFRpbWUgPSBbZGF0YS5ncmFudFN0YXJ0VGltZSAqIDEwMDAsIGRhdGEuZ3JhbnRFbmRUaW1lICogMTAwMF07CiAgICAgIHRoaXMuZ29vZHNfbGlzdCA9IGRhdGEuZ29vZHNDb2xsZWN0TGlzdCB8fCBbXTsKICAgIH0sCgogICAgLy8g5ZWG5ZOB6IyD5Zu0IOWIoOmZpOaMh+WumuWVhuWTgQogICAgZGVsR29vZHMoaW5kZXgpIHsKICAgICAgdGhpcy5nb29kc19saXN0LnNwbGljZShpbmRleCwgMSk7CiAgICB9LAoKICAgIC8vIOWVhuWTgeiMg+WbtCDpgInmi6nmjIflrprllYblk4EKICAgIHNlbEdvb2RzKGdvb2RzKSB7CiAgICAgIGlmICh0aGlzLmdvb2RzX2xpc3QubGVuZ3RoKSB7CiAgICAgICAgdGhpcy5nb29kc19saXN0ID0gdGhpcy4kX2NvbW1vbi51bmlxdWUodGhpcy5nb29kc19saXN0LmNvbmNhdChnb29kcyksIFsiaWQiXSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5nb29kc19saXN0ID0gZ29vZHM7CiAgICAgIH0KICAgIH0KCiAgfQp9Ow=="},{"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0cA;AACA;AACA;AACA;AACA;AACA,SACAA,iBADA,EAEAC,kBAFA,EAGAC,oBAHA,QAIA,cAJA;AAKA;AACA;AACA;EACAC,iBADA;EAEAC;IACAC,eADA;IAEAC,aAFA;IAGAC,eAHA;IAIAC,aAJA;IAKAC;EALA,CAFA;;EASAC;IACA;MACA;QACAC;MACA,CAFA,MAEA;QACAA;MACA,CAFA,MAEA;QACAA;MACA,CAFA,MAEA;QACAA;MACA;IACA,CAVA;;IAWA;MACA;QACAA;MACA,CAFA,MAEA;QACAA;MACA;IACA,CANA;;IAOA;MACA;QACAA;MACA,CAFA,MAEA;QACAA;MACA;IACA,CANA;;IAOA;MACA;QACAA;MACA,CAFA,MAEA;QACAA;MACA;IACA,CANA;;IAOA;MACA,IACA,4BACAC,wCADA,IAEAA,yCAFA,IAGA,aAJA,EAKA;QACAD;MACA,CAPA,MAOA;QACAA;MACA;IACA,CAXA;;IAYA;MACA;QACAA;MACA,CAFA,MAEA;QACAA;MACA;IACA,CANA;;IAOA;MACA,IACA,mCACA,8BADA,IAEA,MAHA,EAIA;QACAA;MACA,CANA,MAMA;QACAA;MACA;IACA,CAVA;;IAWA;MACAE,cADA;MACA;MACAC,iBAFA;MAEA;MACAC,iBAHA;MAGA;MACA;MACAC;QACAb,QADA;QAEAc,gBAFA;QAGAC;MAHA,CALA;MASA;MACAC;QACAhB,OACA;UAAAiB;UAAAC;UAAAC;QAAA,CADA;MADA,CAVA;MAeAC,cAfA;MAgBAC,mBAhBA;MAiBAC,YAjBA;MAkBAC,gBAlBA;MAmBAC,oBAnBA;MAoBAC,yBACA;QAAAC;QAAAC;MAAA,CADA,EAEA;QAAAD;QAAAC;MAAA,CAFA,EAGA;QAAAD;QAAAC;MAAA,CAHA,EAIA;QAAAD;QAAAC;MAAA,CAJA,CApBA;MA0BA;MACAC,UACA;QAAAF;QAAAC;MAAA,CADA,EAEA;QAAAD;QAAAC;MAAA,CAFA,CA3BA;MA+BAE,eACA;QAAAC;QAAAH;MAAA,CADA,EAEA;QAAAG;QAAAH;MAAA,CAFA,EAGA;QAAAG;QAAAH;MAAA,CAHA,EAIA;QAAAG;QAAAH;MAAA,CAJA,CA/BA;MAqCAI,aACA;QAAAC;QAAAL;MAAA,CADA,EAEA;QAAAK;QAAAL;MAAA,CAFA,CArCA;MAyCAM,WACA;QAAAC;QAAAP;MAAA,CADA,EAEA;QAAAO;QAAAP;MAAA,CAFA,CAzCA;MA6CAQ;QACAnC,OACA;UAAAiB;UAAAC;UAAAC;QAAA,CADA,CADA;QAIAiB,cACA;UAAAnB;UAAAC;UAAAC;QAAA,CADA,CAJA;QAOAkB;UAAAC;UAAAnB;QAAA,EAPA;QAQAoB;UAAAD;UAAAnB;QAAA,EARA;QASAe;UAAAI;UAAAnB;QAAA,EATA;QAUAqB,YACA;UAAAvB;UAAAC;UAAAC;QAAA,CADA,CAVA;QAaAsB,WACA;UAAAxB;UAAAC;UAAAC;QAAA,CADA,CAbA;QAgBAuB,aACA;UAAAzB;UAAAC;UAAAC;QAAA,CADA,CAhBA;QAmBAwB,UACA;UACAC,aADA;UAEA3B,cAFA;UAGAC,kBAHA;UAIAC;QAJA,CADA,CAnBA;QA2BA0B,mBACA;UACA5B,cADA;UAEAqB,+BAFA;UAGAnB;QAHA,CADA,CA3BA;QAkCA2B,cACA;UAAA7B;UAAAqB;UAAAnB;QAAA,CADA,CAlCA;QAqCA4B;UAAAT;UAAAnB;QAAA,EArCA;QAsCA6B,WACA;UAAA/B;UAAAC;UAAAC;QAAA,CADA,CAtCA;QAyCA8B,gBACA;UAAAhC;UAAAqB;UAAAnB;QAAA,CADA;MAzCA,CA7CA;MA0FA+B,QA1FA;MA2FAC,aA3FA;MA4FAC,gBA5FA;MA6FAC,gBA7FA;MA8FAC,gBA9FA;MA+FAC,kBA/FA;MAgGAC,kBAhGA;MAgGA;MACAC,gBAjGA;MAkGAC;QACA1D,QADA;QAEA2D,aAFA;QAGAtB,WAHA;QAIAD,eAJA;QAKAwB,cALA;QAKA;QACAC,UANA;QAOAC,YAPA;QAOA;QACA5B,cARA;QASAM,aATA;QASA;QACAC,YAVA;QAWAO,YAXA;QAYAC,iBAZA;QAYA;QACAJ,oBAbA;QAcAF,WAdA;QAcA;QACAG,eAfA;QAeA;QACAiB,kBAhBA;QAiBAxB,gBAjBA;QAkBAQ,cAlBA;QAmBAiB,UAnBA;QAmBA;QACA3C,mBApBA;QAqBA4C,gBArBA;QAsBAC,gBAtBA,CAsBA;;MAtBA,CAlGA;MA0HAC,iBA1HA;MA2HAC,YA3HA;MA4HA;MACAC,gBA7HA;MA8HAC,sBA9HA;MA+HAC;IA/HA;EAiIA,CAzMA;;EA0MAC;IACA;IACA;;IACA;MACA;IACA,CAFA,MAEA;MACA;IACA;;IACA;EACA,CAnNA;;EAoNAC;IACAC;MACA,uCACA,sCADA,GAEA,EAFA;MAGA;IACA,CANA;;IAOAC;MACA;MACA;MACA,uBACAC,2DADA;IAEA,CAZA;;IAaA;IACAC;MACA;QACA7E,QADA;QAEAc,gBAFA;QAGAC;MAHA;MAKA;IACA,CArBA;;IAsBA;IACA;MACA;QACA;UACA;;UAEA;YACA+D,mCACA;YADA;UAGA,CAJA,MAIA;YACAA,kDACA;YADA;UAGA;;UACA;UAEA;UACA;QACA;MACA,CAlBA;IAmBA,CA3CA;;IA4CA;IACA;MACA,gBACA,mCACA,+BADA,GAEA,CAHA;MAIA,iBACA,4DADA;MAEA,yBACA,4CACA,wCADA,GAEA,CAHA;MAIA,oBACA,uCACA,mCADA,GAEA,CAHA;MAIA;QACA9E,wBADA;QAEA2D,kCAFA;QAGAtB,8BAHA;QAIAD,sCAJA;QAKAyB,4BALA;QAMA;QACAC,kBAPA;QAOA;QACAtB,kCARA;QAQA;QACAoB,oCATA;QASA;QACAnB,gCAVA;QAWAO,gCAXA;QAYAC,0CAZA;QAYA;QACAe,8BAbA;QAaA;QACAnB,kCAdA;QAeAF,gBAfA;QAeA;QACAoC,6BAhBA;QAiBA3B,+BAjBA;QAkBAN,wBAlBA;QAkBA;QACAkC,kCAnBA;QAoBAjB,4CApBA;QAqBAxB,wCArBA;QAsBAQ,oCAtBA;QAuBA1B,wDAvBA;QAwBA4C;MAxBA;MA2BA;MACA;QACAgB,kBADA;QAEA1E;MAFA;MAIA;MAEA;QACAqC,eADA;QAEA1B;MAFA;MAIA;IACA,CAnGA;;IAoGA;IACA;MACA;QACA+D;MADA;;MAIA;QACA;UACArC,eADA;UAEA1B;QAFA;QAIA;MACA;IACA,CAjHA;;IAkHA;IACA;MACA;QAAAX;MAAA;QACA0E;MADA;MAIA;MACA,kBACA,OADA;QAEAtC,oDAFA;QAGAsB,mEAHA;QAIA5C,wCACAd;UACA;QACA,CAFA,CADA,GAIA,EARA;QASAsC,0CACAtC;UACA;QACA,CAFA,CADA,GAIA,EAbA;QAcA2B;MAdA;MAgBA,yCACA3B;QACA;UACAP,UADA;UAEAgC;QAFA;MAIA,CALA,CADA,GAOA,EAPA;MAQA,2CACAzB;QACA;UACAP,eADA;UAEAgC;QAFA;MAIA,CALA,CADA,GAOA,EAPA;MAQA,wCACAzB;QACA;UACAoB,iBADA;UAEAK;QAFA;MAIA,CALA,CADA,GAOA,EAPA;;MAQA;QACA;MACA;;MACA;QACA,kBACAzB,0BADA,EAEAA,wBAFA;MAIA;IACA,CA1KA;;IA2KA;IACA2E;MACA;QACA,2CACA,+BADA,EAEA,MAFA;MAIA,CALA,MAKA;QACA;MACA;;MAEA;QACA;MACA,CAFA;MAGA;QACA;MACA,CAFA;IAGA,CA5LA;;IA6LA;IACAC;MACA;QACA,yCACA,6BADA,EAEA,MAFA;MAIA,CALA,MAKA;QACA;MACA;;MACA;QACA;MACA,CAFA;IAGA,CA1MA;;IA2MA;IACAC;MACA;QACA,2CACA,+BADA,EAEA,MAFA;MAIA,CALA,MAKA;QACA;MACA;;MACA;QACA;MACA,CAFA;IAGA,CAxNA;;IAyNA;IACAC;MACA;QAAAC;QAAAC;MAAA;MACA;IACA,CA7NA;;IA8NA;IACA;MACA;QACAC,OADA;QAEAC;MAFA;MAKA;;MACA;QACA;QACA;AACA;AACA;MACA;IACA,CA5OA;;IA6OAC;MACA;QACA;QACA;UACA;QACA,CAFA;QAGA;UACA;QACA,CAFA;MAGA;IACA,CAvPA;;IAwPA;IACAC;MACA;QACA;QACA;MACA,CAHA,MAGA;QACA;QACA;MACA;IACA,CAjQA;;IAkQA;IACAC;MACA;QACA;QACA;MACA,CAHA,MAGA;QACA;QACA;MACA;IACA,CA3QA;;IA4QA;IACAC;MACA;QACA;QACA;UACA;QACA,CAFA;MAGA,CALA,MAKA;QACA;QACA;UACA;QACA,CAFA;MAGA,CALA,MAKA;QACA;QACA;UACA;QACA,CAFA;MAGA;IACA,CA9RA;;IA+RA;IACA;MACA;QACA;UACA,IACA,EACApF,4CACAA,yCAFA,CADA,EAKA;YACA;UACA;;UACA;YACA;UACA;;UACA,gBACA,mCACA,+BADA,GAEA,EAHA;UAIA,iBACA,4DADA;UAEA,yBACA,2BACA,CADA,GAEA,4CACA,wCADA,GAEA,EALA;UAMA,oBACA,uCACA,mCADA,GAEA,EAHA;UAIA,qCACAqF,GADA,CACAC;YACA;UACA,CAHA,EAIAC,IAJA,CAIA,GAJA;UAKA;YACAhG,wBADA;YAEA2D,kCAFA;YAGAtB,8BAHA;YAIAD,sCAJA;YAKAyB,4BALA;YAMA;YACAC,kBAPA;YAOA;YACAtB,kCARA;YAQA;YACAoB,oCATA;YASA;YACAnB,gCAVA;YAWAO,gCAXA;YAYAC,0CAZA;YAYA;YACAe,8BAbA;YAaA;YACAnB,kCAdA;YAeAF,gBAfA;YAeA;YACAG,wBAhBA;YAgBA;YACAiB,4CAjBA;YAkBAxB,wCAlBA;YAmBAQ,oCAnBA;YAoBA1B,wDApBA;YAqBA4C,kDArBA;YAsBAC;UAtBA;UAyBA;UACA;;UACA;YACAY;UACA,CAFA,MAEA;YACAA;UACA;;UACA;UACA;UAEA;YACAlC,eADA;YAEA1B;UAFA;UAIA;UACA;QACA;MACA,CA5EA;IA6EA,CA9WA;;IA+WA;IACA;MACA;QAAAX;MAAA;MAEA,kBACA,OADA;QAEAuC,iEAFA;QAGAH,gCAHA;QAIAsB,0CAJA;QAKA5C,wCACAd;UACA;QACA,CAFA,CADA,GAIA,EATA;QAUAsC,0CACAtC,sBACA0F,KADA,CACA,GADA,EAEAH,GAFA,CAEAC;UACA;QACA,CAJA,EAKAG,MALA,CAKAH,gBALA,CADA,GAOA,EAjBA;QAkBA7D;MAlBA;;MAoBA;QACA;MACA,CAFA,MAEA;QACA;MACA;;MACA;QACA;UACAlC,UADA;UAEAgC;QAFA;MAIA,CALA;MAMA,2CACAzB;QACA;UACAP,UADA;UAEAgC;QAFA;MAIA,CALA,CADA,GAOA,EAPA;MAQA,4CACAzB;QACA;UACAoB,WADA;UAEAK;QAFA;MAIA,CALA,CADA,GAOA,EAPA;MAQA;MACA;MACA;IACA,CAraA;;IAsaA;IACAmE;MACA;IACA,CAzaA;;IA0aA;IACAC;MACA;QACA,uCACA,6BADA,EAEA,MAFA;MAIA,CALA,MAKA;QACA;MACA;IACA;;EApbA;AApNA","names":["addCustomerSource","editCustomerSource","getAllCustomerSource","name","components","GoodsChooseShop","GoodsCategory","ClientListModal","BrandSelModel","SaleGoodsList","data","callback","parseInt","goods_list","goods_show","show_model","add_custorm","defaultStatus","enableStatus","rules","required","message","trigger","loading","categoryCollect","marketId","show_shop","customer_show","distributionMethodList","distributionMethod","title","vipList","productRange","productRangeId","couponList","id","userType","userTypeId","add_rules","reducePrice","endTime","validator","grantEndTime","grantType","totalNum","userDetail","useShop","type","customerSourceId","customerIds","applyRange","allowNum","mustCondition","time","grantTime","brandNameArr","address_list","customerType","useShopNameArr","chooseCustomer","sel_brand","add_form","startTime","couponType","remark","minPrice","grantStartTime","isMutex","brandCollect","goodsCollect","user_center_id","pageName","customerRange","isIndeterminate","checkAll","created","methods","CheckAllChange","customerTypeChange","checkedCount","handleClose","target","useShopName","customerNames","key","selShop","brandConfirm","customerSel","cateChange","checkedKeys","checkedNodes","page","pageSize","getAllShop","LocationFrom","grantTimeChange","closeTag","map","item","join","split","filter","delGoods","selGoods"],"sourceRoot":"src/views/Marketing/MarketingList","sources":["AddCoupon.vue"],"sourcesContent":["<template>\n <ContainerTit>\n <div slot=\"headr\">\n <el-button v-if=\"!marketId\" @click=\"delPauseSave(1)\">清除暂存</el-button>\n <el-button v-if=\"!marketId\" :loading=\"loading\" @click=\"addPauseSave\">\n 暂存\n </el-button>\n <el-button type=\"primary\" :loading=\"loading\" @click=\"subData\">\n 提交保存\n </el-button>\n </div>\n <el-form\n ref=\"add_form\"\n :rules=\"add_rules\"\n size=\"small\"\n :model=\"add_form\"\n label-width=\"120px\"\n >\n <div class=\"detail-tab-item\">\n <div class=\"detail-tab-title\">\n <span>基础信息</span>\n </div>\n <div class=\"detail-tab-main\">\n <el-form-item label=\"优惠券名称:\" prop=\"name\">\n <el-input\n v-model=\"add_form.name\"\n style=\"width: 350px\"\n placeholder=\"请输入十个字以内优惠券的名称\"\n maxlength=\"10\"\n ></el-input>\n </el-form-item>\n <el-form-item\n label=\"有效时间:\"\n prop=\"endTime\"\n :required=\"add_form.couponType !== 20 && add_form.grantType !== 10\"\n >\n <el-date-picker\n v-model=\"time\"\n style=\"width: 350px\"\n type=\"daterange\"\n range-separator=\"-\"\n start-placeholder=\"开始日期\"\n end-placeholder=\"结束日期\"\n value-format=\"timestamp\"\n @change=\"LocationFrom\"\n ></el-date-picker>\n <div v-if=\"add_form.couponType === 20 && add_form.grantType === 10\">\n <p\n class=\"el-icon-warning\"\n style=\"font-size: 12px; color: #e6a23c\"\n >\n 提示:用户可每个月领取一张会员卡优惠券,自会员领取后30日内有效\n </p>\n </div>\n <div v-if=\"add_form.couponType === 20 && add_form.grantType === 50\">\n <p\n class=\"el-icon-warning\"\n style=\"font-size: 12px; color: #e6a23c\"\n >\n 提示:用户开通会员卡后自动发放此优惠券,自发放后30日内有效!\n </p>\n </div>\n </el-form-item>\n <el-form-item label=\"优惠券面值:\" prop=\"reducePrice\">\n <el-input-number\n v-model=\"add_form.reducePrice\"\n :controls=\"false\"\n style=\"width: 350px\"\n placeholder=\"\"\n ></el-input-number>\n </el-form-item>\n <el-form-item label=\"优惠券类型:\" prop=\"couponType\">\n <el-radio-group v-model=\"add_form.couponType\">\n <el-radio\n v-for=\"item in couponList\"\n :key=\"item.id\"\n :label=\"item.id\"\n >\n {{ item.title }}\n </el-radio>\n </el-radio-group>\n </el-form-item>\n <el-form-item label=\"是否互斥:\" prop=\"isMutex\">\n <el-switch\n v-model=\"add_form.isMutex\"\n :active-value=\"5\"\n :inactive-value=\"4\"\n active-text=\"是\"\n inactive-text=\"否\"\n ></el-switch>\n <el-tooltip\n effect=\"dark\"\n content=\"启用互斥,则优惠券不能与其他活动同时使用,否则反之\"\n placement=\"bottom\"\n >\n <i class=\"el-icon-warning\"></i>\n </el-tooltip>\n </el-form-item>\n <el-form-item label=\"使用门槛:\" prop=\"userTypeId\">\n <el-radio-group v-model=\"add_form.userTypeId\">\n <el-radio\n v-for=\"item in userType\"\n :key=\"item.userTypeId\"\n :label=\"item.userTypeId\"\n >\n {{ item.title }}\n </el-radio>\n </el-radio-group>\n <el-input-number\n v-model=\"add_form.minPrice\"\n :controls=\"false\"\n style=\"width: 100px; margin-left: 10px\"\n placeholder=\"\"\n ></el-input-number>\n <i style=\"margin-left: 10px\">元可用</i>\n </el-form-item>\n <el-form-item label=\"使用说明:\">\n <el-input\n v-model=\"add_form.remark\"\n style=\"width: 350px\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"暂无说明\"\n ></el-input>\n </el-form-item>\n </div>\n </div>\n <div class=\"detail-tab-item\">\n <div class=\"detail-tab-title\">\n <span>发放配置</span>\n </div>\n <div class=\"detail-tab-main\">\n <el-form-item label=\"发放方式:\" prop=\"grantType\">\n <el-radio-group\n v-if=\"add_form.couponType !== 20\"\n v-model=\"add_form.grantType\"\n >\n <el-radio\n v-for=\"item in distributionMethodList\"\n :key=\"item.distributionMethod\"\n :label=\"item.distributionMethod\"\n >\n {{ item.title }}\n </el-radio>\n </el-radio-group>\n <el-radio-group v-else v-model=\"add_form.grantType\">\n <el-radio\n v-for=\"item in vipList\"\n :key=\"item.distributionMethod\"\n :label=\"item.distributionMethod\"\n >\n {{ item.title }}\n </el-radio>\n </el-radio-group>\n </el-form-item>\n <el-form-item\n v-if=\"add_form.couponType !== 20\"\n label=\"总共发放:\"\n prop=\"totalNum\"\n >\n <el-input-number\n v-model=\"add_form.totalNum\"\n :controls=\"false\"\n style=\"width: 200px\"\n placeholder=\"\"\n ></el-input-number>\n <i style=\"margin-left: 10px\">张</i>\n </el-form-item>\n <el-form-item label=\"每人领取:\" prop=\"allowNum\">\n <el-input-number\n v-model=\"add_form.allowNum\"\n :controls=\"false\"\n style=\"width: 200px\"\n ></el-input-number>\n <i style=\"margin-left: 10px\">张</i>\n </el-form-item>\n <el-form-item\n v-if=\"add_form.grantType === 40\"\n label=\"满减赠送:\"\n prop=\"mustCondition\"\n >\n 下单满\n <el-input-number\n v-model=\"add_form.mustCondition\"\n :controls=\"false\"\n style=\"width: 100px; margin: 0 10px\"\n ></el-input-number>\n <i>元送</i>\n <div>\n <p\n class=\"el-icon-warning\"\n style=\"font-size: 12px; color: #e6a23c\"\n >\n 提示:订单状态已付款时赠送(仅限在线支付)\n </p>\n </div>\n </el-form-item>\n <el-form-item\n v-if=\"\n parseInt(add_form.grantType) !== 20 &&\n parseInt(add_form.couponType) !== 20\n \"\n label=\"领取范围:\"\n prop=\"customerSourceId\"\n >\n <el-radio-group v-model=\"customerRange\">\n <el-radio :label=\"5\">全部</el-radio>\n <el-radio :label=\"4\">部分</el-radio>\n </el-radio-group>\n <div>\n <el-checkbox\n v-model=\"checkAll\"\n :disabled=\"customerRange === 5\"\n :indeterminate=\"isIndeterminate\"\n @change=\"CheckAllChange\"\n >\n 全选\n </el-checkbox>\n <div style=\"border-top: 1px solid #eee\"></div>\n <el-checkbox-group\n v-model=\"add_form.customerSourceId\"\n :disabled=\"customerRange === 5\"\n @change=\"customerTypeChange\"\n >\n <el-checkbox\n v-for=\"(item, index) in customerType\"\n :key=\"index\"\n :label=\"item.id\"\n >\n {{ item.name }}\n </el-checkbox>\n </el-checkbox-group>\n <!-- <el-select\n clearable\n multiple\n v-model=\"add_form.customerSourceId\"\n placeholder=\"客户类型\"\n >\n <el-option\n v-for=\"(item,index) in customerType\"\n :key=\"index\"\n :label=\"item.name\"\n :value=\"item.id\"\n >\n </el-option>\n </el-select>-->\n <el-button type=\"text\" size=\"mini\" @click=\"getAllCustomerSource\">\n 【刷新】\n </el-button>\n <el-button type=\"text\" size=\"mini\" @click=\"show_model = true\">\n 【新建类型】\n </el-button>\n </div>\n </el-form-item>\n <el-form-item\n v-if=\"add_form.grantType === 20\"\n label=\"选择客户:\"\n prop=\"customerIds\"\n >\n <el-button type=\"primary\" @click=\"customer_show = true\">\n 选择客户\n </el-button>\n <el-button\n size=\"mini\"\n type=\"text\"\n @click=\"$router.push('/Customer/CustomerAdmin/AddCustomer')\"\n >\n 【新建客户】\n </el-button>\n <div style=\"display: inline-block\">\n <el-tag\n v-for=\"(item, index) in chooseCustomer\"\n :key=\"index\"\n closable\n @close=\"closeTag('customer', index)\"\n >\n {{ item.name }}\n </el-tag>\n </div>\n </el-form-item>\n <el-form-item label=\"使用范围:\" prop=\"useShop\">\n <el-button type=\"primary\" @click=\"show_shop = true\">\n 选择商铺\n </el-button>\n <el-button\n size=\"mini\"\n type=\"text\"\n @click=\"$router.push('/SystemSettings/liansuoguanli/AddShop')\"\n >\n 【新建商铺】\n </el-button>\n <div style=\"display: inline-block\">\n <el-tag\n v-for=\"(item, index) in useShopNameArr\"\n :key=\"index\"\n closable\n @close=\"closeTag('usershop', index)\"\n >\n {{ item.name }}\n </el-tag>\n </div>\n </el-form-item>\n <el-form-item\n v-if=\"add_form.couponType !== 20\"\n label=\"发放时间:\"\n prop=\"grantEndTime\"\n :required=\"add_form.couponType !== 20\"\n >\n <el-date-picker\n v-model=\"grantTime\"\n type=\"daterange\"\n range-separator=\"-\"\n start-placeholder=\"开始日期\"\n end-placeholder=\"结束日期\"\n value-format=\"timestamp\"\n @change=\"grantTimeChange\"\n ></el-date-picker>\n </el-form-item>\n </div>\n </div>\n <div class=\"detail-tab-item\">\n <div class=\"detail-tab-title\">\n <span>商品配置</span>\n </div>\n <div class=\"detail-tab-main\">\n <el-form-item label=\"商品范围:\" prop=\"applyRange\">\n <el-radio-group v-model=\"add_form.applyRange\">\n <el-radio\n v-for=\"item in productRange\"\n :key=\"item.productRangeId\"\n :label=\"item.productRangeId\"\n >\n {{ item.title }}\n </el-radio>\n </el-radio-group>\n </el-form-item>\n <el-form-item v-if=\"add_form.applyRange === 40\">\n <el-button type=\"primary\" @click=\"goods_show = true\">\n 选择商品\n </el-button>\n <el-table border style=\"margin-top: 10px\" :data=\"goods_list\">\n <el-table-column prop=\"code\" label=\"商品编码\"></el-table-column>\n <el-table-column prop=\"title\" label=\"商品名称\"></el-table-column>\n <el-table-column prop=\"shopName\" label=\"店铺\"></el-table-column>\n <el-table-column prop=\"address\" label=\"操作\">\n <template slot-scope=\"scope\">\n <el-button size=\"small\" @click=\"delGoods(scope.$index)\">\n 删除\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n </el-form-item>\n <el-form-item v-if=\"add_form.applyRange === 20\">\n <GoodsCategory\n is-type=\"tree\"\n :checked-keys=\"add_form.categoryCollect\"\n @change=\"cateChange\"\n />\n </el-form-item>\n <el-form-item v-if=\"add_form.applyRange === 30\">\n <el-button type=\"primary\" @click=\"sel_brand = true\">\n 选择品牌\n </el-button>\n <div v-if=\"brandNameArr\" style=\"display: inline-block\">\n <el-tag\n v-for=\"(item, index) in brandNameArr\"\n :key=\"index\"\n closable\n @close=\"closeTag('brand', index)\"\n >\n {{ item.title }}\n </el-tag>\n </div>\n </el-form-item>\n </div>\n </div>\n </el-form>\n <GoodsChooseShop\n :dialog-visible=\"show_shop\"\n :is-show-add=\"true\"\n @getAllShop=\"getAllShop\"\n @close=\"show_shop = false\"\n @confirm=\"selShop\"\n ></GoodsChooseShop>\n <!-- 选择品牌-->\n <BrandSelModel\n v-if=\"sel_brand\"\n :is-check=\"true\"\n :dialog-visible=\"sel_brand\"\n :is-show-add=\"true\"\n @close=\"sel_brand = false\"\n @confirm=\"brandConfirm\"\n />\n <!-- 客户选择-->\n <ClientListModal\n v-if=\"customer_show\"\n :is-show=\"customer_show\"\n :is-check=\"true\"\n :is-show-add=\"true\"\n @cancel=\"customer_show = false\"\n @confirm=\"customerSel\"\n />\n <!-- 新建客户类型-->\n <el-dialog\n name=\"新增客户类型\"\n :visible.sync=\"show_model\"\n :close-on-press-escape=\"false\"\n :close-on-click-modal=\"false\"\n width=\"40%\"\n :before-close=\"handleClose\"\n >\n <el-form\n ref=\"add_form\"\n :model=\"add_custorm\"\n :rules=\"rules\"\n size=\"small\"\n label-width=\"100px\"\n >\n <el-form-item label=\"客户类型:\" prop=\"name\">\n <el-input\n v-model=\"add_custorm.name\"\n placeholder=\"请输入客户类型\"\n ></el-input>\n </el-form-item>\n <el-form-item label=\"是否默认:\" prop=\"defaultStatus\">\n <el-switch\n v-model=\"add_custorm.defaultStatus\"\n :active-value=\"5\"\n :inactive-value=\"4\"\n ></el-switch>\n </el-form-item>\n <el-form-item label=\"是否禁用:\" prop=\"enableStatus\">\n <el-radio-group v-model=\"add_custorm.enableStatus\">\n <el-radio :label=\"4\">是</el-radio>\n <el-radio :label=\"5\">否</el-radio>\n </el-radio-group>\n </el-form-item>\n </el-form>\n <span slot=\"footer\" class=\"dialog-footer\">\n <el-button size=\"small\" @click=\"show_model = false\">取 消</el-button>\n <el-button type=\"primary\" size=\"small\" @click=\"addData\">\n 确 定\n </el-button>\n </span>\n </el-dialog>\n <SaleGoodsList\n v-if=\"goods_show\"\n :shop-id=\"add_form.useShop\"\n :show-sku=\"false\"\n :is-show=\"goods_show\"\n @cancel=\"goods_show = false\"\n @confirm=\"selGoods\"\n />\n </ContainerTit>\n</template>\n\n<script>\n import GoodsChooseShop from \"../../../component/goods/GoodsChooseShop\";\n import GoodsCategory from \"@/component/common/GoodsCategory.vue\";\n import BrandSelModel from \"@/component/goods/BrandSelModel.vue\";\n import ClientListModal from \"@/component/common/ClientListModal\";\n import SaleGoodsList from \"@/component/goods/SaleGoodsList\";\n import {\n addCustomerSource,\n editCustomerSource,\n getAllCustomerSource,\n } from \"@/api/System\";\n import { addPauseSave, delPauseSave, getPauseSave } from \"@/api/common\";\n import { editMarket, addMarket, getInfo } from \"@/api/Market\";\n export default {\n name: \"AddCoupon\",\n components: {\n GoodsChooseShop,\n GoodsCategory,\n ClientListModal,\n BrandSelModel,\n SaleGoodsList,\n },\n data() {\n const applyRangeVali = (rule, value, callback) => {\n if (value === 20 && !this.add_form.categoryCollect.length) {\n callback(new Error(\"请选择指定分类\"));\n } else if (value === 30 && !this.add_form.brandCollect.length) {\n callback(new Error(\"请选择指定品牌\"));\n } else if (value === 40 && !this.goods_list.length) {\n callback(new Error(\"请选择指定商品\"));\n } else {\n callback();\n }\n };\n const userTypeIdVali = (rule, value, callback) => {\n if (value === 2 && this.add_form.minPrice <= 0) {\n callback(new Error(\"请输入正确的门槛金额\"));\n } else {\n callback();\n }\n };\n const mustConditionVali = (rule, value, callback) => {\n if (this.add_form.grantType === 40 && value <= 0) {\n callback(new Error(\"请输入正确的满减金额\"));\n } else {\n callback();\n }\n };\n const grantEndTimeVali = (rule, value, callback) => {\n if (this.add_form.couponType !== 20 && !value) {\n callback(new Error(\"请选择发放时间\"));\n } else {\n callback();\n }\n };\n const customerSourceIdVali = (rule, value, callback) => {\n if (\n this.customerRange === 4 &&\n parseInt(this.add_form.grantType) !== 20 &&\n parseInt(this.add_form.couponType) !== 20 &&\n !value.length\n ) {\n callback(new Error(\"请选择领取范围\"));\n } else {\n callback();\n }\n };\n const customerIdsVali = (rule, value, callback) => {\n if (this.add_form.grantType === 20 && !value.length) {\n callback(new Error(\"请选择选择客户\"));\n } else {\n callback();\n }\n };\n const endTimeVali = (rule, value, callback) => {\n if (\n this.add_form.couponType !== 20 &&\n this.add_form.grantType !== 10 &&\n !value\n ) {\n callback(new Error(\"请选择有效时间\"));\n } else {\n callback();\n }\n };\n return {\n goods_list: [], // 商品范围,指定商品\n goods_show: false, // 商品范围,选择指定商品弹窗\n show_model: false, // 客户类型\n // 新增客户类型数据\n add_custorm: {\n name: \"\",\n defaultStatus: 4,\n enableStatus: 5,\n }, // 新增客户类型的验证\n rules: {\n name: [\n { required: true, message: \"请输入客户类型\", trigger: \"blur\" },\n ],\n },\n loading: false,\n categoryCollect: [],\n marketId: \"\",\n show_shop: false,\n customer_show: false,\n distributionMethodList: [\n { distributionMethod: 10, title: \"主动领取\" },\n { distributionMethod: 20, title: \"定向发放\" },\n { distributionMethod: 30, title: \"注册领取\" },\n { distributionMethod: 40, title: \"在线支付领取\" },\n ],\n // 当选择会员卡优惠券\n vipList: [\n { distributionMethod: 10, title: \"主动领取\" },\n { distributionMethod: 50, title: \"开卡赠送\" },\n ],\n productRange: [\n { productRangeId: 10, title: \"全部商品\" },\n { productRangeId: 40, title: \"指定商品\" },\n { productRangeId: 20, title: \"指定分类\" },\n { productRangeId: 30, title: \"指定品牌\" },\n ],\n couponList: [\n { id: 10, title: \"普通优惠券\" },\n { id: 20, title: \"会员卡优惠券\" },\n ],\n userType: [\n { userTypeId: -1, title: \"不限用\" },\n { userTypeId: 2, title: \"满\" },\n ],\n add_rules: {\n name: [\n { required: true, message: \"请输入优惠券名称\", trigger: \"blur\" },\n ],\n reducePrice: [\n { required: true, message: \"请输入优惠券值\", trigger: \"blur\" },\n ],\n endTime: [{ validator: endTimeVali, trigger: \"change\" }],\n grantEndTime: [{ validator: grantEndTimeVali, trigger: \"change\" }],\n userTypeId: [{ validator: userTypeIdVali, trigger: \"change\" }],\n grantType: [\n { required: true, message: \"请选择发放方式\", trigger: \"change\" },\n ],\n totalNum: [\n { required: true, message: \"请输入总发放数\", trigger: \"blur\" },\n ],\n userDetail: [\n { required: true, message: \"请输入每人发放数\", trigger: \"blur\" },\n ],\n useShop: [\n {\n type: \"array\",\n required: true,\n message: \"请选择使用范围\",\n trigger: \"change\",\n },\n ],\n customerSourceId: [\n {\n required: true,\n validator: customerSourceIdVali,\n trigger: \"change\",\n },\n ],\n customerIds: [\n { required: true, validator: customerIdsVali, trigger: \"change\" },\n ],\n applyRange: [{ validator: applyRangeVali, trigger: \"blur\" }],\n allowNum: [\n { required: true, message: \"请输入每人领取数\", trigger: \"blur\" },\n ],\n mustCondition: [\n { required: true, validator: mustConditionVali, trigger: \"blur\" },\n ],\n },\n time: [],\n grantTime: [],\n brandNameArr: [],\n address_list: [],\n customerType: [],\n useShopNameArr: [],\n chooseCustomer: [], // 选择客户\n sel_brand: false,\n add_form: {\n name: \"\",\n startTime: \"\",\n endTime: \"\",\n reducePrice: \"\",\n couponType: 10, // 优惠券类型\n remark: \"\",\n minPrice: \"\", // 使用门槛(-1不限用)\n userTypeId: -1,\n grantType: 10, // 发放方式\n totalNum: \"\",\n allowNum: \"\",\n mustCondition: \"\", // 满减赠送\n customerSourceId: [],\n useShop: [], // 使用范围\n customerIds: [], // 选择客户\n grantStartTime: \"\",\n grantEndTime: \"\",\n applyRange: 10,\n isMutex: 4, // 是否与其他活动互斥\n categoryCollect: [],\n brandCollect: [],\n goodsCollect: [], // 商品id集合\n },\n user_center_id: 0,\n pageName: \"\",\n // 修改客户类型选择方式\n customerRange: 5,\n isIndeterminate: false,\n checkAll: false,\n };\n },\n created() {\n this.pageName = this.$route.name;\n this.marketId = this.$route.params.id;\n if (this.marketId) {\n this.getInfo();\n } else {\n this.getPauseSave();\n }\n this.getAllCustomerSource();\n },\n methods: {\n CheckAllChange(val) {\n this.add_form.customerSourceId = val\n ? this.customerType.map((item) => item.id)\n : [];\n this.isIndeterminate = false;\n },\n customerTypeChange(value) {\n let checkedCount = value.length;\n this.checkAll = checkedCount === this.customerType.length;\n this.isIndeterminate =\n checkedCount > 0 && checkedCount < this.customerType.length;\n },\n // 关闭弹窗\n handleClose() {\n this.add_custorm = {\n name: \"\",\n defaultStatus: 4,\n enableStatus: 5,\n };\n this.show_model = false;\n },\n // 新增客户类型\n async addData() {\n this.$refs.add_form.validate(async (valid) => {\n if (valid) {\n let target = {};\n\n if (!this.is_edit) {\n target = await addCustomerSource({\n ...this.add_custorm,\n });\n } else {\n target = await editCustomerSource(this.type_id, {\n ...this.add_custorm,\n });\n }\n const data = target;\n\n this.$message(\"客户类型创建成功\");\n this.show_model = false;\n }\n });\n },\n // 暂存\n async addPauseSave() {\n const useShop =\n this.add_form.useShop.length > 0\n ? this.add_form.useShop.join(\",\")\n : 0;\n const minPrice =\n this.add_form.userTypeId === -1 ? 0 : this.add_form.minPrice;\n const customerSourceId =\n this.add_form.customerSourceId.length > 0\n ? this.add_form.customerSourceId.join(\",\")\n : 0;\n const customerIds =\n this.add_form.customerIds.length > 0\n ? this.add_form.customerIds.join(\",\")\n : 0;\n const form = {\n name: this.add_form.name,\n startTime: this.add_form.startTime,\n endTime: this.add_form.endTime,\n reducePrice: this.add_form.reducePrice,\n remark: this.add_form.remark,\n // 'userTypeId': this.add_form.userTypeId,\n minPrice: minPrice, // 使用门槛(-1不限用)\n grantType: this.add_form.grantType, // 发放方式\n couponType: this.add_form.couponType, // 优惠券类型\n totalNum: this.add_form.totalNum,\n allowNum: this.add_form.allowNum,\n mustCondition: this.add_form.mustCondition, // 满减赠送\n isMutex: this.add_form.isMutex, // 是否与其他活动互斥\n customerSourceId: customerSourceId,\n useShop: useShop, // 使用范围\n useShopName: this.useShopName,\n brandNameArr: this.brandNameArr,\n customerIds: customerIds, // 选择客户\n customerNames: this.chooseCustomer,\n grantStartTime: this.add_form.grantStartTime,\n grantEndTime: this.add_form.grantEndTime,\n applyRange: this.add_form.applyRange,\n categoryCollect: this.add_form.categoryCollect.join(\",\"),\n brandCollect: this.add_form.brandCollect.join(\",\"),\n };\n\n this.loading = true;\n const data = await addPauseSave({\n key: this.pageName,\n data: form,\n });\n this.loading = false;\n\n this.$message({\n type: \"success\",\n message: \"暂存成功!\",\n });\n this.$closeCurrentGoEdit(\"/Marketing/MarketingList/Coupon\");\n },\n // 清除暂存\n async delPauseSave(type) {\n const data = delPauseSave({\n key: this.pageName,\n });\n\n if (type) {\n this.$message({\n type: \"success\",\n message: \"清除暂存成功\",\n });\n this.$closeCurrentGoEdit(\"/Marketing/MarketingList/AddCoupon\");\n }\n },\n // 获取暂存信息\n async getPauseSave() {\n const { data } = await getPauseSave({\n key: this.pageName,\n });\n\n if (JSON.stringify(data) === \"{}\") return;\n this.add_form = {\n ...data,\n useShop: data.useShop ? data.useShop.split(\",\") : [],\n brandCollect: data.brandCollect ? data.brandCollect.split(\",\") : [],\n categoryCollect: data.categoryCollect\n ? data.categoryCollect.split(\",\").map((item) => {\n return parseInt(item);\n })\n : [],\n customerSourceId: data.customerSourceId\n ? data.customerSourceId.split(\",\").map((item) => {\n return parseInt(item);\n })\n : [],\n userTypeId: data.minPrice > 0 ? 2 : -1,\n };\n this.useShopNameArr = data.useShopName\n ? data.useShopName.map((item, index) => {\n return {\n name: item,\n id: parseInt(this.add_form.useShop[index]),\n };\n })\n : [];\n this.chooseCustomer = data.customerNames\n ? data.customerNames.map((item, index) => {\n return {\n name: item.name,\n id: parseInt(this.add_form.useShop[index]),\n };\n })\n : [];\n this.brandNameArr = data.brandNameArr\n ? data.brandNameArr.map((item, index) => {\n return {\n title: item.title,\n id: parseInt(this.add_form.brandCollect[index]),\n };\n })\n : [];\n if (data.startTime !== \"\" && data.endTime !== \"\") {\n this.time = [data.startTime * 1000, data.endTime * 1000];\n }\n if (data.grantStartTime !== \"\" && data.grantEndTime !== \"\") {\n this.grantTime = [\n data.grantStartTime * 1000,\n data.grantEndTime * 1000,\n ];\n }\n },\n // 选择商铺\n selShop(row) {\n if (this.useShopNameArr.length) {\n this.useShopNameArr = this.$_common.unique(\n this.useShopNameArr.concat(row),\n [\"id\"]\n );\n } else {\n this.useShopNameArr = row;\n }\n\n this.add_form.useShop = this.useShopNameArr.map((item) => {\n return item.id;\n });\n this.useShopName = this.useShopNameArr.map((item) => {\n return item.name;\n });\n },\n // 选择品牌\n brandConfirm(row) {\n if (this.brandNameArr.length) {\n this.brandNameArr = this.$_common.unique(\n this.brandNameArr.concat(row),\n [\"id\"]\n );\n } else {\n this.brandNameArr = row;\n }\n this.add_form.brandCollect = this.brandNameArr.map((item) => {\n return item.id;\n });\n },\n // 选择客户\n customerSel(row) {\n if (this.chooseCustomer.length) {\n this.chooseCustomer = this.$_common.unique(\n this.chooseCustomer.concat(row),\n [\"id\"]\n );\n } else {\n this.chooseCustomer = row;\n }\n this.add_form.customerIds = this.chooseCustomer.map((item) => {\n return item.id;\n });\n },\n // 选择商品范围分类 指定分类\n cateChange(nowData, checkedKeysObj) {\n const { checkedKeys, checkedNodes } = checkedKeysObj;\n this.add_form.categoryCollect = checkedKeys;\n },\n // 选择的客户类型\n async getAllCustomerSource() {\n const data = await getAllCustomerSource({\n page: 1,\n pageSize: 999,\n });\n\n this.customerType = data.data;\n if (!this.marketId) {\n this.customerRange = 5;\n /* this.add_form.customerSourceId = data.data.map(item => {\n return item.id\n }) */\n }\n },\n getAllShop(list) {\n if (!this.marketId) {\n this.useShopNameArr = list;\n this.add_form.useShop = this.useShopNameArr.map((item) => {\n return item.id;\n });\n this.useShopName = this.useShopNameArr.map((item) => {\n return item.name;\n });\n }\n },\n // 有效时间\n LocationFrom(val) {\n if (val && val.length) {\n this.add_form.startTime = val[0] / 1000;\n this.add_form.endTime = this.$NP.plus(val[1] / 1000, 86399);\n } else {\n this.add_form.startTime = \"\";\n this.add_form.endTime = \"\";\n }\n },\n // 发放时间\n grantTimeChange(val) {\n if (val && val.length) {\n this.add_form.grantStartTime = val[0] / 1000;\n this.add_form.grantEndTime = this.$NP.plus(val[1] / 1000, 86399);\n } else {\n this.add_form.grantStartTime = \"\";\n this.add_form.grantEndTime = \"\";\n }\n },\n // 关闭标签\n closeTag(name, index) {\n if (name === \"usershop\") {\n this.useShopNameArr.splice(index, 1);\n this.add_form.useShop = this.useShopNameArr.map((item) => {\n return item.id;\n });\n } else if (name === \"customer\") {\n this.chooseCustomer.splice(index, 1);\n this.add_form.customerIds = this.chooseCustomer.map((item) => {\n return item.id;\n });\n } else if (name === \"brand\") {\n this.brandNameArr.splice(index, 1);\n this.add_form.brandCollect = this.brandNameArr.map((item) => {\n return item.id;\n });\n }\n },\n // 提交保存\n async subData() {\n this.$refs.add_form.validate(async (valid) => {\n if (valid) {\n if (\n !(\n parseInt(this.add_form.grantType) !== 20 &&\n parseInt(this.add_form.couponType) !== 20\n )\n ) {\n this.add_form.customerSourceId = \"\";\n }\n if (this.add_form.grantType !== 20) {\n this.add_form.customerIds = \"\";\n }\n const useShop =\n this.add_form.useShop.length > 0\n ? this.add_form.useShop.join(\",\")\n : \"\";\n const minPrice =\n this.add_form.userTypeId === -1 ? 0 : this.add_form.minPrice;\n const customerSourceId =\n this.customerRange === 5\n ? 0\n : this.add_form.customerSourceId.length > 0\n ? this.add_form.customerSourceId.join(\",\")\n : \"\";\n const customerIds =\n this.add_form.customerIds.length > 0\n ? this.add_form.customerIds.join(\",\")\n : \"\";\n const goodsCollect = this.goods_list\n .map((item) => {\n return item.id;\n })\n .join(\",\");\n const form = {\n name: this.add_form.name,\n startTime: this.add_form.startTime,\n endTime: this.add_form.endTime,\n reducePrice: this.add_form.reducePrice,\n remark: this.add_form.remark,\n // 'userTypeId': this.add_form.userTypeId,\n minPrice: minPrice, // 使用门槛(-1不限用)\n grantType: this.add_form.grantType, // 发放方式\n couponType: this.add_form.couponType, // 优惠券类型\n totalNum: this.add_form.totalNum,\n allowNum: this.add_form.allowNum,\n mustCondition: this.add_form.mustCondition, // 满减赠送\n isMutex: this.add_form.isMutex, // 是否与其他活动互斥\n customerSourceId: customerSourceId,\n useShop: useShop, // 使用范围\n customerIds: customerIds, // 选择客户\n grantStartTime: this.add_form.grantStartTime,\n grantEndTime: this.add_form.grantEndTime,\n applyRange: this.add_form.applyRange,\n categoryCollect: this.add_form.categoryCollect.join(\",\"),\n brandCollect: this.add_form.brandCollect.join(\",\"),\n goodsCollect: goodsCollect,\n };\n\n this.loading = true;\n let target = {};\n if (this.marketId) {\n target = await editMarket(this.marketId, form);\n } else {\n target = await addMarket(form);\n }\n const data = target;\n this.loading = false;\n\n this.$message({\n type: \"success\",\n message: \"提交成功!\",\n });\n this.delPauseSave();\n this.$closeCurrentGoEdit(\"/Marketing/MarketingList/Coupon\");\n }\n });\n },\n // 获取详情\n async getInfo() {\n const { data } = await getInfo(this.marketId);\n\n this.add_form = {\n ...data,\n customerIds: data.customerIds.split(\",\").filter((item) => item > 0),\n useShop: data.useShop.split(\",\"),\n brandCollect: data.brandCollect.split(\",\"),\n categoryCollect: data.categoryCollect\n ? data.categoryCollect.split(\",\").map((item) => {\n return parseInt(item);\n })\n : [],\n customerSourceId: data.customerSourceId\n ? data.customerSourceId\n .split(\",\")\n .map((item) => {\n return parseInt(item);\n })\n .filter((item) => item > 0)\n : [],\n userTypeId: data.minPrice > 0 ? 2 : -1,\n };\n if (this.add_form.customerSourceId.length === 0) {\n this.customerRange = 5;\n } else {\n this.customerRange = 4;\n }\n this.useShopNameArr = data.useShopName.map((item, index) => {\n return {\n name: item,\n id: parseInt(this.add_form.useShop[index]),\n };\n });\n this.chooseCustomer = data.customerNames\n ? data.customerNames.map((item, index) => {\n return {\n name: item,\n id: parseInt(this.add_form.customerIds[index]),\n };\n })\n : [];\n this.brandNameArr = data.brandCollectName\n ? data.brandCollectName.map((item, index) => {\n return {\n title: item,\n id: parseInt(this.add_form.brandCollect[index]),\n };\n })\n : [];\n this.time = [data.startTime * 1000, data.endTime * 1000];\n this.grantTime = [data.grantStartTime * 1000, data.grantEndTime * 1000];\n this.goods_list = data.goodsCollectList || [];\n },\n // 商品范围 删除指定商品\n delGoods(index) {\n this.goods_list.splice(index, 1);\n },\n // 商品范围 选择指定商品\n selGoods(goods) {\n if (this.goods_list.length) {\n this.goods_list = this.$_common.unique(\n this.goods_list.concat(goods),\n [\"id\"]\n );\n } else {\n this.goods_list = goods;\n }\n },\n },\n };\n</script>\n<style>\n .orderadd {\n padding: 5px 0;\n }\n</style>\n<style scoped>\n .content-wrp {\n padding: 0 20px;\n }\n .handle-wrp {\n padding: 20px 0;\n }\n .creat-shop {\n color: #1890ff;\n font-size: 12px;\n }\n</style>\n"]}]}