Sanakey
2021-07-09 3fc241d02fb8b671289de3d9d80bf848349c04d4
提交 | 用户 | age
282d69 1 "use strict";
S 2 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3     return new (P || (P = Promise))(function (resolve, reject) {
4         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6         function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7         step((generator = generator.apply(thisArg, _arguments || [])).next());
8     });
9 };
10 var __generator = (this && this.__generator) || function (thisArg, body) {
11     var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12     return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13     function verb(n) { return function (v) { return step([n, v]); }; }
14     function step(op) {
15         if (f) throw new TypeError("Generator is already executing.");
16         while (_) try {
17             if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18             if (y = 0, t) op = [op[0] & 2, t.value];
19             switch (op[0]) {
20                 case 0: case 1: t = op; break;
21                 case 4: _.label++; return { value: op[1], done: false };
22                 case 5: _.label++; y = op[1]; op = [0]; continue;
23                 case 7: op = _.ops.pop(); _.trys.pop(); continue;
24                 default:
25                     if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26                     if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27                     if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28                     if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29                     if (t[2]) _.ops.pop();
30                     _.trys.pop(); continue;
31             }
32             op = body.call(thisArg, _);
33         } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34         if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35     }
36 };
37 Component({
38     options: {
39         addGlobalClass: true,
40         multipleSlots: true
41     },
42     properties: {
43         isMustAuthorizePhone: {
44             type: Boolean,
45             value: true
46         },
47         isMustAuthorizeAvatar: {
48             type: Boolean,
49             value: true
50         },
3fc241 51         isRefreshAuthorizeInfo: {
S 52             type: Boolean,
53             value: false
54         },
282d69 55     },
S 56     data: {
57         hasUserInfo: false,
58         hasPhone: false,
59         isShowMask: true
60     },
61     lifetimes: {
62         ready: function () {
63         }
64     },
65     pageLifetimes: {
66         show: function () {
67         },
68         hide: function () {
69         }
70     },
71     methods: {
72         getUserInfo: function (e) {
73             return __awaiter(this, void 0, void 0, function () {
3fc241 74                 var _a, isMustAuthorizePhone, isMustAuthorizeAvatar, isRefreshAuthorizeInfo, loginData;
282d69 75                 return __generator(this, function (_b) {
S 76                     switch (_b.label) {
77                         case 0:
78                             console.log(e);
3fc241 79                             _a = this.data, isMustAuthorizePhone = _a.isMustAuthorizePhone, isMustAuthorizeAvatar = _a.isMustAuthorizeAvatar, isRefreshAuthorizeInfo = _a.isRefreshAuthorizeInfo;
282d69 80                             loginData = wx.globalData.loginData;
S 81                             console.log('点击时loginData', loginData);
3fc241 82                             if (!isRefreshAuthorizeInfo) return [3, 2];
S 83                             return [4, this.getUserProfile()];
84                         case 1:
85                             _b.sent();
86                             console.log('刷新授权头像后loginData', wx.globalData.loginData);
87                             this.completeAuthorize();
88                             _b.label = 2;
89                         case 2:
7a3e75 90                             if (loginData.avatarUrl && loginData.telephone) {
282d69 91                                 this.completeAuthorize();
S 92                             }
93                             if (!isMustAuthorizeAvatar && !isMustAuthorizeAvatar) {
94                                 this.completeAuthorize();
95                             }
96                             if (loginData.avatarUrl && !isMustAuthorizeAvatar) {
97                                 this.completeAuthorize();
98                             }
3fc241 99                             if (!(!loginData.avatarUrl && isMustAuthorizeAvatar)) return [3, 4];
282d69 100                             return [4, this.getUserProfile()];
3fc241 101                         case 3:
282d69 102                             _b.sent();
S 103                             console.log('授权头像后loginData', wx.globalData.loginData);
104                             if (!wx.globalData.loginData.avatarUrl)
105                                 return [2];
7a3e75 106                             if (loginData.telephone || !isMustAuthorizePhone) {
282d69 107                                 this.completeAuthorize();
S 108                             }
3fc241 109                             _b.label = 4;
S 110                         case 4:
7a3e75 111                             if (!loginData.telephone && isMustAuthorizePhone) {
282d69 112                                 this.showGetPhoneDialog();
S 113                             }
114                             return [2];
115                     }
116                 });
117             });
118         },
119         getUserProfile: function () {
120             return __awaiter(this, void 0, void 0, function () {
121                 var _this = this;
122                 return __generator(this, function (_a) {
123                     switch (_a.label) {
124                         case 0:
125                             console.log('>>>>>>>>准备获取头像');
126                             return [4, wx.pro.getUserProfile({
127                                     desc: '获取头像完善会员资料',
128                                 }).then(function (res) { return __awaiter(_this, void 0, void 0, function () {
129                                     return __generator(this, function (_a) {
130                                         switch (_a.label) {
131                                             case 0:
132                                                 console.log(res);
133                                                 return [4, this.postUserInfo(res)];
134                                             case 1:
135                                                 if (!(_a.sent()))
136                                                     return [2];
137                                                 this.setData({
138                                                     userInfo: res.userInfo,
139                                                 });
140                                                 return [4, wx.$commonRequest.getUserInfo()];
141                                             case 2:
142                                                 if (!(_a.sent()))
143                                                     return [2];
144                                                 console.log('----获取头像成功!----');
3fc241 145                                                 wx.showToast({ title: '授权成功' });
282d69 146                                                 return [2];
S 147                                         }
148                                     });
149                                 }); }).catch(function (err) {
150                                     console.log(err, '----获取头像失败!----');
3fc241 151                                     wx.showToast({ title: '授权失败', icon: 'none' });
282d69 152                                 })];
S 153                         case 1:
154                             _a.sent();
155                             console.log('>>>>>>获取授权头像步骤完成');
156                             return [2];
157                     }
158                 });
159             });
160         },
161         getPhoneNumber: function (e) {
162             return __awaiter(this, void 0, void 0, function () {
163                 return __generator(this, function (_a) {
164                     switch (_a.label) {
165                         case 0:
166                             console.log('getPhoneNumber', e);
167                             console.log('>>>>>>>>准备获取电话');
168                             if (!(e.detail.errMsg == 'getPhoneNumber:ok')) return [3, 3];
169                             return [4, this.postPhoneNumber(e)];
170                         case 1:
171                             if (!(_a.sent()))
172                                 return [2];
173                             return [4, wx.$commonRequest.getUserInfo()];
174                         case 2:
175                             if (!(_a.sent()))
176                                 return [2];
177                             this.completeAuthorize();
178                             console.log('----获取电话成功!----');
179                             return [3, 4];
180                         case 3:
181                             console.log('取消授权');
182                             console.log('----获取电话失败!----');
183                             _a.label = 4;
184                         case 4: return [2];
185                     }
186                 });
187             });
188         },
189         postUserInfo: function (res) {
190             return __awaiter(this, void 0, void 0, function () {
191                 var _a, error, result;
192                 return __generator(this, function (_b) {
193                     switch (_b.label) {
194                         case 0: return [4, wx.$utils.to(wx.$http.request({
195                                 url: "/wx/miniapp/user/panicBuyingInfo.do",
196                                 data: {
197                                     signature: res.signature,
198                                     rawData: res.rawData,
199                                     encryptedData: res.encryptedData,
200                                     iv: res.iv
201                                 }
202                             }))];
203                         case 1:
204                             _a = _b.sent(), error = _a[0], result = _a[1];
205                             if (error) {
206                                 console.log(error);
207                                 return [2, false];
208                             }
209                             console.log(result);
210                             return [2, true];
211                     }
212                 });
213             });
214         },
215         postPhoneNumber: function (e) {
216             return __awaiter(this, void 0, void 0, function () {
217                 var _a, error, result;
218                 return __generator(this, function (_b) {
219                     switch (_b.label) {
220                         case 0: return [4, wx.$utils.to(wx.$http.request({
221                                 url: "/shopping/account.do?m=telRegByAutoReg",
222                                 data: {
223                                     ReferralsCode: '',
224                                     ReferralsName: '',
225                                     encryptedData: e.detail.encryptedData,
226                                     iv: e.detail.iv,
227                                 }
228                             }))];
229                         case 1:
230                             _a = _b.sent(), error = _a[0], result = _a[1];
231                             if (error) {
232                                 console.log(error);
233                                 return [2, false];
234                             }
235                             console.log(result);
236                             return [2, true];
237                     }
238                 });
239             });
240         },
241         showGetPhoneDialog: function () {
242             this.setData({
243                 isShowPhoneDialog: true
244             });
245         },
246         hideGetPhoneDialog: function () {
247             this.setData({
248                 isShowPhoneDialog: false
249             });
250         },
251         completeAuthorize: function () {
252             console.log('--完成所有授权--');
253             this.triggerEvent('authorize', {
254                 isAuthorize: true
255             });
256         },
257         onDialogClose: function () {
258         },
259     }
260 });
3fc241 261 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxTQUFTLENBQUM7SUFJUixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUMsSUFBSTtRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUNWLG9CQUFvQixFQUFDO1lBQ25CLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELHFCQUFxQixFQUFDO1lBQ3BCLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELHNCQUFzQixFQUFDO1lBQ3JCLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLEtBQUs7U0FDYjtLQUNGO0lBS0QsSUFBSSxFQUFFO1FBRUosV0FBVyxFQUFDLEtBQUs7UUFDakIsUUFBUSxFQUFDLEtBQUs7UUFDZCxVQUFVLEVBQUMsSUFBSTtLQUNoQjtJQUNELFNBQVMsRUFBQztRQUNSLEtBQUs7UUFVTCxDQUFDO0tBQ0Y7SUFDRCxhQUFhLEVBQUU7UUFDYixJQUFJLEVBQUU7UUFHTixDQUFDO1FBQ0QsSUFBSTtRQUVKLENBQUM7S0FDRjtJQUlELE9BQU8sRUFBRTtRQUNELFdBQVcsWUFBQyxDQUFLOzs7Ozs7NEJBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ1gsS0FBc0UsSUFBSSxDQUFDLElBQUksRUFBOUUsb0JBQW9CLDBCQUFBLEVBQUMscUJBQXFCLDJCQUFBLEVBQUMsc0JBQXNCLDRCQUFBLENBQWM7NEJBQ2hGLFNBQVMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQzs0QkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUMsU0FBUyxDQUFDLENBQUM7aUNBU25DLHNCQUFzQixFQUF0QixjQUFzQjs0QkFD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RixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy8gY29uc3QgYXBwID0gZ2V0QXBwPElBcHBPcHRpb24+KCk7XHJcbkNvbXBvbmVudCh7XHJcbiAgLyoqXHJcbiAgICog57uE5Lu255qE5bGe5oCn5YiX6KGoXHJcbiAgICovXHJcbiAgb3B0aW9uczoge1xyXG4gICAgYWRkR2xvYmFsQ2xhc3M6dHJ1ZSxcclxuICAgIG11bHRpcGxlU2xvdHM6IHRydWUgLy8g5Zyo57uE5Lu25a6a5LmJ5pe255qE6YCJ6aG55Lit5ZCv55So5aSac2xvdOaUr+aMgVxyXG4gIH0sXHJcbiAgcHJvcGVydGllczoge1xyXG4gICAgaXNNdXN0QXV0aG9yaXplUGhvbmU6e1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICB2YWx1ZTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGlzTXVzdEF1dGhvcml6ZUF2YXRhcjp7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIHZhbHVlOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaXNSZWZyZXNoQXV0aG9yaXplSW5mbzp7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIHZhbHVlOiBmYWxzZVxyXG4gICAgfSxcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiDnu4Tku7bnmoTliJ3lp4vmlbDmja5cclxuICAgKi9cclxuICBkYXRhOiB7XHJcbiAgICAvLyBsb2NhdGlvbjogdW5kZWZpbmVkLFxyXG4gICAgaGFzVXNlckluZm86ZmFsc2UsXHJcbiAgICBoYXNQaG9uZTpmYWxzZSxcclxuICAgIGlzU2hvd01hc2s6dHJ1ZVxyXG4gIH0sXHJcbiAgbGlmZXRpbWVzOntcclxuICAgIHJlYWR5KCl7XHJcbiAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyAgIC8vIHd4Lmdsb2JhbERhdGEubG9naW5EYXRhLmF2YXRhclVybCA9ICcnO1xyXG4gICAgICAvLyAgIC8vIHd4Lmdsb2JhbERhdGEubG9naW5EYXRhLmNsdGNvZGUgPSAnJztcclxuICAgICAgLy8gICB3eC5nbG9iYWxEYXRhLmxvZ2luRGF0YSA9IHt9XHJcbiAgICAgIC8vICAgICAvLyBjbHRjb2RlOjExMSxcclxuICAgICAgLy8gICAgIC8vIGF2YXRhclVybDonMzMzJ1xyXG4gICAgICAvL1xyXG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCc156eS5ZCO77yM5pu05paw5LqGbG9naW5EYXRhJyk7XHJcbiAgICAgIC8vIH0sNTAwMClcclxuICAgIH1cclxuICB9LFxyXG4gIHBhZ2VMaWZldGltZXM6IHtcclxuICAgIHNob3c6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAvLyDpobXpnaLooqvlsZXnpLpcclxuXHJcbiAgICB9LFxyXG4gICAgaGlkZSgpIHtcclxuXHJcbiAgICB9XHJcbiAgfSxcclxuICAvKipcclxuICAgKiDnu4Tku7bnmoTmlrnms5XliJfooahcclxuICAgKi9cclxuICBtZXRob2RzOiB7XHJcbiAgICBhc3luYyBnZXRVc2VySW5mbyhlOmFueSl7XHJcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICBsZXQge2lzTXVzdEF1dGhvcml6ZVBob25lLGlzTXVzdEF1dGhvcml6ZUF2YXRhcixpc1JlZnJlc2hBdXRob3JpemVJbmZvfSA9IHRoaXMuZGF0YTtcclxuICAgICAgbGV0IGxvZ2luRGF0YSA9IHd4Lmdsb2JhbERhdGEubG9naW5EYXRhO1xyXG4gICAgICBjb25zb2xlLmxvZygn54K55Ye75pe2bG9naW5EYXRhJyxsb2dpbkRhdGEpO1xyXG4gICAgICAvLyBpZiAobG9naW5EYXRhLmF2YXRhclVybCkge1xyXG4gICAgICAvLyAgIHRoaXMuc2V0RGF0YSh7aGFzVXNlckluZm86dHJ1ZX0pXHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gaWYgKGxvZ2luRGF0YS5jbHRjb2RlKSB7XHJcbiAgICAgIC8vICAgdGhpcy5zZXREYXRhKHtoYXNQaG9uZTp0cnVlfSlcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgLy8g5Yi35paw5aS05YOP5pi156ewXHJcbiAgICAgIGlmKGlzUmVmcmVzaEF1dGhvcml6ZUluZm8pe1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0VXNlclByb2ZpbGUoKTtcclxuICAgICAgICBjb25zb2xlLmxvZygn5Yi35paw5o6I5p2D5aS05YOP5ZCObG9naW5EYXRhJyx3eC5nbG9iYWxEYXRhLmxvZ2luRGF0YSk7XHJcbiAgICAgICAgdGhpcy5jb21wbGV0ZUF1dGhvcml6ZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL+W3suaOiOadg+WktOWDj++8jOW3suaOiOadg+eUteivnVxyXG4gICAgICBpZiAobG9naW5EYXRhLmF2YXRhclVybCYmbG9naW5EYXRhLnRlbGVwaG9uZSkge1xyXG4gICAgICAgIHRoaXMuY29tcGxldGVBdXRob3JpemUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g55S16K+d5LiO5aS05YOP6YO95LiN6ZyA6KaB5o6I5p2DXHJcbiAgICAgIGlmICghaXNNdXN0QXV0aG9yaXplQXZhdGFyJiYhaXNNdXN0QXV0aG9yaXplQXZhdGFyKSB7XHJcbiAgICAgICAgdGhpcy5jb21wbGV0ZUF1dGhvcml6ZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL+W3suaOiOadg+WktOWDj++8jOS9huS4jemcgOimgeaOiOadg+eUteivnVxyXG4gICAgICBpZiAobG9naW5EYXRhLmF2YXRhclVybCYmIWlzTXVzdEF1dGhvcml6ZUF2YXRhcikge1xyXG4gICAgICAgIHRoaXMuY29tcGxldGVBdXRob3JpemUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gbGV0IHtoYXNVc2VySW5mbyxoYXNQaG9uZX0gPSB0aGlzLmRhdGE7XHJcbiAgICAgICAgLy8g5pyq5o6I5p2D5aS05YOP77yM5LiU5b+F6aG75o6I5p2D5aS05YOPXHJcbiAgICAgIGlmICghbG9naW5EYXRhLmF2YXRhclVybCYmaXNNdXN0QXV0aG9yaXplQXZhdGFyKXtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldFVzZXJQcm9maWxlKCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+aOiOadg+WktOWDj+WQjmxvZ2luRGF0YScsd3guZ2xvYmFsRGF0YS5sb2dpbkRhdGEpO1xyXG4gICAgICAgIGlmICghd3guZ2xvYmFsRGF0YS5sb2dpbkRhdGEuYXZhdGFyVXJsKSByZXR1cm47XHJcbiAgICAgICAgaWYgKGxvZ2luRGF0YS50ZWxlcGhvbmV8fCFpc011c3RBdXRob3JpemVQaG9uZSl7XHJcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlQXV0aG9yaXplKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDmnKrmjojmnYPnlLXor53vvIzkuJTlv4XpobvmjojmnYPnlLXor51cclxuICAgICAgaWYgKCFsb2dpbkRhdGEudGVsZXBob25lJiZpc011c3RBdXRob3JpemVQaG9uZSl7XHJcbiAgICAgICAgLy8g5o6I5p2D55S16K+dXHJcbiAgICAgICAgdGhpcy5zaG93R2V0UGhvbmVEaWFsb2coKTtcclxuICAgICAgICAvLyBpZiAoIWxvZ2luRGF0YS5jbHRjb2RlKSByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYXN5bmMgZ2V0VXNlclByb2ZpbGUoKXtcclxuICAgICAgLy8g5o6o6I2Q5L2/55Sod3guZ2V0VXNlclByb2ZpbGXojrflj5bnlKjmiLfkv6Hmga/vvIzlvIDlj5HogIXmr4/mrKHpgJrov4for6XmjqXlj6Pojrflj5bnlKjmiLfkuKrkurrkv6Hmga/lnYfpnIDnlKjmiLfnoa7orqRcclxuICAgICAgLy8g5byA5Y+R6ICF5aal5ZaE5L+d566h55So5oi35b+r6YCf5aGr5YaZ55qE5aS05YOP5pi156ew77yM6YG/5YWN6YeN5aSN5by556qXXHJcbiAgICAgIGNvbnNvbGUubG9nKCc+Pj4+Pj4+PuWHhuWkh+iOt+WPluWktOWDjycpO1xyXG4gICAgICBhd2FpdCB3eC5wcm8uZ2V0VXNlclByb2ZpbGUoe1xyXG4gICAgICAgIGRlc2M6ICfojrflj5blpLTlg4/lrozlloTkvJrlkZjotYTmlpknLCAvLyDlo7DmmI7ojrflj5bnlKjmiLfkuKrkurrkv6Hmga/lkI7nmoTnlKjpgJTvvIzlkI7nu63kvJrlsZXnpLrlnKjlvLnnqpfkuK3vvIzor7fosKjmhY7loavlhplcclxuICAgICAgfSkudGhlbihhc3luYyhyZXM6YW55KT0+e1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgaWYgKCFhd2FpdCB0aGlzLnBvc3RVc2VySW5mbyhyZXMpKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIHVzZXJJbmZvOiByZXMudXNlckluZm8sXHJcbiAgICAgICAgICAvLyBoYXNVc2VySW5mbzp0cnVlXHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAoIWF3YWl0IHd4LiRjb21tb25SZXF1ZXN0LmdldFVzZXJJbmZvKCkpIHJldHVybjtcclxuICAgICAgICBjb25zb2xlLmxvZygnLS0tLeiOt+WPluWktOWDj+aIkOWKn++8gS0tLS0nKTtcclxuICAgICAgICB3eC5zaG93VG9hc3Qoe3RpdGxlOiAn5o6I5p2D5oiQ5YqfJ30pXHJcbiAgICAgIH0pLmNhdGNoKChlcnI6YW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyLCctLS0t6I635Y+W5aS05YOP5aSx6LSl77yBLS0tLScpO1xyXG4gICAgICAgIHd4LnNob3dUb2FzdCh7dGl0bGU6ICfmjojmnYPlpLHotKUnLGljb246J25vbmUnfSlcclxuICAgICAgICAvLyB0aGlzLnNldERhdGEoe2hhc1VzZXJJbmZvOmZhbHNlfSlcclxuICAgICAgfSlcclxuICAgICAgY29uc29sZS5sb2coJz4+Pj4+PuiOt+WPluaOiOadg+WktOWDj+atpemqpOWujOaIkCcpO1xyXG4gICAgfSxcclxuXHJcblxyXG5cclxuICAgIGFzeW5jIGdldFBob25lTnVtYmVyKGUpe1xyXG4gICAgICBjb25zb2xlLmxvZygnZ2V0UGhvbmVOdW1iZXInLCBlKTtcclxuICAgICAgY29uc29sZS5sb2coJz4+Pj4+Pj4+5YeG5aSH6I635Y+W55S16K+dJyk7XHJcbiAgICAgIGlmIChlLmRldGFpbC5lcnJNc2cgPT0gJ2dldFBob25lTnVtYmVyOm9rJykge1xyXG4gICAgICAgIGlmICghYXdhaXQgdGhpcy5wb3N0UGhvbmVOdW1iZXIoZSkpIHJldHVybjtcclxuICAgICAgICBpZiAoIWF3YWl0IHd4LiRjb21tb25SZXF1ZXN0LmdldFVzZXJJbmZvKCkpIHJldHVybjtcclxuICAgICAgICAvLyB0aGlzLnNldERhdGEoe2hhc1Bob25lOnRydWV9KTtcclxuICAgICAgICB0aGlzLmNvbXBsZXRlQXV0aG9yaXplKCk7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCctLS0t6I635Y+W55S16K+d5oiQ5Yqf77yBLS0tLScpO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+WPlua2iOaOiOadgycpO1xyXG4gICAgICAgIC8vIHRoaXMuc2hvd0dldFBob25lRGlhbG9nKCk7XHJcbiAgICAgICAgLy8gdGhpcy5zZXREYXRhKHtoYXNQaG9uZTpmYWxzZX0pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCctLS0t6I635Y+W55S16K+d5aSx6LSl77yBLS0tLScpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzeW5jIHBvc3RVc2VySW5mbyhyZXM6YW55KXtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3d4L21pbmlhcHAvdXNlci9wYW5pY0J1eWluZ0luZm8uZG9gLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIHNpZ25hdHVyZTogcmVzLnNpZ25hdHVyZSxcclxuICAgICAgICAgICAgcmF3RGF0YTogcmVzLnJhd0RhdGEsXHJcbiAgICAgICAgICAgIGVuY3J5cHRlZERhdGE6IHJlcy5lbmNyeXB0ZWREYXRhLFxyXG4gICAgICAgICAgICBpdjogcmVzLml2XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICBpZiAoZXJyb3Ipe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGFzeW5jIHBvc3RQaG9uZU51bWJlcihlKXtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3Nob3BwaW5nL2FjY291bnQuZG8/bT10ZWxSZWdCeUF1dG9SZWdgLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIFJlZmVycmFsc0NvZGU6ICcnLFxyXG4gICAgICAgICAgICBSZWZlcnJhbHNOYW1lOiAnJyxcclxuICAgICAgICAgICAgZW5jcnlwdGVkRGF0YTogZS5kZXRhaWwuZW5jcnlwdGVkRGF0YSxcclxuICAgICAgICAgICAgaXY6IGUuZGV0YWlsLml2LFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgaWYgKGVycm9yKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuXHJcbiAgICBzaG93R2V0UGhvbmVEaWFsb2coKXtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBpc1Nob3dQaG9uZURpYWxvZzp0cnVlXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgaGlkZUdldFBob25lRGlhbG9nKCl7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgaXNTaG93UGhvbmVEaWFsb2c6ZmFsc2VcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZUF1dGhvcml6ZSgpe1xyXG4gICAgICBjb25zb2xlLmxvZygnLS3lrozmiJDmiYDmnInmjojmnYMtLScpO1xyXG4gICAgICB0aGlzLnRyaWdnZXJFdmVudCgnYXV0aG9yaXplJywge1xyXG4gICAgICAgIGlzQXV0aG9yaXplOiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgb25EaWFsb2dDbG9zZSgpe1xyXG4gICAgICAvLyB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAvLyAgIHRpdGxlOiAn5Y+W5raI5o6I5p2DJyxcclxuICAgICAgLy8gICBpY29uOiAnbm9uZScsXHJcbiAgICAgIC8vICAgZHVyYXRpb246IDEwMDBcclxuICAgICAgLy8gfSk7XHJcbiAgICB9LFxyXG4gIH1cclxufSlcclxuIl19