atr-components 0.2.401 → 0.2.404

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.
@@ -271,6 +271,7 @@ export declare interface DictGroup {
271
271
  export declare interface CusDict {
272
272
  label: string;
273
273
  value: string;
274
+ children?: any;
274
275
  isSelect?: boolean;
275
276
  }
276
277
  export declare interface ImageOpts {
@@ -82,11 +82,15 @@ export declare class ToolsUtil {
82
82
  * @param pointsArr
83
83
  */
84
84
  static judgeInRec(p: {
85
- x1: any;
86
- y1: any;
85
+ x1?: any;
86
+ y1?: any;
87
+ x?: any;
88
+ y?: any;
87
89
  }, pointsArr: {
88
- x1: any;
89
- y1: any;
90
+ x1?: any;
91
+ y1?: any;
92
+ x?: any;
93
+ y?: any;
90
94
  }[]): boolean;
91
95
  static diffInput(chng: SimpleChange, action: () => void): void;
92
96
  static deepCopy(obj: any): any;
@@ -44,4 +44,4 @@ export var UserAction;
44
44
  UserAction[UserAction["QUERY"] = 3] = "QUERY";
45
45
  UserAction[UserAction["SUPPERADD"] = 4] = "SUPPERADD";
46
46
  })(UserAction || (UserAction = {}));
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRyLWNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvcmUvYmFzZS9hdHItY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBSTVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCOztPQUVHO0lBQ0gsT0FBTyxFQUFFLEVBQUU7SUFDWDs7T0FFRztJQUNILGNBQWMsRUFBRSxFQUFFO0lBQ2xCLFVBQVUsRUFBRSxxQkFBcUI7SUFDakMsV0FBVyxFQUFFLEtBQUs7SUFDbEIsUUFBUSxFQUFFLEVBQUU7SUFDWixXQUFXLEVBQUUsRUFBRTtJQUNmLE9BQU8sRUFBRSxXQUFXO0lBQ3BCOztPQUVHO0lBQ0gsWUFBWSxFQUFFLFVBQVU7SUFDeEIsVUFBVSxFQUFFLEVBQUU7SUFDZCxtQkFBbUI7SUFDbkIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsZUFBZSxFQUFFLENBQUMsUUFBcUIsRUFBRSxFQUFFO1FBQ3pDLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFDRCxnQkFBZ0IsRUFBRSxDQUFDLFFBQXFCLEVBQUUsRUFBRTtRQUMxQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbEQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbEUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEUsNkRBQTZEO1FBQzdELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRixDQUFDO0FBRUYsTUFBTSxPQUFPLFdBQVc7O0FBQ2YsbUJBQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUM1SSxpQkFBSyxHQUFHLHE5SEFBcTlILENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3grSCxzQkFBVSxHQUFPLEVBQUUsQ0FBQztBQW1DN0IsTUFBTSxDQUFOLElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNwQix5Q0FBRyxDQUFBO0lBQ0gsMkNBQUksQ0FBQTtJQUNKLHlDQUFHLENBQUE7SUFDSCw2Q0FBSyxDQUFBO0lBQ0wscURBQVMsQ0FBQTtBQUNYLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cEhlYWRlcnN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZVV0aWx9IGZyb20gXCIuLi91dGlscy9sb2NhbHN0b3JhZ2UudXRpbFwiO1xyXG5pbXBvcnQge1RlbXBsYXRlfSBmcm9tIFwiQGFuZ3VsYXIvY29tcGlsZXIvc3JjL3JlbmRlcjMvcjNfYXN0XCI7XHJcbmltcG9ydCB7VGVtcGxhdGVSZWZ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYXRyX3N0YXRpY19kYXRhcyA9IHtcclxuICAvKipcclxuICAgKiBvc3PlnLDlnYDliY3nvIBcclxuICAgKi9cclxuICBPU1NfVVJMOiAnJyxcclxuICAvKipcclxuICAgKiDpnZnmgIHlnLDlnYBcclxuICAgKi9cclxuICBTVEFUSUNfT1NTX1VSTDogJycsXHJcbiAgT1NTX1BPTElDWTogJ3RoaXJkL29zcy9nZXRQb2xpY3knLFxyXG4gIFNUT1JBR0VfUFJFOiAnRFFfJyxcclxuICBtZW51X3VybDogJycsXHJcbiAgT1NTX0dFVEhPU1Q6ICcnLFxyXG4gIGRpY191cmw6ICdtZ3IvY29tYm8nLFxyXG4gIC8qKlxyXG4gICAqIOeZu+W9lei3r+eUsVxyXG4gICAqL1xyXG4gIGxvZ2luX3JvdXRlcjogJy9wL2xvZ2luJyxcclxuICBTRVJWRVJfVVJMOiAnJyxcclxuICAvL2h0dHAgaGVhZOaYr+WQpum7mOiupGhlYWRcclxuICBuZWVkTm9ybWFsSGVhZGU6IGZhbHNlLFxyXG4gIGdldE5vcm1hbEhlYWRlcjogKF9oZWFkZXJzOiBIdHRwSGVhZGVycykgPT4ge1xyXG4gICAgcmV0dXJuIF9oZWFkZXJzXHJcbiAgfSxcclxuICBnZXREZWZhdWx0SGVhZGVyOiAoX2hlYWRlcnM6IEh0dHBIZWFkZXJzKSA9PiB7XHJcbiAgICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcIngtaGVhZGVyLWF0clwiLCBcIm1hbmFnZVwiKTtcclxuICAgIF9oZWFkZXJzID0gX2hlYWRlcnMuc2V0KFwidG9rZW5cIiwgTG9jYWxTdG9yYWdlVXRpbC5nZXRVc2VyVG9rZW4oKSk7XHJcbiAgICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcInVzZXJJZFwiLCBMb2NhbFN0b3JhZ2VVdGlsLmdldFVzZXJJZCgpKTtcclxuICAgIC8vIF9oZWFkZXJzID0gX2hlYWRlcnMuc2V0KFwib3JnQ29kZVwiLFRvb2xzVXRpbC5nZXRPcmdDb2RlKCkpO1xyXG4gICAgcmV0dXJuIF9oZWFkZXJzO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBjbGFzcyBjb21tb25EYXRhcyB7XHJcbiAgc3RhdGljIGxldHRlcnMgPSBbXCJBXCIsIFwiQlwiLCBcIkNcIiwgXCJEXCIsIFwiRVwiLCBcIkZcIiwgXCJHXCIsIFwiSFwiLCBcIklcIiwgXCJKXCIsIFwiS1wiLCBcIkxcIiwgXCJNXCIsIFwiTlwiLCBcIk9cIiwgXCJQXCIsIFwiUVwiLCBcIlJcIiwgXCJTXCIsIFwiVFwiLCBcIlVcIiwgXCJWXCIsIFwiV1wiLCBcIlhcIiwgXCJZXCIsIFwiWlwiXVxyXG4gIHN0YXRpYyBpY29ucyA9ICdzdGVwLWJhY2t3YXJkLHN0ZXAtZm9yd2FyZCxmYXN0LWJhY2t3YXJkLGZhc3QtZm9yd2FyZCxzaHJpbmssYXJyb3dzLWFsdCxkb3duLHVwLGxlZnQscmlnaHQsY2FyZXQtdXAsY2FyZXQtZG93bixjYXJldC1sZWZ0LGNhcmV0LXJpZ2h0LHVwLWNpcmNsZSxkb3duLWNpcmNsZSxsZWZ0LWNpcmNsZSxyaWdodC1jaXJjbGUsZG91YmxlLXJpZ2h0LGRvdWJsZS1sZWZ0LHZlcnRpY2FsLWxlZnQsdmVydGljYWwtcmlnaHQsdmVydGljYWwtYWxpZ24tdG9wLHZlcnRpY2FsLWFsaWduLW1pZGRsZSx2ZXJ0aWNhbC1hbGlnbi1ib3R0b20sZm9yd2FyZCxiYWNrd2FyZCxyb2xsYmFjayxlbnRlcixyZXR3ZWV0LHN3YXAsc3dhcC1sZWZ0LHN3YXAtcmlnaHQsYXJyb3ctdXAsYXJyb3ctZG93bixhcnJvdy1sZWZ0LGFycm93LXJpZ2h0LHBsYXktY2lyY2xlLHVwLXNxdWFyZSxkb3duLXNxdWFyZSxsZWZ0LXNxdWFyZSxyaWdodC1zcXVhcmUsbG9naW4sbG9nb3V0LG1lbnUtZm9sZCxtZW51LXVuZm9sZCxib3JkZXItYm90dG9tLGJvcmRlci1ob3Jpem9udGFsLGJvcmRlci1pbm5lcixib3JkZXItb3V0ZXIsYm9yZGVyLWxlZnQsYm9yZGVyLXJpZ2h0LGJvcmRlci10b3AsYm9yZGVyLXZlcnRpY2xlLHBpYy1jZW50ZXIscGljLWxlZnQscGljLXJpZ2h0LHJhZGl1cy1ib3R0b21sZWZ0LHJhZGl1cy1ib3R0b21yaWdodCxyYWRpdXMtdXBsZWZ0LHJhZGl1cy11cHJpZ2h0LGZ1bGxzY3JlZW4sZnVsbHNjcmVlbi1leGl0LHF1ZXN0aW9uLHF1ZXN0aW9uLWNpcmNsZSxwbHVzLHBsdXMtY2lyY2xlLHBhdXNlLHBhdXNlLWNpcmNsZSxtaW51cyxtaW51cy1jaXJjbGUscGx1cy1zcXVhcmUsbWludXMtc3F1YXJlLGluZm8saW5mby1jaXJjbGUsZXhjbGFtYXRpb24sZXhjbGFtYXRpb24tY2lyY2xlLGNsb3NlLGNsb3NlLWNpcmNsZSxjbG9zZS1zcXVhcmUsY2hlY2ssY2hlY2stY2lyY2xlLGNoZWNrLXNxdWFyZSxjbG9jay1jaXJjbGUsd2FybmluZyxpc3N1ZXMtY2xvc2Usc3RvcCxlZGl0LGZvcm0sY29weSxzY2lzc29yLGRlbGV0ZSxzbmlwcGV0cyxkaWZmLGhpZ2hsaWdodCxhbGlnbi1jZW50ZXIsYWxpZ24tbGVmdCxhbGlnbi1yaWdodCxiZy1jb2xvcnMsYm9sZCxpdGFsaWMsdW5kZXJsaW5lLHN0cmlrZXRocm91Z2gscmVkbyx1bmRvLHpvb20taW4sem9vbS1vdXQsZm9udC1jb2xvcnMsZm9udC1zaXplLGxpbmUtaGVpZ2h0LGRhc2gsc21hbGwtZGFzaCxzb3J0LWFzY2VuZGluZyxzb3J0LWRlc2NlbmRpbmcsZHJhZyxvcmRlcmVkLWxpc3QsdW5vcmRlcmVkLWxpc3QscmFkaXVzLXNldHRpbmcsY29sdW1uLXdpZHRoLGNvbHVtbi1oZWlnaHQsYXJlYS1jaGFydCxwaWUtY2hhcnQsYmFyLWNoYXJ0LGRvdC1jaGFydCxsaW5lLWNoYXJ0LHJhZGFyLWNoYXJ0LGhlYXQtbWFwLGZhbGwscmlzZSxzdG9jayxib3gtcGxvdCxmdW5kLHNsaWRlcnMsYW5kcm9pZCxhcHBsZSx3aW5kb3dzLGllLGNocm9tZSxnaXRodWIsYWxpd2FuZ3dhbmcsZGluZ2Rpbmcsd2VpYm8tc3F1YXJlLHdlaWJvLWNpcmNsZSx0YW9iYW8tY2lyY2xlLGh0bWw1LHdlaWJvLHR3aXR0ZXIsd2VjaGF0LHlvdXR1YmUsYWxpcGF5LWNpcmNsZSx0YW9iYW8sc2t5cGUscXEsbWVkaXVtLXdvcmttYXJrLGdpdGxhYixtZWRpdW0sbGlua2VkaW4sZ29vZ2xlLXBsdXMsZHJvcGJveCxmYWNlYm9vayxjb2RlcGVuLGNvZGUtc2FuZGJveCxhbWF6b24sZ29vZ2xlLGNvZGVwZW4tY2lyY2xlLGFsaXBheSxhbnQtZGVzaWduLGFudC1jbG91ZCxhbGl5dW4semhpaHUsc2xhY2ssc2xhY2stc3F1YXJlLGJlaGFuY2UsYmVoYW5jZS1zcXVhcmUsZHJpYmJibGUsZHJpYmJibGUtc3F1YXJlLGluc3RhZ3JhbSx5dXF1ZSxhbGliYWJhLHlhaG9vLHJlZGRpdCxza2V0Y2gsYWxlcnQsYWltLGFjY291bnQtYm9vayxhcGFydG1lbnQsYXBpLGFwcHN0b3JlLGF1ZGlvLW11dGVkLGF1ZGl0LGJhbmssYmFyY29kZSxiYXJzLGJsb2NrLGJvb2ssYmVsbCxhcHBzdG9yZS1hZGQsYXVkaW8sYm9yZGVyLGJvcmRlcmxlc3MtdGFibGUsYnVnLGJyYW5jaGVzLGNhbWVyYSxjYWxjdWxhdG9yLGNhbGVuZGFyLGJ1aWxkLGNhcnJ5LW91dCxidWxiLGNhcixjbGVhcixjaSxjbG91ZC1kb3dubG9hZCxjbG91ZCxjbG91ZC1zeW5jLGNsb3VkLXNlcnZlcixjbG91ZC11cGxvYWQsY29kZSxjb2ZmZWUsY29tcHJlc3MsY29tcGFzcyxjb21tZW50LGNpLWNpcmNsZSxjb250YWluZXIsY29udHJvbCxjb3B5cmlnaHQsY3JlZGl0LWNhcmQsY2x1c3RlcixjdXN0b21lci1zZXJ2aWNlLGNvbnRhY3RzLGNvbnNvbGUtc3FsLGRhc2hib2FyZCxkYXRhYmFzZSxjb3B5cmlnaHQtY2lyY2xlLGRlbGV0ZS1jb2x1bW4sZGVza3RvcCxkZXBsb3ltZW50LXVuaXQsZGVsaXZlcmVkLXByb2NlZHVyZSxkaXNjb25uZWN0LGRpbmd0YWxrLGRvbGxhci1jaXJjbGUsZGlzbGlrZSxkZWxldGUtcm93LGRvbGxhcixjcm93bixkb3dubG9hZCxlbGxpcHNpcyxlbnZpcm9ubWVudCxldXJvLWNpcmNsZSxleGNlcHRpb24sZXhwYW5kLWFsdCxldXJvLGV4cGVyaW1lbnQsZXhwb3J0LGV4cGFuZCxleWUtaW52aXNpYmxlLGV5ZSxmaWxlLWFkZCxmaWVsZC1zdHJpbmcsZmlsZS1leGNsYW1hdGlvbixmaWxlLWRvbmUsZmllbGQtdGltZSxmaWxlLWV4Y2VsLGZpZWxkLWJpbmFyeSxmaWxlLWdpZixmaWxlLWltYWdlLGZpbGUsZmlsZS1tYXJrZG93bixmaWxlLXBwdCxmaWxlLXBkZixmaWVsZC1udW1iZXIsZmlsZS1zZWFyY2gsZmlsZS1zeW5jLGZpbGUtanBnLGZpbGUtdGV4dCxmaWx0ZXIsZmlsZS16aXAsZmxhZyxmb2xkZXItYWRkLGZpbGUtdW5rbm93bixmb2xkZXItb3BlbixmaXJlLGZpbGUtcHJvdGVjdCxmb2xkZXItdmlldyxmb2xkZXIsZm9yayxmb3JtYXQtcGFpbnRlcixmcm93bixmdW5kLXByb2plY3Rpb24tc2NyZWVuLGdpZnQsZ2F0ZXdheSxmdW5kLXZpZXcsZ2lmLGZ1bm5lbC1wbG90LGdvbGQsZ2xvYmFsLGdyb3VwLGhkZCxmdW5jdGlvbixoaXN0b3J5LGZpbGUtd29yZCxob21lLGlkY2FyZCxob3VyZ2xhc3MsaGVhcnQsaW5zZXJ0LXJvdy1iZWxvdyxpbXBvcnQsaW5zZXJ0LXJvdy1sZWZ0LGluc2VydC1yb3ctYWJvdmUsaW5zZXJ0LXJvdy1yaWdodCxrZXksaW5ib3gsaW5zdXJhbmNlLGxhcHRvcCxsaWtlLGxpbmUsbGluayxsb2FkaW5nLTMtcXVhcnRlcnMsbG9hZGluZyxsb2NrLG1hbixtYWlsLG1hYy1jb21tYW5kLG1lZGljaW5lLWJveCxsYXlvdXQsbWVoLGludGVyYWN0aW9uLG1lc3NhZ2UsbWVudSxtZXJnZS1jZWxscyxtb2JpbGUsbW9uZXktY29sbGVjdCxub2RlLWluZGV4LG1vbml0b3Isbm9kZS1leHBhbmQsbW9yZSxudW1iZXIsbm90aWZpY2F0aW9uLG9uZS10by1vbmUscGVyY2VudGFnZSxwaG9uZSxwYXBlci1jbGlwLHBhcnRpdGlvbixwaWN0dXJlLG5vZGUtY29sbGFwc2UscGxheS1zcXVhcmUscGF5LWNpcmNsZSxwb3VuZCxwcm9maWxlLHByb2plY3QscHJvcGVydHktc2FmZXR5LHBvd2Vyb2ZmLHB1c2hwaW4scXJjb2RlLHByaW50ZXIscG91bmQtY2lyY2xlLHB1bGwtcmVxdWVzdCxyZXN0LHJlYWQscmVsb2FkLHJlY29uY2lsaWF0aW9uLHJvYm90LHJvY2tldCxyb3RhdGUtcmlnaHQsc2FmZXR5LWNlcnRpZmljYXRlLHJlZC1lbnZlbG9wZSxyb3RhdGUtbGVmdCxzYXZlLHNhZmV0eSxzZWFyY2gsc2VjdXJpdHktc2NhbixzY2FuLHNlbmQsc2V0dGluZyxzZWxlY3Qsc2hha2Usc2hvcHBpbmctY2FydCxzaXN0ZXJub2RlLHNob3Asc2hvcHBpbmcsc2hhcmUtYWx0LHNjaGVkdWxlLHNraW4sc21pbGUsc29sdXRpb24sc291bmQsc3BsaXQtY2VsbHMsc3RhcixzdWJub2RlLHRhZ3MsdGFibGV0LHRhZyx0YWJsZSxzd2l0Y2hlcixzeW5jLHRlYW0sdG9vbCx0cmFkZW1hcmstY2lyY2xlLHRodW5kZXJib2x0LHRvLXRvcCx0cmFuc2xhdGlvbix0cmFkZW1hcmssdHJvcGh5LHVuZ3JvdXAsdW5sb2NrLHVwbG9hZCx0cmFuc2FjdGlvbix1c2VyLWRlbGV0ZSx1c2IsdXNlci1hZGQsdXNlcmdyb3VwLWRlbGV0ZSx2aWRlby1jYW1lcmEtYWRkLHZlcmlmaWVkLHVzZXJncm91cC1hZGQsdXNlcix1c2VyLXN3aXRjaCx2aWRlby1jYW1lcmEsd2lmaSx3YWxsZXQsd2hhdHMtYXBwLHdvbWFuLGFwcHN0b3JlJy5zcGxpdCgnLCcpXHJcbiAgc3RhdGljIGF3YWl0X0RhdGE6YW55ID0ge307XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBqc29uIGV4dGVuZHMgT2JqZWN0IHtcclxuICBba2V5OiBzdHJpbmddOiBhbnlcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFNlcnZlclBhZ2luYXRpb25TdGFuZGFyZCB7XHJcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcclxuICBzaG93Q291bnQ6IG51bWJlcjtcclxuICB0b3RhbFJlc3VsdDogbnVtYmVyO1xyXG4gIHRvdGFsUGFnZT86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEh0dHBSZXNwb25zZURhdGFTdGFuZGFyZCB7XHJcbiAgc3RhdGU6IG51bWJlcjsgLy8g5Li6MeaJjeaYr+aIkOWKn1xyXG4gIGRhdGE6IGpzb24gfCBbe31dIHwgb2JqZWN0IHwgc3RyaW5nIHwgYW55OyAvL+ayoeacieWAvCBkYXRhOiAnJ1xyXG4gIG1lc3M6IHN0cmluZzsgLy/ov5Tlm57nmoTmtojmga9cclxuICBwYWdlPzogU2VydmVyUGFnaW5hdGlvblN0YW5kYXJkO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEh0dHBSc2Vwb25zZVRyYW5zZm9ybUNlbGwge1xyXG4gIFtrZXk6IHN0cmluZ106IGpzb25cclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEh0dHBPcHRpb25zIHtcclxuICBoZWFkZXJzPzoge30sXHJcbiAgaXNKc29uRW5jb2RlPzogYm9vbGVhblxyXG4gIGlzVXJsRW5jb2RlPzogYm9vbGVhblxyXG4gIGlzQXV0b1Nob3dNZXNzYWdlPzogYm9vbGVhblxyXG4gIGlzV2l0aENyZWRlbnRpYWxzPzogYm9vbGVhblxyXG4gIGlzQ29tbW9uSHR0cEhlYWRlcj86IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGVudW0gVXNlckFjdGlvbiB7XHJcbiAgQURELFxyXG4gIEVESVQsXHJcbiAgREVMLFxyXG4gIFFVRVJZLFxyXG4gIFNVUFBFUkFERFxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRUNoYXJ0c09wdGlvbiB7XHJcbiAgdGl0bGU/OiBhbnksXHJcbiAgbGVnZW5kPzogYW55LFxyXG4gIGdyaWQ/OiBhbnksXHJcbiAgYnJ1c2g/OiBhbnksXHJcbiAgdG9vbGJveD86IGFueSxcclxuICB0b29sdGlwPzogYW55LFxyXG4gIGRhdGFzZXQ/OiBhbnksXHJcbiAgeEF4aXM/OiB7XHJcbiAgICB0eXBlPzogJ2NhdGVnb3J5JyxcclxuICAgIGRhdGE/OiBzdHJpbmdbXSxcclxuICAgIGJvdW5kYXJ5R2FwPzogYm9vbGVhbixcclxuICAgIHNob3c/OiBib29sZWFuLFxyXG4gIH0sXHJcbiAgeUF4aXM/OiBhbnksLy97ICAgIHNob3c6ZmFsc2UsICAgIHR5cGU6ICd2YWx1ZScsICAgIG1pbkludGVydmFsOiAxLH1bXVxyXG4gIHNlcmllcz86IHtcclxuICAgIG5hbWU/OiBzdHJpbmcsXHJcbiAgICBkYXRhPzogYW55W10sXHJcbiAgICBpdGVtU3R5bGU/OiBhbnksXHJcbiAgICBzdGFjaz86IGFueSxcclxuICAgIGVtcGhhc2lzPzogYW55LFxyXG4gICAgbGFiZWw/OiBhbnksXHJcbiAgICByYWRpdXM/OiBhbnlbXSxcclxuICAgIHNtb290aD86IGJvb2xlYW4sXHJcbiAgICBzZXJpZXNMYXlvdXRCeT86IHN0cmluZyxcclxuICAgIHR5cGU/OiAnYmFyJyB8ICdwaWUnIHwgJ2xpbmUnLFxyXG4gICAgYmFja2dyb3VuZFN0eWxlPzogYW55XHJcbiAgfVtdXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBdHJGb3JtT3B0IHtcclxuICB0eXBlOiAnYWRkJyB8ICdlZGl0JyB8ICd2aWV3JyxcclxuICBsYXlvdXQ/OiBcImZ1bGxcIiB8ICcxbDJjJyB8ICcxbDFjJyxcclxuICBpdGVtczogQXRyRm9ybURldGFpbFtdLC8v6KGo5Y2V6aG555uuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBdHJGb3JtRGV0YWlsIHtcclxuICBsYWJlbDogc3RyaW5nLFxyXG4gIHR5cGU6ICdjYXNjYWRlcicgfCAncmFkaW8nIHwgJ3RleHQnIHwgJ2ltYWdlJyB8ICdzZWxlY3QnIHwgJ2RhdGUnIHwgJ251bWJlcicgfCAndGVscGhvbmUnIHwgJ3Bhc3N3b3JkJyB8ICdjaGVja2JveCcgfCAnZGF5UmFuZ2UnXHJcbiAgICB8ICdlZGl0b3InIHwgJ3RleHRhcmVhJyB8ICdkYXRlVGltZScgfCAndGl0bGUnIHwgJ2RhdGVSYW5nZScgfCAnc2VsZWN0YycgfCAnc2VsZWN0SWNvbicgfCAndHJlZVNlbGVjdCcgfCAnc3dpdGNoJyB8ICdidXR0b25zJyxcclxuICBrZXk6IHN0cmluZyxcclxuICBpc0hpZGRlbj86IGJvb2xlYW4sXHJcbiAgZGVmYXVsdFZhbHVlPzogYW55LFxyXG4gIHZhbHVlPzogYW55LC8v57yW6L6R5LiL5Y6f5aeL5pWw5YC8XHJcbiAgZGljdENvZGU/OiBzdHJpbmcsLy9zZWxlY3Qg5qih5byP5LiL6YWN572uXHJcbiAgc3Bhbj86IG51bWJlciwvL+aYvuekuuWuveW6plxyXG4gIHZhbGlkYXRvcnM/OiBBdHJGb3JtVmFsaWRbXSwvL+mqjOivgeadoeS7tlxyXG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuIHwgc3RyaW5nLC8v6ZqQ5oCn5p2h5Lu2IOaXoOmcgOWhq+WGmSwgc3RyaW5n57G75Z6L5qC85byP5ZCMb3BlcmF0b3JcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZyxcclxuICBpbWFnZU9wdHM/OiBJbWFnZU9wdHMsXHJcbiAgZWRpdENvbnRlbnQ/OiBzdHJpbmcsXHJcbiAgaGVpZ2h0PzogbnVtYmVyLC8vZWRpdG9y5pyJ5pWIXHJcbiAgZGlzYWJsZT86IGJvb2xlYW4sXHJcbiAgbHNwYW4/OiBudW1iZXIsXHJcbiAgY3NwYW4/OiBudW1iZXIsXHJcbiAgcm93cz86IG51bWJlciwvL3RleHRhcmVhIOaYvuekuuihjOaVsFxyXG4gIG9wZXJhdG9yPzogc3RyaW5nLC8v5pi+56S65pON5L2c56ymIOagvOW8jyDlpoI6c3RhdHVzfGVxfDBcclxuICBidXR0b24/OiBmb3JtQnV0dG9uLFxyXG4gIHJlYWRvbmx5PzogYm9vbGVhbixcclxuICBkYXRlRm9ybWF0Pzogc3RyaW5nLFxyXG4gIGRpY3RMaXN0PzogQ3VzRGljdFtdLFxyXG4gIG56TW9kZT86ICdtdWx0aXBsZScgfCAndGFncycgfCAnZGVmYXVsdCcsXHJcbiAgc2VsZWN0VXJsPzogeyB1cmw6IHN0cmluZywgY29udmVydD86IHN0cmluZywgdHlwZT86ICdnZXQnIHwgJ3Bvc3QnLCBob3N0PzogJ29zcycgfCAnc2VydmUnLCBpc011bHRpcGxlPzogYm9vbGVhbiwgaWdub3JlRGljdExpc3Q/OiBib29sZWFuIH0sXHJcbiAgdHJlZUxpc3Q/OiB7IGtleTogc3RyaW5nLCB0aXRsZTogc3RyaW5nIH1bXSxcclxuICBlbmRzPzogc3RyaW5nLFxyXG4gIHByb3Bvc2FsPzogc3RyaW5nLFxyXG4gIHRlbXA/OiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gIGZpcnN0VGVtcD86IFRlbXBsYXRlUmVmPGFueT4sXHJcbiAgbWluTnVtYmVyPzogYW55LFxyXG4gIG1heE51bWJlcj86IGFueSxcclxuICBub3ROdWxsPzogYm9vbGVhblxyXG4gIG56U2hvd1RpbWU/OiBib29sZWFuIHwgeyBuekZvcm1hdDogc3RyaW5nIH0sXHJcbiAgYnV0dG9ucz86IGZvcm1CdXR0b25bXVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyRm9ybVZhbGlkIHtcclxuICB0eXBlOiAncmVxdWlyZWQnIHwgJ2VtYWlsJyB8ICd0ZWxwaG9uZScgfCAnbWF4bGVuZ3RoJyB8ICdtaW5sZW5ndGgnIHwgJ3BhdHRlcm4nIHwgJ29wZXJhdG9yJyxcclxuICBlcnJvckxhYmVsOiBzdHJpbmcsXHJcbiAgbWF4bGVuZ3RoPzogbnVtYmVyLFxyXG4gIG1pbmxlbmd0aD86IG51bWJlcixcclxuICBwYXR0ZXJuVmFsdWU/OiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGZvcm1CdXR0b24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBpc1Nob3c6IGJvb2xlYW4sXHJcbiAgY29kZTogc3RyaW5nLFxyXG4gIGJ0blR5cGU/OiBzdHJpbmcsXHJcbiAgb3BlcmF0b3I/OiBzdHJpbmcsLy8vL+aYvuekuuaTjeS9nOespiDmoLzlvI8g5aaCOnN0YXR1c3xlcXwwXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBjb2xvck9wZXJhdG9yIHtcclxuICBjb2xvcjogc3RyaW5nLFxyXG4gIG9wZXJhdG9yOiBzdHJpbmcsLy/op4TliJlcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0clF1ZXlyT3B0IHtcclxuICBhY3Rpb25zPzogVGFibGVBY3Rpb25bXSxcclxuICBpc0luZGV4PzogYm9vbGVhbiwvL+aYr+WQpuaYvuekuuW6j+WPtyxcclxuICBjb2xvcj86IGNvbG9yT3BlcmF0b3IsLy/popzoibJcclxuICBjaGVja0JveD86IHtcclxuICAgIGlzU2hvd0NoZWNrYm94PzogYm9vbGVhbixcclxuICAgIGlzUmFkaW8/OiBib29sZWFuLFxyXG4gICAgaXNGb3JiaWQ/OiBib29sZWFuLC8vdHJ1ZeaXtuWPquWFgeiuuOeCueWHu+WkmumAieahhumAieaLqVxyXG4gIH0sXHJcbiAgLy8gaXNTaG93Q2hlY2tib3g/OiBib29sZWFuLFxyXG4gIHNob3dOdW0/OiBudW1iZXIsXHJcbiAgdXJsOiBzdHJpbmcsXHJcbiAgc29ydD86IHN0cmluZyxcclxuICBoZWFkZXJzPzogQXRyUXVlcnlIZWFkZXJbXSxcclxuICB0YWJsZXM6IFRhYmxlW10sXHJcbiAgaXNBdXRvUXVlcnk/OiBib29sZWFuLC8vdHJ1ZeaXtuWAmem7mOiupOinpuWPkeafpeivolxyXG4gIGRlZmF1bHRQYXJhbXM/OiBqc29uLFxyXG4gIGlzSGlkZVF1ZXJ5PzogYm9vbGVhblxyXG4gIC8vIGlzUmFkaW8/OmJvb2xlYW4sXHJcbiAgLy8gaXNGb3JiaWQ/OmJvb2xlYW4sLy90cnVl5pe25Y+q5YWB6K6454K55Ye75aSa6YCJ5qGG6YCJ5oupXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUYWJsZSB7XHJcbiAgbmFtZTogc3RyaW5nLC8v6KGo5aS05ZCN56ewXHJcbiAga2V5Pzogc3RyaW5nLC8v5a6e6ZmF5pWw5o2u5a2X5q61XHJcbiAgZGVmYXVsdFZhbD86IGFueSxcclxuICBzb3J0S2V5Pzogc3RyaW5nLC8v5piv5ZCm5o6S5bqPXHJcbiAgc29ydGFibGU/OiBib29sZWFuLFxyXG4gIHR5cGU6ICd0ZXh0Y29sb3InIHwgJ2ZpeGVkVGV4dCcgfCAndGV4dCcgfCAnbGluaycgfCAnYWN0aW9uJyB8ICdpbWFnZScgfCAnZGF0ZScgfCAnZGF0ZVRpbWUnIHwgJ3NEYXRlVGltZScgfCAnZGljdCdcclxuICAgIHwgJ2lubmVySHRtbCcsLy/nsbvlnovvvJog5paH5a2X44CB6ZO+5o6l44CB5pON5L2cXHJcbiAgZGljdENvZGU/OiBzdHJpbmcsXHJcbiAgaXNTaG93PzogYm9vbGVhbixcclxuICB3aWR0aD86IHN0cmluZywvLzE1MHB4XHJcbiAgYWN0aW9ucz86IFRhYmxlQWN0aW9uW10sXHJcbiAgaXNSb3dTcGFuPzogYm9vbGVhbixcclxuICBpc1JpZ2h0PzogYm9vbGVhblxyXG4gIGlzTGVmdD86IGJvb2xlYW4sXHJcbiAgY29sb3I/OiBjb2xvck9wZXJhdG9yLC8v6aKc6ImyXHJcbiAgY29sb3JTaG93Pzogc3RyaW5nLFxyXG4gIGlubmVySHRtbEJhY2s/OiBGdW5jdGlvbixcclxuICBzdHlsZUNhbGxCYWNrPzpGdW5jdGlvblxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyUXVlcnlIZWFkZXIge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICB0eXBlOiAnY2FzY2FkZXInIHwgJ3RleHQnIHwgJ251bWJlcicgfCAnY2hlY2tib3gnIHwgJ3NlbGVjdCcgfCAnZGF0ZXBpY2tlcicgfCAnc2VsZWN0Q3VzJyB8ICdkYXRlUmFuZ2UnIHwgJ3NkYXRlJyB8ICd0cmVlU2VsZWN0JyB8ICdkYXlSYW5nZScsXHJcbiAgbnpNb2RlPzogJ211bHRpcGxlJyB8ICd0YWdzJyB8ICdkZWZhdWx0JyxcclxuICBrZXk6IHN0cmluZyxcclxuICBpc1Nob3c/OiBib29sZWFuLFxyXG4gIGNvZGU/OiBzdHJpbmcsXHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXHJcbiAgc3Bhbj86IG51bWJlcixcclxuICBkaWN0Q29kZT86IHN0cmluZywvL+Wtl+WFuOe8lueggVxyXG4gIGRpY3RMaXN0PzogQ3VzRGljdFtdLFxyXG4gIGRlZmF1bHRWYWw/OiBhbnkgLy8g6buY6K6k5YC8XHJcbiAgbWF4VGFnQ291bnQ/OiBudW1iZXIsXHJcbiAgbHNwYW4/OiBudW1iZXIsXHJcbiAgY3NwYW4/OiBudW1iZXIsXHJcbiAgZGlzYWJsZUNsZWFyPzogYm9vbGVhbixcclxuICB0cmVlTGlzdD86IHsga2V5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcgfVtdXHJcbiAgLyoqXHJcbiAgICog5qC85byPXHJcbiAgICogY29udmVydDona2V5fGlkLHRpdGxlfHJlYWxOYW1lJyh0cmVlU2VsZWN0KVxyXG4gICAqICAgIHZhbHVlfGlkLGxhYmVsfG5hbWUoc2VsZWN0Q3VzKVxyXG4gICAqL1xyXG4gIHNlbGVjdFVybD86IHsgdXJsOiBzdHJpbmcsIGNvbnZlcnQ6IHN0cmluZywgaXNNdWx0aXBsZT86IGJvb2xlYW4gfSwvL2NvbnZlcnQ6IG5ld0tleXxvbGRLZXksbmV3S2V5fG9sZEtleSjmjqXlj6Pov5Tlm57nmoTlgLwpXHJcbiAgaWNvbj86IHsgaXNTaG93OiBib29sZWFuLCBjb2RlOiBzdHJpbmcsIGljb246IGFueSB9LFxyXG4gIGRhdGVNb2RlPzogJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJyxcclxuICBuelNob3dUaW1lPzogYm9vbGVhbiB8IHsgbnpGb3JtYXQ6IHN0cmluZyB9LFxyXG4gIG56U2hvd05vdz86IGJvb2xlYW4sXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUYWJsZUFjdGlvbiB7XHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGNvZGU6IHN0cmluZyxcclxuICB1cmw/OiBzdHJpbmcsXHJcbiAgZ1R5cGU/OiAnbm9ybWFsJyB8ICd1cGxvYWQnLFxyXG4gIGRhdGE/OiBhbnksXHJcbiAgZmlyc3REYXRhPzogYW55LFxyXG4gIGRhdGFzPzogYW55W10sXHJcbiAgaWNvbj86IHN0cmluZyxcclxuICBudW1iZXJPZkNoZWNrZWQ/OiBudW1iZXIsXHJcbiAgdHlwZT86ICdyb3dzJyB8ICdyb3cnLFxyXG4gIG9wZXJhdG9yPzogc3RyaW5nLC8v5pi+56S65pON5L2c56ymXHJcbiAgYnV0dG9uVHlwZT86ICdwcmltYXJ5JyB8ICdkYXNoZWQnIHwgJ2RhbmdlcicgfCAnZGVmYXVsdCcgfCAnbGluaycsXHJcbiAgdmFsdWU/OiBhbnksXHJcbiAgd2l0aG91dFJvbGU/OiBib29sZWFuLy/kuI3pnIDopoHmnYPpmZDmjqfliLZcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEZvcm1BY3Rpb24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBjb2RlOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERpY3Qge1xyXG4gIGlkOiBzdHJpbmcsXHJcbiAgdHlwZU5hbWU6IHN0cmluZyxcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEaWN0R3JvdXAge1xyXG4gIGdyb3VwQ29kZTogc3RyaW5nLFxyXG4gIGRpY3RzOiBEaWN0W11cclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEN1c0RpY3Qge1xyXG4gIGxhYmVsOiBzdHJpbmcsXHJcbiAgdmFsdWU6IHN0cmluZyxcclxuICBpc1NlbGVjdD86IGJvb2xlYW4vL2NoZWNrQm946buY6K6k6YCJ5LitXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJbWFnZU9wdHMge1xyXG4gIGxpbWl0PzogbnVtYmVyLFxyXG4gIG56U2l6ZT86IG51bWJlcixcclxuICB1cGxvYWREaXI6IHN0cmluZyxcclxuICByZW1vdmVBY3Rpb24/OiBzdHJpbmcsXHJcbiAgaW1hZ2VMaXN0PzogYW55W10sXHJcbiAga2V5Pzogc3RyaW5nLFxyXG4gIGxhYmU/OiBzdHJpbmcsXHJcbiAgZmlsZU5hbWU/OiBzdHJpbmcsXHJcbiAgdXBsb2FkVHlwZT86ICdkcmFnJyB8ICcnIHwgJ2J1dHRvbicsXHJcbiAgbnpGaWxlVHlwZT86IHN0cmluZyxcclxuICBrZWVwTmFtZT86IGJvb2xlYW5cclxuICBidG5OYW1lPzpzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGVxdWlwVGVzdERhdGEge1xyXG4gIGNvZGU6IHN0cmluZ1xyXG4gIGl0ZW1OYW1lOiBzdHJpbmdcclxuICB6aG91MTogbnVtYmVyXHJcbiAgemhvdTI6IG51bWJlclxyXG4gIHpob3UzOiBudW1iZXJcclxuICB6aG91NDogbnVtYmVyXHJcbiAgemhvdTU6IG51bWJlclxyXG4gIHpob3U2OiBudW1iZXJcclxuICBpc1dyb25nMT86IGJvb2xlYW5cclxuICBpc1dyb25nMj86IGJvb2xlYW5cclxuICBpc1dyb25nMz86IGJvb2xlYW5cclxuICBpc1dyb25nND86IGJvb2xlYW5cclxuICBpc1dyb25nNT86IGJvb2xlYW5cclxuICBpc1dyb25nNj86IGJvb2xlYW5cclxufVxyXG5cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBTZWxlY3RBY3Rpb24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBjb2RlOiBcIm5nTW9kZWxDaGFuZ2VcIiB8ICduek9wZW5DaGFuZ2UnLFxyXG4gIGRhdGE/OiBhbnksXHJcbiAga2V5Pzogc3RyaW5nLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVJY29uIHtcclxuICAvKiogVHlwZSBmb3IgaWNvbiAqL1xyXG4gIHR5cGU6ICdjbGFzcycgfCAnaWNvbicgfCAnaWNvbmZvbnQnIHwgJ2ltZyc7XHJcbiAgLyoqIFZhbHVlIGZvciB0aGUgaWNvbiwgY2FuIGJlIHNldCBDbGFzcyBOYW1lLCBuei1pY29uIG9mIGBuelR5cGVgLCBpbWFnZSAqL1xyXG4gIHZhbHVlPzogc3RyaW5nO1xyXG4gIC8qKiBUeXBlIG9mIHRoZSBhbnQgZGVzaWduIGljb24sIGRlZmF1bHQ6IGBvdXRsaW5lYCAqL1xyXG4gIHRoZW1lPzogJ291dGxpbmUnIHwgJ3R3b3RvbmUnIHwgJ2ZpbGwnO1xyXG4gIC8qKiBSb3RhdGUgaWNvbiB3aXRoIGFuaW1hdGlvbiwgZGVmYXVsdDogYGZhbHNlYCAqL1xyXG4gIHNwaW4/OiBib29sZWFuO1xyXG4gIC8qKiBPbmx5IHN1cHBvcnQgdGhlIHR3by10b25lIGljb24uIFNwZWNpZmljIHRoZSBwcmltYXJ5IGNvbG9yICovXHJcbiAgdHdvVG9uZUNvbG9yPzogc3RyaW5nO1xyXG4gIC8qKiBUeXBlIG9mIHRoZSBpY29uIGZyb20gaWNvbmZvbnQgKi9cclxuICBpY29uZm9udD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZW51IHtcclxuICB0ZXh0Pzogc3RyaW5nO1xyXG4gIGxpbms/OiBzdHJpbmc7XHJcbiAgcmVhbExpbms/OiBzdHJpbmc7XHJcbiAgaXNTZWxlY3RlZD86IEJvb2xlYW47XHJcbiAgaXNPcGVuPzogQm9vbGVhbjtcclxuICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XHJcbiAgLyoqIEljb24gZm9yIHRoZSBtZW51IGl0ZW0sIG9ubHkgdmFsaWQgZm9yIHRoZSBmaXJzdCBsZXZlbCBtZW51ICovXHJcbiAgaWNvbj86IHN0cmluZyB8IE1lbnVJY29uIHwgbnVsbDtcclxuICAvKiogQmFkZ2V0IGZvciB0aGUgbWVudSBpdGVtIHdoZW4gYGdyb3VwYCBpcyBgdHJ1ZWAgKi9cclxuICBvcGVyYXRpb24/OiBzdHJpbmc7XHJcbiAgLyoqIFdoZXRoZXIgc2hvcnRjdXQgbWVudSBpdGVtICovXHJcbiAgc2VxPzogbnVtYmVyO1xyXG4gIGxldmVsPzogbnVtYmVyO1xyXG4gIC8qKiBXaGV0ZXIgc2hvcnRjdXQgbWVudSByb290IG5vZGUgKi9cclxuICBsaW5rVHlwZT86IHN0cmluZztcclxuICAvKiogV2hldGhlciB0byBhbGxvdyByZXVzZSwgbmVlZCB0byBjb29wZXJhdGUgd2l0aCB0aGUgYHJldXNlLXRhYmAgY29tcG9uZW50ICovXHJcbiAgY2hpbGRyZW4/OiBNZW51W107XHJcbiAgaXNWaXNpYmxlPzogJzAnIHwgJzEnXHJcbn1cclxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRyLWNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvcmUvYmFzZS9hdHItY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBSTVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCOztPQUVHO0lBQ0gsT0FBTyxFQUFFLEVBQUU7SUFDWDs7T0FFRztJQUNILGNBQWMsRUFBRSxFQUFFO0lBQ2xCLFVBQVUsRUFBRSxxQkFBcUI7SUFDakMsV0FBVyxFQUFFLEtBQUs7SUFDbEIsUUFBUSxFQUFFLEVBQUU7SUFDWixXQUFXLEVBQUUsRUFBRTtJQUNmLE9BQU8sRUFBRSxXQUFXO0lBQ3BCOztPQUVHO0lBQ0gsWUFBWSxFQUFFLFVBQVU7SUFDeEIsVUFBVSxFQUFFLEVBQUU7SUFDZCxtQkFBbUI7SUFDbkIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsZUFBZSxFQUFFLENBQUMsUUFBcUIsRUFBRSxFQUFFO1FBQ3pDLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFDRCxnQkFBZ0IsRUFBRSxDQUFDLFFBQXFCLEVBQUUsRUFBRTtRQUMxQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbEQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbEUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEUsNkRBQTZEO1FBQzdELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRixDQUFDO0FBRUYsTUFBTSxPQUFPLFdBQVc7O0FBQ2YsbUJBQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUM1SSxpQkFBSyxHQUFHLHE5SEFBcTlILENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3grSCxzQkFBVSxHQUFPLEVBQUUsQ0FBQztBQW1DN0IsTUFBTSxDQUFOLElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNwQix5Q0FBRyxDQUFBO0lBQ0gsMkNBQUksQ0FBQTtJQUNKLHlDQUFHLENBQUE7SUFDSCw2Q0FBSyxDQUFBO0lBQ0wscURBQVMsQ0FBQTtBQUNYLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cEhlYWRlcnN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZVV0aWx9IGZyb20gXCIuLi91dGlscy9sb2NhbHN0b3JhZ2UudXRpbFwiO1xyXG5pbXBvcnQge1RlbXBsYXRlfSBmcm9tIFwiQGFuZ3VsYXIvY29tcGlsZXIvc3JjL3JlbmRlcjMvcjNfYXN0XCI7XHJcbmltcG9ydCB7VGVtcGxhdGVSZWZ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYXRyX3N0YXRpY19kYXRhcyA9IHtcclxuICAvKipcclxuICAgKiBvc3PlnLDlnYDliY3nvIBcclxuICAgKi9cclxuICBPU1NfVVJMOiAnJyxcclxuICAvKipcclxuICAgKiDpnZnmgIHlnLDlnYBcclxuICAgKi9cclxuICBTVEFUSUNfT1NTX1VSTDogJycsXHJcbiAgT1NTX1BPTElDWTogJ3RoaXJkL29zcy9nZXRQb2xpY3knLFxyXG4gIFNUT1JBR0VfUFJFOiAnRFFfJyxcclxuICBtZW51X3VybDogJycsXHJcbiAgT1NTX0dFVEhPU1Q6ICcnLFxyXG4gIGRpY191cmw6ICdtZ3IvY29tYm8nLFxyXG4gIC8qKlxyXG4gICAqIOeZu+W9lei3r+eUsVxyXG4gICAqL1xyXG4gIGxvZ2luX3JvdXRlcjogJy9wL2xvZ2luJyxcclxuICBTRVJWRVJfVVJMOiAnJyxcclxuICAvL2h0dHAgaGVhZOaYr+WQpum7mOiupGhlYWRcclxuICBuZWVkTm9ybWFsSGVhZGU6IGZhbHNlLFxyXG4gIGdldE5vcm1hbEhlYWRlcjogKF9oZWFkZXJzOiBIdHRwSGVhZGVycykgPT4ge1xyXG4gICAgcmV0dXJuIF9oZWFkZXJzXHJcbiAgfSxcclxuICBnZXREZWZhdWx0SGVhZGVyOiAoX2hlYWRlcnM6IEh0dHBIZWFkZXJzKSA9PiB7XHJcbiAgICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcIngtaGVhZGVyLWF0clwiLCBcIm1hbmFnZVwiKTtcclxuICAgIF9oZWFkZXJzID0gX2hlYWRlcnMuc2V0KFwidG9rZW5cIiwgTG9jYWxTdG9yYWdlVXRpbC5nZXRVc2VyVG9rZW4oKSk7XHJcbiAgICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcInVzZXJJZFwiLCBMb2NhbFN0b3JhZ2VVdGlsLmdldFVzZXJJZCgpKTtcclxuICAgIC8vIF9oZWFkZXJzID0gX2hlYWRlcnMuc2V0KFwib3JnQ29kZVwiLFRvb2xzVXRpbC5nZXRPcmdDb2RlKCkpO1xyXG4gICAgcmV0dXJuIF9oZWFkZXJzO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBjbGFzcyBjb21tb25EYXRhcyB7XHJcbiAgc3RhdGljIGxldHRlcnMgPSBbXCJBXCIsIFwiQlwiLCBcIkNcIiwgXCJEXCIsIFwiRVwiLCBcIkZcIiwgXCJHXCIsIFwiSFwiLCBcIklcIiwgXCJKXCIsIFwiS1wiLCBcIkxcIiwgXCJNXCIsIFwiTlwiLCBcIk9cIiwgXCJQXCIsIFwiUVwiLCBcIlJcIiwgXCJTXCIsIFwiVFwiLCBcIlVcIiwgXCJWXCIsIFwiV1wiLCBcIlhcIiwgXCJZXCIsIFwiWlwiXVxyXG4gIHN0YXRpYyBpY29ucyA9ICdzdGVwLWJhY2t3YXJkLHN0ZXAtZm9yd2FyZCxmYXN0LWJhY2t3YXJkLGZhc3QtZm9yd2FyZCxzaHJpbmssYXJyb3dzLWFsdCxkb3duLHVwLGxlZnQscmlnaHQsY2FyZXQtdXAsY2FyZXQtZG93bixjYXJldC1sZWZ0LGNhcmV0LXJpZ2h0LHVwLWNpcmNsZSxkb3duLWNpcmNsZSxsZWZ0LWNpcmNsZSxyaWdodC1jaXJjbGUsZG91YmxlLXJpZ2h0LGRvdWJsZS1sZWZ0LHZlcnRpY2FsLWxlZnQsdmVydGljYWwtcmlnaHQsdmVydGljYWwtYWxpZ24tdG9wLHZlcnRpY2FsLWFsaWduLW1pZGRsZSx2ZXJ0aWNhbC1hbGlnbi1ib3R0b20sZm9yd2FyZCxiYWNrd2FyZCxyb2xsYmFjayxlbnRlcixyZXR3ZWV0LHN3YXAsc3dhcC1sZWZ0LHN3YXAtcmlnaHQsYXJyb3ctdXAsYXJyb3ctZG93bixhcnJvdy1sZWZ0LGFycm93LXJpZ2h0LHBsYXktY2lyY2xlLHVwLXNxdWFyZSxkb3duLXNxdWFyZSxsZWZ0LXNxdWFyZSxyaWdodC1zcXVhcmUsbG9naW4sbG9nb3V0LG1lbnUtZm9sZCxtZW51LXVuZm9sZCxib3JkZXItYm90dG9tLGJvcmRlci1ob3Jpem9udGFsLGJvcmRlci1pbm5lcixib3JkZXItb3V0ZXIsYm9yZGVyLWxlZnQsYm9yZGVyLXJpZ2h0LGJvcmRlci10b3AsYm9yZGVyLXZlcnRpY2xlLHBpYy1jZW50ZXIscGljLWxlZnQscGljLXJpZ2h0LHJhZGl1cy1ib3R0b21sZWZ0LHJhZGl1cy1ib3R0b21yaWdodCxyYWRpdXMtdXBsZWZ0LHJhZGl1cy11cHJpZ2h0LGZ1bGxzY3JlZW4sZnVsbHNjcmVlbi1leGl0LHF1ZXN0aW9uLHF1ZXN0aW9uLWNpcmNsZSxwbHVzLHBsdXMtY2lyY2xlLHBhdXNlLHBhdXNlLWNpcmNsZSxtaW51cyxtaW51cy1jaXJjbGUscGx1cy1zcXVhcmUsbWludXMtc3F1YXJlLGluZm8saW5mby1jaXJjbGUsZXhjbGFtYXRpb24sZXhjbGFtYXRpb24tY2lyY2xlLGNsb3NlLGNsb3NlLWNpcmNsZSxjbG9zZS1zcXVhcmUsY2hlY2ssY2hlY2stY2lyY2xlLGNoZWNrLXNxdWFyZSxjbG9jay1jaXJjbGUsd2FybmluZyxpc3N1ZXMtY2xvc2Usc3RvcCxlZGl0LGZvcm0sY29weSxzY2lzc29yLGRlbGV0ZSxzbmlwcGV0cyxkaWZmLGhpZ2hsaWdodCxhbGlnbi1jZW50ZXIsYWxpZ24tbGVmdCxhbGlnbi1yaWdodCxiZy1jb2xvcnMsYm9sZCxpdGFsaWMsdW5kZXJsaW5lLHN0cmlrZXRocm91Z2gscmVkbyx1bmRvLHpvb20taW4sem9vbS1vdXQsZm9udC1jb2xvcnMsZm9udC1zaXplLGxpbmUtaGVpZ2h0LGRhc2gsc21hbGwtZGFzaCxzb3J0LWFzY2VuZGluZyxzb3J0LWRlc2NlbmRpbmcsZHJhZyxvcmRlcmVkLWxpc3QsdW5vcmRlcmVkLWxpc3QscmFkaXVzLXNldHRpbmcsY29sdW1uLXdpZHRoLGNvbHVtbi1oZWlnaHQsYXJlYS1jaGFydCxwaWUtY2hhcnQsYmFyLWNoYXJ0LGRvdC1jaGFydCxsaW5lLWNoYXJ0LHJhZGFyLWNoYXJ0LGhlYXQtbWFwLGZhbGwscmlzZSxzdG9jayxib3gtcGxvdCxmdW5kLHNsaWRlcnMsYW5kcm9pZCxhcHBsZSx3aW5kb3dzLGllLGNocm9tZSxnaXRodWIsYWxpd2FuZ3dhbmcsZGluZ2Rpbmcsd2VpYm8tc3F1YXJlLHdlaWJvLWNpcmNsZSx0YW9iYW8tY2lyY2xlLGh0bWw1LHdlaWJvLHR3aXR0ZXIsd2VjaGF0LHlvdXR1YmUsYWxpcGF5LWNpcmNsZSx0YW9iYW8sc2t5cGUscXEsbWVkaXVtLXdvcmttYXJrLGdpdGxhYixtZWRpdW0sbGlua2VkaW4sZ29vZ2xlLXBsdXMsZHJvcGJveCxmYWNlYm9vayxjb2RlcGVuLGNvZGUtc2FuZGJveCxhbWF6b24sZ29vZ2xlLGNvZGVwZW4tY2lyY2xlLGFsaXBheSxhbnQtZGVzaWduLGFudC1jbG91ZCxhbGl5dW4semhpaHUsc2xhY2ssc2xhY2stc3F1YXJlLGJlaGFuY2UsYmVoYW5jZS1zcXVhcmUsZHJpYmJibGUsZHJpYmJibGUtc3F1YXJlLGluc3RhZ3JhbSx5dXF1ZSxhbGliYWJhLHlhaG9vLHJlZGRpdCxza2V0Y2gsYWxlcnQsYWltLGFjY291bnQtYm9vayxhcGFydG1lbnQsYXBpLGFwcHN0b3JlLGF1ZGlvLW11dGVkLGF1ZGl0LGJhbmssYmFyY29kZSxiYXJzLGJsb2NrLGJvb2ssYmVsbCxhcHBzdG9yZS1hZGQsYXVkaW8sYm9yZGVyLGJvcmRlcmxlc3MtdGFibGUsYnVnLGJyYW5jaGVzLGNhbWVyYSxjYWxjdWxhdG9yLGNhbGVuZGFyLGJ1aWxkLGNhcnJ5LW91dCxidWxiLGNhcixjbGVhcixjaSxjbG91ZC1kb3dubG9hZCxjbG91ZCxjbG91ZC1zeW5jLGNsb3VkLXNlcnZlcixjbG91ZC11cGxvYWQsY29kZSxjb2ZmZWUsY29tcHJlc3MsY29tcGFzcyxjb21tZW50LGNpLWNpcmNsZSxjb250YWluZXIsY29udHJvbCxjb3B5cmlnaHQsY3JlZGl0LWNhcmQsY2x1c3RlcixjdXN0b21lci1zZXJ2aWNlLGNvbnRhY3RzLGNvbnNvbGUtc3FsLGRhc2hib2FyZCxkYXRhYmFzZSxjb3B5cmlnaHQtY2lyY2xlLGRlbGV0ZS1jb2x1bW4sZGVza3RvcCxkZXBsb3ltZW50LXVuaXQsZGVsaXZlcmVkLXByb2NlZHVyZSxkaXNjb25uZWN0LGRpbmd0YWxrLGRvbGxhci1jaXJjbGUsZGlzbGlrZSxkZWxldGUtcm93LGRvbGxhcixjcm93bixkb3dubG9hZCxlbGxpcHNpcyxlbnZpcm9ubWVudCxldXJvLWNpcmNsZSxleGNlcHRpb24sZXhwYW5kLWFsdCxldXJvLGV4cGVyaW1lbnQsZXhwb3J0LGV4cGFuZCxleWUtaW52aXNpYmxlLGV5ZSxmaWxlLWFkZCxmaWVsZC1zdHJpbmcsZmlsZS1leGNsYW1hdGlvbixmaWxlLWRvbmUsZmllbGQtdGltZSxmaWxlLWV4Y2VsLGZpZWxkLWJpbmFyeSxmaWxlLWdpZixmaWxlLWltYWdlLGZpbGUsZmlsZS1tYXJrZG93bixmaWxlLXBwdCxmaWxlLXBkZixmaWVsZC1udW1iZXIsZmlsZS1zZWFyY2gsZmlsZS1zeW5jLGZpbGUtanBnLGZpbGUtdGV4dCxmaWx0ZXIsZmlsZS16aXAsZmxhZyxmb2xkZXItYWRkLGZpbGUtdW5rbm93bixmb2xkZXItb3BlbixmaXJlLGZpbGUtcHJvdGVjdCxmb2xkZXItdmlldyxmb2xkZXIsZm9yayxmb3JtYXQtcGFpbnRlcixmcm93bixmdW5kLXByb2plY3Rpb24tc2NyZWVuLGdpZnQsZ2F0ZXdheSxmdW5kLXZpZXcsZ2lmLGZ1bm5lbC1wbG90LGdvbGQsZ2xvYmFsLGdyb3VwLGhkZCxmdW5jdGlvbixoaXN0b3J5LGZpbGUtd29yZCxob21lLGlkY2FyZCxob3VyZ2xhc3MsaGVhcnQsaW5zZXJ0LXJvdy1iZWxvdyxpbXBvcnQsaW5zZXJ0LXJvdy1sZWZ0LGluc2VydC1yb3ctYWJvdmUsaW5zZXJ0LXJvdy1yaWdodCxrZXksaW5ib3gsaW5zdXJhbmNlLGxhcHRvcCxsaWtlLGxpbmUsbGluayxsb2FkaW5nLTMtcXVhcnRlcnMsbG9hZGluZyxsb2NrLG1hbixtYWlsLG1hYy1jb21tYW5kLG1lZGljaW5lLWJveCxsYXlvdXQsbWVoLGludGVyYWN0aW9uLG1lc3NhZ2UsbWVudSxtZXJnZS1jZWxscyxtb2JpbGUsbW9uZXktY29sbGVjdCxub2RlLWluZGV4LG1vbml0b3Isbm9kZS1leHBhbmQsbW9yZSxudW1iZXIsbm90aWZpY2F0aW9uLG9uZS10by1vbmUscGVyY2VudGFnZSxwaG9uZSxwYXBlci1jbGlwLHBhcnRpdGlvbixwaWN0dXJlLG5vZGUtY29sbGFwc2UscGxheS1zcXVhcmUscGF5LWNpcmNsZSxwb3VuZCxwcm9maWxlLHByb2plY3QscHJvcGVydHktc2FmZXR5LHBvd2Vyb2ZmLHB1c2hwaW4scXJjb2RlLHByaW50ZXIscG91bmQtY2lyY2xlLHB1bGwtcmVxdWVzdCxyZXN0LHJlYWQscmVsb2FkLHJlY29uY2lsaWF0aW9uLHJvYm90LHJvY2tldCxyb3RhdGUtcmlnaHQsc2FmZXR5LWNlcnRpZmljYXRlLHJlZC1lbnZlbG9wZSxyb3RhdGUtbGVmdCxzYXZlLHNhZmV0eSxzZWFyY2gsc2VjdXJpdHktc2NhbixzY2FuLHNlbmQsc2V0dGluZyxzZWxlY3Qsc2hha2Usc2hvcHBpbmctY2FydCxzaXN0ZXJub2RlLHNob3Asc2hvcHBpbmcsc2hhcmUtYWx0LHNjaGVkdWxlLHNraW4sc21pbGUsc29sdXRpb24sc291bmQsc3BsaXQtY2VsbHMsc3RhcixzdWJub2RlLHRhZ3MsdGFibGV0LHRhZyx0YWJsZSxzd2l0Y2hlcixzeW5jLHRlYW0sdG9vbCx0cmFkZW1hcmstY2lyY2xlLHRodW5kZXJib2x0LHRvLXRvcCx0cmFuc2xhdGlvbix0cmFkZW1hcmssdHJvcGh5LHVuZ3JvdXAsdW5sb2NrLHVwbG9hZCx0cmFuc2FjdGlvbix1c2VyLWRlbGV0ZSx1c2IsdXNlci1hZGQsdXNlcmdyb3VwLWRlbGV0ZSx2aWRlby1jYW1lcmEtYWRkLHZlcmlmaWVkLHVzZXJncm91cC1hZGQsdXNlcix1c2VyLXN3aXRjaCx2aWRlby1jYW1lcmEsd2lmaSx3YWxsZXQsd2hhdHMtYXBwLHdvbWFuLGFwcHN0b3JlJy5zcGxpdCgnLCcpXHJcbiAgc3RhdGljIGF3YWl0X0RhdGE6YW55ID0ge307XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBqc29uIGV4dGVuZHMgT2JqZWN0IHtcclxuICBba2V5OiBzdHJpbmddOiBhbnlcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFNlcnZlclBhZ2luYXRpb25TdGFuZGFyZCB7XHJcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcclxuICBzaG93Q291bnQ6IG51bWJlcjtcclxuICB0b3RhbFJlc3VsdDogbnVtYmVyO1xyXG4gIHRvdGFsUGFnZT86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEh0dHBSZXNwb25zZURhdGFTdGFuZGFyZCB7XHJcbiAgc3RhdGU6IG51bWJlcjsgLy8g5Li6MeaJjeaYr+aIkOWKn1xyXG4gIGRhdGE6IGpzb24gfCBbe31dIHwgb2JqZWN0IHwgc3RyaW5nIHwgYW55OyAvL+ayoeacieWAvCBkYXRhOiAnJ1xyXG4gIG1lc3M6IHN0cmluZzsgLy/ov5Tlm57nmoTmtojmga9cclxuICBwYWdlPzogU2VydmVyUGFnaW5hdGlvblN0YW5kYXJkO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEh0dHBSc2Vwb25zZVRyYW5zZm9ybUNlbGwge1xyXG4gIFtrZXk6IHN0cmluZ106IGpzb25cclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEh0dHBPcHRpb25zIHtcclxuICBoZWFkZXJzPzoge30sXHJcbiAgaXNKc29uRW5jb2RlPzogYm9vbGVhblxyXG4gIGlzVXJsRW5jb2RlPzogYm9vbGVhblxyXG4gIGlzQXV0b1Nob3dNZXNzYWdlPzogYm9vbGVhblxyXG4gIGlzV2l0aENyZWRlbnRpYWxzPzogYm9vbGVhblxyXG4gIGlzQ29tbW9uSHR0cEhlYWRlcj86IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGVudW0gVXNlckFjdGlvbiB7XHJcbiAgQURELFxyXG4gIEVESVQsXHJcbiAgREVMLFxyXG4gIFFVRVJZLFxyXG4gIFNVUFBFUkFERFxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRUNoYXJ0c09wdGlvbiB7XHJcbiAgdGl0bGU/OiBhbnksXHJcbiAgbGVnZW5kPzogYW55LFxyXG4gIGdyaWQ/OiBhbnksXHJcbiAgYnJ1c2g/OiBhbnksXHJcbiAgdG9vbGJveD86IGFueSxcclxuICB0b29sdGlwPzogYW55LFxyXG4gIGRhdGFzZXQ/OiBhbnksXHJcbiAgeEF4aXM/OiB7XHJcbiAgICB0eXBlPzogJ2NhdGVnb3J5JyxcclxuICAgIGRhdGE/OiBzdHJpbmdbXSxcclxuICAgIGJvdW5kYXJ5R2FwPzogYm9vbGVhbixcclxuICAgIHNob3c/OiBib29sZWFuLFxyXG4gIH0sXHJcbiAgeUF4aXM/OiBhbnksLy97ICAgIHNob3c6ZmFsc2UsICAgIHR5cGU6ICd2YWx1ZScsICAgIG1pbkludGVydmFsOiAxLH1bXVxyXG4gIHNlcmllcz86IHtcclxuICAgIG5hbWU/OiBzdHJpbmcsXHJcbiAgICBkYXRhPzogYW55W10sXHJcbiAgICBpdGVtU3R5bGU/OiBhbnksXHJcbiAgICBzdGFjaz86IGFueSxcclxuICAgIGVtcGhhc2lzPzogYW55LFxyXG4gICAgbGFiZWw/OiBhbnksXHJcbiAgICByYWRpdXM/OiBhbnlbXSxcclxuICAgIHNtb290aD86IGJvb2xlYW4sXHJcbiAgICBzZXJpZXNMYXlvdXRCeT86IHN0cmluZyxcclxuICAgIHR5cGU/OiAnYmFyJyB8ICdwaWUnIHwgJ2xpbmUnLFxyXG4gICAgYmFja2dyb3VuZFN0eWxlPzogYW55XHJcbiAgfVtdXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBdHJGb3JtT3B0IHtcclxuICB0eXBlOiAnYWRkJyB8ICdlZGl0JyB8ICd2aWV3JyxcclxuICBsYXlvdXQ/OiBcImZ1bGxcIiB8ICcxbDJjJyB8ICcxbDFjJyxcclxuICBpdGVtczogQXRyRm9ybURldGFpbFtdLC8v6KGo5Y2V6aG555uuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBdHJGb3JtRGV0YWlsIHtcclxuICBsYWJlbDogc3RyaW5nLFxyXG4gIHR5cGU6ICdjYXNjYWRlcicgfCAncmFkaW8nIHwgJ3RleHQnIHwgJ2ltYWdlJyB8ICdzZWxlY3QnIHwgJ2RhdGUnIHwgJ251bWJlcicgfCAndGVscGhvbmUnIHwgJ3Bhc3N3b3JkJyB8ICdjaGVja2JveCcgfCAnZGF5UmFuZ2UnXHJcbiAgICB8ICdlZGl0b3InIHwgJ3RleHRhcmVhJyB8ICdkYXRlVGltZScgfCAndGl0bGUnIHwgJ2RhdGVSYW5nZScgfCAnc2VsZWN0YycgfCAnc2VsZWN0SWNvbicgfCAndHJlZVNlbGVjdCcgfCAnc3dpdGNoJyB8ICdidXR0b25zJyxcclxuICBrZXk6IHN0cmluZyxcclxuICBpc0hpZGRlbj86IGJvb2xlYW4sXHJcbiAgZGVmYXVsdFZhbHVlPzogYW55LFxyXG4gIHZhbHVlPzogYW55LC8v57yW6L6R5LiL5Y6f5aeL5pWw5YC8XHJcbiAgZGljdENvZGU/OiBzdHJpbmcsLy9zZWxlY3Qg5qih5byP5LiL6YWN572uXHJcbiAgc3Bhbj86IG51bWJlciwvL+aYvuekuuWuveW6plxyXG4gIHZhbGlkYXRvcnM/OiBBdHJGb3JtVmFsaWRbXSwvL+mqjOivgeadoeS7tlxyXG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuIHwgc3RyaW5nLC8v6ZqQ5oCn5p2h5Lu2IOaXoOmcgOWhq+WGmSwgc3RyaW5n57G75Z6L5qC85byP5ZCMb3BlcmF0b3JcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZyxcclxuICBpbWFnZU9wdHM/OiBJbWFnZU9wdHMsXHJcbiAgZWRpdENvbnRlbnQ/OiBzdHJpbmcsXHJcbiAgaGVpZ2h0PzogbnVtYmVyLC8vZWRpdG9y5pyJ5pWIXHJcbiAgZGlzYWJsZT86IGJvb2xlYW4sXHJcbiAgbHNwYW4/OiBudW1iZXIsXHJcbiAgY3NwYW4/OiBudW1iZXIsXHJcbiAgcm93cz86IG51bWJlciwvL3RleHRhcmVhIOaYvuekuuihjOaVsFxyXG4gIG9wZXJhdG9yPzogc3RyaW5nLC8v5pi+56S65pON5L2c56ymIOagvOW8jyDlpoI6c3RhdHVzfGVxfDBcclxuICBidXR0b24/OiBmb3JtQnV0dG9uLFxyXG4gIHJlYWRvbmx5PzogYm9vbGVhbixcclxuICBkYXRlRm9ybWF0Pzogc3RyaW5nLFxyXG4gIGRpY3RMaXN0PzogQ3VzRGljdFtdLFxyXG4gIG56TW9kZT86ICdtdWx0aXBsZScgfCAndGFncycgfCAnZGVmYXVsdCcsXHJcbiAgc2VsZWN0VXJsPzogeyB1cmw6IHN0cmluZywgY29udmVydD86IHN0cmluZywgdHlwZT86ICdnZXQnIHwgJ3Bvc3QnLCBob3N0PzogJ29zcycgfCAnc2VydmUnLCBpc011bHRpcGxlPzogYm9vbGVhbiwgaWdub3JlRGljdExpc3Q/OiBib29sZWFuIH0sXHJcbiAgdHJlZUxpc3Q/OiB7IGtleTogc3RyaW5nLCB0aXRsZTogc3RyaW5nIH1bXSxcclxuICBlbmRzPzogc3RyaW5nLFxyXG4gIHByb3Bvc2FsPzogc3RyaW5nLFxyXG4gIHRlbXA/OiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gIGZpcnN0VGVtcD86IFRlbXBsYXRlUmVmPGFueT4sXHJcbiAgbWluTnVtYmVyPzogYW55LFxyXG4gIG1heE51bWJlcj86IGFueSxcclxuICBub3ROdWxsPzogYm9vbGVhblxyXG4gIG56U2hvd1RpbWU/OiBib29sZWFuIHwgeyBuekZvcm1hdDogc3RyaW5nIH0sXHJcbiAgYnV0dG9ucz86IGZvcm1CdXR0b25bXVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyRm9ybVZhbGlkIHtcclxuICB0eXBlOiAncmVxdWlyZWQnIHwgJ2VtYWlsJyB8ICd0ZWxwaG9uZScgfCAnbWF4bGVuZ3RoJyB8ICdtaW5sZW5ndGgnIHwgJ3BhdHRlcm4nIHwgJ29wZXJhdG9yJyxcclxuICBlcnJvckxhYmVsOiBzdHJpbmcsXHJcbiAgbWF4bGVuZ3RoPzogbnVtYmVyLFxyXG4gIG1pbmxlbmd0aD86IG51bWJlcixcclxuICBwYXR0ZXJuVmFsdWU/OiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGZvcm1CdXR0b24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBpc1Nob3c6IGJvb2xlYW4sXHJcbiAgY29kZTogc3RyaW5nLFxyXG4gIGJ0blR5cGU/OiBzdHJpbmcsXHJcbiAgb3BlcmF0b3I/OiBzdHJpbmcsLy8vL+aYvuekuuaTjeS9nOespiDmoLzlvI8g5aaCOnN0YXR1c3xlcXwwXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBjb2xvck9wZXJhdG9yIHtcclxuICBjb2xvcjogc3RyaW5nLFxyXG4gIG9wZXJhdG9yOiBzdHJpbmcsLy/op4TliJlcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0clF1ZXlyT3B0IHtcclxuICBhY3Rpb25zPzogVGFibGVBY3Rpb25bXSxcclxuICBpc0luZGV4PzogYm9vbGVhbiwvL+aYr+WQpuaYvuekuuW6j+WPtyxcclxuICBjb2xvcj86IGNvbG9yT3BlcmF0b3IsLy/popzoibJcclxuICBjaGVja0JveD86IHtcclxuICAgIGlzU2hvd0NoZWNrYm94PzogYm9vbGVhbixcclxuICAgIGlzUmFkaW8/OiBib29sZWFuLFxyXG4gICAgaXNGb3JiaWQ/OiBib29sZWFuLC8vdHJ1ZeaXtuWPquWFgeiuuOeCueWHu+WkmumAieahhumAieaLqVxyXG4gIH0sXHJcbiAgLy8gaXNTaG93Q2hlY2tib3g/OiBib29sZWFuLFxyXG4gIHNob3dOdW0/OiBudW1iZXIsXHJcbiAgdXJsOiBzdHJpbmcsXHJcbiAgc29ydD86IHN0cmluZyxcclxuICBoZWFkZXJzPzogQXRyUXVlcnlIZWFkZXJbXSxcclxuICB0YWJsZXM6IFRhYmxlW10sXHJcbiAgaXNBdXRvUXVlcnk/OiBib29sZWFuLC8vdHJ1ZeaXtuWAmem7mOiupOinpuWPkeafpeivolxyXG4gIGRlZmF1bHRQYXJhbXM/OiBqc29uLFxyXG4gIGlzSGlkZVF1ZXJ5PzogYm9vbGVhblxyXG4gIC8vIGlzUmFkaW8/OmJvb2xlYW4sXHJcbiAgLy8gaXNGb3JiaWQ/OmJvb2xlYW4sLy90cnVl5pe25Y+q5YWB6K6454K55Ye75aSa6YCJ5qGG6YCJ5oupXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUYWJsZSB7XHJcbiAgbmFtZTogc3RyaW5nLC8v6KGo5aS05ZCN56ewXHJcbiAga2V5Pzogc3RyaW5nLC8v5a6e6ZmF5pWw5o2u5a2X5q61XHJcbiAgZGVmYXVsdFZhbD86IGFueSxcclxuICBzb3J0S2V5Pzogc3RyaW5nLC8v5piv5ZCm5o6S5bqPXHJcbiAgc29ydGFibGU/OiBib29sZWFuLFxyXG4gIHR5cGU6ICd0ZXh0Y29sb3InIHwgJ2ZpeGVkVGV4dCcgfCAndGV4dCcgfCAnbGluaycgfCAnYWN0aW9uJyB8ICdpbWFnZScgfCAnZGF0ZScgfCAnZGF0ZVRpbWUnIHwgJ3NEYXRlVGltZScgfCAnZGljdCdcclxuICAgIHwgJ2lubmVySHRtbCcsLy/nsbvlnovvvJog5paH5a2X44CB6ZO+5o6l44CB5pON5L2cXHJcbiAgZGljdENvZGU/OiBzdHJpbmcsXHJcbiAgaXNTaG93PzogYm9vbGVhbixcclxuICB3aWR0aD86IHN0cmluZywvLzE1MHB4XHJcbiAgYWN0aW9ucz86IFRhYmxlQWN0aW9uW10sXHJcbiAgaXNSb3dTcGFuPzogYm9vbGVhbixcclxuICBpc1JpZ2h0PzogYm9vbGVhblxyXG4gIGlzTGVmdD86IGJvb2xlYW4sXHJcbiAgY29sb3I/OiBjb2xvck9wZXJhdG9yLC8v6aKc6ImyXHJcbiAgY29sb3JTaG93Pzogc3RyaW5nLFxyXG4gIGlubmVySHRtbEJhY2s/OiBGdW5jdGlvbixcclxuICBzdHlsZUNhbGxCYWNrPzpGdW5jdGlvblxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyUXVlcnlIZWFkZXIge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICB0eXBlOiAnY2FzY2FkZXInIHwgJ3RleHQnIHwgJ251bWJlcicgfCAnY2hlY2tib3gnIHwgJ3NlbGVjdCcgfCAnZGF0ZXBpY2tlcicgfCAnc2VsZWN0Q3VzJyB8ICdkYXRlUmFuZ2UnIHwgJ3NkYXRlJyB8ICd0cmVlU2VsZWN0JyB8ICdkYXlSYW5nZScsXHJcbiAgbnpNb2RlPzogJ211bHRpcGxlJyB8ICd0YWdzJyB8ICdkZWZhdWx0JyxcclxuICBrZXk6IHN0cmluZyxcclxuICBpc1Nob3c/OiBib29sZWFuLFxyXG4gIGNvZGU/OiBzdHJpbmcsXHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXHJcbiAgc3Bhbj86IG51bWJlcixcclxuICBkaWN0Q29kZT86IHN0cmluZywvL+Wtl+WFuOe8lueggVxyXG4gIGRpY3RMaXN0PzogQ3VzRGljdFtdLFxyXG4gIGRlZmF1bHRWYWw/OiBhbnkgLy8g6buY6K6k5YC8XHJcbiAgbWF4VGFnQ291bnQ/OiBudW1iZXIsXHJcbiAgbHNwYW4/OiBudW1iZXIsXHJcbiAgY3NwYW4/OiBudW1iZXIsXHJcbiAgZGlzYWJsZUNsZWFyPzogYm9vbGVhbixcclxuICB0cmVlTGlzdD86IHsga2V5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcgfVtdXHJcbiAgLyoqXHJcbiAgICog5qC85byPXHJcbiAgICogY29udmVydDona2V5fGlkLHRpdGxlfHJlYWxOYW1lJyh0cmVlU2VsZWN0KVxyXG4gICAqICAgIHZhbHVlfGlkLGxhYmVsfG5hbWUoc2VsZWN0Q3VzKVxyXG4gICAqL1xyXG4gIHNlbGVjdFVybD86IHsgdXJsOiBzdHJpbmcsIGNvbnZlcnQ6IHN0cmluZywgaXNNdWx0aXBsZT86IGJvb2xlYW4gfSwvL2NvbnZlcnQ6IG5ld0tleXxvbGRLZXksbmV3S2V5fG9sZEtleSjmjqXlj6Pov5Tlm57nmoTlgLwpXHJcbiAgaWNvbj86IHsgaXNTaG93OiBib29sZWFuLCBjb2RlOiBzdHJpbmcsIGljb246IGFueSB9LFxyXG4gIGRhdGVNb2RlPzogJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJyxcclxuICBuelNob3dUaW1lPzogYm9vbGVhbiB8IHsgbnpGb3JtYXQ6IHN0cmluZyB9LFxyXG4gIG56U2hvd05vdz86IGJvb2xlYW4sXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUYWJsZUFjdGlvbiB7XHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGNvZGU6IHN0cmluZyxcclxuICB1cmw/OiBzdHJpbmcsXHJcbiAgZ1R5cGU/OiAnbm9ybWFsJyB8ICd1cGxvYWQnLFxyXG4gIGRhdGE/OiBhbnksXHJcbiAgZmlyc3REYXRhPzogYW55LFxyXG4gIGRhdGFzPzogYW55W10sXHJcbiAgaWNvbj86IHN0cmluZyxcclxuICBudW1iZXJPZkNoZWNrZWQ/OiBudW1iZXIsXHJcbiAgdHlwZT86ICdyb3dzJyB8ICdyb3cnLFxyXG4gIG9wZXJhdG9yPzogc3RyaW5nLC8v5pi+56S65pON5L2c56ymXHJcbiAgYnV0dG9uVHlwZT86ICdwcmltYXJ5JyB8ICdkYXNoZWQnIHwgJ2RhbmdlcicgfCAnZGVmYXVsdCcgfCAnbGluaycsXHJcbiAgdmFsdWU/OiBhbnksXHJcbiAgd2l0aG91dFJvbGU/OiBib29sZWFuLy/kuI3pnIDopoHmnYPpmZDmjqfliLZcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEZvcm1BY3Rpb24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBjb2RlOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERpY3Qge1xyXG4gIGlkOiBzdHJpbmcsXHJcbiAgdHlwZU5hbWU6IHN0cmluZyxcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEaWN0R3JvdXAge1xyXG4gIGdyb3VwQ29kZTogc3RyaW5nLFxyXG4gIGRpY3RzOiBEaWN0W11cclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEN1c0RpY3Qge1xyXG4gIGxhYmVsOiBzdHJpbmcsXHJcbiAgdmFsdWU6IHN0cmluZ1xyXG4gIGNoaWxkcmVuPzphbnksXHJcbiAgaXNTZWxlY3Q/OiBib29sZWFuLy9jaGVja0JveOm7mOiupOmAieS4rVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW1hZ2VPcHRzIHtcclxuICBsaW1pdD86IG51bWJlcixcclxuICBuelNpemU/OiBudW1iZXIsXHJcbiAgdXBsb2FkRGlyOiBzdHJpbmcsXHJcbiAgcmVtb3ZlQWN0aW9uPzogc3RyaW5nLFxyXG4gIGltYWdlTGlzdD86IGFueVtdLFxyXG4gIGtleT86IHN0cmluZyxcclxuICBsYWJlPzogc3RyaW5nLFxyXG4gIGZpbGVOYW1lPzogc3RyaW5nLFxyXG4gIHVwbG9hZFR5cGU/OiAnZHJhZycgfCAnJyB8ICdidXR0b24nLFxyXG4gIG56RmlsZVR5cGU/OiBzdHJpbmcsXHJcbiAga2VlcE5hbWU/OiBib29sZWFuXHJcbiAgYnRuTmFtZT86c3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBlcXVpcFRlc3REYXRhIHtcclxuICBjb2RlOiBzdHJpbmdcclxuICBpdGVtTmFtZTogc3RyaW5nXHJcbiAgemhvdTE6IG51bWJlclxyXG4gIHpob3UyOiBudW1iZXJcclxuICB6aG91MzogbnVtYmVyXHJcbiAgemhvdTQ6IG51bWJlclxyXG4gIHpob3U1OiBudW1iZXJcclxuICB6aG91NjogbnVtYmVyXHJcbiAgaXNXcm9uZzE/OiBib29sZWFuXHJcbiAgaXNXcm9uZzI/OiBib29sZWFuXHJcbiAgaXNXcm9uZzM/OiBib29sZWFuXHJcbiAgaXNXcm9uZzQ/OiBib29sZWFuXHJcbiAgaXNXcm9uZzU/OiBib29sZWFuXHJcbiAgaXNXcm9uZzY/OiBib29sZWFuXHJcbn1cclxuXHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgU2VsZWN0QWN0aW9uIHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgY29kZTogXCJuZ01vZGVsQ2hhbmdlXCIgfCAnbnpPcGVuQ2hhbmdlJyxcclxuICBkYXRhPzogYW55LFxyXG4gIGtleT86IHN0cmluZyxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZW51SWNvbiB7XHJcbiAgLyoqIFR5cGUgZm9yIGljb24gKi9cclxuICB0eXBlOiAnY2xhc3MnIHwgJ2ljb24nIHwgJ2ljb25mb250JyB8ICdpbWcnO1xyXG4gIC8qKiBWYWx1ZSBmb3IgdGhlIGljb24sIGNhbiBiZSBzZXQgQ2xhc3MgTmFtZSwgbnotaWNvbiBvZiBgbnpUeXBlYCwgaW1hZ2UgKi9cclxuICB2YWx1ZT86IHN0cmluZztcclxuICAvKiogVHlwZSBvZiB0aGUgYW50IGRlc2lnbiBpY29uLCBkZWZhdWx0OiBgb3V0bGluZWAgKi9cclxuICB0aGVtZT86ICdvdXRsaW5lJyB8ICd0d290b25lJyB8ICdmaWxsJztcclxuICAvKiogUm90YXRlIGljb24gd2l0aCBhbmltYXRpb24sIGRlZmF1bHQ6IGBmYWxzZWAgKi9cclxuICBzcGluPzogYm9vbGVhbjtcclxuICAvKiogT25seSBzdXBwb3J0IHRoZSB0d28tdG9uZSBpY29uLiBTcGVjaWZpYyB0aGUgcHJpbWFyeSBjb2xvciAqL1xyXG4gIHR3b1RvbmVDb2xvcj86IHN0cmluZztcclxuICAvKiogVHlwZSBvZiB0aGUgaWNvbiBmcm9tIGljb25mb250ICovXHJcbiAgaWNvbmZvbnQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVudSB7XHJcbiAgdGV4dD86IHN0cmluZztcclxuICBsaW5rPzogc3RyaW5nO1xyXG4gIHJlYWxMaW5rPzogc3RyaW5nO1xyXG4gIGlzU2VsZWN0ZWQ/OiBCb29sZWFuO1xyXG4gIGlzT3Blbj86IEJvb2xlYW47XHJcbiAgdGFyZ2V0PzogJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnO1xyXG4gIC8qKiBJY29uIGZvciB0aGUgbWVudSBpdGVtLCBvbmx5IHZhbGlkIGZvciB0aGUgZmlyc3QgbGV2ZWwgbWVudSAqL1xyXG4gIGljb24/OiBzdHJpbmcgfCBNZW51SWNvbiB8IG51bGw7XHJcbiAgLyoqIEJhZGdldCBmb3IgdGhlIG1lbnUgaXRlbSB3aGVuIGBncm91cGAgaXMgYHRydWVgICovXHJcbiAgb3BlcmF0aW9uPzogc3RyaW5nO1xyXG4gIC8qKiBXaGV0aGVyIHNob3J0Y3V0IG1lbnUgaXRlbSAqL1xyXG4gIHNlcT86IG51bWJlcjtcclxuICBsZXZlbD86IG51bWJlcjtcclxuICAvKiogV2hldGVyIHNob3J0Y3V0IG1lbnUgcm9vdCBub2RlICovXHJcbiAgbGlua1R5cGU/OiBzdHJpbmc7XHJcbiAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgcmV1c2UsIG5lZWQgdG8gY29vcGVyYXRlIHdpdGggdGhlIGByZXVzZS10YWJgIGNvbXBvbmVudCAqL1xyXG4gIGNoaWxkcmVuPzogTWVudVtdO1xyXG4gIGlzVmlzaWJsZT86ICcwJyB8ICcxJ1xyXG59XHJcbiJdfQ==
@@ -164,9 +164,14 @@ export class ToolsUtil {
164
164
  * @param pointsArr
165
165
  */
166
166
  static judgeInRec(p, pointsArr) {
167
+ pointsArr = pointsArr.map(item => {
168
+ return { x1: Number(item.x1 || item.x || 0), y1: Number(item.y1 || item.y || 0) };
169
+ });
170
+ p = { x1: p.x1 || p.x || 0, y1: p.y1 || p.y || 0 };
167
171
  let px = Number(p.x1), py = Number(p.y1), flag = false, //穿越边框
168
172
  inRect = false; //是否在多边形的边或者端点上
169
173
  let start = pointsArr[0];
174
+ //如果数组首尾没有相连,手动添加};
170
175
  let end = pointsArr[pointsArr.length - 1];
171
176
  //如果数组首尾没有相连,手动添加
172
177
  pointsArr = start.x1 != end.x1 || start.y1 != end.y1 ? pointsArr.concat(start) : pointsArr;
@@ -614,4 +619,4 @@ ToolsUtil.allEqual = (...array) => array.every(item => item === array[0]);
614
619
  * @param array
615
620
  */
616
621
  ToolsUtil.satisfiedFn = (callback, ...array) => array.every(callback);
617
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9vbHNVdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29yZS91dGlscy9Ub29sc1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBSXRFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTFCLE1BQU0sT0FBTyxTQUFTO0lBa0JwQixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU8sSUFBSSxFQUFFLENBQUE7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFXO1FBQ3pCLElBQUksR0FBRyxHQUFHLDRHQUE0RyxDQUFDO1FBQ3ZILE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFTO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUNsQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuQztRQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQVE7UUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3JFLE9BQU8sS0FBSyxDQUFBO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBYSxFQUFFLFlBQXNCO1FBQzVELElBQUksY0FBYyxHQUFRLEVBQUUsQ0FBQTtRQUM1QixLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRTtZQUMxQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7Z0JBQzFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO2FBQzdEO2lCQUFNO2dCQUNMLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO2FBQ3RDO1NBQ0Y7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFRO1FBQ3hCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQTBCLEVBQUUsTUFBMEI7UUFDdkUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEgsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQThCLEVBQUUsUUFBOEI7UUFDbEYsYUFBYTtRQUNiLHNCQUFzQjtRQUN0QixJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFdEUsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO1FBQ25FLENBQUMsR0FBRyxFQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztRQUNuRSxDQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUE7UUFDbEUsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO1FBQ25FLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMs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O1FBQ3RDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN0QyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDckMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBNEMsRUFBRSxNQUE0QyxFQUFFLE1BQTRDO1FBQzFKLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN0QyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdEMsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZDLGVBQWU7UUFDZixJQUFJLEVBQUUsR0FBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxFQUFFLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFBO1FBQzdCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFBO1FBQzdCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFBO1FBQzdCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFBO1FBQzdCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUE7UUFDMUMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDN0MsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDN0MsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDN0MsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsUUFBUSxD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QyxFQUFFLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTlFOzs7OztHQUtHO0FBQ0kscUJBQVcsR0FBRyxDQUFDLFFBQXFDLEVBQUUsR0FBRyxLQUFZLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2pzb24sIEF0ckZvcm1PcHQsIGF0cl9zdGF0aWNfZGF0YXN9IGZyb20gJy4uL2Jhc2UvYXRyLWNvbW1vbic7XHJcbmltcG9ydCB7Zm9ybWF0RGF0ZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtIdHRwSGVhZGVyc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7U2ltcGxlQ2hhbmdlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtWYWxpZGF0b3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtTZXNzaW9uU3RvcmFnZVV0aWx9IGZyb20gJy4vc2Vzc2lvbnN0b3JhZ2UudXRpbCc7XHJcbmltcG9ydCB7dWxpZH0gZnJvbSAndWxpZCc7XHJcblxyXG5leHBvcnQgY2xhc3MgVG9vbHNVdGlsIHtcclxuICBzdGF0aWMgb3NzUHJlZml4OiBzdHJpbmcgPSAnJztcclxuICBzdGF0aWMgZ2V0T3JnQ29kZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIC8vIHZhciBvcmdDb2RlID0gJyc7XHJcbiAgICAvLyB2YXIgaHJlZnMgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnPycpXHJcbiAgICAvLyBpZiAoaHJlZnMubGVuZ3RoID49IDIpIHtcclxuICAgIC8vICAgdmFyIHBhcmFtU3RyID0gaHJlZnNbMV07XHJcbiAgICAvLyAgIC8v5Y+C5pWw5a2X56ym5Liy6YeM5pyJ5rKh5bimID0/LyNcclxuICAgIC8vICAgb3JnQ29kZSA9IHBhcmFtU3RyLnNwbGl0KCc9JylbMF07XHJcbiAgICAvLyAgIG9yZ0NvZGUgPSBvcmdDb2RlLnNwbGl0KCc/JylbMF07XHJcbiAgICAvLyAgIG9yZ0NvZGUgPSBvcmdDb2RlLnNwbGl0KCcvJylbMF07XHJcbiAgICAvLyAgIG9yZ0NvZGUgPSBvcmdDb2RlLnNwbGl0KCcjJylbMF07XHJcbiAgICAvLyAgIG9yZ0NvZGUgPSBvcmdDb2RlLnNwbGl0KCcvJylbMF07XHJcbiAgICAvLyB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFVsaWQoKSB7XHJcbiAgICByZXR1cm4gdWxpZCgpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNCYXNlNjQoc3RyaW5nOiBhbnkpIHtcclxuICAgIGxldCByZWcgPSAvXlxccypkYXRhOihbYS16XStcXC9bYS16MC05LSsuXSsoO1thLXotXSs9W2EtejAtOS1dKyk/KT8oO2Jhc2U2NCk/LChbYS16MC05ISQmJywoKSorOz1cXC0uX346QFxcLz8lXFxzXSo/KVxccyokL2k7XHJcbiAgICByZXR1cm4gcmVnLnRlc3Qoc3RyaW5nKVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRhdGFVUkl0b0Jsb2IoY29kZTogYW55KSB7XHJcbiAgICBjb25zdCBwYXJ0cyA9IGNvZGUuc3BsaXQoJztiYXNlNjQsJyk7XHJcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IHBhcnRzWzBdLnNwbGl0KCc6JylbMV07XHJcbiAgICBjb25zdCByYXcgPSB3aW5kb3cuYXRvYihwYXJ0c1sxXSk7XHJcbiAgICBjb25zdCByYXdMZW5ndGggPSByYXcubGVuZ3RoO1xyXG4gICAgY29uc3QgdUludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHJhd0xlbmd0aCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhd0xlbmd0aDsgKytpKSB7XHJcbiAgICAgIHVJbnQ4QXJyYXlbaV0gPSByYXcuY2hhckNvZGVBdChpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgQmxvYihbdUludDhBcnJheV0sIHt0eXBlOiBjb250ZW50VHlwZX0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzTnVsbCh2YWw6IGFueSkge1xyXG4gICAgaWYgKHZhbCB8fCBbJ2Jvb2xlYW4nLCAnc3RyaW5nJywgJ251bWJlciddLnNvbWUodiA9PiB0eXBlb2YgdmFsID09IHYpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRDb250cm9sc0NvbmZpZyhkYXRhRnJvbTogYW55LCByZXF1aXJlZFJ1bGU6IHN0cmluZ1tdKSB7XHJcbiAgICBsZXQgY29udHJvbHNDb25maWc6IGFueSA9IHt9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhRnJvbSkge1xyXG4gICAgICBpZiAocmVxdWlyZWRSdWxlLnNvbWUoaXRlbSA9PiBpdGVtID09IGtleSkpIHtcclxuICAgICAgICBjb250cm9sc0NvbmZpZ1trZXldID0gW2RhdGFGcm9tW2tleV0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250cm9sc0NvbmZpZ1trZXldID0gW2RhdGFGcm9tW2tleV1dXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb250cm9sc0NvbmZpZztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBodHRwU3VjY2VzKHJlczogYW55KSB7XHJcbiAgICByZXR1cm4gWycyMDAnLCAnMjAxJywgJzIwNCddLnNvbWUodiA9PiByZXMuc3RhdHVzID09IHYpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDorqHnrpfkuKTngrnlnZDmoIfot53nprtcclxuICAgKiBAcGFyYW0gcG9pbnQxXHJcbiAgICogQHBhcmFtIHBvaW50MlxyXG4gICAqL1xyXG4gIHN0YXRpYyBnZXREaXN0YW5jZShwb2ludDE6IHsgeDogYW55LCB5OiBhbnkgfSwgcG9pbnQyOiB7IHg6IGFueSwgeTogYW55IH0pIHtcclxuICAgIGxldCBkaXN0YW5jZSA9IE1hdGguc3FydCgocG9pbnQyLnggLSBwb2ludDEueCkgKiAocG9pbnQyLnggLSBwb2ludDEueCkgKyAocG9pbnQyLnkgLSBwb2ludDEueSkgKiAocG9pbnQyLnkgLSBwb2ludDEueSkpO1xyXG4gICAgcmV0dXJuIGRpc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yik5pat57q/5q615piv5ZCm55u45LqkLOebuOS6pOi/lOWbnuS6pOeCueWdkOagh1xyXG4gICAqIEBwYXJhbSBwMVxyXG4gICAqIEBwYXJhbSBwMlxyXG4gICAqL1xyXG4gIHN0YXRpYyBjaGVja0ludGVyc2VjdChsaW5lQXJyMTogeyB4OiBhbnksIHk6IGFueSB9W10sIGxpbmVBcnIyOiB7IHg6IGFueSwgeTogYW55IH1bXSkge1xyXG4gICAgLy/op6Pnur/mgKfmlrnnqIvnu4TmsYLnur/mrrXkuqTngrlcclxuICAgIC8v5aaC5p6c54i25q+N5Li6MO+8jOWImeS4jemcgOimgeiuoeeul+S6pOeCuSDkuKTnur/lubPooYxcclxuICAgIGxldCBhID0gbGluZUFycjFbMF0sIGIgPSBsaW5lQXJyMVsxXSwgYyA9IGxpbmVBcnIyWzBdLCBkID0gbGluZUFycjJbMV1cclxuXHJcbiAgICBhID0ge3g6IHBhcnNlRmxvYXQoYS54LnRvRml4ZWQoMikpLCB5OiBwYXJzZUZsb2F0KGEueS50b0ZpeGVkKDIpKX07XHJcbiAgICBiID0ge3g6IHBhcnNlRmxvYXQoYi54LnRvRml4ZWQoMikpLCB5OiBwYXJzZUZsb2F0KGIueS50b0ZpeGVkKDIpKX07XHJcbiAgICBjID0ge3g6IHBhcnNlRmxvYXQoYy54LnRvRml4ZWQoMikpLCB5OiBwYXJzZUZsb2F0KGMueS50b0ZpeGVkKDIpKX1cclxuICAgIGQgPSB7eDogcGFyc2VGbG9hdChkLngudG9GaXhlZCgyKSksIHk6IHBhcnNlRmxvYXQoZC55LnRvRml4ZWQoMikpfTtcclxuICAgIGNvbnNvbGUubG9nKChiLnkgLSBhLnkpKVxyXG4gICAgY29uc29sZS5sb2coKGQueCAtIGMueCkpXHJcbiAgICBjb25zb2xlLmxvZygoYS54IC0gYi54KSlcclxuICAgIGNvbnNvbGUubG9nKChjLnkgLSBkLnkpKVxyXG4gICAgbGV0IGRlbm9taW5hdG9yID0gKGIueSAtIGEueSkgKiAoZC54IC0gYy54KSAtIChhLnggLSBiLngpICogKGMueSAtIGQueSk7XHJcbiAgICBpZiAoZGVub21pbmF0b3IgPT0gMCkge1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICAgIGxldCB4ID0gKChiLnggLSBhLngpICogKGQueCAtIGMueCkgKiAoYy55IC0gYS55KVxyXG4gICAgICAgICsgKGIueSAtIGEueSkgKiAoZC54IC0gYy54KSAqIGEueFxyXG4gICAgICAgIC0gKGQueSAtIGMueSkgKiAoYi54IC0gYS54KSAqIGMueCkgLyBkZW5vbWluYXRvcixcclxuICAgICAgeSA9IC0oKGIueSAtIGEueSkgKiAoZC55IC0gYy55KSAqIChjLnggLSBhLngpXHJcbiAgICAgICAgKyAoYi54IC0gYS54KSAqIChkLnkgLSBjLnkpICogYS55XHJcbiAgICAgICAgLSAoZC54IC0gYy54KSAqIChiLnkgLSBhLnkpICogYy55KSAvIGRlbm9taW5hdG9yO1xyXG4gICAgLy/liKTmlq3kuqTngrnmmK/lkKblnKjkuKTmnaHnur/mrrXkuIpcclxuICAgIGlmIChcclxuICAgICAgLy/kuqTngrnlnKjnur/mrrUxXHJcbiAgICAgICh4IC0gYS54KSAqICh4IC0gYi54KSA8PSAwICYmICh5IC0gYS55KSAqICh5IC0gYi55KSA8PSAwICYmXHJcbiAgICAgIC8v5bm25LiU5Lqk54K55Zyo57q/5q61MuS4ilxyXG4gICAgICAoeCAtIGMueCkgKiAoeCAtIGQueCkgPD0gMCAmJiAoeSAtIGMueSkgKiAoeSAtIGQueSkgPD0gMFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB7eDogeCwgeTogeX1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBudW0xXHJcbiAgICogQHBhcmFtIG51bTJcclxuICAgKiBAcGFyYW0gZXJyb3Ig6K+v5beuXHJcbiAgICovXHJcbiAgc3RhdGljIGVxdWFsTnVtKG51bTE6IGFueSwgbnVtMjogYW55LCBlcnJvciA9IDUpIHtcclxuICAgIGxldCBudW0gPSBudW0xIC0gbnVtMjtcclxuICAgIHJldHVybiBudW0gPCBlcnJvciAmJiBudW0gPiAtZXJyb3I7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlnZDmoIflr7nmr5RcclxuICAgKiBAcGFyYW0gcG9pbnQxXHJcbiAgICogQHBhcmFtIHBvaW50MlxyXG4gICAqIEBwYXJhbSBlcnJvclxyXG4gICAqL1xyXG4gIHN0YXRpYyBlcXVhbFBvaW50KHBvaW50MTogeyB4OiBhbnksIHk6IGFueSB9LCBwb2ludDI6IHsgeDogYW55LCB5OiBhbnkgfSwgZXJyb3IgPSA1KSB7XHJcbiAgICByZXR1cm4gVG9vbHNVdGlsLmVxdWFsTnVtKHBvaW50MS54LCBwb2ludDIueCwgZXJyb3IpICYmIFRvb2xzVXRpbC5lcXVhbE51bShwb2ludDEueSwgcG9pbnQyLnksIGVycm9yKVxyXG4gIH1cclxuXHJcblxyXG4gIC8v5Yik5pat54K55piv5ZCm5Zyo57q/5q615LiKXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3RhcnRQXHJcbiAgICogQHBhcmFtIGVuZFBcclxuICAgKiBAcGFyYW0gYVxyXG4gICAqIEBwYXJhbSBlcnJvciDor6/lt65cclxuICAgKi9cclxuICBzdGF0aWMgY2hlY2tJbkxpbmUoc3RhcnRQOiBhbnksIGVuZFA6IGFueSwgYTogYW55LCBlcnJvciA9IDUpIHtcclxuICAgIC8v54K55ZKM56uv54K56YeN5ZCIXHJcbiAgICBpZiAoVG9vbHNVdGlsLmVxdWFsUG9pbnQoc3RhcnRQLCBlbmRQLCBlcnJvcilcclxuICAgICAgfHwgVG9vbHNVdGlsLmVxdWFsUG9pbnQoc3RhcnRQLCBhKVxyXG4gICAgICB8fCBUb29sc1V0aWwuZXF1YWxQb2ludChlbmRQLCBhKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChUb29sc1V0aWwuZXF1YWxOdW0oc3RhcnRQLngsIGVuZFAueCwgZXJyb3IpXHJcbiAgICAgICYmICFUb29sc1V0aWwuZXF1YWxOdW0oc3RhcnRQLngsIGEueCwgZXJyb3IpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfSBlbHNlIGlmIChUb29sc1V0aWwuZXF1YWxOdW0oc3RhcnRQLngsIGVuZFAueCwgZXJyb3IpXHJcbiAgICAgICYmIFRvb2xzVXRpbC5lcXVhbE51bShzdGFydFAueCwgYS54LCBlcnJvcikpIHtcclxuICAgICAgaWYgKHN0YXJ0UC55ID4gZW5kUC55KSB7XHJcbiAgICAgICAgcmV0dXJuIHN0YXJ0UC55ID4gYS55ICYmIGVuZFAueSA8IGEueVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBzdGFydFAueSA8IGEueSAmJiBlbmRQLnkgPiBhLnlcclxuICAgIH1cclxuICAgIC8v5Yik5pat54K55Zyo57q/5q615LiKXHJcbiAgICAvL+aWnOeOh+aYr+WQpuS4gOiHtFxyXG4gICAgbGV0IGsxID0gKGVuZFAueSAtIHN0YXJ0UC55KSAvIChlbmRQLnggLSBzdGFydFAueCk7XHJcbiAgICBsZXQgYiA9IHN0YXJ0UC55IC0gazEgKiBzdGFydFAueDtcclxuICAgIGxldCB5ID0gazEgKiBhLnggKyBiO1xyXG4gICAgaWYgKFRvb2xzVXRpbC5lcXVhbE51bSh5LCBhLnksIGVycm9yKSkge1xyXG4gICAgICAvLzXlg4/ntKDnmoTor6/lt65cclxuICAgICAgbGV0IHN0YXJ0TGVuID0gVG9vbHNVdGlsLmdldExlbmd0aChzdGFydFAsIGEpXHJcbiAgICAgIGxldCBlbmRMZW4gPSBUb29sc1V0aWwuZ2V0TGVuZ3RoKGEsIGVuZFApXHJcbiAgICAgIGxldCBsZW4gPSBUb29sc1V0aWwuZ2V0TGVuZ3RoKHN0YXJ0UCwgZW5kUClcclxuICAgICAgcmV0dXJuIGxlbiA+PSBzdGFydExlbiAmJiBsZW4gPj0gZW5kTGVuXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOeCueaWnOW8j1xyXG4gICAqL1xyXG4gIHN0YXRpYyBnZXRTbG9wZVBvaW50KHN0YXJ0UDogYW55LCBlbmRQOiBhbnkpIHtcclxuICAgIC8v6K6h566X5pac546HXHJcbiAgICBpZiAoc3RhcnRQLnggPT0gZW5kUC54KSB7XHJcbiAgICAgIHJldHVybiB7azpJbmZpbml0eSx4OnN0YXJ0UC54fTtcclxuICAgIH1cclxuICAgIGxldCBrID0gKGVuZFAueSAtIHN0YXJ0UC55KSAvIChlbmRQLnggLSBzdGFydFAueCk7XHJcbiAgICBsZXQgYiA9IHN0YXJ0UC55IC0gayAqIHN0YXJ0UC54O1xyXG4gICAgcmV0dXJuIHtrOmssIGI6Yn1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAq5Yik5pat54K55piv5ZCm5Zyo5Z2Q5qCH5Yy65Z+f5YaFXHJcbiAgICogQHBhcmFtIHAg5Yik5a6a55qE54K5XHJcbiAgICogQHBhcmFtIHBvaW50c0FyclxyXG4gICAqL1xyXG4gIHN0YXRpYyBqdWRnZUluUmVjKHA6IHsgeDE6IGFueSwgeTE6IGFueSB9LCBwb2ludHNBcnI6IHsgeDE6IGFueSwgeTE6IGFueSB9W10pIHtcclxuICAgIGxldCBweCA9IE51bWJlcihwLngxKSwgcHkgPSBOdW1iZXIocC55MSksXHJcbiAgICAgIGZsYWcgPSBmYWxzZSwvL+epv+i2iui+ueahhlxyXG4gICAgICBpblJlY3QgPSBmYWxzZTsvL+aYr+WQpuWcqOWkmui+ueW9oueahOi+ueaIluiAheerr+eCueS4ilxyXG4gICAgbGV0IHN0YXJ0ID0gcG9pbnRzQXJyWzBdO1xyXG4gICAgbGV0IGVuZCA9IHBvaW50c0Fycltwb2ludHNBcnIubGVuZ3RoIC0gMV07XHJcbiAgICAvL+WmguaenOaVsOe7hOmmluWwvuayoeacieebuOi/nizmiYvliqjmt7vliqBcclxuICAgIHBvaW50c0FyciA9IHN0YXJ0LngxICE9IGVuZC54MSB8fCBzdGFydC55MSAhPSBlbmQueTEgPyBwb2ludHNBcnIuY29uY2F0KHN0YXJ0KSA6IHBvaW50c0FycjtcclxuICAgIC8v5bCE57q/6YCJ5Y+WWeWdkOagh+S4jeWPmCx45q2j5pa55ZCRXHJcbiAgICBwb2ludHNBcnIuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ID09IHBvaW50c0Fyci5sZW5ndGggLSAxXHJcbiAgICAgICAgfHwgaW5SZWN0Ly/lnKjlpJrovrnlvaLnmoTovrnmiJbogIXnq6/ngrnkuIrop4bkuLrlnKjljLrln5/lhoVcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGVuZFBvaW50ID0gcG9pbnRzQXJyW2luZGV4ICsgMV1cclxuICAgICAgY29uc3Qgc3RhcnRYID0gTnVtYmVyKGl0ZW0ueDEpLCBzdGFydFkgPSBOdW1iZXIoaXRlbS55MSksXHJcbiAgICAgICAgZW5kWCA9IE51bWJlcihlbmRQb2ludC54MSksIGVuZFkgPSBOdW1iZXIoZW5kUG9pbnQueTEpO1xyXG4gICAgICAvL+WIpOaWreeCueaYr+WQpuWcqOerr+eCueS4ilxyXG4gICAgICBpZiAoKHB4ID09IHN0YXJ0WCAmJiBweSA9PSBzdGFydFkpXHJcbiAgICAgICAgfHwgKHB4ID09IGVuZFggJiYgcHggPT0gZW5kWSkpIHtcclxuICAgICAgICBpblJlY3QgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy/liKTmlq3lsITnur/ph43lkIjlubbkuJTngrnlnKjovrnkuIpcclxuICAgICAgaWYgKChzdGFydFkgPT0gZW5kWSAmJiBlbmRZID09IHB5KVxyXG4gICAgICAgICYmICgocHggPiBlbmRYICYmIHB4IDwgc3RhcnRYXHJcbiAgICAgICAgICB8fCAocHggPCBlbmRYICYmIHB4ID4gc3RhcnRYKSkpKSB7XHJcbiAgICAgICAgaW5SZWN0ID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICgoc3RhcnRZIDwgcHkgJiYgZW5kWSA+PSBweSlcclxuICAgICAgICB8fCAoc3RhcnRZID49IHB5ICYmIGVuZFkgPCBweSkpIHtcclxuXHJcbiAgICAgICAgLy/msYLlsITnur/kuI7nur/mrrXkuqTngrnnmoR45Z2Q5qCHLHnlnZDmoIfov5jmmK9weVxyXG4gICAgICAgIGxldCB4ID0gc3RhcnRYICsgKHB5IC0gc3RhcnRZKSAqIChlbmRYIC0gc3RhcnRYKSAvIChlbmRZIC0gc3RhcnRZKTtcclxuICAgICAgICAvL+eCueWcqOi+ueS4ilxyXG4gICAgICAgIGlmICh4ID09IHB4KSB7XHJcbiAgICAgICAgICBpblJlY3QgPSB0cnVlXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8veOWkp+S6jnB45p2l5L+d6K+B5bCE57q/5pyd5Y+zXHJcbiAgICAgICAgaWYgKHggPiBweCkge1xyXG4gICAgICAgICAgZmxhZyA9ICFmbGFnXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGluUmVjdCB8fCBmbGFnO1xyXG5cclxuICB9XHJcblxyXG4gIHN0YXRpYyBkaWZmSW5wdXQoY2huZzogU2ltcGxlQ2hhbmdlLCBhY3Rpb246ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGlmIChjaG5nID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuXHJcbiAgICBsZXQgY3VyID0gSlNPTi5zdHJpbmdpZnkoY2huZy5jdXJyZW50VmFsdWUpO1xyXG4gICAgbGV0IHByZXYgPSBKU09OLnN0cmluZ2lmeShjaG5nLnByZXZpb3VzVmFsdWUpO1xyXG4gICAgaWYgKGN1ciAhPT0gcHJldikge1xyXG4gICAgICBhY3Rpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBkZWVwQ29weShvYmo6IGFueSkge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGlmZklucHV0cyhjaG5nOiBTaW1wbGVDaGFuZ2VbXSwgYWN0aW9uOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBpZiAoY2huZyA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICBpZiAoY2huZy5sZW5ndGggPT0gMCkgcmV0dXJuO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaG5nLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBpdGVtID0gY2huZ1tpXTtcclxuICAgICAgaWYgKGl0ZW0gPT09IHVuZGVmaW5lZCkgY29udGludWU7XHJcbiAgICAgIGxldCBjdXIgPSBKU09OLnN0cmluZ2lmeShpdGVtLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgIGxldCBwcmV2ID0gSlNPTi5zdHJpbmdpZnkoaXRlbS5wcmV2aW91c1ZhbHVlKTtcclxuICAgICAgaWYgKGN1ciAhPT0gcHJldikge1xyXG4gICAgICAgIGFjdGlvbigpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGF0YVVSTHRvQmxvYihkYXRhdXJsOiBhbnkpIHtcclxuICAgIHZhciBhcnIgPSBkYXRhdXJsLnNwbGl0KCcsJyksIG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXSxcclxuICAgICAgYnN0ciA9IGF0b2IoYXJyWzFdKSwgbiA9IGJzdHIubGVuZ3RoLCB1OGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xyXG4gICAgd2hpbGUgKG4tLSkge1xyXG4gICAgICB1OGFycltuXSA9IGJzdHIuY2hhckNvZGVBdChuKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgQmxvYihbdThhcnJdLCB7dHlwZTogbWltZX0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRhdGFVUkx0b0ZpbGUoZGF0YXVybDogYW55LCBmaWxlbmFtZT86IHN0cmluZykge1xyXG4gICAgdmFyIGFyciA9IGRhdGF1cmwuc3BsaXQoJywnKSwgbWltZSA9IGFyclswXS5tYXRjaCgvOiguKj8pOy8pWzFdLFxyXG4gICAgICBic3RyID0gYXRvYihhcnJbMV0pLCBuID0gYnN0ci5sZW5ndGgsIHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XHJcbiAgICB3aGlsZSAobi0tKSB7XHJcbiAgICAgIHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBGaWxlKFt1OGFycl0sIChmaWxlbmFtZSB8fCBUb29sc1V0aWwuZ2V0UmFuZG9tRmlsZU5hbWUoKSksIHt0eXBlOiBtaW1lfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0WWVzdGVyZGF5KGRheTogRGF0ZSk6IERhdGUge1xyXG5cclxuICAgIGxldCB0aW1lID0gZGF5LmdldFRpbWUoKSAtIDEwMDAgKiA2MCAqIDYwICogMjQ7XHJcbiAgICBkYXkgPSBuZXcgRGF0ZSh0aW1lKTtcclxuXHJcbiAgICByZXR1cm4gZGF5O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFRvbW9ycm93ZGF5KGRheTogRGF0ZSk6IERhdGUge1xyXG4gICAgbGV0IHRpbWUgPSBkYXkuZ2V0VGltZSgpICsgMTAwMCAqIDYwICogNjAgKiAyNDtcclxuXHJcbiAgICByZXR1cm4gbmV3IERhdGUodGltZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0TmV4dE1vbnRoKGRheTogRGF0ZSkge1xyXG4gICAgbGV0IGRzID0gbmV3IERhdGUoZGF5KS5zZXRNb250aChkYXkuZ2V0TW9udGgoKSArIDEpO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGRzKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRWaWRlb0NvdmVyKHVybDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gVG9vbHNVdGlsLmdldE9zc1VybCh1cmwpICsgXCI/eC1vc3MtcHJvY2Vzcz12aWRlby9zbmFwc2hvdCx0XzEwMDAwLG1fZmFzdFwiO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZpc3REYXlPZk1vbnRoKGRheTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKGRheSkuc2V0RGF0ZSgxKSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbGFzdERheU9mTW9udGgoZGF5OiBEYXRlKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoVG9vbHNVdGlsLmdldE5leHRNb250aChkYXkpLnNldERhdGUoMCkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFJhbmRvbUZpbGVOYW1lID0gZnVuY3Rpb24gKCkge1xyXG4gICAgY29uc3QgZXhwZWN0ID0gMTY7XHJcbiAgICBsZXQgc3RyID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xyXG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCBleHBlY3QpIHtcclxuICAgICAgc3RyICs9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIGV4cGVjdCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RmlsZUV4dCA9IGZ1bmN0aW9uIChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICB2YXIgaW5kZXggPSBmaWxlTmFtZS5sYXN0SW5kZXhPZihcIi5cIik7XHJcbiAgICB2YXIgc3VmZml4ID0gZmlsZU5hbWUuc3Vic3RyKGluZGV4ICsgMSk7XHJcbiAgICByZXR1cm4gc3VmZml4O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEh0dHBPcHRpb25zKCk6IGFueSB7XHJcbiAgICByZXR1cm4ge2lzQ29tbW9uSHR0cEhlYWRlcjogdHJ1ZX1cclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgcmVzZXRGb3JtVmFsdWUob3B0OiBBdHJGb3JtT3B0LCBqc29uOiBqc29uKTogQXRyRm9ybU9wdCB7XHJcbiAgICBmb3IgKGxldCBpdGVtIG9mIG9wdC5pdGVtcykge1xyXG4gICAgICBpdGVtLnZhbHVlID0gXCJcIjtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoanNvbikpIHtcclxuICAgICAgICBpZiAoanNvbi5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGpzb25ba2V5XSAhPSBudWxsICYmIGpzb25ba2V5XSAhPSB1bmRlZmluZWQgJiYga2V5ID09IGl0ZW0ua2V5KSB7XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlID09ICdkYXRlJylcclxuICAgICAgICAgICAgaXRlbS52YWx1ZSA9IG5ldyBEYXRlKGpzb25ba2V5XSk7XHJcbiAgICAgICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT0gJ2RhdGVUaW1lJykge1xyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0gbmV3IERhdGUoanNvbltrZXldKTtcclxuICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0ganNvbltrZXldXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3B0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZvcm1hdERhdGUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbW9udGg6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICBsZXQgc3RyRGF0ZTogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXREYXRlKCk7XHJcblxyXG4gICAgaWYgKG1vbnRoIDw9IDkpIHtcclxuICAgICAgbW9udGggPSBcIjBcIiArIG1vbnRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlIDw9IDkpIHtcclxuICAgICAgc3RyRGF0ZSA9IFwiMFwiICsgc3RyRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpICsgXCItXCIgKyBtb250aCArIFwiLVwiICsgc3RyRGF0ZVxyXG4gICAgLy8gKyBcIiBcIlxyXG4gICAgLy8gKyBkYXRlLmdldEhvdXJzKCkgKyBcIjpcIiArIGRhdGUuZ2V0TWludXRlcygpICsgXCI6XCIgKyBkYXRlLmdldFNlY29uZHMoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRGb3JtYXREYXRlRnVsbChkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBtb250aDogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgIGxldCBzdHJEYXRlOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcclxuXHJcbiAgICBpZiAobW9udGggPD0gOSkge1xyXG4gICAgICBtb250aCA9IFwiMFwiICsgbW9udGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0ckRhdGUgPD0gOSkge1xyXG4gICAgICBzdHJEYXRlID0gXCIwXCIgKyBzdHJEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKyBcIi1cIiArIG1vbnRoICsgXCItXCIgKyBzdHJEYXRlICsgXCIgXCIgKyAoZGF0ZS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldEhvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCkpICsgXCI6XCIgKyAoZGF0ZS5nZXRNaW51dGVzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0TWludXRlcygpIDogZGF0ZS5nZXRNaW51dGVzKCkpICsgXCI6XCIgKyAoZGF0ZS5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0U2Vjb25kcygpIDogZGF0ZS5nZXRTZWNvbmRzKCkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZvcm1hdERhdGVXaXRob3V0UyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBtb250aDogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgIGxldCBzdHJEYXRlOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcclxuICAgIGxldCBob3Vyczogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgbGV0IHNlY29uZHM6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0TWludXRlcygpO1xyXG4gICAgaWYgKG1vbnRoIDw9IDkpIHtcclxuICAgICAgbW9udGggPSBcIjBcIiArIG1vbnRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlIDw9IDkpIHtcclxuICAgICAgc3RyRGF0ZSA9IFwiMFwiICsgc3RyRGF0ZTtcclxuICAgIH1cclxuICAgIGlmIChob3VycyA8PSA5KSB7XHJcbiAgICAgIGhvdXJzID0gXCIwXCIgKyBob3VycztcclxuICAgIH1cclxuICAgIGlmIChzZWNvbmRzIDw9IDkpIHtcclxuICAgICAgc2Vjb25kcyA9IFwiMFwiICsgc2Vjb25kcztcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKyBcIi1cIiArIG1vbnRoICsgXCItXCIgKyBzdHJEYXRlICsgXCIgXCIgKyBob3VycyArIFwiOlwiICsgc2Vjb25kcztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRGb3JtYXREYXRlSG91cihkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBtb250aDogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgIGxldCBzdHJEYXRlOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcclxuICAgIGxldCBob3Vyczogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgbGV0IHNlY29uZHM6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0TWludXRlcygpO1xyXG4gICAgaWYgKG1vbnRoIDw9IDkpIHtcclxuICAgICAgbW9udGggPSBcIjBcIiArIG1vbnRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlIDw9IDkpIHtcclxuICAgICAgc3RyRGF0ZSA9IFwiMFwiICsgc3RyRGF0ZTtcclxuICAgIH1cclxuICAgIGlmIChob3VycyA8PSA5KSB7XHJcbiAgICAgIGhvdXJzID0gXCIwXCIgKyBob3VycztcclxuICAgIH1cclxuICAgIGlmIChzZWNvbmRzIDw9IDkpIHtcclxuICAgICAgc2Vjb25kcyA9IFwiMFwiICsgc2Vjb25kcztcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKyBcIlwiICsgbW9udGggKyBzdHJEYXRlICsgaG91cnM7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0T3NzVXJsKHVybDogc3RyaW5nLCBuZWVkVGltZSA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIXVybCkge1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICAgIGlmIChuZWVkVGltZSkge1xyXG4gICAgICAvLyB1cmwgPSB1cmwgKyBcIj92PVwiICsgVG9vbHNVdGlsLmdldEZvcm1hdERhdGVIb3VyKG5ldyBEYXRlKCkpO1xyXG4gICAgICB1cmwgPSB1cmwgKyBcIj92PVwiICsgbmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgIH1cclxuICAgIGlmICh1cmwuc3RhcnRzV2l0aChcImh0dHBcIikpIHtcclxuICAgICAgcmV0dXJuIHVybFxyXG4gICAgfVxyXG4gICAgaWYgKCF1cmwuc3RhcnRzV2l0aChcIi9cIikgJiYgIWF0cl9zdGF0aWNfZGF0YXMuT1NTX1VSTC5lbmRzV2l0aCgnLycpKSB7XHJcbiAgICAgIHVybCA9ICcvJyArIHVybFxyXG4gICAgfVxyXG4gICAgbGV0IHJlc3VsdCA9IGF0cl9zdGF0aWNfZGF0YXMuT1NTX1VSTCArIHVybFxyXG5cclxuICAgIHJldHVybiByZXN1bHRcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRTdGF0aWNPc3NVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xyXG4gICAgICByZXR1cm4gdXJsXHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXRyX3N0YXRpY19kYXRhcy5TVEFUSUNfT1NTX1VSTCArIHVybDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZW1vdmVIdG1sKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLzxbXjw+XSs+L2csICcnKS5yZXBsYWNlKC8mbmJzcDsvaWcsICcnKVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIG11bCguLi5udW1iZXJzOiBhbnkpIHtcclxuICAgIGlmIChudW1iZXJzLmxlbmd0aCA8IDIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG0gPSB0aGlzLmdldERpZ2l0KG51bWJlcnMpO1xyXG4gICAgbGV0IHJlc3VsdCA9IDE7XHJcbiAgICBudW1iZXJzLmZvckVhY2goXHJcbiAgICAgIChudW06IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBzID0gbnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgcmVzdWx0ICo9IE51bWJlcihzLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHJldHVybiByZXN1bHQgLyBNYXRoLnBvdygxMCwgbSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RGlnaXQoLi4ubnVtYmVyczogYW55W10pIHtcclxuICAgIGxldCBtID0gMDtcclxuICAgIG51bWJlcnMuZm9yRWFjaChcclxuICAgICAgbnVtID0+IHtcclxuICAgICAgICBsZXQgcyA9IG51bS50b1N0cmluZygpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBtICs9IHMuc3BsaXQoXCIuXCIpWzFdLmxlbmd0aFxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICByZXR1cm4gbTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkb3dubG9hZEltZyhkYXRhOiBhbnksIGZpbGVOYW1lPzogc3RyaW5nLCBlbmRwb2ludD86IHN0cmluZykge1xyXG4gICAgLy8gLy8g5LiL6L2957G75Z6LIHhsc1xyXG4gICAgLy8gY29uc3QgY29udGVudFR5cGUgPSAnaW1hZ2UvanBlZyc7XHJcbiAgICAvLyAvLyBjb25zdCBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCc7XHJcbiAgICAvLyAvLyDkuIvovb3nsbvlnovvvJpjc3ZcclxuICAgIC8vIGNvbnN0IGRlYnVnID0ge2hlbGxvOiBcIndvcmxkXCJ9O1xyXG4gICAgLy8gY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtdLHt0eXBlIDogJ2ltYWdlL2pwZWcnfSk7XHJcbiAgICAvLyBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIC8vXHJcbiAgICAvLyAvLyDmiZPlvIDmlrDnqpflj6PmlrnlvI/ov5vooYzkuIvovb1cclxuICAgIC8vIC8vIHdpbmRvdy5vcGVuKHVybCk7XHJcbiAgICAvL1xyXG4gICAgLy8gLy8g5Lul5Yqo5oCB5Yib5bu6Yeagh+etvui/m+ihjOS4i+i9vVxyXG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGEuaHJlZiA9IGRhdGE7XHJcbiAgICAvLyBhLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICBhLmRvd25sb2FkID0gZmlsZU5hbWUgPyBmaWxlTmFtZSA6IFwiXCIgKyBlbmRwb2ludDtcclxuICAgIGEuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkb3dubG9hZFhscyh1cmw6IHN0cmluZywgcGFyYW1zPzogYW55LCkge1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICB1cmwgKz0gXCI/XCI7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtcykpIHtcclxuICAgICAgICBpZiAocGFyYW1zW2tleV0pIHtcclxuICAgICAgICAgIHVybCArPSBrZXkgKyBcIj1cIiArIHBhcmFtc1trZXldICsgXCImJlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB3aW5kb3cub3Blbih1cmwpO1xyXG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIC8vIC8vIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgIC8vIGEuZG93bmxvYWQgPSBcIjMzMjEueGxzXCI7XHJcbiAgICBhLmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0SW1nKHVybDogc3RyaW5nLCBwYXJhbTogYW55ID0ge1xyXG4gICAgaW1nVzogMCwgaW1nSDogMCxcclxuICAgIG5lZWRUaW1lOiBmYWxzZSwgaXNGdWxsVXJsOiBmYWxzZVxyXG4gIH0pIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGxldCBkYXRhVXJsOiBhbnkgPSBTZXNzaW9uU3RvcmFnZVV0aWwuZ2V0SW1nKHVybClcclxuICAgICAgbGV0IGltZyA9IG5ldyBJbWFnZSgpXHJcbiAgICAgIGltZy5zZXRBdHRyaWJ1dGUoJ2Nyb3NzT3JpZ2luJywgJ2Fub255bW91cycpXHJcbiAgICAgIGlmICghZGF0YVVybCkge1xyXG4gICAgICAgIGltZy5zcmMgPSBwYXJhbS5pc0Z1bGxVcmwgPyB1cmwgOiBUb29sc1V0aWwuZ2V0T3NzVXJsKHVybCwgcGFyYW0ubmVlZFRpbWUpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gZGF0YVVybC5pbmRleE9mKFwifVwiKSArIDFcclxuICAgICAgICBpbWcuc3JjID0gZGF0YVVybC5zbGljZSgwLCA1MCkgKyBkYXRhVXJsLnNsaWNlKGluZGV4KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICBsZXQgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpXHJcbiAgICAgICAgbGV0IGNvbnRleHQyOiBhbnkgPSBjLmdldENvbnRleHQoXCIyZFwiKVxyXG4gICAgICAgIGMud2lkdGggPSBwYXJhbS5pbWdXIHx8IGltZy53aWR0aDtcclxuICAgICAgICBjLmhlaWdodCA9IHBhcmFtLmltZ0ggfHwgaW1nLmhlaWdodFxyXG4gICAgICAgIGNvbnRleHQyLmRyYXdJbWFnZShpbWcsIDAsIDAsIGMud2lkdGgsIGMuaGVpZ2h0KVxyXG4gICAgICAgIGxldCBkYXRhVXJsID0gYy50b0RhdGFVUkwoKVxyXG4gICAgICAgIGxldCBzdHIgPSBjLndpZHRoICsgXCIsXCIgKyBjLmhlaWdodCArIFwifVwiXHJcbiAgICAgICAgZGF0YVVybCA9IGRhdGFVcmwuc2xpY2UoMCwgNTApICsgc3RyICsgZGF0YVVybC5zbGljZSg1MClcclxuLy/kuI3kv53lrZhcclxuLy8gICAgICAgICBTZXNzaW9uU3RvcmFnZVV0aWwuc2V0SW1nKHVybCwgZGF0YVVybClcclxuXHJcbiAgICAgICAgcmVzb2x2ZShpbWcpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBpeGVsVG9OdW0od2lkdGg6IGFueSkge1xyXG4gICAgY29uc3QgcmUgPSAvcHgvZ2k7XHJcbiAgICBsZXQgd2lkdGhTdHIgPSB3aWR0aC5yZXBsYWNlKHJlLCBcIlwiKTtcclxuICAgIHJldHVybiBOdW1iZXIod2lkdGhTdHIpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFsbEVxdWFsID0gKC4uLmFycmF5OiBhbnlbXSkgPT4gYXJyYXkuZXZlcnkoaXRlbSA9PiBpdGVtID09PSBhcnJheVswXSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIGFycmF55omA5pyJ5Y+C5pWw5ruh6LazZm7lh73mlbDov5Tlm550cnVlXHJcbiAgICogYWxsKHggPT4geCA+IDEsMSwyLDMpOyAvLyB0cnVlXHJcbiAgICogQHBhcmFtIGNhbGxiYWNrXHJcbiAgICogQHBhcmFtIGFycmF5XHJcbiAgICovXHJcbiAgc3RhdGljIHNhdGlzZmllZEZuID0gKGNhbGxiYWNrOiAoLi4uYXJnczogYW55W10pID0+IGJvb2xlYW4sIC4uLmFycmF5OiBhbnlbXSkgPT4gYXJyYXkuZXZlcnkoY2FsbGJhY2spO1xyXG5cclxuICAvL+WFqOmDqOS4jeepuuS4unRydWVcclxuICBzdGF0aWMgbm90RW1wdHkoLi4uYXJyOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGFyci5ldmVyeShpdGVtID0+ICEhaXRlbSlcclxuICB9XHJcblxyXG4gIC8v5YyF5ZCr56m65Li6dHJ1ZVxyXG4gIHN0YXRpYyBoYXNFbXB0eSguLi5hcnI6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYXJyLnNvbWUoaXRlbSA9PiAhaXRlbSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWxsRW1wdHkoLi4uYXJyOiBhbnlbXSkge1xyXG4gICAgcmV0dXJuIGFyci5ldmVyeShpdGVtID0+ICFpdGVtKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc0FycmF5KG9iajogYW55KSB7XHJcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgQXJyYXlcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc0VtcHR5KG9iajogYW55KSB7XHJcbiAgICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIGlmIChvYmogPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2Ygb2JqID09ICdib29sZWFuJykge1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICAgIGlmIChvYmogPT09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIG9iaiA9PSBcInN0cmluZ1wiICYmIG9iai50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIHN0YXRpYyBlbmNvZGVWYWx1ZShwYXJhbXM6IGFueSkge1xyXG4gICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGtleSA9PiBwYXJhbXNba2V5XSA9IGVuY29kZVVSSUNvbXBvbmVudChwYXJhbXNba2V5XSkpO1xyXG4gICAgcmV0dXJuIHBhcmFtcztcclxuICB9XHJcblxyXG4gIHN0YXRpYyB3aW5kb3dIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB3aW5kb3dXaWR0aCgpIHtcclxuXHJcbiAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIG1vZGFsZVN0eWxlKCkge1xyXG4gICAgcmV0dXJuIHsnbWF4SGVpZ2h0JzogVG9vbHNVdGlsLndpbmRvd0hlaWdodCgpIC0gMjAwICsgJ3B4JywgJ292ZXJmbG93LXknOiAnYXV0byd9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldExlbmd0aChwb2ludEE6IHsgeDE6IGFueSwgeTE6IGFueSwgeDogYW55LCB5OiBhbnkgfSwgcG9pbnRCOiB7IHg6IGFueSwgeTogYW55LCB4MTogYW55LCB5MTogYW55IH0pIHtcclxuICAgIHBvaW50QS54MSA9IHBvaW50QS54IHx8IHBvaW50QS54MSB8fCAwXHJcbiAgICBwb2ludEEueTEgPSBwb2ludEEueSB8fCBwb2ludEEueTEgfHwgMFxyXG4gICAgcG9pbnRCLnkxID0gcG9pbnRCLnkgfHwgcG9pbnRCLnkxIHx8IDA7XHJcbiAgICBwb2ludEIueDEgPSBwb2ludEIueCB8fCBwb2ludEIueDEgfHwgMDtcclxuICAgIHZhciBsZW5ndGhBQiA9IE1hdGguc3FydChNYXRoLnBvdyhwb2ludEEueDEgLSBwb2ludEIueDEsIDIpICtcclxuICAgICAgTWF0aC5wb3cocG9pbnRBLnkxIC0gcG9pbnRCLnkxLCAyKSlcclxuICAgIHJldHVybiBsZW5ndGhBQjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRSb3RhdGVOdW0ocG9pbnRCOiB7IHgxOiBhbnksIHkxOiBhbnksIHg6IGFueSwgeTogYW55IH0sIHBvaW50QzogeyB4MTogYW55LCB5MTogYW55LCB4OiBhbnksIHk6IGFueSB9LCBwb2ludEE6IHsgeDE6IGFueSwgeTE6IGFueSwgeDogYW55LCB5OiBhbnkgfSkge1xyXG4gICAgcG9pbnRBLngxID0gcG9pbnRBLnggfHwgcG9pbnRBLngxIHx8IDBcclxuICAgIHBvaW50QS55MSA9IHBvaW50QS55IHx8IHBvaW50QS55MSB8fCAwXHJcbiAgICBwb2ludEIueDEgPSBwb2ludEIueSB8fCBwb2ludEIueDEgfHwgMDtcclxuICAgIHBvaW50Qi55MSA9IHBvaW50Qi54IHx8IHBvaW50Qi54MSB8fCAwO1xyXG4gICAgcG9pbnRDLngxID0gcG9pbnRDLnkgfHwgcG9pbnRDLngxIHx8IDA7XHJcbiAgICBwb2ludEMueTEgPSBwb2ludEMueCB8fCBwb2ludEMueDEgfHwgMDtcclxuXHJcbiAgICAvL0FCQ+S4reW/g+eCuSzotbflp4vngrks57uI54K5XHJcbiAgICBsZXQgQUI6IGFueSA9IHt9O1xyXG4gICAgbGV0IEFDOiBhbnkgPSB7fTtcclxuICAgIEFCLngxID0gcG9pbnRCLngxIC0gcG9pbnRBLngxXHJcbiAgICBBQi55MSA9IHBvaW50Qi55MSAtIHBvaW50QS55MVxyXG4gICAgQUMueDEgPSBwb2ludEMueDEgLSBwb2ludEEueDFcclxuICAgIEFDLnkxID0gcG9pbnRDLnkxIC0gcG9pbnRBLnkxXHJcbiAgICB2YXIgZGlyZWN0ID0gQUIueDEgKiBBQy55MSAtIEFCLnkxICogQUMueTFcclxuICAgIHZhciBsZW5ndGhBQiA9IHRoaXMuZ2V0TGVuZ3RoKHBvaW50QiwgcG9pbnRBKVxyXG4gICAgdmFyIGxlbmd0aEFDID0gdGhpcy5nZXRMZW5ndGgocG9pbnRDLCBwb2ludEEpXHJcbiAgICB2YXIgbGVuZ3RoQkMgPSB0aGlzLmdldExlbmd0aChwb2ludEIsIHBvaW50QylcclxuICAgIHZhciBjb3NBID0gKE1hdGgucG93KGxlbmd0aEFCLCAyKSArIE1hdGgucG93KGxlbmd0aEFDLCAyKSAtXHJcbiAgICAgIE1hdGgucG93KGxlbmd0aEJDLCAyKSkgLyAoMiAqIGxlbmd0aEFCICogbGVuZ3RoQUMpXHJcbiAgICB2YXIgYW5nbGVBID0gTWF0aC5yb3VuZChNYXRoLmFjb3MoY29zQSkgKiAxODAgLyBNYXRoLlBJKVxyXG4gICAgaWYgKGRpcmVjdCA8IDApIHtcclxuICAgICAgcmV0dXJuIC1hbmdsZUFcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBhbmdsZUFcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvL+e7lWNlbnRlcueCueaXi+i9rHJvdGF0ZeinkuW6plxyXG4gIHN0YXRpYyBnZXRSb3RhdGVQb2ludChwOiB7IHgxOiBhbnksIHkxOiBhbnkgfSwgY2VudGVyOiB7IHgxOiBhbnksIHkxOiBhbnkgfSwgcm90YXRlOiBhbnkpIHtcclxuICAgIGxldCBzdGFydFggPSBwLngxXHJcbiAgICBsZXQgc3RhcnRZID0gcC55MVxyXG4gICAgbGV0IGEgPSBjZW50ZXIueDFcclxuICAgIGxldCBiID0gY2VudGVyLnkxXHJcbiAgICBsZXQgeDEgPSBhIC0gTWF0aC5jb3Mocm90YXRlICogTWF0aC5QSSAvIDE4MCkgKiAoYSAtIHN0YXJ0WCkgKyBNYXRoLnNpbihyb3RhdGUgKiBNYXRoLlBJIC8gMTgwKSAqIChiIC0gc3RhcnRZKVxyXG4gICAgbGV0IHkxID0gYiAtIE1hdGguY29zKHJvdGF0ZSAqIE1hdGguUEkgLyAxODApICogKGIgLSBzdGFydFkpIC0gTWF0aC5zaW4ocm90YXRlICogTWF0aC5QSSAvIDE4MCkgKiAoYSAtIHN0YXJ0WClcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHgxOiB4MSxcclxuICAgICAgeTE6IHkxXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
622
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9vbHNVdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29yZS91dGlscy9Ub29sc1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBSXRFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTFCLE1BQU0sT0FBTyxTQUFTO0lBa0JwQixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU8sSUFBSSxFQUFFLENBQUE7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFXO1FBQ3pCLElBQUksR0FBRyxHQUFHLDRHQUE0RyxDQUFDO1FBQ3ZILE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFTO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxH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QUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztRQUNuRSxDQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUE7UUFDbEUsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO1FBQ25FLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMs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LEVBQUUsTUFBNEM7UUFDMUosTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3RDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN0QyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFdkMsZUFBZTtRQUNmLElBQUksRUFBRSxHQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLEVBQUUsR0FBUSxFQUFFLENBQUM7UUFDakIsRUFBRSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUE7UUFDN0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUE7UUFDN0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUE7UUFDN0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUE7UUFDN0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUs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QU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDaEQ7SUFDRCxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQTtBQUVNLG9CQUFVLEdBQUcsVUFBVSxRQUFnQjtJQUM1QyxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQTtBQStPTSxrQkFBUSxHQUFHLENBQUMsR0FBRyxLQUFZLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFOUU7Ozs7O0dBS0c7QUFDSSxxQkFBVyxHQUFHLENBQUMsUUFBcUMsRUFBRSxHQUFHLEtBQVksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7anNvbiwgQXRyRm9ybU9wdCwgYXRyX3N0YXRpY19kYXRhc30gZnJvbSAnLi4vYmFzZS9hdHItY29tbW9uJztcclxuaW1wb3J0IHtmb3JtYXREYXRlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge0h0dHBIZWFkZXJzfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtTaW1wbGVDaGFuZ2V9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1ZhbGlkYXRvcnN9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1Nlc3Npb25TdG9yYWdlVXRpbH0gZnJvbSAnLi9zZXNzaW9uc3RvcmFnZS51dGlsJztcclxuaW1wb3J0IHt1bGlkfSBmcm9tICd1bGlkJztcclxuXHJcbmV4cG9ydCBjbGFzcyBUb29sc1V0aWwge1xyXG4gIHN0YXRpYyBvc3NQcmVmaXg6IHN0cmluZyA9ICcnO1xyXG4gIHN0YXRpYyBnZXRPcmdDb2RlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gdmFyIG9yZ0NvZGUgPSAnJztcclxuICAgIC8vIHZhciBocmVmcyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCc/JylcclxuICAgIC8vIGlmIChocmVmcy5sZW5ndGggPj0gMikge1xyXG4gICAgLy8gICB2YXIgcGFyYW1TdHIgPSBocmVmc1sxXTtcclxuICAgIC8vICAgLy/lj4LmlbDlrZfnrKbkuLLph4zmnInmsqHluKYgPT8vI1xyXG4gICAgLy8gICBvcmdDb2RlID0gcGFyYW1TdHIuc3BsaXQoJz0nKVswXTtcclxuICAgIC8vICAgb3JnQ29kZSA9IG9yZ0NvZGUuc3BsaXQoJz8nKVswXTtcclxuICAgIC8vICAgb3JnQ29kZSA9IG9yZ0NvZGUuc3BsaXQoJy8nKVswXTtcclxuICAgIC8vICAgb3JnQ29kZSA9IG9yZ0NvZGUuc3BsaXQoJyMnKVswXTtcclxuICAgIC8vICAgb3JnQ29kZSA9IG9yZ0NvZGUuc3BsaXQoJy8nKVswXTtcclxuICAgIC8vIH1cclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0VWxpZCgpIHtcclxuICAgIHJldHVybiB1bGlkKClcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc0Jhc2U2NChzdHJpbmc6IGFueSkge1xyXG4gICAgbGV0IHJlZyA9IC9eXFxzKmRhdGE6KFthLXpdK1xcL1thLXowLTktKy5dKyg7W2Etei1dKz1bYS16MC05LV0rKT8pPyg7YmFzZTY0KT8sKFthLXowLTkhJCYnLCgpKis7PVxcLS5ffjpAXFwvPyVcXHNdKj8pXFxzKiQvaTtcclxuICAgIHJldHVybiByZWcudGVzdChzdHJpbmcpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGF0YVVSSXRvQmxvYihjb2RlOiBhbnkpIHtcclxuICAgIGNvbnN0IHBhcnRzID0gY29kZS5zcGxpdCgnO2Jhc2U2NCwnKTtcclxuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gcGFydHNbMF0uc3BsaXQoJzonKVsxXTtcclxuICAgIGNvbnN0IHJhdyA9IHdpbmRvdy5hdG9iKHBhcnRzWzFdKTtcclxuICAgIGNvbnN0IHJhd0xlbmd0aCA9IHJhdy5sZW5ndGg7XHJcbiAgICBjb25zdCB1SW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkocmF3TGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3TGVuZ3RoOyArK2kpIHtcclxuICAgICAgdUludDhBcnJheVtpXSA9IHJhdy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBCbG9iKFt1SW50OEFycmF5XSwge3R5cGU6IGNvbnRlbnRUeXBlfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNOdWxsKHZhbDogYW55KSB7XHJcbiAgICBpZiAodmFsIHx8IFsnYm9vbGVhbicsICdzdHJpbmcnLCAnbnVtYmVyJ10uc29tZSh2ID0+IHR5cGVvZiB2YWwgPT0gdikpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldENvbnRyb2xzQ29uZmlnKGRhdGFGcm9tOiBhbnksIHJlcXVpcmVkUnVsZTogc3RyaW5nW10pIHtcclxuICAgIGxldCBjb250cm9sc0NvbmZpZzogYW55ID0ge31cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGFGcm9tKSB7XHJcbiAgICAgIGlmIChyZXF1aXJlZFJ1bGUuc29tZShpdGVtID0+IGl0ZW0gPT0ga2V5KSkge1xyXG4gICAgICAgIGNvbnRyb2xzQ29uZmlnW2tleV0gPSBbZGF0YUZyb21ba2V5XSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnRyb2xzQ29uZmlnW2tleV0gPSBbZGF0YUZyb21ba2V5XV1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRyb2xzQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGh0dHBTdWNjZXMocmVzOiBhbnkpIHtcclxuICAgIHJldHVybiBbJzIwMCcsICcyMDEnLCAnMjA0J10uc29tZSh2ID0+IHJlcy5zdGF0dXMgPT0gdilcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiuoeeul+S4pOeCueWdkOagh+i3neemu1xyXG4gICAqIEBwYXJhbSBwb2ludDFcclxuICAgKiBAcGFyYW0gcG9pbnQyXHJcbiAgICovXHJcbiAgc3RhdGljIGdldERpc3RhbmNlKHBvaW50MTogeyB4OiBhbnksIHk6IGFueSB9LCBwb2ludDI6IHsgeDogYW55LCB5OiBhbnkgfSkge1xyXG4gICAgbGV0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KChwb2ludDIueCAtIHBvaW50MS54KSAqIChwb2ludDIueCAtIHBvaW50MS54KSArIChwb2ludDIueSAtIHBvaW50MS55KSAqIChwb2ludDIueSAtIHBvaW50MS55KSk7XHJcbiAgICByZXR1cm4gZGlzdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKTmlq3nur/mrrXmmK/lkKbnm7jkuqQs55u45Lqk6L+U5Zue5Lqk54K55Z2Q5qCHXHJcbiAgICogQHBhcmFtIHAxXHJcbiAgICogQHBhcmFtIHAyXHJcbiAgICovXHJcbiAgc3RhdGljIGNoZWNrSW50ZXJzZWN0KGxpbmVBcnIxOiB7IHg6IGFueSwgeTogYW55IH1bXSwgbGluZUFycjI6IHsgeDogYW55LCB5OiBhbnkgfVtdKSB7XHJcbiAgICAvL+ino+e6v+aAp+aWueeoi+e7hOaxgue6v+auteS6pOeCuVxyXG4gICAgLy/lpoLmnpzniLbmr43kuLow77yM5YiZ5LiN6ZyA6KaB6K6h566X5Lqk54K5IOS4pOe6v+W5s+ihjFxyXG4gICAgbGV0IGEgPSBsaW5lQXJyMVswXSwgYiA9IGxpbmVBcnIxWzFdLCBjID0gbGluZUFycjJbMF0sIGQgPSBsaW5lQXJyMlsxXVxyXG5cclxuICAgIGEgPSB7eDogcGFyc2VGbG9hdChhLngudG9GaXhlZCgyKSksIHk6IHBhcnNlRmxvYXQoYS55LnRvRml4ZWQoMikpfTtcclxuICAgIGIgPSB7eDogcGFyc2VGbG9hdChiLngudG9GaXhlZCgyKSksIHk6IHBhcnNlRmxvYXQoYi55LnRvRml4ZWQoMikpfTtcclxuICAgIGMgPSB7eDogcGFyc2VGbG9hdChjLngudG9GaXhlZCgyKSksIHk6IHBhcnNlRmxvYXQoYy55LnRvRml4ZWQoMikpfVxyXG4gICAgZCA9IHt4OiBwYXJzZUZsb2F0KGQueC50b0ZpeGVkKDIpKSwgeTogcGFyc2VGbG9hdChkLnkudG9GaXhlZCgyKSl9O1xyXG4gICAgY29uc29sZS5sb2coKGIueSAtIGEueSkpXHJcbiAgICBjb25zb2xlLmxvZygoZC54IC0gYy54KSlcclxuICAgIGNvbnNvbGUubG9nKChhLnggLSBiLngpKVxyXG4gICAgY29uc29sZS5sb2coKGMueSAtIGQueSkpXHJcbiAgICBsZXQgZGVub21pbmF0b3IgPSAoYi55IC0gYS55KSAqIChkLnggLSBjLngpIC0gKGEueCAtIGIueCkgKiAoYy55IC0gZC55KTtcclxuICAgIGlmIChkZW5vbWluYXRvciA9PSAwKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgbGV0IHggPSAoKGIueCAtIGEueCkgKiAoZC54IC0gYy54KSAqIChjLnkgLSBhLnkpXHJcbiAgICAgICAgKyAoYi55IC0gYS55KSAqIChkLnggLSBjLngpICogYS54XHJcbiAgICAgICAgLSAoZC55IC0gYy55KSAqIChiLnggLSBhLngpICogYy54KSAvIGRlbm9taW5hdG9yLFxyXG4gICAgICB5ID0gLSgoYi55IC0gYS55KSAqIChkLnkgLSBjLnkpICogKGMueCAtIGEueClcclxuICAgICAgICArIChiLnggLSBhLngpICogKGQueSAtIGMueSkgKiBhLnlcclxuICAgICAgICAtIChkLnggLSBjLngpICogKGIueSAtIGEueSkgKiBjLnkpIC8gZGVub21pbmF0b3I7XHJcbiAgICAvL+WIpOaWreS6pOeCueaYr+WQpuWcqOS4pOadoee6v+auteS4ilxyXG4gICAgaWYgKFxyXG4gICAgICAvL+S6pOeCueWcqOe6v+autTFcclxuICAgICAgKHggLSBhLngpICogKHggLSBiLngpIDw9IDAgJiYgKHkgLSBhLnkpICogKHkgLSBiLnkpIDw9IDAgJiZcclxuICAgICAgLy/lubbkuJTkuqTngrnlnKjnur/mrrUy5LiKXHJcbiAgICAgICh4IC0gYy54KSAqICh4IC0gZC54KSA8PSAwICYmICh5IC0gYy55KSAqICh5IC0gZC55KSA8PSAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHt4OiB4LCB5OiB5fVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIG51bTFcclxuICAgKiBAcGFyYW0gbnVtMlxyXG4gICAqIEBwYXJhbSBlcnJvciDor6/lt65cclxuICAgKi9cclxuICBzdGF0aWMgZXF1YWxOdW0obnVtMTogYW55LCBudW0yOiBhbnksIGVycm9yID0gNSkge1xyXG4gICAgbGV0IG51bSA9IG51bTEgLSBudW0yO1xyXG4gICAgcmV0dXJuIG51bSA8IGVycm9yICYmIG51bSA+IC1lcnJvcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWdkOagh+WvueavlFxyXG4gICAqIEBwYXJhbSBwb2ludDFcclxuICAgKiBAcGFyYW0gcG9pbnQyXHJcbiAgICogQHBhcmFtIGVycm9yXHJcbiAgICovXHJcbiAgc3RhdGljIGVxdWFsUG9pbnQocG9pbnQxOiB7IHg6IGFueSwgeTogYW55IH0sIHBvaW50MjogeyB4OiBhbnksIHk6IGFueSB9LCBlcnJvciA9IDUpIHtcclxuICAgIHJldHVybiBUb29sc1V0aWwuZXF1YWxOdW0ocG9pbnQxLngsIHBvaW50Mi54LCBlcnJvcikgJiYgVG9vbHNVdGlsLmVxdWFsTnVtKHBvaW50MS55LCBwb2ludDIueSwgZXJyb3IpXHJcbiAgfVxyXG5cclxuXHJcbiAgLy/liKTmlq3ngrnmmK/lkKblnKjnur/mrrXkuIpcclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBzdGFydFBcclxuICAgKiBAcGFyYW0gZW5kUFxyXG4gICAqIEBwYXJhbSBhXHJcbiAgICogQHBhcmFtIGVycm9yIOivr+W3rlxyXG4gICAqL1xyXG4gIHN0YXRpYyBjaGVja0luTGluZShzdGFydFA6IGFueSwgZW5kUDogYW55LCBhOiBhbnksIGVycm9yID0gNSkge1xyXG4gICAgLy/ngrnlkoznq6/ngrnph43lkIhcclxuICAgIGlmIChUb29sc1V0aWwuZXF1YWxQb2ludChzdGFydFAsIGVuZFAsIGVycm9yKVxyXG4gICAgICB8fCBUb29sc1V0aWwuZXF1YWxQb2ludChzdGFydFAsIGEpXHJcbiAgICAgIHx8IFRvb2xzVXRpbC5lcXVhbFBvaW50KGVuZFAsIGEpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKFRvb2xzVXRpbC5lcXVhbE51bShzdGFydFAueCwgZW5kUC54LCBlcnJvcilcclxuICAgICAgJiYgIVRvb2xzVXRpbC5lcXVhbE51bShzdGFydFAueCwgYS54LCBlcnJvcikpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9IGVsc2UgaWYgKFRvb2xzVXRpbC5lcXVhbE51bShzdGFydFAueCwgZW5kUC54LCBlcnJvcilcclxuICAgICAgJiYgVG9vbHNVdGlsLmVxdWFsTnVtKHN0YXJ0UC54LCBhLngsIGVycm9yKSkge1xyXG4gICAgICBpZiAoc3RhcnRQLnkgPiBlbmRQLnkpIHtcclxuICAgICAgICByZXR1cm4gc3RhcnRQLnkgPiBhLnkgJiYgZW5kUC55IDwgYS55XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHN0YXJ0UC55IDwgYS55ICYmIGVuZFAueSA+IGEueVxyXG4gICAgfVxyXG4gICAgLy/liKTmlq3ngrnlnKjnur/mrrXkuIpcclxuICAgIC8v5pac546H5piv5ZCm5LiA6Ie0XHJcbiAgICBsZXQgazEgPSAoZW5kUC55IC0gc3RhcnRQLnkpIC8gKGVuZFAueCAtIHN0YXJ0UC54KTtcclxuICAgIGxldCBiID0gc3RhcnRQLnkgLSBrMSAqIHN0YXJ0UC54O1xyXG4gICAgbGV0IHkgPSBrMSAqIGEueCArIGI7XHJcbiAgICBpZiAoVG9vbHNVdGlsLmVxdWFsTnVtKHksIGEueSwgZXJyb3IpKSB7XHJcbiAgICAgIC8vNeWDj+e0oOeahOivr+W3rlxyXG4gICAgICBsZXQgc3RhcnRMZW4gPSBUb29sc1V0aWwuZ2V0TGVuZ3RoKHN0YXJ0UCwgYSlcclxuICAgICAgbGV0IGVuZExlbiA9IFRvb2xzVXRpbC5nZXRMZW5ndGgoYSwgZW5kUClcclxuICAgICAgbGV0IGxlbiA9IFRvb2xzVXRpbC5nZXRMZW5ndGgoc3RhcnRQLCBlbmRQKVxyXG4gICAgICByZXR1cm4gbGVuID49IHN0YXJ0TGVuICYmIGxlbiA+PSBlbmRMZW5cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog54K55pac5byPXHJcbiAgICovXHJcbiAgc3RhdGljIGdldFNsb3BlUG9pbnQoc3RhcnRQOiBhbnksIGVuZFA6IGFueSkge1xyXG4gICAgLy/orqHnrpfmlpznjodcclxuICAgIGlmIChzdGFydFAueCA9PSBlbmRQLngpIHtcclxuICAgICAgcmV0dXJuIHtrOiBJbmZpbml0eSwgeDogc3RhcnRQLnh9O1xyXG4gICAgfVxyXG4gICAgbGV0IGsgPSAoZW5kUC55IC0gc3RhcnRQLnkpIC8gKGVuZFAueCAtIHN0YXJ0UC54KTtcclxuICAgIGxldCBiID0gc3RhcnRQLnkgLSBrICogc3RhcnRQLng7XHJcbiAgICByZXR1cm4ge2s6IGssIGI6IGJ9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKuWIpOaWreeCueaYr+WQpuWcqOWdkOagh+WMuuWfn+WGhVxyXG4gICAqIEBwYXJhbSBwIOWIpOWumueahOeCuVxyXG4gICAqIEBwYXJhbSBwb2ludHNBcnJcclxuICAgKi9cclxuICBzdGF0aWMganVkZ2VJblJlYyhwOiB7IHgxPzogYW55LCB5MT86IGFueSwgeD86IGFueSwgeT86IGFueSB9LCBwb2ludHNBcnI6IHsgeDE/OiBhbnksIHkxPzogYW55LCB4PzogYW55LCB5PzogYW55IH1bXSkge1xyXG4gICAgcG9pbnRzQXJyID0gcG9pbnRzQXJyLm1hcChpdGVtID0+IHtcclxuICAgICAgcmV0dXJuIHt4MTogTnVtYmVyKGl0ZW0ueDEgfHwgaXRlbS54IHx8IDApLCB5MTogTnVtYmVyKGl0ZW0ueTEgfHwgaXRlbS55IHx8IDApfVxyXG4gICAgfSlcclxuICAgIHAgPSB7eDE6IHAueDEgfHwgcC54IHx8IDAsIHkxOiBwLnkxIHx8IHAueSB8fCAwfVxyXG4gICAgbGV0IHB4ID0gTnVtYmVyKHAueDEpLCBweSA9IE51bWJlcihwLnkxKSxcclxuICAgICAgZmxhZyA9IGZhbHNlLC8v56m/6LaK6L655qGGXHJcbiAgICAgIGluUmVjdCA9IGZhbHNlOy8v5piv5ZCm5Zyo5aSa6L655b2i55qE6L655oiW6ICF56uv54K55LiKXHJcbiAgICBsZXQgc3RhcnQgPSBwb2ludHNBcnJbMF1cclxuICAgIC8v5aaC5p6c5pWw57uE6aaW5bC+5rKh5pyJ55u46L+eLOaJi+WKqOa3u+WKoH07XHJcbiAgICBsZXQgZW5kID0gcG9pbnRzQXJyW3BvaW50c0Fyci5sZW5ndGggLSAxXTtcclxuICAgIC8v5aaC5p6c5pWw57uE6aaW5bC+5rKh5pyJ55u46L+eLOaJi+WKqOa3u+WKoFxyXG4gICAgcG9pbnRzQXJyID0gc3RhcnQueDEgIT0gZW5kLngxIHx8IHN0YXJ0LnkxICE9IGVuZC55MSA/IHBvaW50c0Fyci5jb25jYXQoc3RhcnQpIDogcG9pbnRzQXJyO1xyXG4gICAgLy/lsITnur/pgInlj5ZZ5Z2Q5qCH5LiN5Y+YLHjmraPmlrnlkJFcclxuICAgIHBvaW50c0Fyci5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPT0gcG9pbnRzQXJyLmxlbmd0aCAtIDFcclxuICAgICAgICB8fCBpblJlY3QvL+WcqOWkmui+ueW9oueahOi+ueaIluiAheerr+eCueS4iuinhuS4uuWcqOWMuuWfn+WGhVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgZW5kUG9pbnQgPSBwb2ludHNBcnJbaW5kZXggKyAxXVxyXG4gICAgICBjb25zdCBzdGFydFggPSBOdW1iZXIoaXRlbS54MSksIHN0YXJ0WSA9IE51bWJlcihpdGVtLnkxKSxcclxuICAgICAgICBlbmRYID0gTnVtYmVyKGVuZFBvaW50LngxKSwgZW5kWSA9IE51bWJlcihlbmRQb2ludC55MSk7XHJcbiAgICAgIC8v5Yik5pat54K55piv5ZCm5Zyo56uv54K55LiKXHJcbiAgICAgIGlmICgocHggPT0gc3RhcnRYICYmIHB5ID09IHN0YXJ0WSlcclxuICAgICAgICB8fCAocHggPT0gZW5kWCAmJiBweCA9PSBlbmRZKSkge1xyXG4gICAgICAgIGluUmVjdCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL+WIpOaWreWwhOe6v+mHjeWQiOW5tuS4lOeCueWcqOi+ueS4ilxyXG4gICAgICBpZiAoKHN0YXJ0WSA9PSBlbmRZICYmIGVuZFkgPT0gcHkpXHJcbiAgICAgICAgJiYgKChweCA+IGVuZFggJiYgcHggPCBzdGFydFhcclxuICAgICAgICAgIHx8IChweCA8IGVuZFggJiYgcHggPiBzdGFydFgpKSkpIHtcclxuICAgICAgICBpblJlY3QgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKChzdGFydFkgPCBweSAmJiBlbmRZID49IHB5KVxyXG4gICAgICAgIHx8IChzdGFydFkgPj0gcHkgJiYgZW5kWSA8IHB5KSkge1xyXG5cclxuICAgICAgICAvL+axguWwhOe6v+S4jue6v+auteS6pOeCueeahHjlnZDmoIcseeWdkOagh+i/mOaYr3B5XHJcbiAgICAgICAgbGV0IHggPSBzdGFydFggKyAocHkgLSBzdGFydFkpICogKGVuZFggLSBzdGFydFgpIC8gKGVuZFkgLSBzdGFydFkpO1xyXG4gICAgICAgIC8v54K55Zyo6L655LiKXHJcbiAgICAgICAgaWYgKHggPT0gcHgpIHtcclxuICAgICAgICAgIGluUmVjdCA9IHRydWVcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy945aSn5LqOcHjmnaXkv53or4HlsITnur/mnJ3lj7NcclxuICAgICAgICBpZiAoeCA+IHB4KSB7XHJcbiAgICAgICAgICBmbGFnID0gIWZsYWdcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gaW5SZWN0IHx8IGZsYWc7XHJcblxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRpZmZJbnB1dChjaG5nOiBTaW1wbGVDaGFuZ2UsIGFjdGlvbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgaWYgKGNobmcgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG5cclxuICAgIGxldCBjdXIgPSBKU09OLnN0cmluZ2lmeShjaG5nLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICBsZXQgcHJldiA9IEpTT04uc3RyaW5naWZ5KGNobmcucHJldmlvdXNWYWx1ZSk7XHJcbiAgICBpZiAoY3VyICE9PSBwcmV2KSB7XHJcbiAgICAgIGFjdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRlZXBDb3B5KG9iajogYW55KSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkaWZmSW5wdXRzKGNobmc6IFNpbXBsZUNoYW5nZVtdLCBhY3Rpb246ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGlmIChjaG5nID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgIGlmIChjaG5nLmxlbmd0aCA9PSAwKSByZXR1cm47XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNobmcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSBjaG5nW2ldO1xyXG4gICAgICBpZiAoaXRlbSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcclxuICAgICAgbGV0IGN1ciA9IEpTT04uc3RyaW5naWZ5KGl0ZW0uY3VycmVudFZhbHVlKTtcclxuICAgICAgbGV0IHByZXYgPSBKU09OLnN0cmluZ2lmeShpdGVtLnByZXZpb3VzVmFsdWUpO1xyXG4gICAgICBpZiAoY3VyICE9PSBwcmV2KSB7XHJcbiAgICAgICAgYWN0aW9uKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBkYXRhVVJMdG9CbG9iKGRhdGF1cmw6IGFueSkge1xyXG4gICAgdmFyIGFyciA9IGRhdGF1cmwuc3BsaXQoJywnKSwgbWltZSA9IGFyclswXS5tYXRjaCgvOiguKj8pOy8pWzFdLFxyXG4gICAgICBic3RyID0gYXRvYihhcnJbMV0pLCBuID0gYnN0ci5sZW5ndGgsIHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XHJcbiAgICB3aGlsZSAobi0tKSB7XHJcbiAgICAgIHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBCbG9iKFt1OGFycl0sIHt0eXBlOiBtaW1lfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGF0YVVSTHRvRmlsZShkYXRhdXJsOiBhbnksIGZpbGVuYW1lPzogc3RyaW5nKSB7XHJcbiAgICB2YXIgYXJyID0gZGF0YXVybC5zcGxpdCgnLCcpLCBtaW1lID0gYXJyWzBdLm1hdGNoKC86KC4qPyk7LylbMV0sXHJcbiAgICAgIGJzdHIgPSBhdG9iKGFyclsxXSksIG4gPSBic3RyLmxlbmd0aCwgdThhcnIgPSBuZXcgVWludDhBcnJheShuKTtcclxuICAgIHdoaWxlIChuLS0pIHtcclxuICAgICAgdThhcnJbbl0gPSBic3RyLmNoYXJDb2RlQXQobik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IEZpbGUoW3U4YXJyXSwgKGZpbGVuYW1lIHx8IFRvb2xzVXRpbC5nZXRSYW5kb21GaWxlTmFtZSgpKSwge3R5cGU6IG1pbWV9KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRZZXN0ZXJkYXkoZGF5OiBEYXRlKTogRGF0ZSB7XHJcblxyXG4gICAgbGV0IHRpbWUgPSBkYXkuZ2V0VGltZSgpIC0gMTAwMCAqIDYwICogNjAgKiAyNDtcclxuICAgIGRheSA9IG5ldyBEYXRlKHRpbWUpO1xyXG5cclxuICAgIHJldHVybiBkYXk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0VG9tb3Jyb3dkYXkoZGF5OiBEYXRlKTogRGF0ZSB7XHJcbiAgICBsZXQgdGltZSA9IGRheS5nZXRUaW1lKCkgKyAxMDAwICogNjAgKiA2MCAqIDI0O1xyXG5cclxuICAgIHJldHVybiBuZXcgRGF0ZSh0aW1lKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXROZXh0TW9udGgoZGF5OiBEYXRlKSB7XHJcbiAgICBsZXQgZHMgPSBuZXcgRGF0ZShkYXkpLnNldE1vbnRoKGRheS5nZXRNb250aCgpICsgMSk7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoZHMpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFZpZGVvQ292ZXIodXJsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBUb29sc1V0aWwuZ2V0T3NzVXJsKHVybCkgKyBcIj94LW9zcy1wcm9jZXNzPXZpZGVvL3NuYXBzaG90LHRfMTAwMDAsbV9mYXN0XCI7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZmlzdERheU9mTW9udGgoZGF5OiBEYXRlKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUobmV3IERhdGUoZGF5KS5zZXREYXRlKDEpKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBsYXN0RGF5T2ZNb250aChkYXk6IERhdGUpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZShUb29sc1V0aWwuZ2V0TmV4dE1vbnRoKGRheSkuc2V0RGF0ZSgwKSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0UmFuZG9tRmlsZU5hbWUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBjb25zdCBleHBlY3QgPSAxNjtcclxuICAgIGxldCBzdHIgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XHJcbiAgICB3aGlsZSAoc3RyLmxlbmd0aCA8IGV4cGVjdCkge1xyXG4gICAgICBzdHIgKz0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgZXhwZWN0KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRGaWxlRXh0ID0gZnVuY3Rpb24gKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIHZhciBpbmRleCA9IGZpbGVOYW1lLmxhc3RJbmRleE9mKFwiLlwiKTtcclxuICAgIHZhciBzdWZmaXggPSBmaWxlTmFtZS5zdWJzdHIoaW5kZXggKyAxKTtcclxuICAgIHJldHVybiBzdWZmaXg7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0SHR0cE9wdGlvbnMoKTogYW55IHtcclxuICAgIHJldHVybiB7aXNDb21tb25IdHRwSGVhZGVyOiB0cnVlfVxyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyByZXNldEZvcm1WYWx1ZShvcHQ6IEF0ckZvcm1PcHQsIGpzb246IGpzb24pOiBBdHJGb3JtT3B0IHtcclxuICAgIGZvciAobGV0IGl0ZW0gb2Ygb3B0Lml0ZW1zKSB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBcIlwiO1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhqc29uKSkge1xyXG4gICAgICAgIGlmIChqc29uLmhhc093blByb3BlcnR5KGtleSkgJiYganNvbltrZXldICE9IG51bGwgJiYganNvbltrZXldICE9IHVuZGVmaW5lZCAmJiBrZXkgPT0gaXRlbS5rZXkpIHtcclxuICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gJ2RhdGUnKVxyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0gbmV3IERhdGUoanNvbltrZXldKTtcclxuICAgICAgICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnZGF0ZVRpbWUnKSB7XHJcbiAgICAgICAgICAgIGl0ZW0udmFsdWUgPSBuZXcgRGF0ZShqc29uW2tleV0pO1xyXG4gICAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICAgIGl0ZW0udmFsdWUgPSBqc29uW2tleV1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvcHQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0Rm9ybWF0RGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBtb250aDogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgIGxldCBzdHJEYXRlOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcclxuXHJcbiAgICBpZiAobW9udGggPD0gOSkge1xyXG4gICAgICBtb250aCA9IFwiMFwiICsgbW9udGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0ckRhdGUgPD0gOSkge1xyXG4gICAgICBzdHJEYXRlID0gXCIwXCIgKyBzdHJEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKyBcIi1cIiArIG1vbnRoICsgXCItXCIgKyBzdHJEYXRlXHJcbiAgICAvLyArIFwiIFwiXHJcbiAgICAvLyArIGRhdGUuZ2V0SG91cnMoKSArIFwiOlwiICsgZGF0ZS5nZXRNaW51dGVzKCkgKyBcIjpcIiArIGRhdGUuZ2V0U2Vjb25kcygpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZvcm1hdERhdGVGdWxsKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IG1vbnRoOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgbGV0IHN0ckRhdGU6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG5cclxuICAgIGlmIChtb250aCA8PSA5KSB7XHJcbiAgICAgIG1vbnRoID0gXCIwXCIgKyBtb250aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RyRGF0ZSA8PSA5KSB7XHJcbiAgICAgIHN0ckRhdGUgPSBcIjBcIiArIHN0ckRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSArIFwiLVwiICsgbW9udGggKyBcIi1cIiArIHN0ckRhdGUgKyBcIiBcIiArIChkYXRlLmdldEhvdXJzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0SG91cnMoKSA6IGRhdGUuZ2V0SG91cnMoKSkgKyBcIjpcIiArIChkYXRlLmdldE1pbnV0ZXMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRNaW51dGVzKCkgOiBkYXRlLmdldE1pbnV0ZXMoKSkgKyBcIjpcIiArIChkYXRlLmdldFNlY29uZHMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRTZWNvbmRzKCkgOiBkYXRlLmdldFNlY29uZHMoKSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0Rm9ybWF0RGF0ZVdpdGhvdXRTKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IG1vbnRoOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgbGV0IHN0ckRhdGU6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgbGV0IGhvdXJzOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldEhvdXJzKCk7XHJcbiAgICBsZXQgc2Vjb25kczogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRNaW51dGVzKCk7XHJcbiAgICBpZiAobW9udGggPD0gOSkge1xyXG4gICAgICBtb250aCA9IFwiMFwiICsgbW9udGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0ckRhdGUgPD0gOSkge1xyXG4gICAgICBzdHJEYXRlID0gXCIwXCIgKyBzdHJEYXRlO1xyXG4gICAgfVxyXG4gICAgaWYgKGhvdXJzIDw9IDkpIHtcclxuICAgICAgaG91cnMgPSBcIjBcIiArIGhvdXJzO1xyXG4gICAgfVxyXG4gICAgaWYgKHNlY29uZHMgPD0gOSkge1xyXG4gICAgICBzZWNvbmRzID0gXCIwXCIgKyBzZWNvbmRzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSArIFwiLVwiICsgbW9udGggKyBcIi1cIiArIHN0ckRhdGUgKyBcIiBcIiArIGhvdXJzICsgXCI6XCIgKyBzZWNvbmRzO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZvcm1hdERhdGVIb3VyKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IG1vbnRoOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgbGV0IHN0ckRhdGU6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgbGV0IGhvdXJzOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldEhvdXJzKCk7XHJcbiAgICBsZXQgc2Vjb25kczogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRNaW51dGVzKCk7XHJcbiAgICBpZiAobW9udGggPD0gOSkge1xyXG4gICAgICBtb250aCA9IFwiMFwiICsgbW9udGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0ckRhdGUgPD0gOSkge1xyXG4gICAgICBzdHJEYXRlID0gXCIwXCIgKyBzdHJEYXRlO1xyXG4gICAgfVxyXG4gICAgaWYgKGhvdXJzIDw9IDkpIHtcclxuICAgICAgaG91cnMgPSBcIjBcIiArIGhvdXJzO1xyXG4gICAgfVxyXG4gICAgaWYgKHNlY29uZHMgPD0gOSkge1xyXG4gICAgICBzZWNvbmRzID0gXCIwXCIgKyBzZWNvbmRzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSArIFwiXCIgKyBtb250aCArIHN0ckRhdGUgKyBob3VycztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRPc3NVcmwodXJsOiBzdHJpbmcsIG5lZWRUaW1lID0gZmFsc2UpIHtcclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gICAgaWYgKG5lZWRUaW1lKSB7XHJcbiAgICAgIC8vIHVybCA9IHVybCArIFwiP3Y9XCIgKyBUb29sc1V0aWwuZ2V0Rm9ybWF0RGF0ZUhvdXIobmV3IERhdGUoKSk7XHJcbiAgICAgIHVybCA9IHVybCArIFwiP3Y9XCIgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKVxyXG4gICAgfVxyXG4gICAgaWYgKHVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xyXG4gICAgICByZXR1cm4gdXJsXHJcbiAgICB9XHJcbiAgICBpZiAoIXVybC5zdGFydHNXaXRoKFwiL1wiKSAmJiAhYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMLmVuZHNXaXRoKCcvJykpIHtcclxuICAgICAgdXJsID0gJy8nICsgdXJsXHJcbiAgICB9XHJcbiAgICBsZXQgcmVzdWx0ID0gYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMICsgdXJsXHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdFxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFN0YXRpY09zc1VybCh1cmw6IHN0cmluZykge1xyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XHJcbiAgICAgIHJldHVybiB1cmxcclxuICAgIH1cclxuICAgIHJldHVybiBhdHJfc3RhdGljX2RhdGFzLlNUQVRJQ19PU1NfVVJMICsgdXJsO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHJlbW92ZUh0bWwodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvPFtePD5dKz4vZywgJycpLnJlcGxhY2UoLyZuYnNwOy9pZywgJycpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbXVsKC4uLm51bWJlcnM6IGFueSkge1xyXG4gICAgaWYgKG51bWJlcnMubGVuZ3RoIDwgMikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgbSA9IHRoaXMuZ2V0RGlnaXQobnVtYmVycyk7XHJcbiAgICBsZXQgcmVzdWx0ID0gMTtcclxuICAgIG51bWJlcnMuZm9yRWFjaChcclxuICAgICAgKG51bTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IHMgPSBudW0udG9TdHJpbmcoKTtcclxuICAgICAgICByZXN1bHQgKj0gTnVtYmVyKHMucmVwbGFjZShcIi5cIiwgXCJcIikpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHJlc3VsdCAvIE1hdGgucG93KDEwLCBtKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXREaWdpdCguLi5udW1iZXJzOiBhbnlbXSkge1xyXG4gICAgbGV0IG0gPSAwO1xyXG4gICAgbnVtYmVycy5mb3JFYWNoKFxyXG4gICAgICBudW0gPT4ge1xyXG4gICAgICAgIGxldCBzID0gbnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIG0gKz0gcy5zcGxpdChcIi5cIilbMV0ubGVuZ3RoXHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHJldHVybiBtO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRvd25sb2FkSW1nKGRhdGE6IGFueSwgZmlsZU5hbWU/OiBzdHJpbmcsIGVuZHBvaW50Pzogc3RyaW5nKSB7XHJcbiAgICAvLyAvLyDkuIvovb3nsbvlnosgeGxzXHJcbiAgICAvLyBjb25zdCBjb250ZW50VHlwZSA9ICdpbWFnZS9qcGVnJztcclxuICAgIC8vIC8vIGNvbnN0IGNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JztcclxuICAgIC8vIC8vIOS4i+i9veexu+Wei++8mmNzdlxyXG4gICAgLy8gY29uc3QgZGVidWcgPSB7aGVsbG86IFwid29ybGRcIn07XHJcbiAgICAvLyBjb25zdCBibG9iID0gbmV3IEJsb2IoW10se3R5cGUgOiAnaW1hZ2UvanBlZyd9KTtcclxuICAgIC8vIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgLy9cclxuICAgIC8vIC8vIOaJk+W8gOaWsOeql+WPo+aWueW8j+i/m+ihjOS4i+i9vVxyXG4gICAgLy8gLy8gd2luZG93Lm9wZW4odXJsKTtcclxuICAgIC8vXHJcbiAgICAvLyAvLyDku6XliqjmgIHliJvlu7ph5qCH562+6L+b6KGM5LiL6L29XHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgYS5ocmVmID0gZGF0YTtcclxuICAgIC8vIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZSA/IGZpbGVOYW1lIDogXCJcIiArIGVuZHBvaW50O1xyXG4gICAgYS5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRvd25sb2FkWGxzKHVybDogc3RyaW5nLCBwYXJhbXM/OiBhbnksKSB7XHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIHVybCArPSBcIj9cIjtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xyXG4gICAgICAgIGlmIChwYXJhbXNba2V5XSkge1xyXG4gICAgICAgICAgdXJsICs9IGtleSArIFwiPVwiICsgcGFyYW1zW2tleV0gKyBcIiYmXCJcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIHdpbmRvdy5vcGVuKHVybCk7XHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgYS5ocmVmID0gdXJsO1xyXG4gICAgLy8gLy8gYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgLy8gYS5kb3dubG9hZCA9IFwiMzMyMS54bHNcIjtcclxuICAgIGEuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRJbWcodXJsOiBzdHJpbmcsIHBhcmFtOiBhbnkgPSB7XHJcbiAgICBpbWdXOiAwLCBpbWdIOiAwLFxyXG4gICAgbmVlZFRpbWU6IGZhbHNlLCBpc0Z1bGxVcmw6IGZhbHNlXHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgbGV0IGRhdGFVcmw6IGFueSA9IFNlc3Npb25TdG9yYWdlVXRpbC5nZXRJbWcodXJsKVxyXG4gICAgICBsZXQgaW1nID0gbmV3IEltYWdlKClcclxuICAgICAgaW1nLnNldEF0dHJpYnV0ZSgnY3Jvc3NPcmlnaW4nLCAnYW5vbnltb3VzJylcclxuICAgICAgaWYgKCFkYXRhVXJsKSB7XHJcbiAgICAgICAgaW1nLnNyYyA9IHBhcmFtLmlzRnVsbFVybCA/IHVybCA6IFRvb2xzVXRpbC5nZXRPc3NVcmwodXJsLCBwYXJhbS5uZWVkVGltZSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgaW5kZXggPSBkYXRhVXJsLmluZGV4T2YoXCJ9XCIpICsgMVxyXG4gICAgICAgIGltZy5zcmMgPSBkYXRhVXJsLnNsaWNlKDAsIDUwKSArIGRhdGFVcmwuc2xpY2UoaW5kZXgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGxldCBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJylcclxuICAgICAgICBsZXQgY29udGV4dDI6IGFueSA9IGMuZ2V0Q29udGV4dChcIjJkXCIpXHJcbiAgICAgICAgYy53aWR0aCA9IHBhcmFtLmltZ1cgfHwgaW1nLndpZHRoO1xyXG4gICAgICAgIGMuaGVpZ2h0ID0gcGFyYW0uaW1nSCB8fCBpbWcuaGVpZ2h0XHJcbiAgICAgICAgY29udGV4dDIuZHJhd0ltYWdlKGltZywgMCwgMCwgYy53aWR0aCwgYy5oZWlnaHQpXHJcbiAgICAgICAgbGV0IGRhdGFVcmwgPSBjLnRvRGF0YVVSTCgpXHJcbiAgICAgICAgbGV0IHN0ciA9IGMud2lkdGggKyBcIixcIiArIGMuaGVpZ2h0ICsgXCJ9XCJcclxuICAgICAgICBkYXRhVXJsID0gZGF0YVVybC5zbGljZSgwLCA1MCkgKyBzdHIgKyBkYXRhVXJsLnNsaWNlKDUwKVxyXG4vL+S4jeS/neWtmFxyXG4vLyAgICAgICAgIFNlc3Npb25TdG9yYWdlVXRpbC5zZXRJbWcodXJsLCBkYXRhVXJsKVxyXG5cclxuICAgICAgICByZXNvbHZlKGltZylcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcGl4ZWxUb051bSh3aWR0aDogYW55KSB7XHJcbiAgICBjb25zdCByZSA9IC9weC9naTtcclxuICAgIGxldCB3aWR0aFN0ciA9IHdpZHRoLnJlcGxhY2UocmUsIFwiXCIpO1xyXG4gICAgcmV0dXJuIE51bWJlcih3aWR0aFN0cik7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWxsRXF1YWwgPSAoLi4uYXJyYXk6IGFueVtdKSA9PiBhcnJheS5ldmVyeShpdGVtID0+IGl0ZW0gPT09IGFycmF5WzBdKTtcclxuXHJcbiAgLyoqXHJcbiAgICogYXJyYXnmiYDmnInlj4LmlbDmu6HotrNmbuWHveaVsOi/lOWbnnRydWVcclxuICAgKiBhbGwoeCA9PiB4ID4gMSwxLDIsMyk7IC8vIHRydWVcclxuICAgKiBAcGFyYW0gY2FsbGJhY2tcclxuICAgKiBAcGFyYW0gYXJyYXlcclxuICAgKi9cclxuICBzdGF0aWMgc2F0aXNmaWVkRm4gPSAoY2FsbGJhY2s6ICguLi5hcmdzOiBhbnlbXSkgPT4gYm9vbGVhbiwgLi4uYXJyYXk6IGFueVtdKSA9PiBhcnJheS5ldmVyeShjYWxsYmFjayk7XHJcblxyXG4gIC8v5YWo6YOo5LiN56m65Li6dHJ1ZVxyXG4gIHN0YXRpYyBub3RFbXB0eSguLi5hcnI6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYXJyLmV2ZXJ5KGl0ZW0gPT4gISFpdGVtKVxyXG4gIH1cclxuXHJcbiAgLy/ljIXlkKvnqbrkuLp0cnVlXHJcbiAgc3RhdGljIGhhc0VtcHR5KC4uLmFycjogYW55W10pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBhcnIuc29tZShpdGVtID0+ICFpdGVtKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhbGxFbXB0eSguLi5hcnI6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gYXJyLmV2ZXJ5KGl0ZW0gPT4gIWl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzQXJyYXkob2JqOiBhbnkpIHtcclxuICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBBcnJheVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzRW1wdHkob2JqOiBhbnkpIHtcclxuICAgIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgaWYgKG9iaiA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBvYmogPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgaWYgKG9iaiA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2Ygb2JqID09IFwic3RyaW5nXCIgJiYgb2JqLnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGVuY29kZVZhbHVlKHBhcmFtczogYW55KSB7XHJcbiAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goa2V5ID0+IHBhcmFtc1trZXldID0gZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtc1trZXldKSk7XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHdpbmRvd0hlaWdodCgpIHtcclxuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHdpbmRvd1dpZHRoKCkge1xyXG5cclxuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbW9kYWxlU3R5bGUoKSB7XHJcbiAgICByZXR1cm4geydtYXhIZWlnaHQnOiBUb29sc1V0aWwud2luZG93SGVpZ2h0KCkgLSAyMDAgKyAncHgnLCAnb3ZlcmZsb3cteSc6ICdhdXRvJ307XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0TGVuZ3RoKHBvaW50QTogeyB4MTogYW55LCB5MTogYW55LCB4OiBhbnksIHk6IGFueSB9LCBwb2ludEI6IHsgeDogYW55LCB5OiBhbnksIHgxOiBhbnksIHkxOiBhbnkgfSkge1xyXG4gICAgcG9pbnRBLngxID0gcG9pbnRBLnggfHwgcG9pbnRBLngxIHx8IDBcclxuICAgIHBvaW50QS55MSA9IHBvaW50QS55IHx8IHBvaW50QS55MSB8fCAwXHJcbiAgICBwb2ludEIueTEgPSBwb2ludEIueSB8fCBwb2ludEIueTEgfHwgMDtcclxuICAgIHBvaW50Qi54MSA9IHBvaW50Qi54IHx8IHBvaW50Qi54MSB8fCAwO1xyXG4gICAgdmFyIGxlbmd0aEFCID0gTWF0aC5zcXJ0KE1hdGgucG93KHBvaW50QS54MSAtIHBvaW50Qi54MSwgMikgK1xyXG4gICAgICBNYXRoLnBvdyhwb2ludEEueTEgLSBwb2ludEIueTEsIDIpKVxyXG4gICAgcmV0dXJuIGxlbmd0aEFCO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFJvdGF0ZU51bShwb2ludEI6IHsgeDE6IGFueSwgeTE6IGFueSwgeDogYW55LCB5OiBhbnkgfSwgcG9pbnRDOiB7IHgxOiBhbnksIHkxOiBhbnksIHg6IGFueSwgeTogYW55IH0sIHBvaW50QTogeyB4MTogYW55LCB5MTogYW55LCB4OiBhbnksIHk6IGFueSB9KSB7XHJcbiAgICBwb2ludEEueDEgPSBwb2ludEEueCB8fCBwb2ludEEueDEgfHwgMFxyXG4gICAgcG9pbnRBLnkxID0gcG9pbnRBLnkgfHwgcG9pbnRBLnkxIHx8IDBcclxuICAgIHBvaW50Qi54MSA9IHBvaW50Qi55IHx8IHBvaW50Qi54MSB8fCAwO1xyXG4gICAgcG9pbnRCLnkxID0gcG9pbnRCLnggfHwgcG9pbnRCLngxIHx8IDA7XHJcbiAgICBwb2ludEMueDEgPSBwb2ludEMueSB8fCBwb2ludEMueDEgfHwgMDtcclxuICAgIHBvaW50Qy55MSA9IHBvaW50Qy54IHx8IHBvaW50Qy54MSB8fCAwO1xyXG5cclxuICAgIC8vQUJD5Lit5b+D54K5LOi1t+Wni+eCuSznu4jngrlcclxuICAgIGxldCBBQjogYW55ID0ge307XHJcbiAgICBsZXQgQUM6IGFueSA9IHt9O1xyXG4gICAgQUIueDEgPSBwb2ludEIueDEgLSBwb2ludEEueDFcclxuICAgIEFCLnkxID0gcG9pbnRCLnkxIC0gcG9pbnRBLnkxXHJcbiAgICBBQy54MSA9IHBvaW50Qy54MSAtIHBvaW50QS54MVxyXG4gICAgQUMueTEgPSBwb2ludEMueTEgLSBwb2ludEEueTFcclxuICAgIHZhciBkaXJlY3QgPSBBQi54MSAqIEFDLnkxIC0gQUIueTEgKiBBQy55MVxyXG4gICAgdmFyIGxlbmd0aEFCID0gdGhpcy5nZXRMZW5ndGgocG9pbnRCLCBwb2ludEEpXHJcbiAgICB2YXIgbGVuZ3RoQUMgPSB0aGlzLmdldExlbmd0aChwb2ludEMsIHBvaW50QSlcclxuICAgIHZhciBsZW5ndGhCQyA9IHRoaXMuZ2V0TGVuZ3RoKHBvaW50QiwgcG9pbnRDKVxyXG4gICAgdmFyIGNvc0EgPSAoTWF0aC5wb3cobGVuZ3RoQUIsIDIpICsgTWF0aC5wb3cobGVuZ3RoQUMsIDIpIC1cclxuICAgICAgTWF0aC5wb3cobGVuZ3RoQkMsIDIpKSAvICgyICogbGVuZ3RoQUIgKiBsZW5ndGhBQylcclxuICAgIHZhciBhbmdsZUEgPSBNYXRoLnJvdW5kKE1hdGguYWNvcyhjb3NBKSAqIDE4MCAvIE1hdGguUEkpXHJcbiAgICBpZiAoZGlyZWN0IDwgMCkge1xyXG4gICAgICByZXR1cm4gLWFuZ2xlQVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGFuZ2xlQVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8v57uVY2VudGVy54K55peL6L2scm90YXRl6KeS5bqmXHJcbiAgc3RhdGljIGdldFJvdGF0ZVBvaW50KHA6IHsgeDE6IGFueSwgeTE6IGFueSB9LCBjZW50ZXI6IHsgeDE6IGFueSwgeTE6IGFueSB9LCByb3RhdGU6IGFueSkge1xyXG4gICAgbGV0IHN0YXJ0WCA9IHAueDFcclxuICAgIGxldCBzdGFydFkgPSBwLnkxXHJcbiAgICBsZXQgYSA9IGNlbnRlci54MVxyXG4gICAgbGV0IGIgPSBjZW50ZXIueTFcclxuICAgIGxldCB4MSA9IGEgLSBNYXRoLmNvcyhyb3RhdGUgKiBNYXRoLlBJIC8gMTgwKSAqIChhIC0gc3RhcnRYKSArIE1hdGguc2luKHJvdGF0ZSAqIE1hdGguUEkgLyAxODApICogKGIgLSBzdGFydFkpXHJcbiAgICBsZXQgeTEgPSBiIC0gTWF0aC5jb3Mocm90YXRlICogTWF0aC5QSSAvIDE4MCkgKiAoYiAtIHN0YXJ0WSkgLSBNYXRoLnNpbihyb3RhdGUgKiBNYXRoLlBJIC8gMTgwKSAqIChhIC0gc3RhcnRYKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgeDE6IHgxLFxyXG4gICAgICB5MTogeTFcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19