fmode-ng 0.0.205 → 0.0.207

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -174,7 +174,7 @@ export class AuthService {
174
174
  }
175
175
  }
176
176
  async authWechat() {
177
- if (!this.wxjssdk.isWechat || !this.appId)
177
+ if (!this.wxjssdk.isWechat || !this.appId || Parse.User.current()?.id)
178
178
  return false;
179
179
  return new Promise((resolve) => {
180
180
  let cid = this.getCompanyId();
@@ -514,4 +514,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
514
514
  providedIn: "root",
515
515
  }]
516
516
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.WechatJssdkService }, { type: i3.ToastController }, { type: i4.NovaCloudService }, { type: i5.HttpClient }] });
517
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi91c2VyL2xvZ2luL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEdBSVgsTUFBTSxrQkFBa0IsQ0FBQztBQUcxQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsK0RBQStEO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7QUFSOUUsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQVl0QyxNQUFNLE9BQU8sV0FBVztJQVV0QixzQkFBc0I7SUFDdEIsMEJBQTBCO0lBQzFCLGVBQWU7SUFDZixJQUFJO0lBQ0oscUJBQXFCO0lBQ3JCLDZCQUE2QjtJQUM3QixJQUFJO0lBQ0osV0FBVyxDQUFDLEdBQUc7UUFDYixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNiLFdBQVc7WUFDWCxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2YsQ0FBQzthQUFNLENBQUM7WUFDTixvQkFBb0I7WUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENB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QUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU87SUFDVCxDQUFDOytHQXppQlUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBGbW9kZVBhcnNlLFxyXG4gIEZtb2RlT2JqZWN0LFxyXG4gIEZtb2RlUXVlcnksXHJcbiAgRm1vZGVVc2VyLFxyXG59IGZyb20gXCIuLi8uLi9jb3JlL3BhcnNlXCI7XHJcbmNvbnN0IFBhcnNlID0gRm1vZGVQYXJzZS53aXRoKFwibm92YVwiKTtcclxuXHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuLy8gaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi9hY2NvdW50L2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdmFDbG91ZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vbm92YS1jbG91ZFwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgVG9hc3RDb250cm9sbGVyIH0gZnJvbSBcIkBpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmVcIjtcclxuaW1wb3J0IHsgV2VjaGF0SnNzZGtTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NvY2lhbC93ZWNoYXQvd2VjaGF0LWpzc2RrLnNlcnZpY2VcIjtcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG4gIC8qKlxyXG4gICAqIOWuiOWNq+aWueW8j++8muadg+mZkOmqjOivgemUgeWumuaWueW8j1xyXG4gICAqIEB0eXBlIFwicGFnZVwifFwibW9kYWxcIiBwYWdl6aG16Z2i6Lez6L2sIG1vZGFs5by556qX6ZSB5a6aXHJcbiAgICovXHJcbiAgZ3VhcmRUeXBlOiBcInBhZ2VcIiB8IFwibW9kYWxcIjtcclxuICBndWFyZE1hcDogYW55ID0ge307XHJcbiAgbW9kYWxUeXBlOiBcImZ1bGxzY3JlZW5cIiB8IFwic2hlZXRcIiA9IFwiZnVsbHNjcmVlblwiO1xyXG5cclxuICBpc01vZGFsU2hvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vIHNldCBpc01vZGFsU2hvdyh2KXtcclxuICAvLyAgIHRoaXMuX2lzTW9kYWxTaG93ID0gdlxyXG4gIC8vICAgdGhpcy5zZXRBY1xyXG4gIC8vIH1cclxuICAvLyBnZXQgaXNNb2RhbFNob3coKXtcclxuICAvLyAgIHJldHVybiB0aGlzLl9pc01vZGFsU2hvd1xyXG4gIC8vIH1cclxuICBpc0d1YXJkTG9jayh1cmwpIHtcclxuICAgIGxldCBsb2NrID0gdHJ1ZTtcclxuICAgIGxldCB1c2VyID0gUGFyc2UuVXNlci5jdXJyZW50KCk7XHJcbiAgICBpZiAodXNlcj8uaWQpIHtcclxuICAgICAgLy8g55So5oi35bey55m75b2V5LiN6ZSB5a6aXHJcbiAgICAgIGxvY2sgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIOeUqOaIt+acqueZu+W9leS4lOivpemhtemdoumcgOimgeWuiOWNq++8jOWImemUgeWumlxyXG4gICAgICBsb2NrID0gdGhpcy5ndWFyZE1hcFt1cmxdO1xyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5ndWFyZE1hcClcclxuICAgIC8vIGNvbnNvbGUubG9nKGxvY2spXHJcbiAgICByZXR1cm4gbG9jaztcclxuICB9XHJcblxyXG4gIHNob3dCYWNrSG9tZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy/ngrnlh7vmjInpkq7liIfmjaLlr7nlupTooajljZVcclxuICBhY3RpdmVCdXR0b246IHN0cmluZyA9IFwi6LSm5Y+35a+G56CBXCI7IC8vIOm7mOiupOS4uuefreS/oemqjOivgeaMiemSrumAieS4rVxyXG4gIGxvZ2luT3B0aW9uczoge1xyXG4gICAgdXNlcnB3ZD86IGJvb2xlYW47XHJcbiAgICBtb2JpbGVwd2Q/OiBib29sZWFuO1xyXG4gICAgbW9iaWxlY29kZT86IGJvb2xlYW47XHJcbiAgICB3ZWNoYXQ/OiBib29sZWFuO1xyXG4gIH0gPSB7XHJcbiAgICB1c2VycHdkOiB0cnVlLCAvLyDluJDlj7cr5a+G56CBXHJcbiAgICBtb2JpbGVwd2Q6IHRydWUsIC8vIOaJi+acuuWPtyvlr4bnoIFcclxuICAgIG1vYmlsZWNvZGU6IHRydWUsIC8vIOaJi+acuivpqozor4HnoIFcclxuICAgIHdlY2hhdDogdHJ1ZSwgLy8g5b6u5L+h5omr56CB55m75b2VXHJcbiAgfTtcclxuICBnZXQgbG9naW5UeXBlQ291bnQoKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmxvZ2luT3B0aW9ucyk/LmZpbHRlcigoaXRlbSkgPT4gaXRlbSk/Lmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOS8geS4mui0puWll++8mueZu+W9leeUqOaIt+agoemqjOaJgOWcqOeahOi0puWll1xyXG4gICAqL1xyXG4gIF9sb2dvVXJsID0gXCJodHRwczovL2ZpbGUueXViYW4uY28vaW1nL2xvZ28tZmVpbWEucG5nXCI7XHJcbiAgZ2V0IGxvZ29VcmwoKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkxPR09fVVJMXCIpIHx8XHJcbiAgICAgIHRoaXMuX2xvZ29VcmwgfHxcclxuICAgICAgXCJodHRwczovL2ZpbGUueXViYW4uY28vaW1nL2xvZ28tZmVpbWEucG5nXCJcclxuICAgICk7XHJcbiAgfVxyXG4gIHNldCBsb2dvVXJsKHYpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiTE9HT19VUkxcIiwgdik7XHJcbiAgICB0aGlzLl9sb2dvVXJsID0gdGhpcy5fbG9nb1VybDtcclxuICB9XHJcbiAgY29tcGFueTogc3RyaW5nO1xyXG4gIGdldENvbXBhbnlJZCgpIHtcclxuICAgIGxldCBjb21wYW55ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpO1xyXG4gICAgY29tcGFueSA9IHRoaXMuY29tcGFueSB8fCBjb21wYW55O1xyXG4gICAgcmV0dXJuIGNvbXBhbnk7XHJcbiAgfVxyXG5cclxuICB3ZWNoYXRVcmw6IHN0cmluZyA9IFwiaHR0cHM6Ly9hcHAuZm1vZGUuY24vbG9nby96MHFyLmpwZ1wiO1xyXG5cclxuICAvKipcclxuICAgKiDotYTph5HotKbmiLfvvJp1c2Vy6Ieq5Yqo5Yib5bu65ZSv5LiA6LWE6YeR6LSm5oi3XHJcbiAgICovXHJcbiAgYWNjb3VudDogRm1vZGVPYmplY3Q7XHJcblxyXG4gIC8qKlxyXG4gICAqIOeZu+W9leeKtuaAge+8mum7mOiupGZhbHNl77yM55m76ZmG5ZCO5Li6dHJ1ZVxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOeUqOS6juWuiOWNq+W8ueeql+mUgeWumuaooeWdl+agoemqjFxyXG4gICAqL1xyXG4gIGlzTG9nZ2VkSW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gc3RvcmUgdGhlIFVSTCBzbyB3ZSBjYW4gcmVkaXJlY3QgYWZ0ZXIgbG9nZ2luZyBpblxyXG4gIHJlZGlyZWN0VXJsOiBzdHJpbmc7XHJcblxyXG4gIGFwcElkOiBzdHJpbmc7IC8vIOW+ruS/oWFwcGlkXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHd4anNzZGs6IFdlY2hhdEpzc2RrU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgYWNjU2VydjpBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RDdHJsOiBUb2FzdENvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIG5vdmFDbG91ZDogTm92YUNsb3VkU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICApIHt9XHJcbiAgYXN5bmMgdG9hc3Qob3B0aW9uczogYW55KSB7XHJcbiAgICBvcHRpb25zLnBvc2l0aW9uID0gb3B0aW9ucz8ucG9zaXRpb24gfHwgXCJ0b3BcIjtcclxuICAgIG9wdGlvbnMuZHVyYXRpb24gPSBvcHRpb25zPy5kdXJhdGlvbiB8fCAxNTAwO1xyXG4gICAgb3B0aW9ucy5jb2xvciA9IG9wdGlvbnM/LmNvbG9yIHx8IFwicHJpbWFyeVwiO1xyXG4gICAgbGV0IHRvYXN0ID0gYXdhaXQgdGhpcy50b2FzdEN0cmwuY3JlYXRlKG9wdGlvbnMpO1xyXG4gICAgdG9hc3QucHJlc2VudCgpO1xyXG4gIH1cclxuICBtZXNzYWdlID0ge1xyXG4gICAgc3VjY2VzczogKG1zZzogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMudG9hc3QoeyBjb2xvcjogXCJzdWNjZXNzXCIsIG1lc3NhZ2U6IG1zZyB9KTtcclxuICAgIH0sXHJcbiAgICBjcmVhdGU6ICh0eXBlOiBzdHJpbmcsIG1zZzogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICh0eXBlID09IFwiZXJyb3JcIikge1xyXG4gICAgICAgIHR5cGUgPSBcImRhbmdlclwiO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudG9hc3QoeyBjb2xvcjogdHlwZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgfSxcclxuICAgIGluZm86IChtc2c6IHN0cmluZykgPT4ge1xyXG4gICAgICB0aGlzLnRvYXN0KHsgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgfSxcclxuICAgIGVycm9yOiAobXNnOiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy50b2FzdCh7IGNvbG9yOiBcImRhbmdlclwiLCBtZXNzYWdlOiBtc2cgfSk7XHJcbiAgICB9LFxyXG4gIH07XHJcbiAgaW5pdChvcHRpb25zOiB7XHJcbiAgICBjb21wYW55Pzogc3RyaW5nO1xyXG4gICAgZ3VhcmRUeXBlPzogXCJwYWdlXCIgfCBcIm1vZGFsXCI7XHJcbiAgICBMb2dpblBhZ2U/OiBzdHJpbmc7XHJcbiAgICBtb2RhbFR5cGU/OiBcImZ1bGxzY3JlZW5cIiB8IFwic2hlZXRcIjtcclxuICAgIGFwcElkPzogc3RyaW5nO1xyXG4gIH0pIHtcclxuICAgIHRoaXMuY29tcGFueSA9IG9wdGlvbnMuY29tcGFueTtcclxuICAgIHRoaXMuZ3VhcmRUeXBlID0gb3B0aW9ucy5ndWFyZFR5cGU7XHJcbiAgICB0aGlzLm1vZGFsVHlwZSA9IG9wdGlvbnMubW9kYWxUeXBlIHx8IHRoaXMubW9kYWxUeXBlO1xyXG4gICAgdGhpcy5hcHBJZCA9IG9wdGlvbnMuYXBwSWQ7XHJcbiAgICB0aGlzLnd4anNzZGsuaW5pdENvZmluZyh0aGlzLmNvbXBhbnksIHRoaXMuYXBwSWQpO1xyXG4gICAgdGhpcy5zYXZlUGFyYW1zSW52aXRlKCk7XHJcbiAgfVxyXG4gIGNoZWNrTG9naW5Mb2NrKCkge1xyXG4gICAgbGV0IHVzZXIgPSBQYXJzZS5Vc2VyLmN1cnJlbnQoKTtcclxuICAgIGlmICh1c2VyPy5pZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNNb2RhbFNob3cgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzTG9nZ2VkSW4gPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBMb2dpblBhZ2UgPSBcIi9wY3VzZXIvbG9naW5cIjtcclxuICBhc3luYyBjaGVja0xvZ2luKFxyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgb3B0aW9ucz86IHtcclxuICAgICAgb25Mb2dpbjogRnVuY3Rpb247XHJcbiAgICB9LFxyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8g5qOA5rWLdG9rZW7lv6vmjbfnmbvlvZVcclxuICAgIGF3YWl0IHRoaXMuY2hlY2tBbmRMb2dpbldpdGhUb2tlbigpO1xyXG5cclxuICAgIC8vIOajgOa1i+W+ruS/oeeZu+W9lVxyXG4gICAgLy8gYWNjb3VudC5zZXJ2aWNlIGdldFVzZXJPcGVuaWRcclxuICAgIC8vIOazqOaEjyBnZXR3ZWNoYXQg6YC76L6R5pyJ6Zeu6aKY77yM5piv57uZ5b2T5YmN55m75b2V55So5oi36KGl5YWFd2VjaGF05L+h5oGv5ZKMb3Blbmlk55qE77yM5rKh5pyJ5paw55So5oi35rOo5YaMXHJcbiAgICBhd2FpdCB0aGlzLmF1dGhXZWNoYXQoKTtcclxuXHJcbiAgICAvLyDlsIZ1cmzorrDlvZXlnKjooqvlrojljavpobXliJfooajkuK3vvIzkvr/kuo7lkI7nu63mo4DmtYvlvLnnqpfplIHlrppcclxuICAgIGlmICh1cmwpIHtcclxuICAgICAgdGhpcy5ndWFyZE1hcFt1cmxdID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpoLmnpzlt7LnmbvlvZXvvIzpqozor4HkuLp0cnVl5peg6ZyA6ZSB5a6aIOi3s+WHuuivpeWHveaVsFxyXG4gICAgbGV0IGN1cnJlbnRVc2VyID0gUGFyc2UuVXNlci5jdXJyZW50KCk7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJjdXJyZW50VXNlclwiLCBjdXJyZW50VXNlcik7XHJcbiAgICBpZiAoY3VycmVudFVzZXIgJiYgY3VycmVudFVzZXIuaWQpIHtcclxuICAgICAgLy8gdGhpcy5zZXRDdXJyZW50VXNlckxvY2FsU3RvcmFnZShjdXJyZW50VXNlcilcclxuICAgICAgdGhpcy5zZXRBY2NvdW50KGN1cnJlbnRVc2VyKTtcclxuICAgICAgdGhpcy5pc0xvZ2dlZEluID0gdHJ1ZTtcclxuICAgICAgb3B0aW9ucz8ub25Mb2dpbj8uKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWmguaenOacqueZu+W9le+8jOWIpOaWrei/m+ihjOS4pOenjeWuiOWNq+aWueW8j1xyXG4gICAgaWYgKCF0aGlzLmd1YXJkVHlwZSB8fCB0aGlzLmd1YXJkVHlwZSA9PSBcInBhZ2VcIikge1xyXG4gICAgICAvLyDlrojljavmlrnlvI8x77ya6aG16Z2i6Lez6L2sXHJcbiAgICAgIC8vIOWQpuWImemHjeWumuWQkeWIsGxvZ2lu6aG16Z2iXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuYXV0aFNlcnZpY2UuaXNMb2dnZWRJbilcclxuICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVcmwgPSB1cmw7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLor7fnmbvlvZXvvJpcIix0aGlzLkxvZ2luUGFnZSlcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5Mb2dpblBhZ2VdKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ndWFyZFR5cGUgPT0gXCJtb2RhbFwiKSB7XHJcbiAgICAgIC8vIOWuiOWNq+aWueW8jzLvvJrlvLnnqpfplIHlrppcclxuICAgICAgLy8gY29uc29sZS5sb2coXCLop6blj5Eg5a6I5Y2r5pa55byPMu+8muW8ueeql+mUgeWumlwiKVxyXG4gICAgICB0aGlzLmlzTW9kYWxTaG93ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc0xvZ2dlZEluID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYXV0aFdlY2hhdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmKCF0aGlzLnd4anNzZGsuaXNXZWNoYXQgfHwgIXRoaXMuYXBwSWQpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5nZXRDb21wYW55SWQoKTtcclxuICAgICAgbGV0IGNvZGUgPSB0aGlzLnd4anNzZGsuZ2V0UXVlcnlTdHJpbmdCeU5hbWUoXCJjb2RlXCIpO1xyXG4gICAgICBsZXQgcGF0aG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XHJcbiAgICAgIGlmICghY29kZSkge1xyXG4gICAgICAgIHRoaXMud3hqc3Nkay5hdXRoV2VjaGF0KHBhdGhuYW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBQYXJzZS5DbG91ZC5ydW4oXCJhdXRoX3dlY2hhdFwiLCB7IGNvZGU6IGNvZGUsIGM6IGNpZCB9KVxyXG4gICAgICAgICAgLnRoZW4oKGF1dGhEYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwiY29kZVwiKTtcclxuICAgICAgICAgICAgbGV0IHNlc3Npb25Ub2tlbiA9IGF1dGhEYXRhLnRva2VuO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhzZXNzaW9uVG9rZW4pO1xyXG4gICAgICAgICAgICBpZiAoYXV0aERhdGEub3BlbmlkKSB7XHJcbiAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJvcGVuaWRcIiwgYXV0aERhdGEub3BlbmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoUGFyc2UuVXNlci5jdXJyZW50KCk/LmlkKSB7XHJcbiAgICAgICAgICAgICAgLy8g5b2T55So5oi35a2Y5Zyo5pe25YCZ77yM5Y+q6K6+572ub3Blbmlk77yM5LiN55u05o6l55m75b2VXHJcbiAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBQYXJzZS5Vc2VyLmJlY29tZShzZXNzaW9uVG9rZW4pXHJcbiAgICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5zZXQoXCJjb21wYW55XCIsIHtcclxuICAgICAgICAgICAgICAgICAgX190eXBlOiBcIlBvaW50ZXJcIixcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcIkNvbXBhbnlcIixcclxuICAgICAgICAgICAgICAgICAgb2JqZWN0SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29tcGFueVwiKSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5zYXZlKCk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcImJlY29tZeeZu+W9leWksei0pe+8mlwiICsgZXJyKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIldlY2hhdOeZu+W9leWksei0pe+8mlwiICsgZXJyKTtcclxuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDmoLnmja50b2tlbuW/q+aNt+eZu+W9lVxyXG4gIGFzeW5jIGNoZWNrQW5kTG9naW5XaXRoVG9rZW4oKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcImNoZWNrQW5kTG9naW5XaXRoVG9rZW5cIik7XHJcbiAgICAvLyDojrflj5blvZPliY1VUkznmoTmn6Xor6Llj4LmlbBcclxuICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XHJcbiAgICBjb25zdCB0b2tlbiA9IHVybFBhcmFtcy5nZXQoXCJ0b2tlblwiKTtcclxuXHJcbiAgICBpZiAodG9rZW4pIHtcclxuICAgICAgLy8g5Yig6ZmkdG9rZW7lj4LmlbDlubbmm7TmlrBVUkzvvIjkuI3liLfmlrDpobXpnaLvvIlcclxuICAgICAgdXJsUGFyYW1zLmRlbGV0ZShcInRva2VuXCIpO1xyXG4gICAgICBsZXQgbmV3VXJsID1cclxuICAgICAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgK1xyXG4gICAgICAgICh1cmxQYXJhbXMudG9TdHJpbmcoKSA/IFwiP1wiICsgdXJsUGFyYW1zLnRvU3RyaW5nKCkgOiBcIlwiKSArXHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2g7XHJcbiAgICAgIG5ld1VybCA9IGRlY29kZVVSSUNvbXBvbmVudChuZXdVcmwpO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIm5ld1VybFwiLCBuZXdVcmwpO1xyXG4gICAgICAvLyDkvb/nlKhoaXN0b3J5IEFQSeabtOaWsFVSTFxyXG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sIFwiXCIsIG5ld1VybCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgXCJcIiwgbmV3VXJsKTtcclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICAgIC8vIOS9v+eUqHRva2Vu55m75b2VXHJcbiAgICAgIGxldCB1c2VyID0gUGFyc2UuVXNlci5jdXJyZW50KCk7XHJcbiAgICAgIGlmICghdXNlcj8uaWQpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdXNlciA9IGF3YWl0IFBhcnNlLlVzZXIuYmVjb21lKHRva2VuKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHt9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHNldEFjY291bnQodXNlcikge1xyXG4gICAgaWYgKHRoaXMuYWNjb3VudD8uaWQpIHJldHVybjtcclxuICAgIC8vIHRoaXMuYWNjb3VudCA9IGF3YWl0IHRoaXMuYWNjU2Vydi5nZXRVc2VyQWNjb3VudCh1c2VyKTtcclxuICAgIGxldCBjb21wYW55ID1cclxuICAgICAgdXNlcj8uZ2V0KFwiY29tcGFueVwiKSB8fCB7XHJcbiAgICAgICAgX190eXBlOiBcIlBvaW50ZXJcIixcclxuICAgICAgICBjbGFzc05hbWU6IFwiQ29tcGFueVwiLFxyXG4gICAgICAgIG9iamVjdElkOiB0aGlzLmdldENvbXBhbnlJZCgpLFxyXG4gICAgICB9IHx8XHJcbiAgICAgIG51bGw7XHJcbiAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJBY2NvdW50XCIpO1xyXG4gICAgcXVlcnkuZXF1YWxUbyhcInVzZXJcIiwgdXNlci50b1BvaW50ZXIoKSk7XHJcbiAgICBsZXQgYWNjb3VudCA9IGF3YWl0IHF1ZXJ5LmZpcnN0KCk7XHJcbiAgICBpZiAoIWFjY291bnQ/LmlkKSB7XHJcbiAgICAgIGFjY291bnQgPSBuZXcgUGFyc2UuT2JqZWN0KFwiQWNjb3VudFwiKTtcclxuICAgICAgYWNjb3VudC5zZXQoe1xyXG4gICAgICAgIHVzZXI6IHVzZXIudG9Qb2ludGVyKCksXHJcbiAgICAgICAgY29tcGFueTogY29tcGFueSxcclxuICAgICAgfSk7XHJcbiAgICAgIGFjY291bnQgPSBhd2FpdCBhY2NvdW50LnNhdmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuYWNjb3VudCA9IGFjY291bnQ7XHJcbiAgICByZXR1cm4gYWNjb3VudDtcclxuICB9XHJcblxyXG4gIGxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgUGFyc2UuVXNlci5sb2dJbih1c2VybmFtZSwgcGFzc3dvcmQpXHJcbiAgICAgICAgLnRoZW4oYXN5bmMgKGRhdGEpID0+IHtcclxuICAgICAgICAgIC8vIOajgOa1i+mCgOivt+mAu+i+kVxyXG4gICAgICAgICAgdGhpcy5iaW5kSW52aXRlKGRhdGEpO1xyXG5cclxuICAgICAgICAgIC8vIOagueaNruW9k+WJjeeUqOaIt++8jOiuvue9ruW4kOWll+S/oeaBr1xyXG4gICAgICAgICAgdGhpcy5zZXRDdXJyZW50VXNlckxvY2FsU3RvcmFnZShkYXRhKTtcclxuXHJcbiAgICAgICAgICAvLyDlpoLmnpzmmK9tb2RhbOW8ueeql+eZu+W9leWImeWIt+aWsOW9k+WJjemhtVxyXG4gICAgICAgICAgaWYgKHRoaXMuZ3VhcmRUeXBlID09IFwibW9kYWxcIikge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQYWdlKCk7XHJcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyDlpoLmnpznm7TmjqXov5tsb2dpbumhtemdou+8jHJlZGlyZWN0VXJs5Li6dW5kZWZpbmVkIOWvvOiIquiHs+mmlumhtVxyXG4gICAgICAgICAgbGV0IHF1ZXJ5Q29tID0gbmV3IFBhcnNlLlF1ZXJ5KFwiQ29tcGFueVwiKTtcclxuICAgICAgICAgIHF1ZXJ5Q29tLnNlbGVjdChcInJvb3RQYWdlXCIpO1xyXG4gICAgICAgICAgcXVlcnlDb20uZXF1YWxUbyhcIm9iamVjdElkXCIsIGRhdGE/LmdldChcImNvbXBhbnlcIik/LmlkKTtcclxuICAgICAgICAgIGxldCBjb20gPSBhd2FpdCBxdWVyeUNvbS5maXJzdCgpO1xyXG4gICAgICAgICAgbGV0IHJvb3RQYWdlID0gY29tPy5nZXQoXCJyb290UGFnZVwiKTtcclxuICAgICAgICAgIHRoaXMucmVkaXJlY3RVcmwgPVxyXG4gICAgICAgICAgICB0aGlzLnJlZGlyZWN0VXJsIHx8IHJvb3RQYWdlIHx8IFwiL3Byb2plY3QvZGFzaGJvYXJkXCI7XHJcbiAgICAgICAgICBsZXQgdXJsID0gdGhpcy5yZWRpcmVjdFVybDtcclxuICAgICAgICAgIHVybCA9IGRlY29kZVVSSUNvbXBvbmVudCh1cmwpO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybF0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHJlamVjdCh7IG1lc3NhZ2U6IFwi5peg5q2k55So5oi35L+h5oGv77yM6K+35YWI5Zyo5bCP56iL5bqP55m75b2VXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVmcmVzaFBhZ2UoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgbGV0IGN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcblxyXG4gICAgICAvLyBsb2NhdGlvbi5yZWxvYWQoKTsgLy8g6aG16Z2i5by65Yi25Yi35pawXHJcbiAgICAgIC8vIHJlc29sdmUodHJ1ZSlcclxuICAgICAgaWYgKFBhcnNlLlVzZXIuY3VycmVudCgpPy5pZCkge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbFNob3cgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTkfot6/nlLHph43ovb1cclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcIi9cIiwgeyBza2lwTG9jYXRpb25DaGFuZ2U6IHRydWUgfSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChjdXJyZW50VXJsKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDnlKjmiLfnmbvlvZXlkI7vvIzmm7TmlrDluJDlpZfkv6Hmga/oh7PmnKzlnLDlrZjlgqhcclxuICBzZXRDdXJyZW50VXNlckxvY2FsU3RvcmFnZSh1c2VyOiBGbW9kZVVzZXIpIHtcclxuICAgIGlmICh1c2VyLmdldChcImNvbXBhbnlcIik/LmlkKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY29tcGFueVwiLCB1c2VyLmdldChcImNvbXBhbnlcIik/LmlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvZ291dCh0eXBlLCB1cmwpOiB2b2lkIHtcclxuICAgIGxldCBjb21wYW55ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpO1xyXG4gICAgbGV0IFdFQ0hBVF9BUFBfSUQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIldFQ0hBVF9BUFBfSURcIik7XHJcbiAgICBsZXQgTE9HT19VUkwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkxPR09fVVJMXCIpO1xyXG4gICAgbGV0IE5PVkFfQVBJR19TRVJWRVIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIk5PVkFfQVBJR19TRVJWRVJcIik7XHJcbiAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY29tcGFueVwiLCBjb21wYW55KTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiV0VDSEFUX0FQUF9JRFwiLCBXRUNIQVRfQVBQX0lEKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiTE9HT19VUkxcIiwgTE9HT19VUkwpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJOT1ZBX0FQSUdfU0VSVkVSXCIsIE5PVkFfQVBJR19TRVJWRVIpO1xyXG5cclxuICAgIFBhcnNlLlVzZXIubG9nT3V0KCkudGhlbigodXNlcikgPT4ge30pO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybCB8fCBcIi9wY3VzZXIvbG9naW5cIl0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2u5biQ5aWX5YaFbW9iaWxl5a2X5q6155m75b2V6YC76L6RXHJcbiAgICovXHJcbiAgLy8g5omL5py65Y+3K+WvhueggeeZu+W9lVxyXG4gIGFzeW5jIGxvZ2luTW9iaWxlUGFzc3dvcmQobW9iaWxlOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIG1zZ1NlcnYpIHtcclxuICAgIGxldCB1c2VybmFtZSA9IGF3YWl0IHRoaXMuZ2V0TW9iaWxlVXNlcihtb2JpbGUpO1xyXG4gICAgaWYgKCF1c2VybmFtZSkge1xyXG4gICAgICBtc2dTZXJ2LmNyZWF0ZShcImVycm9yXCIsIFwi55So5oi35LiN5a2Y5Zyo77yM6K+35bCd6K+V5YW25LuW55m75b2V5pa55byPXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLmxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZClcclxuICAgICAgICAudGhlbihhc3luYyAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc01vZGFsU2hvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgcmVzb2x2ZShkYXRhKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgbXNnU2Vydi5jcmVhdGUoXCJlcnJvclwiLCBcIumUmeivr+eahOeUqOaIt+WQjeaIluWvhueggVwiKTtcclxuICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNpZ25Nb2JpbGVQYXNzd29yZChtb2JpbGU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBsZXQgc2lnbmVkVXNlciA9IGF3YWl0IHRoaXMuc2lnblVwQW5kVXBkYXRlKG1vYmlsZSwgcGFzc3dvcmQpO1xyXG4gICAgICByZXNvbHZlKHNpZ25lZFVzZXIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vIOagueaNruaJi+acuuWPt+iOt+W+l+W4kOWll+WGheeUqOaIt+WQjVxyXG4gIG1vYmlsZVVzZXJNYXAgPSB7fTtcclxuICBhc3luYyBnZXRNb2JpbGVVc2VyKG1vYmlsZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgY29tcGFueSA9IHRoaXMuZ2V0Q29tcGFueUlkKCk7XHJcbiAgICBsZXQgdXNlck1JRCA9IGNvbXBhbnkgKyBtb2JpbGU7XHJcbiAgICBpZiAodGhpcy5tb2JpbGVVc2VyTWFwW3VzZXJNSURdKSByZXR1cm4gdGhpcy5tb2JpbGVVc2VyTWFwW3VzZXJNSURdO1xyXG4gICAgbGV0IHJlc3VsdDogYW55ID0gYXdhaXQgdGhpcy5ub3ZhQ2xvdWQuYXBpKFwiL2F1dGgvZ2V0dXNlcm5hbWVcIiwge1xyXG4gICAgICBjb21wYW55OiBjb21wYW55LFxyXG4gICAgICBtb2JpbGU6IG1vYmlsZSxcclxuICAgIH0pO1xyXG4gICAgaWYgKHJlc3VsdD8udXNlcm5hbWUpIHtcclxuICAgICAgdGhpcy5tb2JpbGVVc2VyTWFwW3VzZXJNSURdID0gcmVzdWx0Py51c2VybmFtZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm1vYmlsZVVzZXJNYXBbdXNlck1JRF07XHJcbiAgfVxyXG4gIGVuYWJsZWRMb2NhbENvZGU6IGJvb2xlYW4gPSBmYWxzZTsgLy8g5byA5ZCv6aqM6K+B56CBXHJcblxyXG4gIHNpZ25VcEFuZFVwZGF0ZShtb2JpbGUsIHBhc3N3b3JkPzogc3RyaW5nKTogUHJvbWlzZTxGbW9kZU9iamVjdCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcGFzc3dvcmQgPSBwYXNzd29yZCB8fCBtb2JpbGUgKyBcInB3ZDY2NlwiO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIFBhcnNlLlVzZXIuc2lnblVwKHRoaXMuZ2V0Q29tcGFueUlkKCkgKyBcIi1cIiArIG1vYmlsZSwgcGFzc3dvcmQpXHJcbiAgICAgICAgLnRoZW4oYXN5bmMgKHNpZ25lZFVzZXIpID0+IHtcclxuICAgICAgICAgIGlmIChzaWduZWRVc2VyLmlkKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHNpZ25lZFVzZXIpO1xyXG4gICAgICAgICAgICBzaWduZWRVc2VyLnNldChcImNvbXBhbnlcIiwge1xyXG4gICAgICAgICAgICAgIF9fdHlwZTogXCJQb2ludGVyXCIsXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcIkNvbXBhbnlcIixcclxuICAgICAgICAgICAgICBvYmplY3RJZDogdGhpcy5nZXRDb21wYW55SWQoKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNpZ25lZFVzZXIuc2V0KFwibW9iaWxlXCIsIG1vYmlsZSk7XHJcbiAgICAgICAgICAgIHNpZ25lZFVzZXIuc2V0KFwidHlwZVwiLCBcInVzZXJcIik7XHJcbiAgICAgICAgICAgIHRoaXMuYmluZEludml0ZShzaWduZWRVc2VyKTtcclxuICAgICAgICAgICAgc2lnbmVkVXNlciA9IGF3YWl0IHNpZ25lZFVzZXIuc2F2ZSgpO1xyXG4gICAgICAgICAgICByZXNvbHZlKHNpZ25lZFVzZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMb2dpblN0YXRlKCkge1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpO1xyXG4gICAgcXVlcnlQYXJhbXMuc2V0KFwidFwiLCBTdHJpbmcobmV3IERhdGUoKS5nZXRUaW1lKCkpKTtcclxuXHJcbiAgICAvLyDojrflj5bljrvpmaRiYXNlSHJlZuWQjueahHBhdGhuYW1lXHJcbiAgICBsZXQgcGF0aE5hbWVXaXRob3V0QmFzZUhyZWYgPVxyXG4gICAgICBcIi9cIiArXHJcbiAgICAgIChsb2NhdGlvbi5vcmlnaW4gKyBsb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZUFsbChkb2N1bWVudC5iYXNlVVJJLCBcIlwiKTtcclxuXHJcbiAgICBsZXQgdXJsID0gcGF0aE5hbWVXaXRob3V0QmFzZUhyZWYgKyBgPyR7cXVlcnlQYXJhbXMudG9TdHJpbmcoKX1gO1xyXG4gICAgY29uc29sZS5sb2codXJsKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldE1vYmlsZUNvZGVUb2tlbihtb2JpbGUsIGNvZGUpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgbGV0IGhvc3QgPVxyXG4gICAgICAgIChQYXJzZSBhcyBhbnkpLnNlcnZlclVSTD8uc3BsaXQoXCJwYXJzZVwiKT8uWzBdIHx8XHJcbiAgICAgICAgXCJodHRwczovL3NlcnZlci5mbW9kZS5jbi9cIjtcclxuICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgLmdldChcclxuICAgICAgICAgIGhvc3QgK1xyXG4gICAgICAgICAgICBgYXBpL2F1dGgvbW9iaWxlP2NvbXBhbnk9JHt0aGlzLmNvbXBhbnl9Jm1vYmlsZT0ke21vYmlsZX0mY29kZT0ke2NvZGV9YCxcclxuICAgICAgICApXHJcbiAgICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyog6aqM6K+B56CB55m75b2VICovXHJcbiAgYXN5bmMgbG9naW5Db2RlKFxyXG4gICAgbW9iaWxlOiBzdHJpbmcsXHJcbiAgICBjb2RlOiBzdHJpbmcsXHJcbiAgICBtc2dTZXJ2PyxcclxuICAgIGNsb3NlQ2FsbEJhY2s/OiBhbnksXHJcbiAgKTogUHJvbWlzZTxCb29sZWFuPiB7XHJcbiAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgdGhpcy50b2FzdCh7IGNvbG9yOiBcInByaW1hcnlcIiwgbWVzc2FnZTogXCLor7floavlhpnmnInmlYjpqozor4HnoIFcIiB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLmdldE1vYmlsZUNvZGVUb2tlbihtb2JpbGUsIGNvZGUpO1xyXG4gICAgICBpZiAocmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKDIwMCwgcmVzKTtcclxuXHJcbiAgICAgICAgbGV0IGxvZ1VzZXIgPSBhd2FpdCBQYXJzZS5Vc2VyLmJlY29tZShyZXMuZGF0YS50b2tlbik7XHJcbiAgICAgICAgY29uc29sZS5sb2cobG9nVXNlciwgbG9nVXNlcj8uaWQpO1xyXG4gICAgICAgIGlmIChsb2dVc2VyPy5pZCkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2cobG9nVXNlciwgbG9nVXNlcj8uaWQpO1xyXG4gICAgICAgICAgLy8g5qOA5rWL6YKA6K+36YC76L6RXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmJpbmRJbnZpdGUobG9nVXNlcik7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJiKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJiaW5kIGVyciBiXCIsIGVycmIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IxXCIsIGUpO1xyXG4gICAgICBpZiAoZT8uZXJyb3I/Lm1lc3M/LmluZGV4T2YoXCLnlKjmiLfkuI3lrZjlnKhcIikgPiAtMSkge1xyXG4gICAgICAgIC8vIOiHquWKqOazqOWGjFxyXG4gICAgICAgIGxldCBzaWduZWRVc2VyID0gYXdhaXQgdGhpcy5zaWduVXBBbmRVcGRhdGUobW9iaWxlKTtcclxuICAgICAgICBpZiAoc2lnbmVkVXNlcj8uaWQpIHtcclxuICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmxvZ2luQ29kZShtb2JpbGUsIGNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvYXN0KHsgbWVzc2FnZTogZT8uZXJyb3I/Lm1lc3MgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNhdmVQYXJhbXNJbnZpdGUoKSB7XHJcbiAgICBsZXQgc2VhcmNoUGFyYW1zID0gdGhpcy5ub3ZhQ2xvdWQuc2VhcmNoUGFyc2UoKTtcclxuICAgIGNvbnNvbGUubG9nKFwic2F2ZVBhcmFtc0ludml0ZVwiLCBzZWFyY2hQYXJhbXMpO1xyXG4gICAgbGV0IGludml0ZSA9IHNlYXJjaFBhcmFtcz8uZ2V0KFwiaW52aXRlXCIpO1xyXG4gICAgY29uc29sZS5sb2coaW52aXRlKTtcclxuICAgIGlmIChpbnZpdGUpIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaW52aXRlXCIsIGludml0ZSk7XHJcbiAgfVxyXG4gIGFzeW5jIGJpbmRJbnZpdGUoY3VycmVudD86IGFueSkge1xyXG4gICAgY3VycmVudCA9IGN1cnJlbnQgfHwgUGFyc2UuVXNlci5jdXJyZW50KCk7XHJcbiAgICBpZiAoIWN1cnJlbnQpIHJldHVybjsgLy8g5b2T5YmN55So5oi35b+F6aG75a2Y5ZyoXHJcbiAgICBpZiAoY3VycmVudD8uZ2V0KFwiaW52aXRlXCIpPy5pZCkgcmV0dXJuOyAvLyDlvZPliY3nlKjmiLfml6DpgoDor7flhbPns7tcclxuXHJcbiAgICBsZXQgaW52aXRlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJpbnZpdGVcIik7XHJcbiAgICBpZiAoIWludml0ZSkgcmV0dXJuOyAvLyDmnKzlnLDlrZjlgqjpgoDor7fnoIHlv4XpobvlrZjlnKhcclxuICAgIGlmIChjdXJyZW50Py5pZCA9PSBpbnZpdGUpIHJldHVybjsgLy8g5LiN6IO96YKA6K+36Ieq5bexXHJcbiAgICBsZXQgcmVzO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIHJlcyA9IGF3YWl0IHRoaXMubm92YUNsb3VkLmFwaShcIi9hdXRoL2ludml0ZVwiLCB7XHJcbiAgICAgICAgY3VycmVudDogY3VycmVudD8uaWQsXHJcbiAgICAgICAgaW52aXRlOiBpbnZpdGUsXHJcbiAgICAgICAgdHlwZTogXCJjb2RlXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zb2xlLmxvZyhcImJpbmRcIiwgcmVzKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiYmluZCBlcnJcIiwgZXJyKTtcclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcbn1cclxuIl19
517
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi91c2VyL2xvZ2luL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEdBSVgsTUFBTSxrQkFBa0IsQ0FBQztBQUcxQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsK0RBQStEO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7QUFSOUUsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQVl0QyxNQUFNLE9BQU8sV0FBVztJQVV0QixzQkFBc0I7SUFDdEIsMEJBQTBCO0lBQzFCLGVBQWU7SUFDZixJQUFJO0lBQ0oscUJBQXFCO0lBQ3JCLDZCQUE2QjtJQUM3QixJQUFJO0lBQ0osV0FBVyxDQUFDLEdBQUc7UUFDYixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNiLFdBQVc7WUFDWCxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2YsQ0FBQzthQUFNLENBQUM7WUFDTixvQkFBb0I7WUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENB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QixNQUFNLEVBQUUsTUFBTTtnQkFDZCxJQUFJLEVBQUUsTUFBTTthQUNiLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU87SUFDVCxDQUFDOytHQXppQlUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBGbW9kZVBhcnNlLFxyXG4gIEZtb2RlT2JqZWN0LFxyXG4gIEZtb2RlUXVlcnksXHJcbiAgRm1vZGVVc2VyLFxyXG59IGZyb20gXCIuLi8uLi9jb3JlL3BhcnNlXCI7XHJcbmNvbnN0IFBhcnNlID0gRm1vZGVQYXJzZS53aXRoKFwibm92YVwiKTtcclxuXHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuLy8gaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi9hY2NvdW50L2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdmFDbG91ZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vbm92YS1jbG91ZFwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgVG9hc3RDb250cm9sbGVyIH0gZnJvbSBcIkBpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmVcIjtcclxuaW1wb3J0IHsgV2VjaGF0SnNzZGtTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NvY2lhbC93ZWNoYXQvd2VjaGF0LWpzc2RrLnNlcnZpY2VcIjtcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG4gIC8qKlxyXG4gICAqIOWuiOWNq+aWueW8j++8muadg+mZkOmqjOivgemUgeWumuaWueW8j1xyXG4gICAqIEB0eXBlIFwicGFnZVwifFwibW9kYWxcIiBwYWdl6aG16Z2i6Lez6L2sIG1vZGFs5by556qX6ZSB5a6aXHJcbiAgICovXHJcbiAgZ3VhcmRUeXBlOiBcInBhZ2VcIiB8IFwibW9kYWxcIjtcclxuICBndWFyZE1hcDogYW55ID0ge307XHJcbiAgbW9kYWxUeXBlOiBcImZ1bGxzY3JlZW5cIiB8IFwic2hlZXRcIiA9IFwiZnVsbHNjcmVlblwiO1xyXG5cclxuICBpc01vZGFsU2hvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vIHNldCBpc01vZGFsU2hvdyh2KXtcclxuICAvLyAgIHRoaXMuX2lzTW9kYWxTaG93ID0gdlxyXG4gIC8vICAgdGhpcy5zZXRBY1xyXG4gIC8vIH1cclxuICAvLyBnZXQgaXNNb2RhbFNob3coKXtcclxuICAvLyAgIHJldHVybiB0aGlzLl9pc01vZGFsU2hvd1xyXG4gIC8vIH1cclxuICBpc0d1YXJkTG9jayh1cmwpIHtcclxuICAgIGxldCBsb2NrID0gdHJ1ZTtcclxuICAgIGxldCB1c2VyID0gUGFyc2UuVXNlci5jdXJyZW50KCk7XHJcbiAgICBpZiAodXNlcj8uaWQpIHtcclxuICAgICAgLy8g55So5oi35bey55m75b2V5LiN6ZSB5a6aXHJcbiAgICAgIGxvY2sgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIOeUqOaIt+acqueZu+W9leS4lOivpemhtemdoumcgOimgeWuiOWNq++8jOWImemUgeWumlxyXG4gICAgICBsb2NrID0gdGhpcy5ndWFyZE1hcFt1cmxdO1xyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5ndWFyZE1hcClcclxuICAgIC8vIGNvbnNvbGUubG9nKGxvY2spXHJcbiAgICByZXR1cm4gbG9jaztcclxuICB9XHJcblxyXG4gIHNob3dCYWNrSG9tZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy/ngrnlh7vmjInpkq7liIfmjaLlr7nlupTooajljZVcclxuICBhY3RpdmVCdXR0b246IHN0cmluZyA9IFwi6LSm5Y+35a+G56CBXCI7IC8vIOm7mOiupOS4uuefreS/oemqjOivgeaMiemSrumAieS4rVxyXG4gIGxvZ2luT3B0aW9uczoge1xyXG4gICAgdXNlcnB3ZD86IGJvb2xlYW47XHJcbiAgICBtb2JpbGVwd2Q/OiBib29sZWFuO1xyXG4gICAgbW9iaWxlY29kZT86IGJvb2xlYW47XHJcbiAgICB3ZWNoYXQ/OiBib29sZWFuO1xyXG4gIH0gPSB7XHJcbiAgICB1c2VycHdkOiB0cnVlLCAvLyDluJDlj7cr5a+G56CBXHJcbiAgICBtb2JpbGVwd2Q6IHRydWUsIC8vIOaJi+acuuWPtyvlr4bnoIFcclxuICAgIG1vYmlsZWNvZGU6IHRydWUsIC8vIOaJi+acuivpqozor4HnoIFcclxuICAgIHdlY2hhdDogdHJ1ZSwgLy8g5b6u5L+h5omr56CB55m75b2VXHJcbiAgfTtcclxuICBnZXQgbG9naW5UeXBlQ291bnQoKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmxvZ2luT3B0aW9ucyk/LmZpbHRlcigoaXRlbSkgPT4gaXRlbSk/Lmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOS8geS4mui0puWll++8mueZu+W9leeUqOaIt+agoemqjOaJgOWcqOeahOi0puWll1xyXG4gICAqL1xyXG4gIF9sb2dvVXJsID0gXCJodHRwczovL2ZpbGUueXViYW4uY28vaW1nL2xvZ28tZmVpbWEucG5nXCI7XHJcbiAgZ2V0IGxvZ29VcmwoKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkxPR09fVVJMXCIpIHx8XHJcbiAgICAgIHRoaXMuX2xvZ29VcmwgfHxcclxuICAgICAgXCJodHRwczovL2ZpbGUueXViYW4uY28vaW1nL2xvZ28tZmVpbWEucG5nXCJcclxuICAgICk7XHJcbiAgfVxyXG4gIHNldCBsb2dvVXJsKHYpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiTE9HT19VUkxcIiwgdik7XHJcbiAgICB0aGlzLl9sb2dvVXJsID0gdGhpcy5fbG9nb1VybDtcclxuICB9XHJcbiAgY29tcGFueTogc3RyaW5nO1xyXG4gIGdldENvbXBhbnlJZCgpIHtcclxuICAgIGxldCBjb21wYW55ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpO1xyXG4gICAgY29tcGFueSA9IHRoaXMuY29tcGFueSB8fCBjb21wYW55O1xyXG4gICAgcmV0dXJuIGNvbXBhbnk7XHJcbiAgfVxyXG5cclxuICB3ZWNoYXRVcmw6IHN0cmluZyA9IFwiaHR0cHM6Ly9hcHAuZm1vZGUuY24vbG9nby96MHFyLmpwZ1wiO1xyXG5cclxuICAvKipcclxuICAgKiDotYTph5HotKbmiLfvvJp1c2Vy6Ieq5Yqo5Yib5bu65ZSv5LiA6LWE6YeR6LSm5oi3XHJcbiAgICovXHJcbiAgYWNjb3VudDogRm1vZGVPYmplY3Q7XHJcblxyXG4gIC8qKlxyXG4gICAqIOeZu+W9leeKtuaAge+8mum7mOiupGZhbHNl77yM55m76ZmG5ZCO5Li6dHJ1ZVxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOeUqOS6juWuiOWNq+W8ueeql+mUgeWumuaooeWdl+agoemqjFxyXG4gICAqL1xyXG4gIGlzTG9nZ2VkSW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gc3RvcmUgdGhlIFVSTCBzbyB3ZSBjYW4gcmVkaXJlY3QgYWZ0ZXIgbG9nZ2luZyBpblxyXG4gIHJlZGlyZWN0VXJsOiBzdHJpbmc7XHJcblxyXG4gIGFwcElkOiBzdHJpbmc7IC8vIOW+ruS/oWFwcGlkXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHd4anNzZGs6IFdlY2hhdEpzc2RrU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgYWNjU2VydjpBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RDdHJsOiBUb2FzdENvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIG5vdmFDbG91ZDogTm92YUNsb3VkU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICApIHt9XHJcbiAgYXN5bmMgdG9hc3Qob3B0aW9uczogYW55KSB7XHJcbiAgICBvcHRpb25zLnBvc2l0aW9uID0gb3B0aW9ucz8ucG9zaXRpb24gfHwgXCJ0b3BcIjtcclxuICAgIG9wdGlvbnMuZHVyYXRpb24gPSBvcHRpb25zPy5kdXJhdGlvbiB8fCAxNTAwO1xyXG4gICAgb3B0aW9ucy5jb2xvciA9IG9wdGlvbnM/LmNvbG9yIHx8IFwicHJpbWFyeVwiO1xyXG4gICAgbGV0IHRvYXN0ID0gYXdhaXQgdGhpcy50b2FzdEN0cmwuY3JlYXRlKG9wdGlvbnMpO1xyXG4gICAgdG9hc3QucHJlc2VudCgpO1xyXG4gIH1cclxuICBtZXNzYWdlID0ge1xyXG4gICAgc3VjY2VzczogKG1zZzogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMudG9hc3QoeyBjb2xvcjogXCJzdWNjZXNzXCIsIG1lc3NhZ2U6IG1zZyB9KTtcclxuICAgIH0sXHJcbiAgICBjcmVhdGU6ICh0eXBlOiBzdHJpbmcsIG1zZzogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICh0eXBlID09IFwiZXJyb3JcIikge1xyXG4gICAgICAgIHR5cGUgPSBcImRhbmdlclwiO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudG9hc3QoeyBjb2xvcjogdHlwZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgfSxcclxuICAgIGluZm86IChtc2c6IHN0cmluZykgPT4ge1xyXG4gICAgICB0aGlzLnRvYXN0KHsgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgfSxcclxuICAgIGVycm9yOiAobXNnOiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy50b2FzdCh7IGNvbG9yOiBcImRhbmdlclwiLCBtZXNzYWdlOiBtc2cgfSk7XHJcbiAgICB9LFxyXG4gIH07XHJcbiAgaW5pdChvcHRpb25zOiB7XHJcbiAgICBjb21wYW55Pzogc3RyaW5nO1xyXG4gICAgZ3VhcmRUeXBlPzogXCJwYWdlXCIgfCBcIm1vZGFsXCI7XHJcbiAgICBMb2dpblBhZ2U/OiBzdHJpbmc7XHJcbiAgICBtb2RhbFR5cGU/OiBcImZ1bGxzY3JlZW5cIiB8IFwic2hlZXRcIjtcclxuICAgIGFwcElkPzogc3RyaW5nO1xyXG4gIH0pIHtcclxuICAgIHRoaXMuY29tcGFueSA9IG9wdGlvbnMuY29tcGFueTtcclxuICAgIHRoaXMuZ3VhcmRUeXBlID0gb3B0aW9ucy5ndWFyZFR5cGU7XHJcbiAgICB0aGlzLm1vZGFsVHlwZSA9IG9wdGlvbnMubW9kYWxUeXBlIHx8IHRoaXMubW9kYWxUeXBlO1xyXG4gICAgdGhpcy5hcHBJZCA9IG9wdGlvbnMuYXBwSWQ7XHJcbiAgICB0aGlzLnd4anNzZGsuaW5pdENvZmluZyh0aGlzLmNvbXBhbnksIHRoaXMuYXBwSWQpO1xyXG4gICAgdGhpcy5zYXZlUGFyYW1zSW52aXRlKCk7XHJcbiAgfVxyXG4gIGNoZWNrTG9naW5Mb2NrKCkge1xyXG4gICAgbGV0IHVzZXIgPSBQYXJzZS5Vc2VyLmN1cnJlbnQoKTtcclxuICAgIGlmICh1c2VyPy5pZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNNb2RhbFNob3cgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzTG9nZ2VkSW4gPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBMb2dpblBhZ2UgPSBcIi9wY3VzZXIvbG9naW5cIjtcclxuICBhc3luYyBjaGVja0xvZ2luKFxyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgb3B0aW9ucz86IHtcclxuICAgICAgb25Mb2dpbjogRnVuY3Rpb247XHJcbiAgICB9LFxyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8g5qOA5rWLdG9rZW7lv6vmjbfnmbvlvZVcclxuICAgIGF3YWl0IHRoaXMuY2hlY2tBbmRMb2dpbldpdGhUb2tlbigpO1xyXG5cclxuICAgIC8vIOajgOa1i+W+ruS/oeeZu+W9lVxyXG4gICAgLy8gYWNjb3VudC5zZXJ2aWNlIGdldFVzZXJPcGVuaWRcclxuICAgIC8vIOazqOaEjyBnZXR3ZWNoYXQg6YC76L6R5pyJ6Zeu6aKY77yM5piv57uZ5b2T5YmN55m75b2V55So5oi36KGl5YWFd2VjaGF05L+h5oGv5ZKMb3Blbmlk55qE77yM5rKh5pyJ5paw55So5oi35rOo5YaMXHJcbiAgICBhd2FpdCB0aGlzLmF1dGhXZWNoYXQoKTtcclxuXHJcbiAgICAvLyDlsIZ1cmzorrDlvZXlnKjooqvlrojljavpobXliJfooajkuK3vvIzkvr/kuo7lkI7nu63mo4DmtYvlvLnnqpfplIHlrppcclxuICAgIGlmICh1cmwpIHtcclxuICAgICAgdGhpcy5ndWFyZE1hcFt1cmxdID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpoLmnpzlt7LnmbvlvZXvvIzpqozor4HkuLp0cnVl5peg6ZyA6ZSB5a6aIOi3s+WHuuivpeWHveaVsFxyXG4gICAgbGV0IGN1cnJlbnRVc2VyID0gUGFyc2UuVXNlci5jdXJyZW50KCk7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJjdXJyZW50VXNlclwiLCBjdXJyZW50VXNlcik7XHJcbiAgICBpZiAoY3VycmVudFVzZXIgJiYgY3VycmVudFVzZXIuaWQpIHtcclxuICAgICAgLy8gdGhpcy5zZXRDdXJyZW50VXNlckxvY2FsU3RvcmFnZShjdXJyZW50VXNlcilcclxuICAgICAgdGhpcy5zZXRBY2NvdW50KGN1cnJlbnRVc2VyKTtcclxuICAgICAgdGhpcy5pc0xvZ2dlZEluID0gdHJ1ZTtcclxuICAgICAgb3B0aW9ucz8ub25Mb2dpbj8uKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWmguaenOacqueZu+W9le+8jOWIpOaWrei/m+ihjOS4pOenjeWuiOWNq+aWueW8j1xyXG4gICAgaWYgKCF0aGlzLmd1YXJkVHlwZSB8fCB0aGlzLmd1YXJkVHlwZSA9PSBcInBhZ2VcIikge1xyXG4gICAgICAvLyDlrojljavmlrnlvI8x77ya6aG16Z2i6Lez6L2sXHJcbiAgICAgIC8vIOWQpuWImemHjeWumuWQkeWIsGxvZ2lu6aG16Z2iXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuYXV0aFNlcnZpY2UuaXNMb2dnZWRJbilcclxuICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVcmwgPSB1cmw7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLor7fnmbvlvZXvvJpcIix0aGlzLkxvZ2luUGFnZSlcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5Mb2dpblBhZ2VdKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ndWFyZFR5cGUgPT0gXCJtb2RhbFwiKSB7XHJcbiAgICAgIC8vIOWuiOWNq+aWueW8jzLvvJrlvLnnqpfplIHlrppcclxuICAgICAgLy8gY29uc29sZS5sb2coXCLop6blj5Eg5a6I5Y2r5pa55byPMu+8muW8ueeql+mUgeWumlwiKVxyXG4gICAgICB0aGlzLmlzTW9kYWxTaG93ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc0xvZ2dlZEluID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYXV0aFdlY2hhdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmKCF0aGlzLnd4anNzZGsuaXNXZWNoYXQgfHwgIXRoaXMuYXBwSWQgfHwgUGFyc2UuVXNlci5jdXJyZW50KCk/LmlkKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMuZ2V0Q29tcGFueUlkKCk7XHJcbiAgICAgIGxldCBjb2RlID0gdGhpcy53eGpzc2RrLmdldFF1ZXJ5U3RyaW5nQnlOYW1lKFwiY29kZVwiKTtcclxuICAgICAgbGV0IHBhdGhuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xyXG4gICAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgICB0aGlzLnd4anNzZGsuYXV0aFdlY2hhdChwYXRobmFtZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgUGFyc2UuQ2xvdWQucnVuKFwiYXV0aF93ZWNoYXRcIiwgeyBjb2RlOiBjb2RlLCBjOiBjaWQgfSlcclxuICAgICAgICAgIC50aGVuKChhdXRoRGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcImNvZGVcIik7XHJcbiAgICAgICAgICAgIGxldCBzZXNzaW9uVG9rZW4gPSBhdXRoRGF0YS50b2tlbjtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coc2Vzc2lvblRva2VuKTtcclxuICAgICAgICAgICAgaWYgKGF1dGhEYXRhLm9wZW5pZCkge1xyXG4gICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwib3BlbmlkXCIsIGF1dGhEYXRhLm9wZW5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKFBhcnNlLlVzZXIuY3VycmVudCgpPy5pZCkge1xyXG4gICAgICAgICAgICAgIC8vIOW9k+eUqOaIt+WtmOWcqOaXtuWAme+8jOWPquiuvue9rm9wZW5pZO+8jOS4jeebtOaOpeeZu+W9lVxyXG4gICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgUGFyc2UuVXNlci5iZWNvbWUoc2Vzc2lvblRva2VuKVxyXG4gICAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgICAgIGRhdGEuc2V0KFwiY29tcGFueVwiLCB7XHJcbiAgICAgICAgICAgICAgICAgIF9fdHlwZTogXCJQb2ludGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJDb21wYW55XCIsXHJcbiAgICAgICAgICAgICAgICAgIG9iamVjdElkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvbXBhbnlcIiksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGRhdGEuc2F2ZSgpO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJiZWNvbWXnmbvlvZXlpLHotKXvvJpcIiArIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJXZWNoYXTnmbvlvZXlpLHotKXvvJpcIiArIGVycik7XHJcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8g5qC55o2udG9rZW7lv6vmjbfnmbvlvZVcclxuICBhc3luYyBjaGVja0FuZExvZ2luV2l0aFRva2VuKCkge1xyXG4gICAgY29uc29sZS5sb2coXCJjaGVja0FuZExvZ2luV2l0aFRva2VuXCIpO1xyXG4gICAgLy8g6I635Y+W5b2T5YmNVVJM55qE5p+l6K+i5Y+C5pWwXHJcbiAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xyXG4gICAgY29uc3QgdG9rZW4gPSB1cmxQYXJhbXMuZ2V0KFwidG9rZW5cIik7XHJcblxyXG4gICAgaWYgKHRva2VuKSB7XHJcbiAgICAgIC8vIOWIoOmZpHRva2Vu5Y+C5pWw5bm25pu05pawVVJM77yI5LiN5Yi35paw6aG16Z2i77yJXHJcbiAgICAgIHVybFBhcmFtcy5kZWxldGUoXCJ0b2tlblwiKTtcclxuICAgICAgbGV0IG5ld1VybCA9XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICtcclxuICAgICAgICAodXJsUGFyYW1zLnRvU3RyaW5nKCkgPyBcIj9cIiArIHVybFBhcmFtcy50b1N0cmluZygpIDogXCJcIikgK1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xyXG4gICAgICBuZXdVcmwgPSBkZWNvZGVVUklDb21wb25lbnQobmV3VXJsKTtcclxuICAgICAgY29uc29sZS5sb2coXCJuZXdVcmxcIiwgbmV3VXJsKTtcclxuICAgICAgLy8g5L2/55SoaGlzdG9yeSBBUEnmm7TmlrBVUkxcclxuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCBcIlwiLCBuZXdVcmwpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sIFwiXCIsIG5ld1VybCk7XHJcbiAgICAgIH0sIDEwMDApO1xyXG4gICAgICAvLyDkvb/nlKh0b2tlbueZu+W9lVxyXG4gICAgICBsZXQgdXNlciA9IFBhcnNlLlVzZXIuY3VycmVudCgpO1xyXG4gICAgICBpZiAoIXVzZXI/LmlkKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHVzZXIgPSBhd2FpdCBQYXJzZS5Vc2VyLmJlY29tZSh0b2tlbik7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRBY2NvdW50KHVzZXIpIHtcclxuICAgIGlmICh0aGlzLmFjY291bnQ/LmlkKSByZXR1cm47XHJcbiAgICAvLyB0aGlzLmFjY291bnQgPSBhd2FpdCB0aGlzLmFjY1NlcnYuZ2V0VXNlckFjY291bnQodXNlcik7XHJcbiAgICBsZXQgY29tcGFueSA9XHJcbiAgICAgIHVzZXI/LmdldChcImNvbXBhbnlcIikgfHwge1xyXG4gICAgICAgIF9fdHlwZTogXCJQb2ludGVyXCIsXHJcbiAgICAgICAgY2xhc3NOYW1lOiBcIkNvbXBhbnlcIixcclxuICAgICAgICBvYmplY3RJZDogdGhpcy5nZXRDb21wYW55SWQoKSxcclxuICAgICAgfSB8fFxyXG4gICAgICBudWxsO1xyXG4gICAgbGV0IHF1ZXJ5ID0gbmV3IFBhcnNlLlF1ZXJ5KFwiQWNjb3VudFwiKTtcclxuICAgIHF1ZXJ5LmVxdWFsVG8oXCJ1c2VyXCIsIHVzZXIudG9Qb2ludGVyKCkpO1xyXG4gICAgbGV0IGFjY291bnQgPSBhd2FpdCBxdWVyeS5maXJzdCgpO1xyXG4gICAgaWYgKCFhY2NvdW50Py5pZCkge1xyXG4gICAgICBhY2NvdW50ID0gbmV3IFBhcnNlLk9iamVjdChcIkFjY291bnRcIik7XHJcbiAgICAgIGFjY291bnQuc2V0KHtcclxuICAgICAgICB1c2VyOiB1c2VyLnRvUG9pbnRlcigpLFxyXG4gICAgICAgIGNvbXBhbnk6IGNvbXBhbnksXHJcbiAgICAgIH0pO1xyXG4gICAgICBhY2NvdW50ID0gYXdhaXQgYWNjb3VudC5zYXZlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjY291bnQgPSBhY2NvdW50O1xyXG4gICAgcmV0dXJuIGFjY291bnQ7XHJcbiAgfVxyXG5cclxuICBsb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIFBhcnNlLlVzZXIubG9nSW4odXNlcm5hbWUsIHBhc3N3b3JkKVxyXG4gICAgICAgIC50aGVuKGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAvLyDmo4DmtYvpgoDor7fpgLvovpFcclxuICAgICAgICAgIHRoaXMuYmluZEludml0ZShkYXRhKTtcclxuXHJcbiAgICAgICAgICAvLyDmoLnmja7lvZPliY3nlKjmiLfvvIzorr7nva7luJDlpZfkv6Hmga9cclxuICAgICAgICAgIHRoaXMuc2V0Q3VycmVudFVzZXJMb2NhbFN0b3JhZ2UoZGF0YSk7XHJcblxyXG4gICAgICAgICAgLy8g5aaC5p6c5pivbW9kYWzlvLnnqpfnmbvlvZXliJnliLfmlrDlvZPliY3pobVcclxuICAgICAgICAgIGlmICh0aGlzLmd1YXJkVHlwZSA9PSBcIm1vZGFsXCIpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoUGFnZSgpO1xyXG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8g5aaC5p6c55u05o6l6L+bbG9naW7pobXpnaLvvIxyZWRpcmVjdFVybOS4unVuZGVmaW5lZCDlr7zoiKroh7PpppbpobVcclxuICAgICAgICAgIGxldCBxdWVyeUNvbSA9IG5ldyBQYXJzZS5RdWVyeShcIkNvbXBhbnlcIik7XHJcbiAgICAgICAgICBxdWVyeUNvbS5zZWxlY3QoXCJyb290UGFnZVwiKTtcclxuICAgICAgICAgIHF1ZXJ5Q29tLmVxdWFsVG8oXCJvYmplY3RJZFwiLCBkYXRhPy5nZXQoXCJjb21wYW55XCIpPy5pZCk7XHJcbiAgICAgICAgICBsZXQgY29tID0gYXdhaXQgcXVlcnlDb20uZmlyc3QoKTtcclxuICAgICAgICAgIGxldCByb290UGFnZSA9IGNvbT8uZ2V0KFwicm9vdFBhZ2VcIik7XHJcbiAgICAgICAgICB0aGlzLnJlZGlyZWN0VXJsID1cclxuICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFVybCB8fCByb290UGFnZSB8fCBcIi9wcm9qZWN0L2Rhc2hib2FyZFwiO1xyXG4gICAgICAgICAgbGV0IHVybCA9IHRoaXMucmVkaXJlY3RVcmw7XHJcbiAgICAgICAgICB1cmwgPSBkZWNvZGVVUklDb21wb25lbnQodXJsKTtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICByZWplY3QoeyBtZXNzYWdlOiBcIuaXoOatpOeUqOaIt+S/oeaBr++8jOivt+WFiOWcqOWwj+eoi+W6j+eZu+W9lVwiIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlZnJlc2hQYWdlKCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGxldCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cclxuICAgICAgLy8gbG9jYXRpb24ucmVsb2FkKCk7IC8vIOmhtemdouW8uuWItuWIt+aWsFxyXG4gICAgICAvLyByZXNvbHZlKHRydWUpXHJcbiAgICAgIGlmIChQYXJzZS5Vc2VyLmN1cnJlbnQoKT8uaWQpIHtcclxuICAgICAgICB0aGlzLmlzTW9kYWxTaG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE5H6Lev55Sx6YeN6L29XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXCIvXCIsIHsgc2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlIH0pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoY3VycmVudFVybCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8g55So5oi355m75b2V5ZCO77yM5pu05paw5biQ5aWX5L+h5oGv6Iez5pys5Zyw5a2Y5YKoXHJcbiAgc2V0Q3VycmVudFVzZXJMb2NhbFN0b3JhZ2UodXNlcjogRm1vZGVVc2VyKSB7XHJcbiAgICBpZiAodXNlci5nZXQoXCJjb21wYW55XCIpPy5pZCkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNvbXBhbnlcIiwgdXNlci5nZXQoXCJjb21wYW55XCIpPy5pZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2dvdXQodHlwZSwgdXJsKTogdm9pZCB7XHJcbiAgICBsZXQgY29tcGFueSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29tcGFueVwiKTtcclxuICAgIGxldCBXRUNIQVRfQVBQX0lEID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJXRUNIQVRfQVBQX0lEXCIpO1xyXG4gICAgbGV0IExPR09fVVJMID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJMT0dPX1VSTFwiKTtcclxuICAgIGxldCBOT1ZBX0FQSUdfU0VSVkVSID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJOT1ZBX0FQSUdfU0VSVkVSXCIpO1xyXG4gICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNvbXBhbnlcIiwgY29tcGFueSk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIldFQ0hBVF9BUFBfSURcIiwgV0VDSEFUX0FQUF9JRCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIkxPR09fVVJMXCIsIExPR09fVVJMKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiTk9WQV9BUElHX1NFUlZFUlwiLCBOT1ZBX0FQSUdfU0VSVkVSKTtcclxuXHJcbiAgICBQYXJzZS5Vc2VyLmxvZ091dCgpLnRoZW4oKHVzZXIpID0+IHt9KTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmwgfHwgXCIvcGN1c2VyL2xvZ2luXCJdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOagueaNruW4kOWll+WGhW1vYmlsZeWtl+auteeZu+W9lemAu+i+kVxyXG4gICAqL1xyXG4gIC8vIOaJi+acuuWPtyvlr4bnoIHnmbvlvZVcclxuICBhc3luYyBsb2dpbk1vYmlsZVBhc3N3b3JkKG1vYmlsZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBtc2dTZXJ2KSB7XHJcbiAgICBsZXQgdXNlcm5hbWUgPSBhd2FpdCB0aGlzLmdldE1vYmlsZVVzZXIobW9iaWxlKTtcclxuICAgIGlmICghdXNlcm5hbWUpIHtcclxuICAgICAgbXNnU2Vydi5jcmVhdGUoXCJlcnJvclwiLCBcIueUqOaIt+S4jeWtmOWcqO+8jOivt+WwneivleWFtuS7lueZu+W9leaWueW8j1wiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5sb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpXHJcbiAgICAgICAgLnRoZW4oYXN5bmMgKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNNb2RhbFNob3cgPSBmYWxzZTtcclxuICAgICAgICAgIHJlc29sdmUoZGF0YSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICAgIG1zZ1NlcnYuY3JlYXRlKFwiZXJyb3JcIiwgXCLplJnor6/nmoTnlKjmiLflkI3miJblr4bnoIFcIik7XHJcbiAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBzaWduTW9iaWxlUGFzc3dvcmQobW9iaWxlOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgbGV0IHNpZ25lZFVzZXIgPSBhd2FpdCB0aGlzLnNpZ25VcEFuZFVwZGF0ZShtb2JpbGUsIHBhc3N3b3JkKTtcclxuICAgICAgcmVzb2x2ZShzaWduZWRVc2VyKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyDmoLnmja7miYvmnLrlj7fojrflvpfluJDlpZflhoXnlKjmiLflkI1cclxuICBtb2JpbGVVc2VyTWFwID0ge307XHJcbiAgYXN5bmMgZ2V0TW9iaWxlVXNlcihtb2JpbGU6IHN0cmluZykge1xyXG4gICAgbGV0IGNvbXBhbnkgPSB0aGlzLmdldENvbXBhbnlJZCgpO1xyXG4gICAgbGV0IHVzZXJNSUQgPSBjb21wYW55ICsgbW9iaWxlO1xyXG4gICAgaWYgKHRoaXMubW9iaWxlVXNlck1hcFt1c2VyTUlEXSkgcmV0dXJuIHRoaXMubW9iaWxlVXNlck1hcFt1c2VyTUlEXTtcclxuICAgIGxldCByZXN1bHQ6IGFueSA9IGF3YWl0IHRoaXMubm92YUNsb3VkLmFwaShcIi9hdXRoL2dldHVzZXJuYW1lXCIsIHtcclxuICAgICAgY29tcGFueTogY29tcGFueSxcclxuICAgICAgbW9iaWxlOiBtb2JpbGUsXHJcbiAgICB9KTtcclxuICAgIGlmIChyZXN1bHQ/LnVzZXJuYW1lKSB7XHJcbiAgICAgIHRoaXMubW9iaWxlVXNlck1hcFt1c2VyTUlEXSA9IHJlc3VsdD8udXNlcm5hbWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5tb2JpbGVVc2VyTWFwW3VzZXJNSURdO1xyXG4gIH1cclxuICBlbmFibGVkTG9jYWxDb2RlOiBib29sZWFuID0gZmFsc2U7IC8vIOW8gOWQr+mqjOivgeeggVxyXG5cclxuICBzaWduVXBBbmRVcGRhdGUobW9iaWxlLCBwYXNzd29yZD86IHN0cmluZyk6IFByb21pc2U8Rm1vZGVPYmplY3QgfCB1bmRlZmluZWQ+IHtcclxuICAgIHBhc3N3b3JkID0gcGFzc3dvcmQgfHwgbW9iaWxlICsgXCJwd2Q2NjZcIjtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBQYXJzZS5Vc2VyLnNpZ25VcCh0aGlzLmdldENvbXBhbnlJZCgpICsgXCItXCIgKyBtb2JpbGUsIHBhc3N3b3JkKVxyXG4gICAgICAgIC50aGVuKGFzeW5jIChzaWduZWRVc2VyKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2lnbmVkVXNlci5pZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhzaWduZWRVc2VyKTtcclxuICAgICAgICAgICAgc2lnbmVkVXNlci5zZXQoXCJjb21wYW55XCIsIHtcclxuICAgICAgICAgICAgICBfX3R5cGU6IFwiUG9pbnRlclwiLFxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJDb21wYW55XCIsXHJcbiAgICAgICAgICAgICAgb2JqZWN0SWQ6IHRoaXMuZ2V0Q29tcGFueUlkKCksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBzaWduZWRVc2VyLnNldChcIm1vYmlsZVwiLCBtb2JpbGUpO1xyXG4gICAgICAgICAgICBzaWduZWRVc2VyLnNldChcInR5cGVcIiwgXCJ1c2VyXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmJpbmRJbnZpdGUoc2lnbmVkVXNlcik7XHJcbiAgICAgICAgICAgIHNpZ25lZFVzZXIgPSBhd2FpdCBzaWduZWRVc2VyLnNhdmUoKTtcclxuICAgICAgICAgICAgcmVzb2x2ZShzaWduZWRVc2VyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHJlc29sdmUodW5kZWZpbmVkKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTG9naW5TdGF0ZSgpIHtcclxuICAgIGxldCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMobG9jYXRpb24uc2VhcmNoKTtcclxuICAgIHF1ZXJ5UGFyYW1zLnNldChcInRcIiwgU3RyaW5nKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSk7XHJcblxyXG4gICAgLy8g6I635Y+W5Y676ZmkYmFzZUhyZWblkI7nmoRwYXRobmFtZVxyXG4gICAgbGV0IHBhdGhOYW1lV2l0aG91dEJhc2VIcmVmID1cclxuICAgICAgXCIvXCIgK1xyXG4gICAgICAobG9jYXRpb24ub3JpZ2luICsgbG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2VBbGwoZG9jdW1lbnQuYmFzZVVSSSwgXCJcIik7XHJcblxyXG4gICAgbGV0IHVybCA9IHBhdGhOYW1lV2l0aG91dEJhc2VIcmVmICsgYD8ke3F1ZXJ5UGFyYW1zLnRvU3RyaW5nKCl9YDtcclxuICAgIGNvbnNvbGUubG9nKHVybCk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRNb2JpbGVDb2RlVG9rZW4obW9iaWxlLCBjb2RlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGxldCBob3N0ID1cclxuICAgICAgICAoUGFyc2UgYXMgYW55KS5zZXJ2ZXJVUkw/LnNwbGl0KFwicGFyc2VcIik/LlswXSB8fFxyXG4gICAgICAgIFwiaHR0cHM6Ly9zZXJ2ZXIuZm1vZGUuY24vXCI7XHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5nZXQoXHJcbiAgICAgICAgICBob3N0ICtcclxuICAgICAgICAgICAgYGFwaS9hdXRoL21vYmlsZT9jb21wYW55PSR7dGhpcy5jb21wYW55fSZtb2JpbGU9JHttb2JpbGV9JmNvZGU9JHtjb2RlfWAsXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgIHJlc29sdmUocmVzKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qIOmqjOivgeeggeeZu+W9lSAqL1xyXG4gIGFzeW5jIGxvZ2luQ29kZShcclxuICAgIG1vYmlsZTogc3RyaW5nLFxyXG4gICAgY29kZTogc3RyaW5nLFxyXG4gICAgbXNnU2Vydj8sXHJcbiAgICBjbG9zZUNhbGxCYWNrPzogYW55LFxyXG4gICk6IFByb21pc2U8Qm9vbGVhbj4ge1xyXG4gICAgaWYgKCFjb2RlKSB7XHJcbiAgICAgIHRoaXMudG9hc3QoeyBjb2xvcjogXCJwcmltYXJ5XCIsIG1lc3NhZ2U6IFwi6K+35aGr5YaZ5pyJ5pWI6aqM6K+B56CBXCIgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgcmVzID0gYXdhaXQgdGhpcy5nZXRNb2JpbGVDb2RlVG9rZW4obW9iaWxlLCBjb2RlKTtcclxuICAgICAgaWYgKHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICBjb25zb2xlLmxvZygyMDAsIHJlcyk7XHJcblxyXG4gICAgICAgIGxldCBsb2dVc2VyID0gYXdhaXQgUGFyc2UuVXNlci5iZWNvbWUocmVzLmRhdGEudG9rZW4pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGxvZ1VzZXIsIGxvZ1VzZXI/LmlkKTtcclxuICAgICAgICBpZiAobG9nVXNlcj8uaWQpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGxvZ1VzZXIsIGxvZ1VzZXI/LmlkKTtcclxuICAgICAgICAgIC8vIOajgOa1i+mCgOivt+mAu+i+kVxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5iaW5kSW52aXRlKGxvZ1VzZXIpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyYikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiYmluZCBlcnIgYlwiLCBlcnJiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcImVycm9yMVwiLCBlKTtcclxuICAgICAgaWYgKGU/LmVycm9yPy5tZXNzPy5pbmRleE9mKFwi55So5oi35LiN5a2Y5ZyoXCIpID4gLTEpIHtcclxuICAgICAgICAvLyDoh6rliqjms6jlhoxcclxuICAgICAgICBsZXQgc2lnbmVkVXNlciA9IGF3YWl0IHRoaXMuc2lnblVwQW5kVXBkYXRlKG1vYmlsZSk7XHJcbiAgICAgICAgaWYgKHNpZ25lZFVzZXI/LmlkKSB7XHJcbiAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2dpbkNvZGUobW9iaWxlLCBjb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdCh7IG1lc3NhZ2U6IGU/LmVycm9yPy5tZXNzIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBzYXZlUGFyYW1zSW52aXRlKCkge1xyXG4gICAgbGV0IHNlYXJjaFBhcmFtcyA9IHRoaXMubm92YUNsb3VkLnNlYXJjaFBhcnNlKCk7XHJcbiAgICBjb25zb2xlLmxvZyhcInNhdmVQYXJhbXNJbnZpdGVcIiwgc2VhcmNoUGFyYW1zKTtcclxuICAgIGxldCBpbnZpdGUgPSBzZWFyY2hQYXJhbXM/LmdldChcImludml0ZVwiKTtcclxuICAgIGNvbnNvbGUubG9nKGludml0ZSk7XHJcbiAgICBpZiAoaW52aXRlKSBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImludml0ZVwiLCBpbnZpdGUpO1xyXG4gIH1cclxuICBhc3luYyBiaW5kSW52aXRlKGN1cnJlbnQ/OiBhbnkpIHtcclxuICAgIGN1cnJlbnQgPSBjdXJyZW50IHx8IFBhcnNlLlVzZXIuY3VycmVudCgpO1xyXG4gICAgaWYgKCFjdXJyZW50KSByZXR1cm47IC8vIOW9k+WJjeeUqOaIt+W/hemhu+WtmOWcqFxyXG4gICAgaWYgKGN1cnJlbnQ/LmdldChcImludml0ZVwiKT8uaWQpIHJldHVybjsgLy8g5b2T5YmN55So5oi35peg6YKA6K+35YWz57O7XHJcblxyXG4gICAgbGV0IGludml0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaW52aXRlXCIpO1xyXG4gICAgaWYgKCFpbnZpdGUpIHJldHVybjsgLy8g5pys5Zyw5a2Y5YKo6YKA6K+356CB5b+F6aG75a2Y5ZyoXHJcbiAgICBpZiAoY3VycmVudD8uaWQgPT0gaW52aXRlKSByZXR1cm47IC8vIOS4jeiDvemCgOivt+iHquW3sVxyXG4gICAgbGV0IHJlcztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICByZXMgPSBhd2FpdCB0aGlzLm5vdmFDbG91ZC5hcGkoXCIvYXV0aC9pbnZpdGVcIiwge1xyXG4gICAgICAgIGN1cnJlbnQ6IGN1cnJlbnQ/LmlkLFxyXG4gICAgICAgIGludml0ZTogaW52aXRlLFxyXG4gICAgICAgIHR5cGU6IFwiY29kZVwiLFxyXG4gICAgICB9KTtcclxuICAgICAgY29uc29sZS5sb2coXCJiaW5kXCIsIHJlcyk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImJpbmQgZXJyXCIsIGVycik7XHJcbiAgICB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG59XHJcbiJdfQ==