tide-design-system 2.5.17 → 2.5.18

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.
package/dist/index.js CHANGED
@@ -561,6 +561,7 @@ const Pt = {
561
561
  EQUIPMENT: "equipment",
562
562
  PWC: "pwc",
563
563
  RV: "rv",
564
+ RVT: "rvt",
564
565
  SNOW: "snow",
565
566
  TRUCK: "truck"
566
567
  }, V = {
@@ -4919,6 +4920,7 @@ const kn = (s, i) => !(Array.isArray(i) ? i : [i]).some((n) => n.contains(s.targ
4919
4920
  EQUIPMENT: 122,
4920
4921
  PWC: 148,
4921
4922
  RV: 129,
4923
+ RVT: 55,
4922
4924
  SNOW: 136,
4923
4925
  TRUCK: 148
4924
4926
  }, Wa = {
@@ -4953,7 +4955,7 @@ const kn = (s, i) => !(Array.isArray(i) ? i : [i]).some((n) => n.contains(s.targ
4953
4955
  return $(
4954
4956
  () => [i.markOnly, i.realm],
4955
4957
  async () => {
4956
- const r = es(() => i.markOnly ? qe(/* @__PURE__ */ Object.assign({ "../assets/svg/branding/mark/mark-aero.svg": () => import("./chunks/mark-aero.js"), "../assets/svg/branding/mark/mark-atv.svg": () => import("./chunks/mark-atv.js"), "../assets/svg/branding/mark/mark-boatmart.svg": () => import("./chunks/mark-boatmart.js"), "../assets/svg/branding/mark/mark-cycle.svg": () => import("./chunks/mark-cycle.js"), "../assets/svg/branding/mark/mark-equipment.svg": () => import("./chunks/mark-equipment.js"), "../assets/svg/branding/mark/mark-pwc.svg": () => import("./chunks/mark-pwc.js"), "../assets/svg/branding/mark/mark-rv.svg": () => import("./chunks/mark-rv.js"), "../assets/svg/branding/mark/mark-snow.svg": () => import("./chunks/mark-snow.js"), "../assets/svg/branding/mark/mark-truck.svg": () => import("./chunks/mark-truck.js") }), `../assets/svg/branding/mark/mark-${i.realm}.svg`, 6) : qe(/* @__PURE__ */ Object.assign({ "../assets/svg/branding/logo/logo-aero.svg": () => import("./chunks/logo-aero.js"), "../assets/svg/branding/logo/logo-atv.svg": () => import("./chunks/logo-atv.js"), "../assets/svg/branding/logo/logo-boatmart.svg": () => import("./chunks/logo-boatmart.js"), "../assets/svg/branding/logo/logo-cycle.svg": () => import("./chunks/logo-cycle.js"), "../assets/svg/branding/logo/logo-equipment.svg": () => import("./chunks/logo-equipment.js"), "../assets/svg/branding/logo/logo-pwc.svg": () => import("./chunks/logo-pwc.js"), "../assets/svg/branding/logo/logo-rv.svg": () => import("./chunks/logo-rv.js"), "../assets/svg/branding/logo/logo-snow.svg": () => import("./chunks/logo-snow.js"), "../assets/svg/branding/logo/logo-truck.svg": () => import("./chunks/logo-truck.js") }), `../assets/svg/branding/logo/logo-${i.realm}.svg`, 6));
4958
+ const r = es(() => i.markOnly ? qe(/* @__PURE__ */ Object.assign({ "../assets/svg/branding/mark/mark-aero.svg": () => import("./chunks/mark-aero.js"), "../assets/svg/branding/mark/mark-atv.svg": () => import("./chunks/mark-atv.js"), "../assets/svg/branding/mark/mark-boatmart.svg": () => import("./chunks/mark-boatmart.js"), "../assets/svg/branding/mark/mark-cycle.svg": () => import("./chunks/mark-cycle.js"), "../assets/svg/branding/mark/mark-equipment.svg": () => import("./chunks/mark-equipment.js"), "../assets/svg/branding/mark/mark-pwc.svg": () => import("./chunks/mark-pwc.js"), "../assets/svg/branding/mark/mark-rv.svg": () => import("./chunks/mark-rv.js"), "../assets/svg/branding/mark/mark-rvt.svg": () => import("./chunks/mark-rvt.js"), "../assets/svg/branding/mark/mark-snow.svg": () => import("./chunks/mark-snow.js"), "../assets/svg/branding/mark/mark-truck.svg": () => import("./chunks/mark-truck.js") }), `../assets/svg/branding/mark/mark-${i.realm}.svg`, 6) : qe(/* @__PURE__ */ Object.assign({ "../assets/svg/branding/logo/logo-aero.svg": () => import("./chunks/logo-aero.js"), "../assets/svg/branding/logo/logo-atv.svg": () => import("./chunks/logo-atv.js"), "../assets/svg/branding/logo/logo-boatmart.svg": () => import("./chunks/logo-boatmart.js"), "../assets/svg/branding/logo/logo-cycle.svg": () => import("./chunks/logo-cycle.js"), "../assets/svg/branding/logo/logo-equipment.svg": () => import("./chunks/logo-equipment.js"), "../assets/svg/branding/logo/logo-pwc.svg": () => import("./chunks/logo-pwc.js"), "../assets/svg/branding/logo/logo-rv.svg": () => import("./chunks/logo-rv.js"), "../assets/svg/branding/logo/logo-rvt.svg": () => import("./chunks/logo-rvt.js"), "../assets/svg/branding/logo/logo-snow.svg": () => import("./chunks/logo-snow.js"), "../assets/svg/branding/logo/logo-truck.svg": () => import("./chunks/logo-truck.js") }), `../assets/svg/branding/logo/logo-${i.realm}.svg`, 6));
4957
4959
  o.value = ts(r);
4958
4960
  },
4959
4961
  { immediate: !0 }
@@ -5369,4 +5371,4 @@ export {
5369
5371
  Mo as useTideForm,
5370
5372
  ia as useTideToaster
5371
5373
  };
5372
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy9PcmllbnRhdGlvbi50cyIsIi4uL3NyYy90eXBlcy9TdHlsZXMudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUiLCIuLi9zcmMvdHlwZXMvUmVhbG0udHMiLCIuLi9zcmMvdHlwZXMvU2l6ZS50cyIsIi4uL3NyYy91dGlsaXRpZXMvZm9ybWF0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUljb24udnVlIiwiLi4vc3JjL3R5cGVzL0ljb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWNjb3JkaW9uSXRlbS52dWUiLCIuLi9zcmMvdHlwZXMvRWxlbWVudC50cyIsIi4uL3NyYy9jb21wb3NhYmxlcy91c2VUaWRlQ29uZmlnLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUiLCIuLi9zcmMvdHlwZXMvUHJpb3JpdHkudHMiLCIuLi9zcmMvdHlwZXMvVGFyZ2V0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlIiwiLi4vc3JjL3R5cGVzL0FsZXJ0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUFsZXJ0LnZ1ZSIsIi4uL3NyYy90eXBlcy9CYWRnZS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCYWRnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2VUcnVzdGVkUGFydG5lci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2VWZXJpZmllZFZlaGljbGUudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJyZWFkQ3J1bWJzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvblNhdmUudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvblNlZ21lbnRlZC52dWUiLCIuLi9zcmMvdHlwZXMvQ2FyZC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDYXJkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDYXJvdXNlbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2hpcEFjdGlvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2hpcEZpbHRlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2hpcElucHV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDb2x1bW5zLnZ1ZSIsIi4uL3NyYy9jb21wb3NhYmxlcy91c2VUaWRlRm9ybS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVGb3JtLnZ1ZSIsIi4uL3NyYy90eXBlcy9JbWFnZS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2VCYWNrZ3JvdW5kLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbmRpY2F0b3IudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlIiwiLi4vc3JjL3V0aWxpdGllcy92YWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0Q2hlY2tib3gudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0Q2hlY2tib3hEZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFJhZGlvLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFJhZGlvRGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvdHlwZXMvRm9ybWF0dGVkLnRzIiwiLi4vc3JjL3R5cGVzL1ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3QudnVlIiwiLi4vc3JjL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3REZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9UZXh0SW5wdXQudHMiLCIuLi9zcmMvdXRpbGl0aWVzL2Zvcm1zLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0YXJlYS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0YXJlYURlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1lbnVJdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9CcmVha3BvaW50LnRzIiwiLi4vc3JjL3V0aWxpdGllcy92aWV3cG9ydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNb2RhbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUGFnaW5hdGlvbi52dWUiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9jb3JlL2Rpc3QvZmxvYXRpbmctdWkuY29yZS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdnVlL2Rpc3QvZmxvYXRpbmctdWkudnVlLm1qcyIsIi4uL3NyYy91dGlsaXRpZXMvZXZlbnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUG9wb3Zlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUmF0aW5nLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbUxvZ28udHMiLCIuLi9zcmMvdXRpbGl0aWVzL3JlYWxtLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVJlYWxtTG9nby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU2VvTGlua3MudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNoZWV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVRhYnMudnVlIiwiLi4vc3JjL2NvbXBvc2FibGVzL3VzZVRpZGVUb2FzdGVyLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVRvYXN0ZXIudnVlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBPUklFTlRBVElPTiA9IHtcbiAgSE9SSVpPTlRBTDogJ2hvcml6b250YWwnLFxuICBWRVJUSUNBTDogJ3ZlcnRpY2FsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID0gKHR5cGVvZiBPUklFTlRBVElPTilba2V5b2YgdHlwZW9mIE9SSUVOVEFUSU9OXTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuaW1wb3J0IHR5cGUgeyBCcmVha3BvaW50IH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcblxuZXhwb3J0IGNvbnN0IENTUyA9IHtcbiAgd2l0aEJyZWFrcG9pbnQ6ICh1dGlsaXRpZXM6IHN0cmluZ1tdLCBicmVha3BvaW50OiBCcmVha3BvaW50KTogc3RyaW5nW10gPT4ge1xuICAgIHJldHVybiB1dGlsaXRpZXMubWFwKCh1dGlsaXR5KSA9PiBgJHticmVha3BvaW50fS0ke3V0aWxpdHl9YCk7XG4gIH0sXG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBKVVNUSUZZOiAndGlkZS10ZXh0LWp1c3RpZnknLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICAgIFNUUkVUQ0g6ICd0aWRlLWF4aXMyLXN0cmV0Y2gnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYmctc3VyZmFjZS1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJnLXN1cmZhY2UtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1iZy1zdXJmYWNlLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJnLXN1cmZhY2Utb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1iZy1zdXJmYWNlLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYmctc3VyZmFjZS1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJnLXN1cmZhY2Utc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYmctc3VyZmFjZS10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1iZy1zdXJmYWNlLXllbGxvdycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBJTlZFUlNFOiAndGlkZS1iZy1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgVkFSSUFOVDogJ3RpZGUtYmctc3VyZmFjZS12YXJpYW50JyxcbiAgICB9LFxuICAgIFRSQU5TUEFSRU5UOiB7XG4gICAgICBPTkVfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMTAwJyxcbiAgICAgIFRXT19IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0yMDAnLFxuICAgICAgVEhSRUVfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMzAwJyxcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtNDAwJyxcbiAgICB9LFxuICB9LFxuICBCT1JERVI6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1ib3JkZXItZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1ib3JkZXItaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJvcmRlci1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtYm9yZGVyLXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWJvcmRlci1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJvcmRlci1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWJvcmRlci1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1ib3JkZXItb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1ib3JkZXItcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1ib3JkZXItcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1ib3JkZXItc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYm9yZGVyLXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWJvcmRlci15ZWxsb3cnLFxuICAgICAgfSxcbiAgICAgIElOSVRJQUw6ICd0aWRlLWJvcmRlci1jb2xvci1pbml0aWFsJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJvcmRlcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYm9yZGVyLWZsb2F0aW5nJyxcbiAgICAgIEhJR0g6ICd0aWRlLWJvcmRlci1oaWdoJyxcbiAgICAgIExPVzogJ3RpZGUtYm9yZGVyLWxvdycsXG4gICAgICBQUklNQVJZOiAndGlkZS1ib3JkZXItcHJpbWFyeScsXG4gICAgfSxcbiAgICBSQURJVVM6IHtcbiAgICAgIFpFUk86ICd0aWRlLXJhZGl1cy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXJhZGl1cy0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcmFkaXVzLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXJhZGl1cy0xJyxcbiAgICAgIEZVTEw6ICd0aWRlLXJhZGl1cy1mdWxsJyxcbiAgICB9LFxuICAgIFNUWUxFOiB7XG4gICAgICBEQVNIRUQ6ICd0aWRlLWJvcmRlci1kYXNoZWQnLFxuICAgICAgU09MSUQ6ICd0aWRlLWJvcmRlci1zb2xpZCcsXG4gICAgfSxcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1ib3R0b20tMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1ib3R0b20tMicsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLTInLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWxlZnQtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItbGVmdC0yJyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItcmlnaHQtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItdG9wLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItdG9wLTInLFxuICAgIH0sXG4gIH0sXG4gIEJPWF9TSVpJTkc6IHtcbiAgICBCT1JERVJfQk9YOiAndGlkZS1ib3gtYm9yZGVyJyxcbiAgICBDT05URU5UX0JPWDogJ3RpZGUtYm94LWNvbnRlbnQnLFxuICB9LFxuICBCUkVBS19JTlNJREU6IHtcbiAgICBBVk9JRF9DT0xVTU46ICd0aWRlLWJyZWFrLWluc2lkZS1hdm9pZC1jb2x1bW4nLFxuICB9LFxuICBCUkVBS19XT1JEOiB7XG4gICAgT0ZGOiAndGlkZS1icmVhay1pbml0aWFsJyxcbiAgICBPTjogJ3RpZGUtYnJlYWstd29yZCcsXG4gIH0sXG4gIENPTFVNTlM6IHtcbiAgICBJTklUSUFMOiAndGlkZS1jb2x1bW5zLWluaXRpYWwnLFxuICAgIE9ORTogJ3RpZGUtY29sdW1ucy0xJyxcbiAgICBUV086ICd0aWRlLWNvbHVtbnMtMicsXG4gICAgVEhSRUU6ICd0aWRlLWNvbHVtbnMtMycsXG4gICAgRk9VUjogJ3RpZGUtY29sdW1ucy00JyxcbiAgfSxcbiAgQ1VSU09SOiB7XG4gICAgTk9UX0FMTE9XRUQ6ICd0aWRlLWN1cnNvci1ub3QtYWxsb3dlZCcsXG4gICAgUE9JTlRFUjogJ3RpZGUtY3Vyc29yLXBvaW50ZXInLFxuICAgIFRFWFQ6ICd0aWRlLWN1cnNvci10ZXh0JyxcbiAgfSxcbiAgRElTUExBWToge1xuICAgIEJMT0NLOiAndGlkZS1kaXNwbGF5LWJsb2NrJyxcbiAgICBDT05URU5UUzogJ3RpZGUtZGlzcGxheS1jb250ZW50cycsXG4gICAgRkxFWDogJ3RpZGUtZGlzcGxheS1mbGV4JyxcbiAgICBHUklEOiAndGlkZS1kaXNwbGF5LWdyaWQnLFxuICAgIElOSVRJQUw6ICd0aWRlLWRpc3BsYXktaW5pdGlhbCcsXG4gICAgSU5MSU5FOiAndGlkZS1kaXNwbGF5LWlubGluZScsXG4gICAgSU5MSU5FX0JMT0NLOiAndGlkZS1kaXNwbGF5LWlubGluZS1ibG9jaycsXG4gICAgSU5MSU5FX0ZMRVg6ICd0aWRlLWRpc3BsYXktaW5saW5lLWZsZXgnLFxuICAgIE5PTkU6ICd0aWRlLWRpc3BsYXktbm9uZScsXG4gIH0sXG4gIEVMTElQU0lTOiAndGlkZS1lbGxpcHNpcycsXG4gIEZMRVg6IHtcbiAgICBCQVNJUzoge1xuICAgICAgQVVUTzogJ3RpZGUtZmxleC1iYXNpcy1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLWZsZXgtYmFzaXMtMCcsXG4gICAgfSxcbiAgICBESVJFQ1RJT046IHtcbiAgICAgIENPTFVNTjogJ3RpZGUtZmxleC1jb2x1bW4nLFxuICAgICAgQ09MVU1OX1JFVkVSU0U6ICd0aWRlLWZsZXgtY29sdW1uLXJldmVyc2UnLFxuICAgICAgUk9XOiAndGlkZS1mbGV4LXJvdycsXG4gICAgICBST1dfUkVWRVJTRTogJ3RpZGUtZmxleC1yb3ctcmV2ZXJzZScsXG4gICAgfSxcbiAgICBHUk9XOiB7XG4gICAgICBPRkY6ICd0aWRlLWdyb3ctbm9uZScsXG4gICAgICBPTjogJ3RpZGUtZ3JvdycsXG4gICAgfSxcbiAgICBTSFJJTks6IHtcbiAgICAgIE9GRjogJ3RpZGUtc2hyaW5rLW5vbmUnLFxuICAgICAgT046ICd0aWRlLXNocmluaycsXG4gICAgfSxcbiAgICBXUkFQOiAndGlkZS1mbGV4LXdyYXAnLFxuICB9LFxuICBGT05UOiB7XG4gICAgQ09MT1I6IHtcbiAgICAgIEdMT0JBTDoge1xuICAgICAgICBFUlJPUjogJ3RpZGUtZm9udC1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWZvbnQtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWZvbnQtc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWZvbnQtd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWZvbnQtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1mb250LWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1mb250LXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtZm9udC1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtZm9udC10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1mb250LXllbGxvdycsXG5cbiAgICAgICAgUFJJTUFSWToge1xuICAgICAgICAgIEJMVUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1ibHVlJyxcbiAgICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1wcmltYXJ5LWdyZWVuJyxcbiAgICAgICAgICBMSU1FOiAndGlkZS1mb250LXByaW1hcnktbGltZScsXG4gICAgICAgICAgT1JBTkdFOiAndGlkZS1mb250LXByaW1hcnktb3JhbmdlJyxcbiAgICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHJpbWFyeS1wdXJwbGUnLFxuICAgICAgICAgIFJFRDogJ3RpZGUtZm9udC1wcmltYXJ5LXJlZCcsXG4gICAgICAgICAgU0FMTU9OOiAndGlkZS1mb250LXByaW1hcnktc2FsbW9uJyxcbiAgICAgICAgICBURUFMOiAndGlkZS1mb250LXByaW1hcnktdGVhbCcsXG4gICAgICAgICAgWUVMTE9XOiAndGlkZS1mb250LXByaW1hcnkteWVsbG93JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBQUklNQVJZOiAndGlkZS1mb250LW9uLXByaW1hcnknLFxuICAgICAgU0VDT05EQVJZOiAndGlkZS1mb250LW9uLXNlY29uZGFyeScsXG4gICAgICBTVVJGQUNFOiB7XG4gICAgICAgIEJSQU5EOiAndGlkZS1mb250LW9uLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgICBERUZBVUxUOiAndGlkZS1mb250LW9uLXN1cmZhY2UnLFxuICAgICAgICBJTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtaW52ZXJzZScsXG4gICAgICAgIFZBUklBTlQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50JyxcbiAgICAgICAgVkFSSUFOVF9JTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudC1pbnZlcnNlJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBST0xFOiB7XG4gICAgICBESVNQTEFZXzE6ICd0aWRlLXR5cG9ncmFwaHktZGlzcGxheS0xJyxcbiAgICAgIEhFQURMSU5FXzE6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMScsXG4gICAgICBIRUFETElORV8yOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTInLFxuICAgICAgSEVBRExJTkVfMzogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0zJyxcbiAgICAgIFRJVExFXzE6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMScsXG4gICAgICBUSVRMRV8yOiAndGlkZS10eXBvZ3JhcGh5LXRpdGxlLTInLFxuICAgICAgQk9EWV8xOiAndGlkZS10eXBvZ3JhcGh5LWJvZHktMScsXG4gICAgICBCT0RZXzI6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0yJyxcbiAgICAgIExBQkVMXzE6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMScsXG4gICAgICBMQUJFTF8xX1NFTUlCT0xEOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTEtc2VtaWJvbGQnLFxuICAgICAgTEFCRUxfMjogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yJyxcbiAgICAgIExBQkVMXzJfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMi1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8zOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTMnLFxuICAgICAgTElOS18xOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMScsXG4gICAgICBMSU5LXzI6ICd0aWRlLXR5cG9ncmFwaHktbGluay0yJyxcbiAgICAgIExJTktfMzogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTMnLFxuICAgICAgQlVUVE9OXzE6ICd0aWRlLXR5cG9ncmFwaHktYnV0dG9uLTEnLFxuICAgICAgQlVUVE9OXzI6ICd0aWRlLXR5cG9ncmFwaHktYnV0dG9uLTInLFxuICAgIH0sXG4gICAgU0laRToge1xuICAgICAgVFdFTFZFOiAndGlkZS1mb250LTEyJyxcbiAgICAgIEZPVVJURUVOOiAndGlkZS1mb250LTE0JyxcbiAgICAgIFNJWFRFRU46ICd0aWRlLWZvbnQtMTYnLFxuICAgICAgVFdFTlRZOiAndGlkZS1mb250LTIwJyxcbiAgICAgIFRXRU5UWV9GT1VSOiAndGlkZS1mb250LTI0JyxcbiAgICAgIFRISVJUWV9UV086ICd0aWRlLWZvbnQtMzInLFxuICAgIH0sXG4gICAgV0VJR0hUOiB7XG4gICAgICBGT1VSX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNDAwJyxcbiAgICAgIEZJVkVfSFVORFJFRDogJ3RpZGUtZm9udC01MDAnLFxuICAgICAgU0lYX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNjAwJyxcbiAgICAgIFNFVkVOX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNzAwJyxcbiAgICB9LFxuICB9LFxuICBHQVA6IHtcbiAgICBaRVJPOiAndGlkZS1nYXAtMCcsXG4gICAgUVVBUlRFUjogJ3RpZGUtZ2FwLTEvNCcsXG4gICAgSEFMRjogJ3RpZGUtZ2FwLTEvMicsXG4gICAgT05FOiAndGlkZS1nYXAtMScsXG4gICAgVFdPOiAndGlkZS1nYXAtMicsXG4gICAgRk9VUjogJ3RpZGUtZ2FwLTQnLFxuICB9LFxuICBHUklEOiB7XG4gICAgRkxVSUQ6ICd0aWRlLWZsdWlkJyxcbiAgICBJVEVNOiAndGlkZS1ncmlkLWl0ZW0nLFxuICAgIExBWU9VVDogJ3RpZGUtZ3JpZC1sYXlvdXQnLFxuICAgIFhMOiAndGlkZS1ncmlkLXhsJyxcbiAgfSxcbiAgSEVJR0hUOiB7XG4gICAgQVVUTzogJ3RpZGUtaGVpZ2h0LWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLWhlaWdodC0wJyxcbiAgICBGVUxMOiAndGlkZS1oZWlnaHQtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC1oZWlnaHQtZnVsbCcsXG4gICAgTUlOX1pFUk86ICd0aWRlLW1pbi1oZWlnaHQtMCcsXG4gIH0sXG4gIElTT0xBVElPTjoge1xuICAgIElTT0xBVEU6ICd0aWRlLWlzb2xhdGUnLFxuICB9LFxuICBMSVNUX0JVTExFVFM6IHtcbiAgICBPRkY6ICd0aWRlLWxpc3Qtbm9uZScsXG4gIH0sXG4gIE1BUkdJTjoge1xuICAgIEJPVFRPTToge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tbGVmdC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tdG9wLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4teC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXktMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPUEFDSVRZOiB7XG4gICAgRElTQUJMRUQ6ICd0aWRlLW9wYWNpdHktZGlzYWJsZWQnLFxuICAgIE9GRjogJ3RpZGUtb3BhY2l0eS1ub25lJyxcbiAgICBPTjogJ3RpZGUtb3BhY2l0eScsXG4gIH0sXG4gIE9WRVJGTE9XOiB7XG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUteC1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteC1oaWRkZW4nLFxuICAgICAgU0NST0xMOiAndGlkZS14LXNjcm9sbCcsXG4gICAgfSxcbiAgICBYWToge1xuICAgICAgQVVUTzogJ3RpZGUteHktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXh5LWhpZGRlbicsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBBVVRPOiAndGlkZS15LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS15LWhpZGRlbicsXG4gICAgfSxcbiAgfSxcbiAgUEFERElORzoge1xuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctYm90dG9tLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctbGVmdC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctcmlnaHQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy15LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy15LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgUE9JTlRFUl9FVkVOVFM6IHtcbiAgICBPRkY6ICd0aWRlLXBvaW50ZXItZXZlbnRzLW5vbmUnLFxuICAgIE9OOiAndGlkZS1wb2ludGVyLWV2ZW50cycsXG4gIH0sXG4gIFBPU0lUSU9OOiB7XG4gICAgQUJTT0xVVEU6ICd0aWRlLXBvc2l0aW9uLWFic29sdXRlJyxcbiAgICBGSVhFRDogJ3RpZGUtcG9zaXRpb24tZml4ZWQnLFxuICAgIFJFTEFUSVZFOiAndGlkZS1wb3NpdGlvbi1yZWxhdGl2ZScsXG4gICAgU1RBVElDOiAndGlkZS1wb3NpdGlvbi1zdGF0aWMnLFxuICAgIFNUSUNLWTogJ3RpZGUtcG9zaXRpb24tc3RpY2t5JyxcbiAgfSxcbiAgUE9TSVRJT05JTkc6IHtcbiAgICBCT1RUT006ICd0aWRlLWJvdHRvbS0wJyxcbiAgICBMRUZUOiAndGlkZS1sZWZ0LTAnLFxuICAgIFJJR0hUOiAndGlkZS1yaWdodC0wJyxcbiAgICBUT1A6ICd0aWRlLXRvcC0wJyxcbiAgfSxcbiAgUkFUSU86IHtcbiAgICBPTkVfVE9fT05FOiAndGlkZS1yYXRpby0xLzEnLFxuICAgIFNJWFRFRU5fVE9fTklORTogJ3RpZGUtcmF0aW8tMTYvOScsXG4gICAgVEhSRUVfVE9fVFdPOiAndGlkZS1yYXRpby0zLzInLFxuICB9LFxuICBTQ1JPTExCQVI6IHtcbiAgICBPRkY6ICd0aWRlLXNjcm9sbGJhci1ub25lJyxcbiAgfSxcbiAgU0hBRE9XOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtc2hhZG93LWluaXRpYWwnLFxuICAgIEJPVFRPTTogJ3RpZGUtc2hhZG93LWJvdHRvbScsXG4gICAgVE9QOiAndGlkZS1zaGFkb3ctdG9wJyxcbiAgICBURVhUOiAndGlkZS1zaGFkb3ctdGV4dCcsXG4gIH0sXG4gIFNOQVA6IHtcbiAgICBPTjogJ3RpZGUtc2Nyb2xsLXNuYXAnLFxuICB9LFxuICBTTkFQX0FMSUdOOiB7XG4gICAgU1RBUlQ6ICd0aWRlLXNjcm9sbC1zbmFwLXN0YXJ0JyxcbiAgfSxcbiAgU1RSSUtFVEhST1VHSDoge1xuICAgIE9GRjogJ3RpZGUtc3RyaWtldGhyb3VnaC1ub25lJyxcbiAgICBPTjogJ3RpZGUtc3RyaWtldGhyb3VnaCcsXG4gIH0sXG4gIFRFWFRfVFJBTlNGT1JNOiB7XG4gICAgTE9XRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLWxvd2VyJyxcbiAgICBOT05FOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1ub25lJyxcbiAgICBVUFBFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tdXBwZXInLFxuICB9LFxuICBVTkRFUkxJTkU6IHtcbiAgICBIT1ZFUjoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ob3Zlci1ub25lJyxcbiAgICB9LFxuICAgIFJFU1Q6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUnLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgfSxcbiAgfSxcbiAgVVNFUl9TRUxFQ1Q6IHtcbiAgICBJTklUSUFMOiAndGlkZS11c2VyLXNlbGVjdC1pbml0aWFsJyxcbiAgICBOT05FOiAndGlkZS11c2VyLXNlbGVjdC1ub25lJyxcbiAgfSxcbiAgVklTSUJJTElUWToge1xuICAgIE9GRjogJ3RpZGUtdmlzaWJsZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdmlzaWJsZScsXG4gIH0sXG4gIFdISVRFU1BBQ0VfV1JBUDoge1xuICAgIE9GRjogJ3RpZGUtd2hpdGVzcGFjZS1ub3dyYXAnLFxuICB9LFxuICBXSURUSDoge1xuICAgIEFVVE86ICd0aWRlLXdpZHRoLWF1dG8nLFxuICAgIEZVTEw6ICd0aWRlLXdpZHRoLWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtd2lkdGgtZnVsbCcsXG4gICAgTUlOX1pFUk86ICd0aWRlLW1pbi13aWR0aC0wJyxcbiAgICBTVFJFVENIOiAndGlkZS13aWR0aC1zdHJldGNoJyxcbiAgICBaRVJPOiAndGlkZS13aWR0aC0wJyxcbiAgfSxcbiAgWl9JTkRFWDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXotaW5kZXgtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS16LWluZGV4LTEnLFxuICB9LFxufSBhcyBjb25zdDtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgZGl2aWRlciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVkaXZpZGVyLS1kb2NzKSBmb3IgVGlkZURpdmlkZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IE9SSUVOVEFUSU9OIH0gZnJvbSAnQC90eXBlcy9PcmllbnRhdGlvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IE9yaWVudGF0aW9uIH0gZnJvbSAnQC90eXBlcy9PcmllbnRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIERpdmlkZXIgaXMgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCAqL1xuICAgIG9yaWVudGF0aW9uPzogT3JpZW50YXRpb247XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvcmllbnRhdGlvbjogT1JJRU5UQVRJT04uSE9SSVpPTlRBTCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1kaXZpZGVyJ11cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICBwcm9wcy5vcmllbnRhdGlvbiA9PT0gT1JJRU5UQVRJT04uSE9SSVpPTlRBTFxuICAgICAgICAgID8gW0NTUy5NQVJHSU4uWS5IQUxGLCBDU1MuQk9SREVSLkJPVFRPTS5PTkUsIENTUy5XSURUSC5GVUxMXVxuICAgICAgICAgIDogW0NTUy5NQVJHSU4uWC5IQUxGLCBDU1MuQk9SREVSLlJJR0hULk9ORSwgQ1NTLkhFSUdIVC5GVUxMXSxcbiAgICAgIF1cIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtZGl2aWRlciB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpY29uIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWljb24tLWRvY3MpIGZvciBUaWRlSWNvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgZGVmaW5lQXN5bmNDb21wb25lbnQsIG1hcmtSYXcsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IFJFQUxNIH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdFBhc2NhbENhc2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB0eXBlIHsgQ29tcG9uZW50IH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBJY29uICovXG4gICAgaWNvbjogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGljb24gZGltZW5zaW9ucyAqL1xuICAgIHNpemU/OiBTaXplO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgc2l6ZTogU0laRS5TTUFMTCxcbiAgfSk7XG5cbiAgY29uc3QgaW5uZXJTVkcgPSByZWY8Q29tcG9uZW50PigpO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmljb24sXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaWQ6IHN0cmluZyA9IHByb3BzLmljb247XG4gICAgICBjb25zdCBuYW1lID0gZm9ybWF0UGFzY2FsQ2FzZShpZCk7XG4gICAgICBjb25zdCBbcHJlZml4XSA9IGlkLnNwbGl0KCctJyk7XG4gICAgICBjb25zdCByZWFsbUZvbGRlciA9IFJFQUxNW3ByZWZpeD8udG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgUkVBTE1dO1xuXG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkZWZpbmVBc3luY0NvbXBvbmVudCgoKSA9PiB7XG4gICAgICAgIGlmIChyZWFsbUZvbGRlcikge1xuICAgICAgICAgIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvaWNvbnMvcmVhbG0vJHtyZWFsbUZvbGRlcn0vSWNvbiR7bmFtZX0uc3ZnP2NvbXBvbmVudGApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICB9KTtcblxuICAgICAgaW5uZXJTVkcudmFsdWUgPSBtYXJrUmF3KGNvbXBvbmVudCk7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pY29uJywgcHJvcHMuc2l6ZSwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIj5cbiAgICA8Q29tcG9uZW50XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICAgIDpkYXRhLWljb249XCJpY29uXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgOmlzPVwiaW5uZXJTVkdcIlxuICAgICAgdi1pZj1cImlubmVyU1ZHXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZT5cbiAgLnRpZGUtaWNvbiB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24uc21hbGwge1xuICAgIHdpZHRoOiAxLjI1cmVtO1xuICAgIGhlaWdodDogMS4yNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24gc3ZnIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdHlwZSB7IFJlYWxtS2V5IH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5cbmV4cG9ydCBjb25zdCBJQ09OID0ge1xuICBBQ0NPVU5UX0JBTEFOQ0U6ICdhY2NvdW50LWJhbGFuY2UnLFxuICBBQ1VURTogJ2FjdXRlJyxcbiAgQUREOiAnYWRkJyxcbiAgQUlfREVTQ1JJUFRJT046ICdhaS1kZXNjcmlwdGlvbicsXG4gIEFMSUdOX1NQQUNFX0VWRU46ICdhbGlnbi1zcGFjZS1ldmVuJyxcbiAgQVBQTEVfUEFZOiAnYXBwbGUtcGF5JyxcbiAgQVJST1dfQkFDSzogJ2Fycm93LWJhY2snLFxuICBBUlJPV19DWUNMRTogJ2Fycm93LWN5Y2xlJyxcbiAgQVJST1dfRk9SV0FSRDogJ2Fycm93LWZvcndhcmQnLFxuICBBUlJPV19SSUdIVDogJ2Fycm93LXJpZ2h0JyxcbiAgQVJST1dfVVA6ICdhcnJvdy11cCcsXG4gIEFTU0lHTk1FTlQ6ICdhc3NpZ25tZW50JyxcbiAgQVRUQUNIX01PTkVZOiAnYXR0YWNoLW1vbmV5JyxcbiAgQVVUT19SRU5FVzogJ2F1dG8tcmVuZXcnLFxuICBBV0FSRF9TVEFSOiAnYXdhcmQtc3RhcicsXG4gIEJFRDogJ2JlZCcsXG4gIEJPTFQ6ICdib2x0JyxcbiAgQk9PS01BUks6ICdib29rbWFyaycsXG4gIEJVTktIT1VTRTogJ2J1bmtob3VzZScsXG4gIENBTENVTEFURTogJ2NhbGN1bGF0ZScsXG4gIENBTEVOREFSX01PTlRIOiAnY2FsZW5kYXItbW9udGgnLFxuICBDQUxMOiAnY2FsbCcsXG4gIENBTExfUVVBTElUWTogJ2NhbGwtcXVhbGl0eScsXG4gIENBUl9SRU5UQUw6ICdjYXItcmVudGFsJyxcbiAgQ0hFQ0s6ICdjaGVjaycsXG4gIENIRVZST05fTEVGVDogJ2NoZXZyb24tbGVmdCcsXG4gIENIRVZST05fUklHSFQ6ICdjaGV2cm9uLXJpZ2h0JyxcbiAgQ0xFQVI6ICdjbGVhcicsXG4gIENMT1NFOiAnY2xvc2UnLFxuICBDT05UUkFDVDogJ2NvbnRyYWN0JyxcbiAgQ1JBU0g6ICdjcmFzaCcsXG4gIERBU0hCT0FSRF9DVVNUT01JWkU6ICdkYXNoYm9hcmQtY3VzdG9taXplJyxcbiAgREVMRVRFOiAnZGVsZXRlJyxcbiAgRElBTU9ORDogJ2RpYW1vbmQnLFxuICBESVJFQ1RJT05TX0JPQVQ6ICdkaXJlY3Rpb25zLWJvYXQnLFxuICBET01BSU46ICdkb21haW4nLFxuICBEUkFGVDogJ2RyYWZ0JyxcbiAgRURJVDogJ2VkaXQnLFxuICBFTkdJTkU6ICdlbmdpbmUnLFxuICBFTkdJTkVFUklORzogJ2VuZ2luZWVyaW5nJyxcbiAgRVJST1I6ICdlcnJvcicsXG4gIEVYUEFORF9DT05URU5UOiAnZXhwYW5kLWNvbnRlbnQnLFxuICBFWFBBTkRfTEVTUzogJ2V4cGFuZC1sZXNzJyxcbiAgRVhQQU5EX01PUkU6ICdleHBhbmQtbW9yZScsXG4gIEZBQ0VCT09LOiAnZmFjZWJvb2snLFxuICBGQVZPUklURTogJ2Zhdm9yaXRlJyxcbiAgRkFWT1JJVEVfRklMTEVEOiAnZmF2b3JpdGUtZmlsbGVkJyxcbiAgRkxBRzogJ2ZsYWcnLFxuICBGT1JNQVRfQk9MRDogJ2Zvcm1hdC1ib2xkJyxcbiAgRk9STUFUX0lUQUxJQzogJ2Zvcm1hdC1pdGFsaWMnLFxuICBGT1JNQVRfTElTVF9CVUxMRVRFRDogJ2Zvcm1hdC1saXN0LWJ1bGxldGVkJyxcbiAgRk9SVU06ICdmb3J1bScsXG4gIEdBUzogJ2dhcycsXG4gIEdBVkVMOiAnZ2F2ZWwnLFxuICBHRUFSUzogJ2dlYXJzJyxcbiAgR0xPQkVfTE9DQVRJT05fUElOOiAnZ2xvYmUtbG9jYXRpb24tcGluJyxcbiAgR09PR0xFOiAnZ29vZ2xlJyxcbiAgR09PR0xFX1BBWTogJ2dvb2dsZS1wYXknLFxuICBHUklEOiAnZ3JpZCcsXG4gIEhBTkRTSEFLRTogJ2hhbmRzaGFrZScsXG4gIEhBTkRZTUFOOiAnaGFuZHltYW4nLFxuICBIRUlHSFQ6ICdoZWlnaHQnLFxuICBIRUxQOiAnaGVscCcsXG4gIElORk86ICdpbmZvJyxcbiAgSU5GT1JNQVRJT046ICdpbmZvcm1hdGlvbicsXG4gIElOU0VSVF9URVhUOiAnaW5zZXJ0LXRleHQnLFxuICBJTlNUQUdSQU06ICdpbnN0YWdyYW0nLFxuICBJT1NfU0hBUkU6ICdpb3Mtc2hhcmUnLFxuICBMQVlPVVQ6ICdsYXlvdXQnLFxuICBMRVZFTExJTkdfSkFDSzogJ2xldmVsbGluZy1qYWNrJyxcbiAgTElOS0VEX0lOOiAnbGlua2VkLWluJyxcbiAgTE9DQUxfU0hJUFBJTkc6ICdsb2NhbC1zaGlwcGluZycsXG4gIExPQ0s6ICdsb2NrJyxcbiAgTUFJTDogJ21haWwnLFxuICBNRU5VOiAnbWVudScsXG4gIE1PTkVZX0JBRzogJ21vbmV5LWJhZycsXG4gIE1PUkVfSE9SSVo6ICdtb3JlLWhvcml6JyxcbiAgTU9WRTogJ21vdmUnLFxuICBOT1RJRklDQVRJT05TOiAnbm90aWZpY2F0aW9ucycsXG4gIE9ET01FVEVSOiAnb2RvbWV0ZXInLFxuICBPUEVOX0lOX05FVzogJ29wZW4taW4tbmV3JyxcbiAgUEFMRVRURTogJ3BhbGV0dGUnLFxuICBQQVlQQUw6ICdwYXlwYWwnLFxuICBQRVJTT046ICdwZXJzb24nLFxuICBQRVJTT05fU0VBUkNIOiAncGVyc29uLXNlYXJjaCcsXG4gIFBIT1RPX0NBTUVSQTogJ3Bob3RvLWNhbWVyYScsXG4gIFBJTlRFUkVTVDogJ3BpbnRlcmVzdCcsXG4gIFBMQVlfQVJST1c6ICdwbGF5LWFycm93JyxcbiAgUE9MSUNZOiAncG9saWN5JyxcbiAgUE9XRVI6ICdwb3dlcicsXG4gIFBPV0VSX09GRjogJ3Bvd2VyLW9mZicsXG4gIFBSSU9SSVRZX0hJR0g6ICdwcmlvcml0eS1oaWdoJyxcbiAgUkVNT1ZFOiAncmVtb3ZlJyxcbiAgUkVRVUVTVF9RVU9URTogJ3JlcXVlc3QtcXVvdGUnLFxuICBSRVNFVF9XUkVOQ0g6ICdyZXNldC13cmVuY2gnLFxuICBST0FEOiAncm9hZCcsXG4gIFJPVU5ERURfQ09STkVSOiAncm91bmRlZC1jb3JuZXInLFxuICBSVUxFUjogJ3J1bGVyJyxcbiAgU0FJTElORzogJ3NhaWxpbmcnLFxuICBTQ0hPT0w6ICdzY2hvb2wnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBTRUFUSU5HOiAnc2VhdGluZycsXG4gIFNFTEw6ICdzZWxsJyxcbiAgU0VOU09SUzogJ3NlbnNvcnMnLFxuICBTRVRUSU5HUzogJ3NldHRpbmdzJyxcbiAgU0hBUkU6ICdzaGFyZScsXG4gIFNISUVMRF9DSEVDSzogJ3NoaWVsZC1jaGVjaycsXG4gIFNIT1BQSU5HX0NBUlQ6ICdzaG9wcGluZy1jYXJ0JyxcbiAgU0xFRVBTOiAnc2xlZXBzJyxcbiAgU01TOiAnc21zJyxcbiAgU05PV0ZMQUtFOiAnc25vd2ZsYWtlJyxcbiAgU1RBUjogJ3N0YXInLFxuICBTVEFSX0ZJTExFRDogJ3N0YXItZmlsbGVkJyxcbiAgU1RBUl9IQUxGOiAnc3Rhci1oYWxmJyxcbiAgU1VNTUFSSVpFOiAnc3VtbWFyaXplJyxcbiAgU1dBUF9IT1JJWjogJ3N3YXAtaG9yaXonLFxuICBTV0FQX1ZFUlQ6ICdzd2FwLXZlcnQnLFxuICBUSFJFRV9EX1JPVEFUSU9OOiAndGhyZWUtZC1yb3RhdGlvbicsXG4gIFRIVU1CX1VQOiAndGh1bWItdXAnLFxuICBUUkVORElOR19ET1dOOiAndHJlbmRpbmctZG93bicsXG4gIFRST1BIWTogJ3Ryb3BoeScsXG4gIFRVTkU6ICd0dW5lJyxcbiAgVFdJVFRFUjogJ3R3aXR0ZXInLFxuICBVTUJSRUxMQTogJ3VtYnJlbGxhJyxcbiAgVkVSSUZJRUQ6ICd2ZXJpZmllZCcsXG4gIFZJREVPQ0FNOiAndmlkZW9jYW0nLFxuICBWSUVXX0lOX0FSOiAndmlldy1pbi1hcicsXG4gIFZJU0lCSUxJVFk6ICd2aXNpYmlsaXR5JyxcbiAgVk9MVU1FX09GRjogJ3ZvbHVtZS1vZmYnLFxuICBWT0xVTUVfT046ICd2b2x1bWUtb24nLFxuICBXQVJFSE9VU0U6ICd3YXJlaG91c2UnLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG4gIFdBVEVSOiAnd2F0ZXInLFxuICBXRUlHSFQ6ICd3ZWlnaHQnLFxuICBXSURUSDogJ3dpZHRoJyxcbiAgV09SS1NQQUNFX1BSRU1JVU06ICd3b3Jrc3BhY2UtcHJlbWl1bScsXG4gIFdSRU5DSDogJ3dyZW5jaCcsXG4gIFlPVVRVQkU6ICd5b3V0dWJlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBJQ09OX1JFQUxNID0ge1xuICBBRVJPOiB7XG4gICAgRkxJR0hUOiAnYWVyby1mbGlnaHQnLFxuICAgIEhFTElDT1BURVI6ICdhZXJvLWhlbGljb3B0ZXInLFxuICAgIE1PREVfRkFOOiAnYWVyby1tb2RlLWZhbicsXG4gICAgUExBTkVfQ09OVFJBSUxTOiAnYWVyby1wbGFuZS1jb250cmFpbHMnLFxuICB9LFxuICBBVFY6IHtcbiAgICBBVFY6ICdhdHYtYXR2JyxcbiAgICBEVU5FX0JVR0dZOiAnYXR2LWR1bmUtYnVnZ3knLFxuICAgIEdPTEZfQ0FSVDogJ2F0di1nb2xmLWNhcnQnLFxuICAgIEdPX0tBUlQ6ICdhdHYtZ28ta2FydCcsXG4gICAgU0FORF9SQUlMOiAnYXR2LXNhbmQtcmFpbCcsXG4gICAgU0lERV9CWV9TSURFOiAnYXR2LXNpZGUtYnktc2lkZScsXG4gICAgVFJBSUxFUjogJ2F0di10cmFpbGVyJyxcbiAgfSxcbiAgQk9BVE1BUlQ6IHtcbiAgICBQV0M6ICdib2F0bWFydC1wd2MnLFxuICAgIFRSQUlMRVI6ICdib2F0bWFydC10cmFpbGVyJyxcbiAgfSxcbiAgQ1lDTEU6IHtcbiAgICBNT1RPUkNZQ0xFOiAnY3ljbGUtbW90b3JjeWNsZScsXG4gICAgVFJBSUxFUjogJ2N5Y2xlLXRyYWlsZXInLFxuICB9LFxuICBQV0M6IHtcbiAgICBQV0M6ICdwd2MtcHdjJyxcbiAgICBTTk9XTU9CSUxFOiAncHdjLXNub3dtb2JpbGUnLFxuICAgIFRSQUlMRVI6ICdwd2MtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgREVTVElOQVRJT05fVFJBSUxFUjogJ3J2LWRlc3RpbmF0aW9uLXRyYWlsZXInLFxuICAgIEZJRlRIX1dIRUVMOiAncnYtZmlmdGgtd2hlZWwnLFxuICAgIEZJU0hfSE9VU0U6ICdydi1maXNoLWhvdXNlJyxcbiAgICBQQVJLX01PREVMOiAncnYtcGFyay1tb2RlbCcsXG4gICAgUE9QX1VQX0NBTVBFUjogJ3J2LXBvcC11cC1jYW1wZXInLFxuICAgIFRFQVJEUk9QX1RSQUlMRVI6ICdydi10ZWFyZHJvcC10cmFpbGVyJyxcbiAgICBUUkFWRUxfVFJBSUxFUjogJ3J2LXRyYXZlbC10cmFpbGVyJyxcbiAgICBUUlVDS19DQU1QRVI6ICdydi10cnVjay1jYW1wZXInLFxuICB9LFxuICBTTk9XOiB7XG4gICAgTU9UT1JDWUNMRTogJ3Nub3ctbW90b3JjeWNsZScsXG4gICAgUFdDOiAnc25vdy1wd2MnLFxuICAgIFNJREVfQllfU0lERTogJ3Nub3ctc2lkZS1ieS1zaWRlJyxcbiAgICBTTk9XTU9CSUxFOiAnc25vdy1zbm93bW9iaWxlJyxcbiAgICBUUkFJTEVSOiAnc25vdy10cmFpbGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbnR5cGUgR2xvYmFsSWNvbiA9ICh0eXBlb2YgSUNPTilba2V5b2YgdHlwZW9mIElDT05dO1xuXG5leHBvcnQgdHlwZSBJY29uID0gR2xvYmFsSWNvbiB8IFJlYWxtSWNvbjtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGFjY29yZGlvbiBpdGVtIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gbmF2aWdhdGlvbiBtZW51cyByZWxhdGluZyB0byBhY2NvcmRpb24gZHJvcGRvd25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYWNjb3JkaW9uaXRlbS0tZG9jcykgZm9yIFRpZGVBY2NvcmRpb25JdGVtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBhY2NvcmRpb24gaXRlbSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gaW5jbHVkZSBib3R0b20gZGl2aWRlciAqL1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBpbmNsdWRlIHRvcCBkaXZpZGVyICovXG4gICAgaGFzVG9wRGl2aWRlcj86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgXCIob3B0aW9uYWwpXCIgaW5kaWNhdG9yIGFmdGVyIGxhYmVsICovXG4gICAgaXNPcHRpb25hbD86IGJvb2xlYW47XG5cbiAgICAvKiogVGhlIGxhYmVsIG9mIHRoZSBhY2NvcmRpb24gaXRlbSAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaGFzQm90dG9tRGl2aWRlcjogZmFsc2UsXG4gICAgaGFzVG9wRGl2aWRlcjogZmFsc2UsXG4gICAgaXNPcHRpb25hbDogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGlzRXhwYW5kZWQgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlzRXhwYW5kZWQudmFsdWUgPSAhaXNFeHBhbmRlZC52YWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5kaXNhYmxlZCxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICBpc0V4cGFuZGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24taXRlbSddXCI+XG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJoYXNUb3BEaXZpZGVyXCIgLz5cblxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYWNjb3JkaW9uLWhlYWQnLFxuICAgICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgZGlzYWJsZWQgPyBbQ1NTLk9QQUNJVFkuRElTQUJMRUQsIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdIDogW10sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZVRvZ2dsZUNsaWNrXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEYsIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRF1cIj5cbiAgICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cImlzT3B0aW9uYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgKG9wdGlvbmFsKVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiaXNFeHBhbmRlZCA/IElDT04uRVhQQU5EX0xFU1MgOiBJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24tYm9keScsIGlzRXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCcsIENTUy5ESVNQTEFZLkdSSURdXCI+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuT1ZFUkZMT1cuWS5ISURERU4sIENTUy5NQVJHSU4uWS5PTkUsIENTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwiaGFzQm90dG9tRGl2aWRlclwiIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWNjb3JkaW9uLWl0ZW0ge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keSB7XG4gICAgdHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1yb3dzIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keS5leHBhbmRlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoMHB4LCAxZnIpO1xuICB9XG5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkuY29sbGFwc2VkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCgwcHgsIDBmcik7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfQlJPQUQgPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIERJVjogJ2RpdicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnQgPSAodHlwZW9mIEVMRU1FTlQpW2tleW9mIHR5cGVvZiBFTEVNRU5UXTtcbmV4cG9ydCB0eXBlIEVsZW1lbnRCcm9hZCA9ICh0eXBlb2YgRUxFTUVOVF9CUk9BRClba2V5b2YgdHlwZW9mIEVMRU1FTlRfQlJPQURdO1xuIiwiaW1wb3J0IHsgaW5qZWN0LCBwcm92aWRlIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG5cbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50IH0gZnJvbSAndnVlJztcblxudHlwZSBUaWRlQ29uZmlnID0ge1xuICBsaW5rQ29tcG9uZW50OiBDb21wb25lbnQgfCB0eXBlb2YgRUxFTUVOVC5MSU5LO1xufTtcblxuY29uc3QgdGlkZUNvbmZpZ0RlZmF1bHRzOiBUaWRlQ29uZmlnID0geyBsaW5rQ29tcG9uZW50OiBFTEVNRU5ULkxJTksgfTtcblxuY29uc3QgQ09ORklHX0tFWSA9IFN5bWJvbCgndGlkZS1jb25maWcnKTtcblxuZXhwb3J0IGNvbnN0IHByb3ZpZGVUaWRlQ29uZmlnID0gKGNvbmZpZzogUGFydGlhbDxUaWRlQ29uZmlnPiA9IHt9KSA9PiB7XG4gIGNvbnN0IGNvbmZpZ1dpdGhEZWZhdWx0czogVGlkZUNvbmZpZyA9IHsgLi4udGlkZUNvbmZpZ0RlZmF1bHRzLCAuLi5jb25maWcgfTtcblxuICBwcm92aWRlPFRpZGVDb25maWc+KENPTkZJR19LRVksIGNvbmZpZ1dpdGhEZWZhdWx0cyk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZUNvbmZpZyA9ICgpID0+IHtcbiAgcmV0dXJuIGluamVjdDxUaWRlQ29uZmlnPihDT05GSUdfS0VZLCB0aWRlQ29uZmlnRGVmYXVsdHMpO1xufTtcbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IHVzZVRpZGVDb25maWcgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVDb25maWcnO1xuXG4gIGNvbnN0IHsgbGlua0NvbXBvbmVudCB9ID0gdXNlVGlkZUNvbmZpZygpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudCA6aXM9XCJsaW5rQ29tcG9uZW50XCI+XG4gICAgPHNsb3QgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgUFJJT1JJVFkgPSB7XG4gIFBSSU1BUlk6ICdwcmltYXJ5JyxcbiAgU0VDT05EQVJZOiAnc2Vjb25kYXJ5JyxcbiAgVEVSVElBUlk6ICd0ZXJ0aWFyeScsXG4gIFFVQVRFUk5BUlk6ICdxdWF0ZXJuYXJ5JyxcbiAgRkxPQVRJTkc6ICdmbG9hdGluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBQcmlvcml0eSA9ICh0eXBlb2YgUFJJT1JJVFkpW2tleW9mIHR5cGVvZiBQUklPUklUWV07XG4iLCJleHBvcnQgY29uc3QgVEFSR0VUID0ge1xuICBCTEFOSzogJ19ibGFuaycsXG4gIFNFTEY6IHVuZGVmaW5lZCxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRhcmdldCA9ICh0eXBlb2YgVEFSR0VUKVtrZXlvZiB0eXBlb2YgVEFSR0VUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgaWNvbiBidXR0b24gY29tcG9uZW50IHdpdGggdmFyaW91cyBzdHlsaW5nIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b25pY29uLS1kb2NzKSBmb3IgVGlkZUJ1dHRvbkljb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBQcmlvcml0eSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgdHlwZSB7IEJ1dHRvblR5cGUgfSBmcm9tICdAL3R5cGVzL1R5cGUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgY2xpY2thYmlsaXR5IChCdXR0b24gb25seSkgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogSFRNTCB0YWcgdHlwZSAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuXG4gICAgLyoqIFVSTCB0byBvcGVuIChMaW5rIG9ubHkpICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBJY29uIHRvIHNob3cgKi9cbiAgICBpY29uOiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byB0YXJnZXQgYSBuZXcgYnJvd3NlciB0YWIgKExpbmsgb25seSkgKi9cbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB2aXN1YWwgcHJvbWluZW5jZSAqL1xuICAgIHByaW9yaXR5PzogUHJpb3JpdHk7XG5cbiAgICAvKiogQXBwbGllcyB0eXBlIGF0dHJpYnV0ZSB0byBIVE1MIGVsZW1lbnQgKi9cbiAgICB0eXBlPzogQnV0dG9uVHlwZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5ULkJVVFRPTixcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbjogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBwcmlvcml0eTogUFJJT1JJVFkuUFJJTUFSWSxcbiAgICB0eXBlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHR5cGVBdHRyaWJ1dGUgPSBjb21wdXRlZDxzdHJpbmcgfCB1bmRlZmluZWQ+KCgpID0+XG4gICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gPyBwcm9wcy50eXBlID8/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXG4gICk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6YXJpYS1sYWJlbD1cImljb25cIlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1pY29uJyxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gICAgICBgdGlkZS1idXR0b24tJHtwcmlvcml0eX1gLFxuICAgICAgZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogJycsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gJiYgZGlzYWJsZWRcIlxuICAgIDpocmVmPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIGhyZWYgPyBocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dGFyZ2V0PVwiZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIGlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwidHlwZUF0dHJpYnV0ZVwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cImljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJpY29uXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGxpbmsgZWxlbWVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWxpbmstLWRvY3MpIGZvciBUaWRlTGlua1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFNpemUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEhUTUwgdGFnIHR5cGUgKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBVUkwgdG8gb3BlbiAoTGluayBvbmx5KSAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogSWNvbiB0byBsZWZ0IG9mIGxhYmVsICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIFNpemUgb2YgdGhlIGljb25zICovXG4gICAgaWNvblNpemU/OiBTaXplO1xuXG4gICAgLyoqIEljb24gdG8gcmlnaHQgb2YgbGFiZWwgKi9cbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byB0YXJnZXQgYSBuZXcgYnJvd3NlciB0YWIgKExpbmsgb25seSkgKi9cbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG5cbiAgICAvKiogTGluayB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBIaWRlcyB0aGUgdW5kZXJsaW5lIHVudGlsIGhvdmVyZWQsIGRlLWVtcGhhc2l6aW5nIHRoZSBsaW5rICovXG4gICAgc3VidGxlPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpY29uU2l6ZTogU0laRS5TTUFMTCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBzdWJ0bGU6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWxpbmsnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FLFxuICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgIHN1YnRsZSA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLCBDU1MuVU5ERVJMSU5FLkhPVkVSLk9OXSA6IFtDU1MuVU5ERVJMSU5FLlJFU1QuT04sIENTUy5VTkRFUkxJTkUuSE9WRVIuT0ZGXSxcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cImVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkFMSUdOLlkuTUlERExFLCBDU1MuTUFSR0lOLlJJR0hULlFVQVJURVIsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkFMSUdOLlkuTUlERExFXVwiPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5BTElHTi5ZLk1JRERMRSwgQ1NTLk1BUkdJTi5MRUZULlFVQVJURVIsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwiaWNvblNpemVcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGFsZXJ0IGNvbXBvbmVudCB3aXRoIGN1c3RvbWl6YWJsZSBjb250ZW50IGFuZCBiZWhhdmlvci5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWFsZXJ0LS1kb2NzKSBmb3IgVGlkZUFsZXJ0XG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDb21tZW50LCBjb21wdXRlZCwgdXNlU2xvdHMgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSc7XG4gIGltcG9ydCB7IEFMRVJUIH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB0eXBlIHsgVk5vZGUgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENhbGwgVG8gQWN0aW9uIHRoYXQgcmVuZGVycyBhcyBhIFRpZGVMaW5rOyBjbGlja2luZyBlbWl0cyBhIHNlcGFyYXRlIGBjbGlja2AgZXZlbnQgKi9cbiAgICBjdGFMYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBIZWFkaW5nIHRleHQgKi9cbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQWxlcnQgY2FuIGJlIGNsb3NlZCBieSB0aGUgdXNlciAqL1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQWxlcnQgaXMgYW4gb3ZlcmxheSBvciBkaXNwbGFjZXMgY29udGVudCAqL1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuXG4gICAgLyoqIEFsZXJ0IHR5cGUgKi9cbiAgICB0eXBlPzogQWxlcnQ7XG4gIH07XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdjbG9zZScpOiB2b2lkO1xuICAgIChldmVudDogJ2N0YUNsaWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjdGFMYWJlbDogdW5kZWZpbmVkLFxuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIGlzVG9hc3Q6IGZhbHNlLFxuICAgIHR5cGU6IEFMRVJULklORk8sXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcbiAgY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuICBjb25zdCBoYXNCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGVzID0gc2xvdHMuZGVmYXVsdD8uKHt9KTtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gbm9kZXMuc29tZShcbiAgICAgIChub2RlOiBWTm9kZSkgPT4gbm9kZS50eXBlICE9PSBDb21tZW50ICYmICh0eXBlb2Ygbm9kZS5jaGlsZHJlbiAhPT0gJ3N0cmluZycgfHwgbm9kZS5jaGlsZHJlbi50cmltKCkubGVuZ3RoID4gMClcbiAgICApO1xuICB9KTtcblxuICBjb25zdCBpY29uVHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IpIHJldHVybiBJQ09OLlBSSU9SSVRZX0hJR0g7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MpIHJldHVybiBJQ09OLkNIRUNLO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HKSByZXR1cm4gSUNPTi5XQVJOSU5HO1xuICAgIHJldHVybiBJQ09OLklORk9STUFUSU9OO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy50eXBlLFxuICAgICAgJ3RpZGUtYWxlcnQnLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuRVJST1IsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkVSUk9SXSA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuSU5GTywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuSU5GT10gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1NcbiAgICAgICAgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLlNVQ0NFU1MsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlNVQ0NFU1NdXG4gICAgICAgIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5XQVJOSU5HLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5XQVJOSU5HXVxuICAgICAgICA6ICcnLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlksIENTUy5TSEFET1cuQk9UVE9NXSA6IENTUy5CT1JERVIuTEVGVC5UV08sXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWljb24nLFxuICAgICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5JTkZPLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5TVUNDRVNTLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5XQVJOSU5HLFxuICAgICAgXVwiXG4gICAgICB2LWlmPVwiIXByb3BzLmlzVG9hc3RcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImljb25UeXBlXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWhlYWRpbmcnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XLFxuICAgICAgICAhaGFzQm9keSA/IFtDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLk1BUkdJTi5SSUdIVC5IQUxGXSA6ICcnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXCI+e3sgcHJvcHMuaGVhZGluZyB9fTwvc3Bhbj5cblxuICAgICAgPFRpZGVMaW5rXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMl1cIlxuICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgOmxhYmVsPVwicHJvcHMuY3RhTGFiZWxcIlxuICAgICAgICBAY2xpY2s9XCJlbWl0KCdjdGFDbGljaycpXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmICFoYXNCb2R5XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgYWxlcnRcIlxuICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1ib2R5JywgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsICFwcm9wcy5pc1RvYXN0ICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgIDxzbG90IC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uVE9QLkhBTEZdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmIGhhc0JvZHlcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzJdXCJcbiAgICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgICA6bGFiZWw9XCJwcm9wcy5jdGFMYWJlbFwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY3RhQ2xpY2snKVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFsZXJ0IHtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ2ljb24gaGVhZGluZyBjbG9zZSdcbiAgICAgICcuIGJvZHkgLic7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIHZhcigtLXRpZGUtc2FmZS1mcikgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IHZhcigtLXRpZGUtc3BhY2luZy0xXFwvMik7XG4gICAgbWF4LXdpZHRoOiB2YXIoLS10aWRlLW1heC13aWR0aCwgNjQwcHgpO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUiA9IHtcbiAgQkxBQ0s6ICdibGFjaycsXG4gIEJMVUU6ICdibHVlJyxcbiAgR1JFRU46ICdncmVlbicsXG4gIExJTUU6ICdsaW1lJyxcbiAgT1JBTkdFOiAnb3JhbmdlJyxcbiAgUFVSUExFOiAncHVycGxlJyxcbiAgUkVEOiAncmVkJyxcbiAgU0FMTU9OOiAnc2FsbW9uJyxcbiAgVEVBTDogJ3RlYWwnLFxuICBZRUxMT1c6ICd5ZWxsb3cnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SX0RFVEFJTFM6IFJlY29yZDxcbiAgQmFkZ2VDb2xvcixcbiAge1xuICAgIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gICAgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIFtCQURHRV9DT0xPUi5CTEFDS106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5ISUdILFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICB9LFxuICBbQkFER0VfQ09MT1IuQkxVRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuQkxVRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkJMVUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5HUkVFTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuR1JFRU4sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5HUkVFTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkxJTUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkxJTUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5MSU1FLFxuICB9LFxuICBbQkFER0VfQ09MT1IuT1JBTkdFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5PUkFOR0UsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5PUkFOR0UsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5QVVJQTEVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlBVUlBMRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlBVUlBMRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlJFRF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUkVELFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUkVELFxuICB9LFxuICBbQkFER0VfQ09MT1IuU0FMTU9OXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TQUxNT04sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5TQUxNT04sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5URUFMXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5URUFMLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuVEVBTCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLllFTExPV106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuWUVMTE9XLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuWUVMTE9XLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfMjA6ICcyMCcsXG4gIFlFQVJTXzI1OiAnMjUnLFxuICBZRUFSU18zMDogJzMwJyxcbiAgWUVBUlNfMzU6ICczNScsXG4gIFlFQVJTXzU6ICc1Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJhZGdlQ29sb3IgPSAodHlwZW9mIEJBREdFX0NPTE9SKVtrZXlvZiB0eXBlb2YgQkFER0VfQ09MT1JdO1xuZXhwb3J0IHR5cGUgQmFkZ2VUcnVzdGVkWWVhcnMgPSAodHlwZW9mIEJBREdFX1RSVVNURUQpW2tleW9mIHR5cGVvZiBCQURHRV9UUlVTVEVEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYmFkZ2UgY29tcG9uZW50IHdpdGggY3VzdG9taXphYmxlIGNvbnRlbnQgYW5kIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYmFkZ2UtLWRvY3MpIGZvciBUaWRlQmFkZ2VcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfQ09MT1JfREVUQUlMUyB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCYWRnZUNvbG9yIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGljaCBjb2xvciBvcHRpb24gdG8gYWRvcHQgKGlmIGFueSkgKi9cbiAgICBjb2xvcj86IEJhZGdlQ29sb3I7XG5cbiAgICAvKiogSWNvbiB0byBsZWZ0IG9mIGxhYmVsICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBcIkZsb2F0aW5nXCIgdmFyaWFudCBzdHlsZXMgKi9cbiAgICBpc0Zsb2F0aW5nPzogYm9vbGVhbjtcblxuICAgIC8qKiBCYWRnZSB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNvbG9yOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UnLFxuICAgICAgcHJvcHMuaXNGbG9hdGluZyB8fCBwcm9wcy5jb2xvciA/IFtDU1MuQkcuU1VSRkFDRS5GTE9BVElORywgQ1NTLlNIQURPVy5CT1RUT01dIDogW0NTUy5CRy5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIHByb3BzLmNvbG9yICYmIFtDU1MuQk9SREVSLkxFRlQuVFdPLCBCQURHRV9DT0xPUl9ERVRBSUxTW3Byb3BzLmNvbG9yXS5ib3JkZXJDb2xvcl0sXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkYsIHByb3BzLmNvbG9yICYmIEJBREdFX0NPTE9SX0RFVEFJTFNbcHJvcHMuY29sb3JdLmljb25Db2xvcl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRydXN0ZWQgcGFydG5lciBiYWRnZSBjb21wb25lbnQgd2l0aCBwcmVzZXQgeWVhcnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGViYWRnZXRydXN0ZWRwYXJ0bmVyLS1kb2NzKSBmb3IgVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfVFJVU1RFRCB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQmFkZ2VUcnVzdGVkWWVhcnMgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBOdW1iZXIgb2YgeWVhcnMgdG8gZGlzcGxheSBpbiB0aGUgdHJ1c3RlZCBwYXJ0bmVyIGJhZGdlICovXG4gICAgeWVhcnM/OiBCYWRnZVRydXN0ZWRZZWFycztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHllYXJzOiBCQURHRV9UUlVTVEVELllFQVJTXzUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlLXRydXN0ZWQtcGFydG5lcicsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkJSQU5ELFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uQVdBUkRfU1RBUlwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5cbiAgICAgIDxzcGFuPnt7IHByb3BzLnllYXJzIH19IHllYXIgdHJ1c3RlZCBwYXJ0bmVyPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYmFkZ2UgY29tcG9uZW50IGZvciBpbmRpY2F0aW5nIGEgdmVyaWZpZWQgdmVoaWNsZS5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJhZGdldmVyaWZpZWR2ZWhpY2xlLS1kb2NzKSBmb3IgVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UtdmVyaWZpZWQtdmVoaWNsZScsXG4gICAgICBDU1MuQkcuU0VDT05EQVJZLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLlZFUklGSUVEXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5WZXJpZmllZCB2ZWhpY2xlPC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWluZm8tcHJpbWFyeSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHNldCBvZiBicmVhZGNydW1icyBmb3IgbmF2aWdhdGlvbiBwdXJwb3Nlcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJyZWFkY3J1bWJzLS1kb2NzKSBmb3IgVGlkZUJyZWFkQ3J1bWJzXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQnJlYWRDcnVtYiB9IGZyb20gJ0AvdHlwZXMvQnJlYWRDcnVtYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogQW4gYXJyYXkgb2YgbGFiZWxzIGFuZCBvcHRpb25hbCBVUkxzIHRvIGRpc3BsYXkgZm9yIGVhY2ggYnJlYWQgY3J1bWIuICovXG4gICAgYnJlYWRDcnVtYnM6IEJyZWFkQ3J1bWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJyZWFkQ3J1bWJzOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHVsIDpjbGFzcz1cIlsndGlkZS1icmVhZC1jcnVtYnMnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgIDx0ZW1wbGF0ZVxuICAgICAgOmtleT1cImNydW1iLmxhYmVsXCJcbiAgICAgIHYtZm9yPVwiKGNydW1iLCBpbmRleCkgaW4gcHJvcHMuYnJlYWRDcnVtYnNcIlxuICAgID5cbiAgICAgIDxsaSA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzJdXCI+XG4gICAgICAgIDxJbnRlcm5hbEJhc2VMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTElOS18yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICA6ZGF0YS10cmFjaz1cImNydW1iLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgIDpocmVmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgICB2LWlmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNydW1iLmxhYmVsIH19XG4gICAgICAgIDwvSW50ZXJuYWxCYXNlTGluaz5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIDpkYXRhLXRyYWNrPVwiY3J1bWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjcnVtYi5sYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgdi1pZj1cInByb3BzLmJyZWFkQ3J1bWJzICYmIGluZGV4IDwgcHJvcHMuYnJlYWRDcnVtYnMubGVuZ3RoIC0gMVwiPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6aWNvbj1cIklDT04uQVJST1dfUklHSFRcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvdWw+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBidXR0b24gY29tcG9uZW50IHdpdGggdmFyaW91cyBzdHlsaW5nIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b24tLWRvY3MpIGZvciBUaWRlQnV0dG9uXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSwgU0laRV9CVVRUT04gfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZUJ1dHRvbiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB0eXBlIHsgQnV0dG9uVHlwZSB9IGZyb20gJ0AvdHlwZXMvVHlwZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyBjbGlja2FiaWxpdHkgKEJ1dHRvbiBvbmx5KSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBIVE1MIHRhZyB0eXBlICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG9wZW4gKExpbmsgb25seSkgKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIEljb24gdG8gbGVmdCBvZiBsYWJlbCAqL1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcblxuICAgIC8qKiBJY29uIHRvIHJpZ2h0IG9mIGxhYmVsICovXG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdGFyZ2V0IGEgbmV3IGJyb3dzZXIgdGFiIChMaW5rIG9ubHkpICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIEJ1dHRvbiB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHZpc3VhbCBwcm9taW5lbmNlICovXG4gICAgcHJpb3JpdHk/OiBFeGNsdWRlPFByaW9yaXR5LCB0eXBlb2YgUFJJT1JJVFkuRkxPQVRJTkc+O1xuXG4gICAgLyoqIERldGVybWluZXMgcmVuZGVyZWQgc2l6ZSAqL1xuICAgIHNpemU/OiBTaXplQnV0dG9uO1xuXG4gICAgLyoqIEFwcGxpZXMgdHlwZSBhdHRyaWJ1dGUgdG8gSFRNTCBlbGVtZW50ICovXG4gICAgdHlwZT86IEJ1dHRvblR5cGU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gICAgc2l6ZTogU0laRV9CVVRUT04uTEFSR0UsXG4gICAgdHlwZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCB0eXBlQXR0cmlidXRlID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gcHJvcHMudHlwZSA/PyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uJyxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCxcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QQURESU5HLlguVFdPLFxuICAgICAgYHRpZGUtYnV0dG9uLSR7cHJpb3JpdHl9YCxcbiAgICAgIGVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuRElTUExBWS5JTkxJTkVfRkxFWCwgQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiBbQ1NTLkRJU1BMQVkuRkxFWF0sXG4gICAgICBzaXplID09PSBTSVpFX0JVVFRPTi5TTUFMTFxuICAgICAgICA/IFtDU1MuRk9OVC5ST0xFLkJVVFRPTl8yLCBDU1MuUEFERElORy5ZLkhBTEZdXG4gICAgICAgIDogW0NTUy5GT05ULlJPTEUuQlVUVE9OXzEsIENTUy5QQURESU5HLlkuT05FXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBkaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaHJlZiA/IGhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJ0eXBlQXR0cmlidXRlXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgOnNpemU9XCJzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSA/IFNJWkUuTEFSR0UgOiBTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJpY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIHt7IGxhYmVsIH19XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwiaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGJ1dHRvbiBjb21wb25lbnQgZm9yIHVzZSB0byBzYXZlIGl0ZW1zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9uc2F2ZS0tZG9jcykgZm9yIFRpZGVCdXR0b25TYXZlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgY29uc3QgaXNUb3VjaGVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaXNTYXZlZCA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgd2F0Y2goXG4gICAgaXNTYXZlZCxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoIWlzVG91Y2hlZC52YWx1ZSkgaXNUb3VjaGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiBmYWxzZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLWJ1dHRvbi1zYXZlJywgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLCBpc1NhdmVkICYmICdzYXZlZCddXCJcbiAgICBAY2xpY2s9XCJpc1NhdmVkID0gIWlzU2F2ZWRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGRpdiA6Y2xhc3M9XCJbJ2hlYXJ0LWNvbnRhaW5lcicsIENTUy5ESVNQTEFZLkZMRVgsIGlzU2F2ZWQgJiYgaXNUb3VjaGVkICYmICdhbmltYXRlLWhlYXJ0YmVhdCddXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1idXR0b24tc2F2ZS1pY29uJywgQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgICAgaGVpZ2h0PVwiMzJcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgd2lkdGg9XCIzMlwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIDpjbGFzcz1cIlsnaGVhcnQtZmlsbGVkJywgaXNTYXZlZCA/IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlJFRCA6ICdmaWxsZWQtdHJhbnNwYXJlbnQnXVwiXG4gICAgICAgICAgZD1cIm0xMiAyMS0xLjQ1LTEuM2MtMS42ODMzLTEuNTE2Ny0zLjA3NS0yLjgyNS00LjE3NS0zLjkyNS0xLjEtMS4xLTEuOTc1LTIuMDg3NS0yLjYyNS0yLjk2MjUtLjY1LS44NzUtMS4xMDQyLTEuNjc5Mi0xLjM2MjUtMi40MTI1QzIuMTI5MiA5LjY2NjcgMiA4LjkxNjcgMiA4LjE1YzAtMS41NjY3LjUyNS0yLjg3NSAxLjU3NS0zLjkyNUM0LjYyNSAzLjE3NSA1LjkzMzMgMi42NSA3LjUgMi42NWMuODY2NyAwIDEuNjkxNy4xODMzIDIuNDc1LjU1Ljc4MzMuMzY2NyAxLjQ1ODMuODgzMyAyLjAyNSAxLjU1LjU2NjctLjY2NjcgMS4yNDE3LTEuMTgzMyAyLjAyNS0xLjU1Ljc4MzMtLjM2NjcgMS42MDgzLS41NSAyLjQ3NS0uNTUgMS41NjY3IDAgMi44NzUuNTI1IDMuOTI1IDEuNTc1QzIxLjQ3NSA1LjI3NSAyMiA2LjU4MzMgMjIgOC4xNWMwIC43NjY3LS4xMjkyIDEuNTE2Ny0uMzg3NSAyLjI1LS4yNTgzLjczMzMtLjcxMjUgMS41Mzc1LTEuMzYyNSAyLjQxMjVzLTEuNTI1IDEuODYyNS0yLjYyNSAyLjk2MjVjLTEuMSAxLjEtMi40OTE3IDIuNDA4My00LjE3NSAzLjkyNUwxMiAyMVpcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgOmNsYXNzPVwiWydoZWFydC1vdXRsaW5lJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFXVwiXG4gICAgICAgICAgZD1cIm0xMiAyMS0xLjQ1LTEuM2MtMS42ODMzLTEuNTE2Ny0zLjA3NS0yLjgyNS00LjE3NS0zLjkyNS0xLjEtMS4xLTEuOTc1LTIuMDg3NS0yLjYyNS0yLjk2MjUtLjY1LS44NzUtMS4xMDQyLTEuNjc5Mi0xLjM2MjUtMi40MTI1QzIuMTI5MiA5LjY2NjcgMiA4LjkxNjcgMiA4LjE1YzAtMS41NjY3LjUyNS0yLjg3NSAxLjU3NS0zLjkyNUM0LjYyNSAzLjE3NSA1LjkzMzMgMi42NSA3LjUgMi42NWMuODY2NyAwIDEuNjkxNy4xODMzIDIuNDc1LjU1Ljc4MzMuMzY2NyAxLjQ1ODMuODgzMyAyLjAyNSAxLjU1LjU2NjctLjY2NjcgMS4yNDE3LTEuMTgzMyAyLjAyNS0xLjU1Ljc4MzMtLjM2NjcgMS42MDgzLS41NSAyLjQ3NS0uNTUgMS41NjY3IDAgMi44NzUuNTI1IDMuOTI1IDEuNTc1QzIxLjQ3NSA1LjI3NSAyMiA2LjU4MzMgMjIgOC4xNWMwIC43NjY3LS4xMjkyIDEuNTE2Ny0uMzg3NSAyLjI1LS4yNTgzLjczMzMtLjcxMjUgMS41Mzc1LTEuMzYyNSAyLjQxMjVzLTEuNTI1IDEuODYyNS0yLjYyNSAyLjk2MjVjLTEuMSAxLjEtMi40OTE3IDIuNDA4My00LjE3NSAzLjkyNUwxMiAyMVptMC0yLjdjMS42LTEuNDMzMyAyLjkxNjctMi42NjI1IDMuOTUtMy42ODc1czEuODUtMS45MTY3IDIuNDUtMi42NzVjLjYtLjc1ODMgMS4wMTY3LTEuNDMzMyAxLjI1LTIuMDI1LjIzMzMtLjU5MTcuMzUtMS4xNzkyLjM1LTEuNzYyNSAwLTEtLjMzMzMtMS44MzMzLTEtMi41LS42NjY3LS42NjY3LTEuNS0xLTIuNS0xLS43ODMzIDAtMS41MDgzLjIyMDgtMi4xNzUuNjYyNUMxMy42NTgzIDUuNzU0MiAxMy4yIDYuMzE2NyAxMi45NSA3aC0xLjljLS4yNS0uNjgzMy0uNzA4My0xLjI0NTgtMS4zNzUtMS42ODc1UzguMjgzMyA0LjY1IDcuNSA0LjY1Yy0xIDAtMS44MzMzLjMzMzMtMi41IDEtLjY2NjcuNjY2Ny0xIDEuNS0xIDIuNSAwIC41ODMzLjExNjcgMS4xNzA4LjM1IDEuNzYyNS4yMzMzLjU5MTcuNjUgMS4yNjY3IDEuMjUgMi4wMjVzMS40MTY3IDEuNjUgMi40NSAyLjY3NVMxMC40IDE2Ljg2NjcgMTIgMTguM1pcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLmhlYXJ0LWNvbnRhaW5lciB7XG4gICAgLS1yb3RhdGUtZHVyaW5nLWhlYXJ0LWJlYXQ6IDlkZWc7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMykpO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtZHVyYXRpb24tMzAwKSB2YXIoLS10aWRlLWVhc2luZy1lYXNlLW91dCk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBzY2FsZTtcbiAgICByb3RhdGU6IDBkZWc7XG4gIH1cblxuICAuaGVhcnQtY29udGFpbmVyLmFuaW1hdGUtaGVhcnRiZWF0IHtcbiAgICBhbmltYXRpb246IGhlYXJ0QmVhdCB2YXIoLS10aWRlLWR1cmF0aW9uLTE1MCk7XG4gICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogYWx0ZXJuYXRlO1xuICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDQ7XG4gIH1cblxuICAuaGVhcnQtY29udGFpbmVyOmFjdGl2ZSB7XG4gICAgc2NhbGU6IDAuOTtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS10aWRlLWR1cmF0aW9uLTc1KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1zYXZlLWljb24ge1xuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgfVxuXG4gIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgLmhlYXJ0LWNvbnRhaW5lciB7XG4gICAgICAtLXJvdGF0ZS1kdXJpbmctaGVhcnQtYmVhdDogMGRlZztcbiAgICB9XG5cbiAgICAudGlkZS1idXR0b24tc2F2ZTp3aGVyZSg6aG92ZXIsIDpmb2N1cy12aXNpYmxlKSAuaGVhcnQtY29udGFpbmVyIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDlkZWcpO1xuICAgIH1cbiAgfVxuXG4gIC5oZWFydC1maWxsZWQge1xuICAgIHNjYWxlOiAwLjk4NTsgLyogYXZvaWQgaGFpcmxpbmUgYm9yZGVyIHJlbmRlciBpc3N1ZSAqL1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10aWRlLWR1cmF0aW9uLTc1KSB2YXIoLS10aWRlLWVhc2luZy1saW5lYXIpO1xuICB9XG5cbiAgLmZpbGxlZC10cmFuc3BhcmVudCB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgfVxuXG4gIEBrZXlmcmFtZXMgaGVhcnRCZWF0IHtcbiAgICBmcm9tIHtcbiAgICAgIHNjYWxlOiAxO1xuICAgICAgcm90YXRlOiAwZGVnO1xuICAgIH1cbiAgICB0byB7XG4gICAgICBzY2FsZTogMS4yNTtcbiAgICAgIHJvdGF0ZTogdmFyKC0tcm90YXRlLWR1cmluZy1oZWFydC1iZWF0KTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHNlZ21lbnRlZCBidXR0b24gY29tcG9uZW50IGZvciBuYXZpZ2F0aW9uIHB1cnBvc2VzLlxuICAgKlxuICAgKiBQb3dlcmVkIGJ5IG5hdGl2ZSBpbnB1dFt0eXBlPVwicmFkaW9cIl0gdW5kZXIgdGhlIGhvb2QgZm9yIGVuaGFuY2VkIGFjY2Vzc2liaWxpdHkuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b25zZWdtZW50ZWQtLWRvY3MpIGZvciBUaWRlQnV0dG9uU2VnbWVudGVkXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgdXNlSWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBTZXRzIGxhYmVsIGFuZCBjYWxsYmFjayBmb3IgZWFjaCB0YWIgKi9cbiAgICB0YWJzOiBUYWJbXSB8IHJlYWRvbmx5IFRhYltdO1xuXG4gICAgLyoqIE9wdHMgaW4gYXMgYSBuYXRpdmUgSFRNTCBmb3JtIGZpZWxkIHdpdGggdGhpcyBuYW1lLiAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBjdXJyZW50SW5kZXggPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgdW5pcXVlSWQgPSB1c2VJZCgpO1xuXG4gIGNvbnN0IGlucHV0Rm9ybUF0dHJpYnV0ZSA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5uYW1lID8gdW5kZWZpbmVkIDogJ25vbmUnKSk7XG4gIGNvbnN0IGlucHV0TmFtZUF0dHJpYnV0ZSA9IGNvbXB1dGVkKCgpID0+IHByb3BzLm5hbWUgPz8gdW5pcXVlSWQpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5BVVRPLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgIF1cIlxuICAgIHJvbGU9XCJyYWRpb2dyb3VwXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkLXRhYicsXG4gICAgICAgIGluZGV4ID09PSBjdXJyZW50SW5kZXhcbiAgICAgICAgICA/IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsIENTUy5TSEFET1cuQk9UVE9NXVxuICAgICAgICAgIDogWydpbmFjdGl2ZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgIENTUy5BTElHTi5YLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLlRXTyxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLFxuICAgICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgIENTUy5XSURUSC5BVVRPLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIDpjaGVja2VkPVwiaW5kZXggPT09IGN1cnJlbnRJbmRleFwiXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICAgIDpmb3JtPVwiaW5wdXRGb3JtQXR0cmlidXRlXCJcbiAgICAgICAgOm5hbWU9XCJpbnB1dE5hbWVBdHRyaWJ1dGVcIlxuICAgICAgICA6dmFsdWU9XCJpbmRleFwiXG4gICAgICAgIEBjaGFuZ2U9XCJjdXJyZW50SW5kZXggPSBpbmRleFwiXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAvPlxuXG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiPlxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIlxuICAgICAgICB2LWlmPVwidGFiLmNvdW50ICYmIHRhYi5jb3VudCA+IDBcIlxuICAgICAgPlxuICAgICAgICAoe3sgdGFiLmNvdW50IH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZCB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cblxuICAudGlkZS1idXR0b24tc2VnbWVudGVkOmhhcyg6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gIH1cblxuICAuaW5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLmluYWN0aXZlOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWRlZmF1bHQpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRZUEVfQ0FSRCA9IHtcbiAgQUNUSU9OQUJMRTogJ2FjdGlvbicsXG4gIElORk9STUFUSU9OQUw6ICdpbmZvcm1hdGlvbmFsJyxcbiAgU0VMRUNUQUJMRTogJ3NlbGVjdCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDYXJkVHlwZSA9ICh0eXBlb2YgVFlQRV9DQVJEKVtrZXlvZiB0eXBlb2YgVFlQRV9DQVJEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2FyZCBjb21wb25lbnQgd2l0aCBhIGhlYWRpbmcsIGRlc2NyaXB0aW9uLCBhbmQgb3B0aW9uYWwgaWNvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNhcmQtLWRvY3MpIGZvciBUaWRlQ2FyZFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgVFlQRV9DQVJEIH0gZnJvbSAnQC90eXBlcy9DYXJkJztcbiAgaW1wb3J0IHsgRUxFTUVOVF9CUk9BRCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBDYXJkVHlwZSB9IGZyb20gJ0AvdHlwZXMvQ2FyZCc7XG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudEJyb2FkIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBPcHRpb25hbCBkZXNjcmlwdGlvbiB0ZXh0IGRpc3BsYXllZCBiZWxvdyB0aGUgaGVhZGluZyAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBtYWluIGhlYWRpbmcgb2YgdGhlIGNhcmQuICovXG4gICAgaGVhZGluZzogc3RyaW5nO1xuXG4gICAgLyoqIE9wdGlvbmFsIGljb24gZGlzcGxheWVkIG9uIHRoZSBjYXJkLiAqL1xuICAgIGljb24/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQ2FyZCBpcyBzZWxlY3RlZCAoZm9yIHNlbGVjdGFibGUgY2FyZHMpLiAqL1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBUeXBlIG9mIHRoZSBjYXJkICovXG4gICAgdHlwZT86IENhcmRUeXBlO1xuXG4gICAgLyoqIFVSTCB0byBuYXZpZ2F0ZSB0byBvbiBjbGljay4gKi9cbiAgICBocmVmPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbjogdW5kZWZpbmVkLFxuICAgIHNlbGVjdGVkOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVFlQRV9DQVJELklORk9STUFUSU9OQUwsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQ8RWxlbWVudEJyb2FkIHwgdHlwZW9mIEludGVybmFsQmFzZUxpbms+KCgpID0+XG4gICAgcHJvcHMuaHJlZiA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy50eXBlID09PSBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCA/IEVMRU1FTlRfQlJPQUQuRElWIDogRUxFTUVOVF9CUk9BRC5CVVRUT05cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jYXJkJyxcbiAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgIENTUy5BTElHTi5YLkxFRlQsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgdHlwZSAhPT0gVFlQRV9DQVJELklORk9STUFUSU9OQUwgJiYgJ2hvdmVyYWJsZScsXG4gICAgICB0eXBlID09PSBUWVBFX0NBUkQuU0VMRUNUQUJMRSAmJiBzZWxlY3RlZCAmJiAnc2VsZWN0ZWQnLFxuICAgIF1cIlxuICAgIDpocmVmPVwiaHJlZlwiXG4gICAgOnR5cGU9XCJyb290RWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5CVVRUT04gPyBFTEVNRU5UX0JST0FELkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiaWNvblwiXG4gICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImljb25cIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuQVhJUzIuU1RBUlQsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuSEFMRl1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICB7eyBoZWFkaW5nIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cImRlc2NyaXB0aW9uXCJcbiAgICAgID5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcmQuaG92ZXJhYmxlOm5vdCguc2VsZWN0ZWQpOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLXJlc3QpO1xuICB9XG4gIC50aWRlLWNhcmQuc2VsZWN0ZWQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2Fyb3VzZWwgY29tcG9uZW50IHdpdGggbmF2aWdhdGlvbiBjb250cm9scyBhbmQgc2xpZGUgaW5kaWNhdG9ycy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNhcm91c2VsLS1kb2NzKSBmb3IgVGlkZUNhcm91c2VsXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGluZGljYXRvciBkb3RzIG92ZXJsYXk8YnIgLz4oT25seSB2YWxpZCB3aXRoIGZ1bGwgd2lkdGggY2FyZHMpICovXG4gICAgaGFzRG90cz86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgb24tcGFnZSBvciBmbG9hdGluZyBjYXJvdXNlbCAqL1xuICAgIGlzRmxvYXRpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgZm9udCByb2xlIHVzZWQgZm9yIHRpdGxlIGRpc3BsYXkgKi9cbiAgICBpc0hlYWRsaW5lMT86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIG9uLXBhZ2UgYnV0dG9ucyBzaG91bGQgYmUgaGlkZGVuIHVudGlsIGhvdmVyICovXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBzY3JvbGwgYnkgcGFnZSBvciBieSBpbmRpdmlkdWFsIHNsaWRlICovXG4gICAgaXNTY3JvbGxCeVBhZ2U/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIG1heCBudW1iZXIgb2YgaW5kaWNhdG9yIGRvdHMgdG8gZGlzcGxheSBhdCBhIGdpdmVuIHRpbWUgKi9cbiAgICBtYXhEb3RzPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHRleHQgZGlzcGxheWVkIHRvIHRoZSByaWdodCBvZiB0aGUgdGl0bGUgKi9cbiAgICBzdWJ0aXRsZT86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0aXRsZSB0ZXh0IGRpc3BsYXllZCBhYm92ZSB0aGUgY2Fyb3VzZWwgKi9cbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0RvdHM6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgICBpc0hlYWRsaW5lMTogZmFsc2UsXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM6IHRydWUsXG4gICAgaXNTY3JvbGxCeVBhZ2U6IHRydWUsXG4gICAgbWF4RG90czogNSxcbiAgICBzdWJ0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNJblZpZXc6IG51bWJlcltdKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgY2Fyb3VzZWxSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBjdXJyZW50UGFnZUluZGV4ID0gcmVmPG51bWJlcj4oMCk7XG4gIGNvbnN0IGRvdHNSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgZnJhbWVXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBpc0ZpcnN0U2xpZGUgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd0J1dHRvbnMgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IHNsaWRlT2JzZXJ2ZXIgPSByZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2xpZGVzID0gcmVmPEhUTUxFbGVtZW50W10+KFtdKTtcbiAgY29uc3Qgc2xpZGVzSW5WaWV3ID0gcmVmPG51bWJlcltdPihbXSk7XG4gIGNvbnN0IHNsb3RPYnNlcnZlciA9IHJlZjxNdXRhdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHRvdWNoU3RhcnQgPSByZWY8VG91Y2ggfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IHNsaWRlc0luVmlld0NvdW50ID0gcmVmPG51bWJlcj4oMSk7XG5cbiAgY29uc3QgY3VycmVudFBhZ2UgPSBjb21wdXRlZCgoKSA9PiBjdXJyZW50UGFnZUluZGV4LnZhbHVlICsgMSk7XG4gIGNvbnN0IGRvdENvbnRhaW5lcldpZHRoID0gY29tcHV0ZWQoKCkgPT4gZG90Q291bnRWaXNpYmxlLnZhbHVlICogZG90V2lkdGggKyAoZG90Q291bnRWaXNpYmxlLnZhbHVlIC0gMSkgKiBkb3RHYXApO1xuICBjb25zdCBkb3RDb3VudFZpc2libGUgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMubWF4RG90cyA+IHRvdGFsUGFnZXMudmFsdWUgPyB0b3RhbFBhZ2VzLnZhbHVlIDogcHJvcHMubWF4RG90cykpO1xuICBjb25zdCB0b3RhbFBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghc2xpZGVzLnZhbHVlLmxlbmd0aCkgcmV0dXJuIDA7XG4gICAgaWYgKCFwcm9wcy5pc1Njcm9sbEJ5UGFnZSkgcmV0dXJuIHNsaWRlcy52YWx1ZS5sZW5ndGg7XG5cbiAgICBjb25zdCBxdW90aWVudCA9IE1hdGguZmxvb3Ioc2xpZGVzLnZhbHVlLmxlbmd0aCAvIHNsaWRlc0luVmlld0NvdW50LnZhbHVlKTtcbiAgICBjb25zdCByZW1haW5kZXIgPSBzbGlkZXMudmFsdWUubGVuZ3RoICUgc2xpZGVzSW5WaWV3Q291bnQudmFsdWU7XG5cbiAgICByZXR1cm4gcmVtYWluZGVyID8gcXVvdGllbnQgKyAxIDogcXVvdGllbnQ7XG4gIH0pO1xuXG4gIGNvbnN0IGRvdEdhcDogbnVtYmVyID0gODtcbiAgY29uc3QgZG90V2lkdGg6IG51bWJlciA9IDg7XG4gIGxldCBzY3JvbGxUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgZ2V0RG90Q2xhc3MgPSAoZG90SW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGxldCBjbGFzc05hbWUgPSAnJztcblxuICAgIGlmIChkb3RJbmRleCA9PT0gY3VycmVudFBhZ2VJbmRleC52YWx1ZSkgY2xhc3NOYW1lID0gJ3RpZGUtY2Fyb3VzZWwtZG90LWFjdGl2ZSc7XG4gICAgaWYgKE1hdGguYWJzKGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSBkb3RJbmRleCkgPT09IDEpIGNsYXNzTmFtZSA9ICd0aWRlLWNhcm91c2VsLWRvdC1uZWlnaGJvcic7XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9O1xuXG4gIGNvbnN0IGdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lciA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgY29udGFpbmVyOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyUmlnaHQgPSBjb250YWluZXJSZWN0LmxlZnQgKyBjb250YWluZXJSZWN0LndpZHRoO1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlbGVtZW50UmlnaHQgPSBlbGVtZW50UmVjdC5sZWZ0ICsgZWxlbWVudFJlY3Qud2lkdGg7XG5cbiAgICByZXR1cm4gZWxlbWVudFJpZ2h0IDw9IGNvbnRhaW5lclJpZ2h0ICYmIGVsZW1lbnRSZWN0LmxlZnQgPj0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvdWNoRW5kID0gKGV2ZW50OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0b3VjaFN0YXJ0LnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCB0b3VjaEVuZCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdO1xuICAgIGNvbnN0IGRlbHRhWCA9IHRvdWNoU3RhcnQudmFsdWUuY2xpZW50WCAtIHRvdWNoRW5kLmNsaWVudFg7XG4gICAgY29uc3QgZGVsdGFZID0gdG91Y2hFbmQuY2xpZW50WSAtIHRvdWNoU3RhcnQudmFsdWUuY2xpZW50WTtcblxuICAgIGlmIChNYXRoLmFicyhkZWx0YVgpID4gTWF0aC5hYnMoZGVsdGFZKSkgc2Nyb2xsQnlEZWx0YShkZWx0YVgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvdWNoU3RhcnQgPSAoZXZlbnQ6IFRvdWNoRXZlbnQpID0+IHtcbiAgICB0b3VjaFN0YXJ0LnZhbHVlID0gZXZlbnQudG91Y2hlc1swXTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVXaGVlbCA9IChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgIGNvbnN0IGlzU2hpZnRLZXlEb3duID0gZXZlbnQuc2hpZnRLZXk7XG4gICAgY29uc3QgaXNXaGVlbCA9IE1hdGguYWJzKGV2ZW50LmRlbHRhWSkgPj0gODA7XG5cbiAgICBpZiAoaXNXaGVlbCAmJiAhaXNTaGlmdEtleURvd24pIHJldHVybjtcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dCk7XG5cbiAgICBzY3JvbGxUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKGlzV2hlZWwpIHtcbiAgICAgICAgc2Nyb2xsQnlEZWx0YShldmVudC5kZWx0YVkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVzLnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZVswXV0/Lm9mZnNldExlZnQgfHwgMDtcblxuICAgICAgICBzY3JvbGxUb09mZnNldChvZmZzZXQpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5lclJlZi52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29udGVudFdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGZyYW1lV2lkdGgudmFsdWUgPSBjb250YWluZXJSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgc2hvd0J1dHRvbnMudmFsdWUgPSBjb250ZW50V2lkdGgudmFsdWUgPiBmcmFtZVdpZHRoLnZhbHVlO1xuXG4gICAgc2xpZGVzSW5WaWV3Q291bnQudmFsdWUgPSBzbGlkZXMudmFsdWUuZmlsdGVyKChzbGlkZSkgPT5cbiAgICAgIGdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lcihzbGlkZSwgY29udGFpbmVyUmVmLnZhbHVlIGFzIEhUTUxFbGVtZW50KVxuICAgICkubGVuZ3RoO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IGNhcm91c2VsUmVmPy52YWx1ZSxcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMXB4IDBweCAwcHgnLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgIH07XG5cbiAgICBzbGlkZU9ic2VydmVyLnZhbHVlID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBsZXQgc2xpZGVzQWRkZWRUb1ZpZXc6IG51bWJlcltdID0gW107XG5cbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IHNsaWRlcy52YWx1ZS5pbmRleE9mKGVudHJ5LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgc2xpZGVzQWRkZWRUb1ZpZXcucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuZmlsdGVyKChzbGlkZSkgPT4gc2xpZGUgIT09IHNsaWRlSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgIH0pO1xuXG4gICAgICBpc0ZpcnN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoMCk7XG4gICAgICBpc0xhc3RTbGlkZS52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5pbmNsdWRlcyhzbGlkZXMudmFsdWUubGVuZ3RoIC0gMSk7XG5cbiAgICAgIGlmIChzbGlkZXNBZGRlZFRvVmlldy5sZW5ndGggPiAwKSBlbWl0KCdzbGlkZXNBZGRlZFRvVmlldycsIHNsaWRlc0FkZGVkVG9WaWV3KTtcbiAgICB9LCBvcHRpb25zKTtcblxuICAgIHNsaWRlcy52YWx1ZS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgaWYgKHNsaWRlT2JzZXJ2ZXIudmFsdWUpIHNsaWRlT2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShjaGlsZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZVNsb3QgPSAoKSA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2ZXJDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG4gICAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgfTtcblxuICAgIHNsb3RPYnNlcnZlci52YWx1ZSA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9ic2VydmVyQ2FsbGJhY2spO1xuXG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSkgc2xvdE9ic2VydmVyLnZhbHVlLm9ic2VydmUoY29udGFpbmVyUmVmLnZhbHVlLCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxCeURlbHRhID0gKGRlbHRhOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBpc1Njcm9sbGluZ0xlZnQgPSBkZWx0YSA8IDA7XG5cbiAgICBpZiAoaXNTY3JvbGxpbmdMZWZ0KSB7XG4gICAgICBwcm9wcy5pc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BzLmlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvT2Zmc2V0ID0gKHRhcmdldDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgY29uc3QgaXNTY3JvbGxpbmdMZWZ0ID0gdGFyZ2V0IDw9IGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxMZWZ0O1xuXG4gICAgY3VycmVudFBhZ2VJbmRleC52YWx1ZSA9IGlzU2Nyb2xsaW5nTGVmdCA/IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSAxIDogY3VycmVudFBhZ2VJbmRleC52YWx1ZSArIDE7XG5cbiAgICBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogdGFyZ2V0LFxuICAgIH0pO1xuICAgIHVwZGF0ZURvdHMoaXNTY3JvbGxpbmdMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFBhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDAgfHwgaXNMYXN0U2xpZGUudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggLSAxXSArIDE7XG4gICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVzLnZhbHVlW25leHRTbGlkZV0/Lm9mZnNldExlZnQ7XG5cbiAgICBzY3JvbGxUb09mZnNldChvZmZzZXQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1BhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDAgfHwgaXNGaXJzdFNsaWRlLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSBzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoO1xuICAgIGNvbnN0IG9mZnNldCA9IHNsaWRlcy52YWx1ZVtwcmV2aW91c1NsaWRlXT8ub2Zmc2V0TGVmdCB8fCAwO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFNsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPiAxID8gc2xpZGVzSW5WaWV3LnZhbHVlWzFdIDogc2xpZGVzSW5WaWV3LnZhbHVlWzBdICsgMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtuZXh0U2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1NsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZURvdHMgPSAoaXNTY3JvbGxpbmdMZWZ0OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKCFkb3RzUmVmLnZhbHVlIHx8IGRvdENvdW50VmlzaWJsZS52YWx1ZSA+PSB0b3RhbFBhZ2VzLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBpc09kZERvdENvdW50ID0gZG90Q291bnRWaXNpYmxlLnZhbHVlICUgMiAhPT0gMDtcbiAgICBjb25zdCBjZW50ZXJEb3QgPVxuICAgICAgaXNPZGREb3RDb3VudCB8fCBpc1Njcm9sbGluZ0xlZnRcbiAgICAgICAgPyBNYXRoLmZsb29yKGRvdENvdW50VmlzaWJsZS52YWx1ZSAvIDIpICsgMVxuICAgICAgICA6IE1hdGguZmxvb3IoZG90Q291bnRWaXNpYmxlLnZhbHVlIC8gMik7XG5cbiAgICBkb3RzUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IGN1cnJlbnRQYWdlLnZhbHVlIDwgY2VudGVyRG90ID8gMCA6IChjdXJyZW50UGFnZS52YWx1ZSAtIGNlbnRlckRvdCkgKiAoZG90V2lkdGggKyBkb3RHYXApLFxuICAgIH0pO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICBtZWFzdXJlRG9tKCk7XG4gICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIG9ic2VydmVTbG90KCk7XG5cbiAgICBpZiAod2luZG93KSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gICAgfVxuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHNsb3RPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcm91c2VsJyxcbiAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIoIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnMpIHx8IHByb3BzLnRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW2lzSGVhZGxpbmUxID8gQ1NTLkZPTlQuUk9MRS5IRUFETElORV8xIDogQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VidGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VidGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cIiFwcm9wcy5pc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNGaXJzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzbG90IG5hbWU9XCJtaXNjXCIgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkRJU1BMQVkuRkxFWF1cIj5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtY29udGFpbmVyJyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgIENTUy5MSVNUX0JVTExFVFMuT0ZGLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICBDU1MuU05BUC5PTixcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImNvbnRhaW5lclJlZlwiXG4gICAgICAgIEB0b3VjaGVuZD1cImhhbmRsZVRvdWNoRW5kXCJcbiAgICAgICAgQHRvdWNoc3RhcnQucGFzc2l2ZT1cImhhbmRsZVRvdWNoU3RhcnRcIlxuICAgICAgICBAd2hlZWw9XCJoYW5kbGVXaGVlbFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L3VsPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLk1BUkdJTi5CT1RUT00uSEFMRixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImhhc0RvdHMgJiYgdG90YWxQYWdlcyA+IDFcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLWNhcm91c2VsLWRvdHMtY29udGFpbmVyJ11cIlxuICAgICAgICAgIDpzdHlsZT1cIntcbiAgICAgICAgICAgIHdpZHRoOiBgJHtkb3RDb250YWluZXJXaWR0aH1weGAsXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdHMnLFxuICAgICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgICBDU1MuQVhJUzEuU1RBUlQsXG4gICAgICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguU0NST0xMLFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgcmVmPVwiZG90c1JlZlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtZG90JyxcbiAgICAgICAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICAgICAgICAgIENTUy5IRUlHSFQuWkVSTyxcbiAgICAgICAgICAgICAgICBDU1MuV0lEVEguWkVSTyxcbiAgICAgICAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgICAgICAgZ2V0RG90Q2xhc3MoaW5kZXgpLFxuICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgOmtleT1cImluZGV4XCJcbiAgICAgICAgICAgICAgdi1mb3I9XCIoXywgaW5kZXgpIGluIHRvdGFsUGFnZXNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXknLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBwcm9wcy5pc0hpZGVhd2F5QnV0dG9ucyA/ICdoaWRlYXdheScgOiAnJyxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJpc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzRmlyc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93TmV4dFBhZ2UoKSA6IHNob3dOZXh0U2xpZGUoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbDpob3ZlciAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdCB7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDhweDtcbiAgICBvcGFjaXR5OiAwLjc1O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90LW5laWdoYm9yIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzUpO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90LWFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpIHtcbiAgICAudGlkZS1jYXJvdXNlbCAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2hpcCBhY3Rpb24gYnV0dG9uIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gbmF2aWdhdGlvbiBtZW51cyByZWxhdGluZyB0byBzZWFyY2hlcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNoaXBhY3Rpb24tLWRvY3MpIGZvciBUaWRlQ2hpcEFjdGlvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEhUTUwgdGFnIHR5cGUuICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG5hdmlnYXRlIHRvIG9uIGNsaWNrLiAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogSWNvbiB0byBzaG93IGJlZm9yZSB0aGUgbGFiZWwuICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byB0YXJnZXQgYSBuZXcgYnJvd3NlciB0YWIuICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIENoaXAgdGV4dC4gKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogSUNPTi5TRUFSQ0gsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtYWN0aW9uJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxJTktfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb24gOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiIC8+XG5cbiAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWFjdGlvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNoaXAgZmlsdGVyIGNvbXBvbmVudCBmb3IgdXNlIGluIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjaGlwZmlsdGVyLS1kb2NzKSBmb3IgVGlkZUNoaXBGaWx0ZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBDaGlwIHRleHQuICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1maWx0ZXInLFxuICAgICAgaXNBY3RpdmVcbiAgICAgICAgPyBbJ2FjdGl2ZScsIENTUy5CRy5TRUNPTkRBUlksIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cbiAgICAgICAgOiBbQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICBdXCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c2xvdCAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMSwgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkZdXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLyogQm9yZGVyIG11c3QgYWx3YXlzIGV4aXN0IHRvIHByZXZlbnQgcmVzaXplIG9uIGhvdmVyIHN0YXRlLCBidXQgbWF0Y2ggYmFja2dyb3VuZCBjb2xvciBvbiByZXN0IHN0YXRlIHRvIGJsZW5kIGluLiAqL1xuICAudGlkZS1jaGlwLWZpbHRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAudGlkZS1jaGlwLWZpbHRlci5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1maWx0ZXI6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgaW5wdXQgY2hpcCBjb21wb25lbnQgZm9yIHVzZSBpbiBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlY2hpcGlucHV0LS1kb2NzKSBmb3IgVGlkZUNoaXBJbnB1dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENoaXAgdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWlucHV0JyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgIF1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG5cbiAgICA8VGlkZUljb24gOmljb249XCJJQ09OLkNMT1NFXCIgLz5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWlucHV0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtaW5wdXQ6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNvbHVtbnMgY29tcG9uZW50IGZvciB1c2UgaW4gbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNvbHVtbnMtLWRvY3MpIGZvciBUaWRlQ29sdW1uc1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgbGFiZWwgZm9yIHRoZSBjb2x1bW5zIHNlY3Rpb24uICovXG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6ICcnLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGlkZS1jb2x1bW5zXCI+XG4gICAgPGgyIDpjbGFzcz1cIltDU1MuTUFSR0lOLkJPVFRPTS5IQUxGXVwiPlxuICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgIDwvaDI+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5HQVAuVFdPLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24xXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24yXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24zXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb240XCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSAycmVtKSAvIDIpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjMycHgpIHtcbiAgICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDZyZW0pIC8gNCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgaW5qZWN0LCBwcm92aWRlLCByZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbnR5cGUgVGlkZUZvcm1Db250ZXh0ID0ge1xuICBmb3JjZVNob3dFcnJvcnM6IFJlZjxib29sZWFuPjtcbn07XG5cbmNvbnN0IEZPUk1fS0VZID0gU3ltYm9sKCd0aWRlLWZvcm0nKTtcblxuZXhwb3J0IGNvbnN0IHVzZVRpZGVGb3JtID0gKCkgPT4ge1xuICBjb25zdCBmb3JjZVNob3dFcnJvcnMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByb3ZpZGU8VGlkZUZvcm1Db250ZXh0PihGT1JNX0tFWSwgeyBmb3JjZVNob3dFcnJvcnMgfSk7XG5cbiAgY29uc3QgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyA9ICgpID0+IHtcbiAgICBmb3JjZVNob3dFcnJvcnMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIHJldHVybiB7IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VGb3JtQ29udGV4dCA9ICgpID0+IHtcbiAgcmV0dXJuIGluamVjdDxUaWRlRm9ybUNvbnRleHQ+KEZPUk1fS0VZKTtcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGZvcm0gY29tcG9uZW50IHRvIGJlIHVzZWQgdG8gd3JhcCBmb3JtIGVsZW1lbnRzIGFuZCBoYW5kbGUgZm9ybSBzdWJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlZm9ybS0tZG9jcykgZm9yIFRpZGVGb3JtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyB1c2VUaWRlRm9ybSB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc3VibWl0JywgZTogU3VibWl0RXZlbnQpOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgeyByZXZlYWxWYWxpZGF0aW9uRXJyb3JzIH0gPSB1c2VUaWRlRm9ybSgpO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBTdWJtaXRFdmVudCkgPT4ge1xuICAgIHJldmVhbFZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICBlbWl0KCdzdWJtaXQnLCBlKTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxmb3JtXG4gICAgQHN1Ym1pdC5wcmV2ZW50PVwiaGFuZGxlU3VibWl0XCJcbiAgICBub3ZhbGlkYXRlXG4gID5cbiAgICA8c2xvdCAvPlxuICA8L2Zvcm0+XG48L3RlbXBsYXRlPlxuIiwiZXhwb3J0IGNvbnN0IE9CSkVDVF9GSVQgPSB7XG4gIENPTlRBSU46ICdjb250YWluJyxcbiAgQ09WRVI6ICdjb3ZlcicsXG4gIFNDQUxFX0RPV046ICdzY2FsZS1kb3duJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9iamVjdEZpdCA9ICh0eXBlb2YgT0JKRUNUX0ZJVClba2V5b2YgdHlwZW9mIE9CSkVDVF9GSVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW1hZ2UgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW1hZ2UtLWRvY3MpIGZvciBUaWRlSW1hZ2VcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT2JqZWN0Rml0IH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIFRleHQgZGlzcGxheSB3aGVuIGltYWdlIGNhbid0IGJlIGxvYWRlZC4gKi9cbiAgICBhbHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbHkgYSBcImhlaWdodFwiIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJuYWwgaW1hZ2UgdGFnIChpbmNsdWRpbmcgdW5pdCkuICovXG4gICAgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkZWxheSBsb2FkaW5nIHVudGlsIGltYWdlIGlzIGluIHZpZXdwb3J0LiAqL1xuICAgIGlzTGF6eT86IGJvb2xlYW47XG5cbiAgICAvKiogQ29udHJvbHMgaG93IHRoZSBpbWFnZSBzY2FsZXMgd2l0aGluIGl0cyBib3gsIGVmZmVjdGl2ZSBvbmx5IHdoZW4gaW1hZ2Ugc2l6ZSBkaWZmZXJzIGZyb20gaXRzIGludHJpbnNpYyBkaW1lbnNpb25zLiAqL1xuICAgIG9iamVjdEZpdD86IE9iamVjdEZpdDtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGltYWdlIHNvdXJjZXMgYnkgYnJlYWtwb2ludC4gKi9cbiAgICBzb3VyY2VzPzogU291cmNlW107XG5cbiAgICAvKiogSW1hZ2UgVVJMLiAqL1xuICAgIHNyYz86IHN0cmluZztcblxuICAgIC8qKiBBcHBseSBhIFwid2lkdGhcIiBhdHRyaWJ1dGUgdG8gdGhlIGludGVybmFsIGltYWdlIHRhZyAoaW5jbHVkaW5nIHVuaXQpLiAqL1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgb2JqZWN0Rml0OiBPQkpFQ1RfRklULkNPVkVSLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHBpY3R1cmUgPSByZWYoKTtcbiAgY29uc3QgaW1nID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gJ2h0dHBzOi8vY2RuLXN0YXRpYy50aWxhYnMuaW8vbWFya2V0cGxhY2UvY29tbW9uL2ltYWdlLWNvbWluZy1zb29uLnN2Zyc7XG5cbiAgY29uc3Qgb2JqZWN0Rml0Q2xhc3NOYW1lID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgc3dpdGNoIChwcm9wcy5vYmplY3RGaXQpIHtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT05UQUlOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT05UQUlOO1xuICAgICAgY2FzZSBPQkpFQ1RfRklULkNPVkVSOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT1ZFUjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5TQ0FMRV9ET1dOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5TQ0FMRV9ET1dOO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIE9CSkVDVF9GSVQuQ09WRVI7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3Qgc291cmNlcyA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NvdXJjZScpID8/IFtdO1xuXG4gICAgaWYgKCFjdXJyZW50U3JjKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IG5ldyBVUkwoc291cmNlLnNyY3NldCwgd2luZG93LmxvY2F0aW9uLmhyZWYpLmhyZWY7XG5cbiAgICAgIGlmIChyZXNvbHZlZCA9PT0gY3VycmVudFNyYykge1xuICAgICAgICBzb3VyY2UucmVtb3ZlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGltZy52YWx1ZT8uZ2V0QXR0cmlidXRlKCdzcmMnKSAhPT0gaW1hZ2VEZWZhdWx0KSB7XG4gICAgICBpbWcudmFsdWUuc3JjID0gaW1hZ2VEZWZhdWx0O1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxwaWN0dXJlXG4gICAgOmNsYXNzPVwiWyd0aWRlLWltYWdlJywgQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICByZWY9XCJwaWN0dXJlXCJcbiAgPlxuICAgIDxzb3VyY2VcbiAgICAgIDprZXk9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIDptZWRpYT1cImAobWluLXdpZHRoOiR7c291cmNlLm1lZGlhfXB4KWBcIlxuICAgICAgOnNyY3NldD1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgdi1mb3I9XCJzb3VyY2UgaW4gcHJvcHMuc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxpbWdcbiAgICAgIDphbHQ9XCJhbHRcIlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbWFnZS1pbWcnLFxuICAgICAgICAhcHJvcHMud2lkdGggJiYgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICFwcm9wcy5oZWlnaHQgJiYgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuT0JKRUNULkNFTlRFUixcbiAgICAgICAgb2JqZWN0Rml0Q2xhc3NOYW1lLFxuICAgICAgXVwiXG4gICAgICA6ZmV0Y2hwcmlvcml0eT1cImlzTGF6eSA/IHVuZGVmaW5lZCA6ICdoaWdoJ1wiXG4gICAgICA6aGVpZ2h0PVwicHJvcHMuaGVpZ2h0XCJcbiAgICAgIDpsb2FkaW5nPVwicHJvcHMuaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgICByZWY9XCJpbWdcIlxuICAgICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgICAgOndpZHRoPVwicHJvcHMud2lkdGhcIlxuICAgICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gICAgLz5cbiAgPC9waWN0dXJlPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW1hZ2UtaW1nIHtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW1hZ2UgYmFja2dyb3VuZCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbWFnZWJhY2tncm91bmQtLWRvY3MpIGZvciBUaWRlSW1hZ2VCYWNrZ3JvdW5kXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUltYWdlIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlJztcbiAgaW1wb3J0IHsgT0JKRUNUX0ZJVCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogVGV4dCBkaXNwbGF5IHdoZW4gaW1hZ2UgY2FuJ3QgYmUgbG9hZGVkLiAqL1xuICAgIGFsdD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGVsYXkgbG9hZGluZyB1bnRpbCBpbWFnZSBpcyBpbiB2aWV3cG9ydC4gKi9cbiAgICBpc0xhenk/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgaW1hZ2Ugc291cmNlcyBieSBicmVha3BvaW50LiAqL1xuICAgIHNvdXJjZXM/OiBTb3VyY2VbXTtcblxuICAgIC8qKiBJbWFnZSBVUkwuICovXG4gICAgc3JjPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgc291cmNlczogKCkgPT4gW10sXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UtYmFja2dyb3VuZCcsIENTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTiwgQ1NTLklTT0xBVElPTi5JU09MQVRFXVwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJbWFnZVxuICAgICAgICA6YWx0PVwicHJvcHMuYWx0XCJcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuSEVJR0hULkZVTExdXCJcbiAgICAgICAgOmlzLWxhenk9XCJwcm9wcy5pc0xhenlcIlxuICAgICAgICA6b2JqZWN0LWZpdD1cIk9CSkVDVF9GSVQuQ09WRVJcIlxuICAgICAgICA6c291cmNlcz1cInByb3BzLnNvdXJjZXNcIlxuICAgICAgICA6c3JjPVwicHJvcHMuc3JjXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8c2xvdCAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIDpkZWVwKC50aWRlLWltYWdlKSB7XG4gICAgei1pbmRleDogLTE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpbmRpY2F0b3IgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5kaWNhdG9yLS1kb2NzKSBmb3IgVGlkZUluZGljYXRvclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEluZGljYXRvciB0ZXh0ICovXG4gICAgbGFiZWw/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbmRpY2F0b3InLFxuICAgICAgcHJvcHMubGFiZWwgPyAnJyA6ICdkb3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICAgICAgQ1NTLkFMSUdOLlguQ0VOVEVSLFxuICAgICAgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIHByb3BzLmxhYmVsICYmIHByb3BzLmxhYmVsLnRvU3RyaW5nKCkubGVuZ3RoID4gMSA/IFtDU1MuUEFERElORy5YLkhBTEZdIDogW10sXG4gICAgICBwcm9wcy5sYWJlbFxuICAgICAgICA/IFtDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5GT05ULlJPTEUuTEFCRUxfMywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFXVxuICAgICAgICA6IFtDU1MuQk9SREVSLkZVTEwuT05FXSxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1pbmRpY2F0b3ItbGFiZWwnXVwiXG4gICAgICB2LWlmPVwicHJvcHMubGFiZWxcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5kaWNhdG9yOm5vdCguZG90KSB7XG4gICAgbWluLXdpZHRoOiAxcmVtO1xuICAgIG1pbi1oZWlnaHQ6IDFyZW07XG4gIH1cblxuICAudGlkZS1pbmRpY2F0b3IuZG90IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtZ3JheS0xMDApO1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIC50aWRlLWluZGljYXRvci1sYWJlbCB7XG4gICAgLyogVXNlIGJvdHRvbS13ZWlnaHRpbmcgdG8gb2Zmc2V0IHRoZSBtYXRoZW1hdGljYWwgY2VudGVyIHRvIHRoZSBvcHRpY2FsIGNlbnRlci4gKi9cbiAgICBtYXJnaW4tdG9wOiAtMXB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW5wdXQgc3VwcG9ydGluZyB0ZXh0IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0c3VwcG9ydGluZ3RleHQtLWRvY3MpIGZvciBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzRXJyb3I6IGJvb2xlYW47XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9O1xuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMyxcbiAgICAgIGlzRXJyb3IgPyBbQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SXSA6IFtDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaXNFcnJvclwiXG4gICAgLz5cblxuICAgIDxkaXY+XG4gICAgICB7eyBtZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUnO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVElPTl9SRVNVTFQgPSB7XG4gIE5PX0VSUk9SOiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH0sXG4gIFJFUVVJUkVEOiB7XG4gICAgbWVzc2FnZTogJ1BsZWFzZSBmaWxsIG91dCB0aGlzIGZpZWxkJyxcbiAgICB2YWxpZDogZmFsc2UsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHAsIG1lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdDogVmFsaWRhdGlvblJlc3VsdCA9IFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlID8/IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCA9ICh7XG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvckZyb21Qcm9wczogc3RyaW5nO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU6IFJlZjxzdHJpbmc+O1xufSk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAoZXJyb3JGcm9tUHJvcHMgIT09ICcnKVxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiBlcnJvckZyb21Qcm9wcyxcbiAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICB9O1xuXG4gIC8vIGN1c3RvbSB2YWxpZGF0b3IgcHJvcCBlcnJvcnMgZnJvbSBoYXZlIHNlY29uZCBoaWdoZXN0IHByZWNlZGVuY2VcbiAgaWYgKHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZS52YWx1ZSA/PyAnJywgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFsbCBvdGhlciBwcm9wLWJhc2VkIGVycm9ycyBjb21lIGxhc3RcbiAgaWYgKHJlcXVpcmVkICYmIHZhbHVlLnZhbHVlPy50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULlJFUVVJUkVEO1xuICB9XG5cbiAgaWYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiBsZW5ndGhWYWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBFbnRlciBhIHZhbHVlIGJldHdlZW4gJHtmb3JtYXROdW1iZXIobWlubGVuZ3RoKX0gYW5kICR7Zm9ybWF0TnVtYmVyKG1heGxlbmd0aCl9IGNoYXJhY3RlcnNgO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgVXNlICR7Zm9ybWF0TnVtYmVyKG1heGxlbmd0aCl9IGNoYXJhY3RlcnMgb3IgZmV3ZXJgO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgRW50ZXIgYXQgbGVhc3QgJHtmb3JtYXROdW1iZXIobWlubGVuZ3RoKX0gY2hhcmFjdGVyc2A7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGlucHV0IGNoZWNrYm94IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0Y2hlY2tib3gtLWRvY3MpIGZvciBUaWRlSW5wdXRDaGVja2JveFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxUIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgQ2hlY2tib3ggc3RhdGUgaXMgaW50ZXJhY3RhYmxlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGFuZCB2YWxpZCBzdGF0ZSAqL1xuICAgIGVycm9yPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBDaGVja2JveCBpcyBpbmRldGVybWluYXRlICovXG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBDaGVja2JveCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBQYXJlbnRoZXRpY2FsIHJlc3BvbnNlIGNvdW50ICovXG4gICAgbnVtYmVyPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIHZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSk7XG5cbiAgY29uc3QgZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0ID0gKCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGlmIChwcm9wcy5lcnJvciAhPT0gJycpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXNzYWdlOiBwcm9wcy5lcnJvcixcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICBpZiAoIXByb3BzLnJlcXVpcmVkIHx8IGlzQ2hlY2tlZC52YWx1ZSkgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xuICAgIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5SRVFVSVJFRDtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQoKTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgbW9kZWxWYWx1ZSxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAobW9kZWxWYWx1ZS52YWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtY2hlY2tib3gnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVJdXCI+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5VU0VSX1NFTEVDVC5OT05FLFxuICAgICAgICBzaG93RXJyb3IgPyBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuRVJST1IgOiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIGRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICBpc0NoZWNrZWRcbiAgICAgICAgICAgID8gW3Nob3dFcnJvciA/IENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUiA6IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuQk9SREVSLkNPTE9SLkhJR0hdXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgc2hvd0Vycm9yXG4gICAgICAgICAgICAgICAgICA/IFtDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5FUlJPUiwgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SXVxuICAgICAgICAgICAgICAgICAgOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXCJcbiAgICAgICAgICA6aWNvbj1cImluZGV0ZXJtaW5hdGUgPyBJQ09OLlJFTU9WRSA6IElDT04uQ0hFQ0tcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgICAgdi1pZj1cImlzQ2hlY2tlZFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPnt7IGZvcm1hdHRlZExhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJudW1iZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgKHt7IGZvcm1hdE51bWJlcihudW1iZXIpIH19KVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICBpcy1lcnJvclxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveCB7XG4gICAgYWxpZ24tc2VsZjogc3RhcnQ7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIGxhYmVsOmhhcyhpbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgb3V0bGluZTogYXV0bztcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0Q2hlY2tib3gudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuY2hlY2tlZCB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1jaGVja2JveCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgZGlzYWJsZWQgPyBbJ2Rpc2FibGVkJywgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl0gOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0gsIENTUy5CRy5TRUNPTkRBUlldIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgIGlzQ2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGlucHV0IHJhZGlvIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0cmFkaW8tLWRvY3MpIGZvciBUaWRlSW5wdXRSYWRpb1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgaXMgaW50ZXJhY3RhYmxlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBhdHRyaWJ1dGUgKHRvIGJpbmQgaW5wdXQgbGFiZWwgdG8gaW5wdXQpICovXG4gICAgaW5wdXRJZD86IHN0cmluZztcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBOYW1lIGF0dHJpYnV0ZSAqL1xuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKiBQYXJlbnRoZXRpY2FsIHJlc3BvbnNlIGNvdW50ICovXG4gICAgbnVtYmVyPzogbnVtYmVyO1xuXG4gICAgLyoqIFZhbHVlIGF0dHJpYnV0ZSAqL1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gcHJvcHMudmFsdWUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGxhYmVsXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgIHByb3BzLmRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgIF1cIlxuICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICA6dmFsdWU9XCJ2YWx1ZVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgaXNDaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIj5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2xhYmVsPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG5cbiAgbGFiZWw6aGFzKGlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRSYWRpby52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5jaGVja2VkLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgICAgY2hlY2tlZC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFBob25lLCBmb3JtYXRQcmljZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHRlZCA9IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgRk9STUFUID0ge1xuICBOVU1CRVI6IGZvcm1hdE51bWJlcixcbiAgUEhPTkU6IGZvcm1hdFBob25lLFxuICBQUklDRTogZm9ybWF0UHJpY2UsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRk9STUFUX1JFR0VYID0ge1xuICBhbHBoYTogL15bYS16QS1aXSskL2csXG4gIGFscGhhTnVtYmVyT3JFbXB0eTogL14kfF5bYS16MC05XSskL2ksXG4gIGFscGhhU3BhY2U6IC9eW2EtekEtWiBdKyQvZyxcbiAgZW1haWw6XG4gICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoPyEoPzpbYS16QS1aMC05LV0rXFwuKSooPzx0bGQ+W2EtekEtWl17Mix9KVxcLlxcazx0bGQ+JCkoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWjAtOS1dK1xcLikrW2EtekEtWl17Mix9KSkkLyxcbiAgbnVtYmVyRm9ybWF0dGVkOiAvXiR8KD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG4gIHBob25lOiAvXig/OlxcZHszfS1cXGR7M30tXFxkezR9fFxcZHsxfS1cXGR7M30tXFxkezN9LVxcZHs0fSk/JC8sXG4gIHByaWNlOiAvKD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG4gIHppcDogL15cXGR7NX0kLyxcbn07XG4iLCJpbXBvcnQgeyBGT1JNQVRfUkVHRVggfSBmcm9tICdAL3R5cGVzL0Zvcm1hdHRlZCc7XG5pbXBvcnQgeyBjaGVja0Zvcm1hdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVE9SID0ge1xuICBBTFBIQV9OVU1CRVJfRU1QVFk6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYU51bWJlck9yRW1wdHkpLFxuICBBTFBIQV9TUEFDRTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhU3BhY2UpLFxuICBFTUFJTDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmVtYWlsLCAnRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIChlLmcuIG5hbWVAZXhhbXBsZS5jb20pJyksXG4gIE5VTUJFUjogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLm51bWJlckZvcm1hdHRlZCwgJ0VudGVyIGEgdmFsaWQgbnVtYmVyJyksXG4gIFBIT05FOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgucGhvbmUsICdFbnRlciBhIHZhbGlkIHBob25lIG51bWJlcicpLFxuICBaSVA6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC56aXAsICdFbnRlciBhIHZhbGlkIFppcCBjb2RlJyksXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRXJyb3IgPSBzdHJpbmcgfCBib29sZWFuO1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB2YWxpZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25MZW5ndGggPSB7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuXG5leHBvcnQgY29uc3QgRVJST1JfRElTUExBWSA9IHtcbiAgRUFHRVI6ICdlYWdlcicsXG4gIExBWlk6ICdsYXp5Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVycm9yRGlzcGxheSA9ICh0eXBlb2YgRVJST1JfRElTUExBWSlba2V5b2YgdHlwZW9mIEVSUk9SX0RJU1BMQVldO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBzZWxlY3QgaW5wdXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBmb3Jtcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0c2VsZWN0LS1kb2NzKSBmb3IgVGlkZUlucHV0U2VsZWN0XG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB1c2VJZCwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIFNlbGVjdCBpcyBpbnRlcmFjdGFibGUgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYW5kIHZhbGlkIHN0YXRlICovXG4gICAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGVycm9ycyBkaXNwbGF5IHByaW9yIHRvIGJsdXIgKi9cbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG5cbiAgICAvKiogTGFiZWwgY29udGVudCAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIGdyb3VwZWQgdmFsdWVzIGZvdW5kIGluc2lkZSBTZWxlY3QgKi9cbiAgICBvcHRncm91cHM/OiAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW10gfCByZWFkb25seSAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW107XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB1bmdyb3VwZWQgdmFsdWVzIGZvdW5kIGluc2lkZSBTZWxlY3QgKi9cbiAgICBvcHRpb25zPzogU2VsZWN0T3B0aW9uW10gfCByZWFkb25seSBTZWxlY3RPcHRpb25bXTtcblxuICAgIC8qKiBQcmVmaXggY29udGVudCAqL1xuICAgIHByZWZpeD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgU2VsZWN0IGlzIHJlcXVpcmVkICovXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIFN1ZmZpeCBjb250ZW50ICovXG4gICAgc3VmZml4Pzogc3RyaW5nO1xuXG4gICAgLyoqIEV4cGxhaW5lciB0ZXh0IGJlbmVhdGggaW5wdXQgKi9cbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG9wdGdyb3VwczogdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaW5wdXRJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHNlbGVjdEVsZW1lbnQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT0gbnVsbCB8fCBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgc2VsZWN0RWxlbWVudD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgc2hvd0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5XSURUSC5GVUxMLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLk1BUkdJTi5MRUZULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRiwgbGFiZWwgJiYgQ1NTLk1BUkdJTi5UT1AuT05FXVwiXG4gICAgICAgICAgICB2LWlmPVwicHJlZml4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICAgICAgICAgICAgICBDU1MuUEFERElORy5UT1AuT05FLFxuICAgICAgICAgICAgICBDU1MuUEFERElORy5SSUdIVC5UV08sXG4gICAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgICAgcHJlZml4ID8gQ1NTLlBBRERJTkcuTEVGVC5aRVJPIDogQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJzZWxlY3RFbGVtZW50XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIG9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwiYGdyb3VwLSR7KG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbH1gXCJcbiAgICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cImBvcHRpb24tJHsob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZX1gXCJcbiAgICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJtb2RlbFZhbHVlID09PSAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cIm1vZGVsVmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuUklHSFQsXG4gICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgQ1NTLk1BUkdJTi5SSUdIVC5UV08sXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBsYWJlbCAmJiBDU1MuTUFSR0lOLlRPUC5PTkUsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gOmNsYXNzPVwiQ1NTLlBBRERJTkcuUklHSFQuT05FXCI+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgcHJpY2VUb051bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgU3RyaW5nSW5wdXQgfSBmcm9tICdAL3R5cGVzL0Zvcm1EZXByZWNhdGVkJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbnR5cGUgUmFuZ2VEYXRhID0ge1xuICBtaW46IG51bWJlciB8IG51bGw7XG4gIG1heDogbnVtYmVyIHwgbnVsbDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUuJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHApID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IG5vRXJyb3I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVycm9yTWVzc2FnZSA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAodHlwZW9mIGVycm9yRnJvbVByb3BzID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21Qcm9wcy5sZW5ndGggPiAwKSByZXR1cm4gZXJyb3JGcm9tUHJvcHM7XG5cbiAgcmV0dXJuIHR5cGVvZiBlcnJvckZyb21SZWYgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVJlZi5sZW5ndGggPiAwID8gZXJyb3JGcm9tUmVmIDogZXJyb3JNZXNzYWdlRGVmYXVsdDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG5cbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNYXhSYW5nZUlzVmFsaWQgPSAoeyBtaW4gfTogUGljazxSYW5nZURhdGEsICdtaW4nPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01heDogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWF4ID0gIWlzTmFOKG5ld01heCkgPyBuZXdNYXggOiBudWxsO1xuICAgIGlmIChtaW4gJiYgbmV3TWF4KSB7XG4gICAgICBpZiAobmV3TWF4ID49IG1pbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBncmVhdGVyIHRoYW4gbWluYCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0T3B0aW9uc0Zyb21TdHJpbmdzID0gKHN0cmluZ3M6IHN0cmluZ1tdKSA9PlxuICBzdHJpbmdzLm1hcChcbiAgICAob3B0aW9uKSA9PlxuICAgICAgKHtcbiAgICAgICAgbGFiZWw6IG9wdGlvbixcbiAgICAgICAgdmFsdWU6IG9wdGlvbixcbiAgICAgIH0gYXMgU2VsZWN0T3B0aW9uKVxuICApO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gPSAoe1xuICBlcnJvcixcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3I6IFJlZjxWYWxpZGF0aW9uRXJyb3I+O1xuICBlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlPzogUmVmPHN0cmluZyB8IHVuZGVmaW5lZD47XG59KSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG5cbiAgZXJyb3IudmFsdWUgPSBlcnJvckZyb21Qcm9wcyA/IGVycm9yRnJvbVByb3BzIDogZmFsc2U7XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvcGVydHkodmFsdWU/LnZhbHVlIHx8ICcnLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWU/LnZhbHVlIHx8ICcnLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGxlbmd0aFZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7XG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWx1ZSxcbn06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7bWlubGVuZ3RofSBhbmQgJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBtb3JlIHRoYW4gJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBsZXNzIHRoYW4gJHttaW5sZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0U2VsZWN0LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGREZXByZWNhdGVkJztcbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBTZWxlY3RGaWVsZCB7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcmVxdWlyZWQgPSByZWYocHJvcHMucmVxdWlyZWQpO1xuICBjb25zdCB2YWx1ZSA9IHJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIGlucHV0Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBwcm9wcy5vcHRncm91cHNcIj5cbiAgICAgICAgICAgIDxvcHRncm91cFxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L29wdGdyb3VwPlxuXG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikubGFiZWwgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG5cbmV4cG9ydCBjb25zdCBJTlBVVF9NT0RFID0ge1xuICBERUNJTUFMOiAnZGVjaW1hbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBOVU1FUklDOiAnbnVtZXJpYycsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVVJMOiAndXJsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIElucHV0TW9kZSA9ICh0eXBlb2YgSU5QVVRfTU9ERSlba2V5b2YgdHlwZW9mIElOUFVUX01PREVdO1xuIiwiaW1wb3J0IHsgSU5QVVRfTU9ERSwgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0TW9kZSwgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuZXhwb3J0IGNvbnN0IGdldFRleHRJbnB1dE1vZGUgPSAodHlwZTogVGV4dElucHV0VHlwZSwgaW5wdXRtb2RlPzogSW5wdXRNb2RlKTogSW5wdXRNb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlucHV0bW9kZSkgcmV0dXJuIGlucHV0bW9kZTtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5URUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5URUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuU0VBUkNIOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuU0VBUkNIO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLk5VTUJFUjpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLk5VTUVSSUM7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuRU1BSUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5FTUFJTDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5VUkw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5VUkw7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdGV4dCBpbnB1dCBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGZvcm1zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5wdXR0ZXh0LS1kb2NzKSBmb3IgVGlkZUlucHV0VGV4dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgRVJST1JfRElTUExBWSB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG4gIGltcG9ydCB7IGdldFRleHRJbnB1dE1vZGUgfSBmcm9tICdAL3V0aWxpdGllcy9mb3Jtcyc7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxULCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBJbnB1dE1vZGUsIFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBicm93c2VyIGF0dGVtcHRzIHRvIGF1dG9jb21wbGV0ZSAqL1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIGludGVyYWN0YWJsZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBhbmQgdmFsaWQgc3RhdGUgKi9cbiAgICBlcnJvcj86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgZXJyb3JzIGRpc3BsYXkgcHJpb3IgdG8gYmx1ciAqL1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBjbGVhci9yZXNldCBidXR0b24gaXMgc2hvd24gZm9yIHRoZSBpbnB1dCAqL1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcblxuICAgIC8qKiBJY29uIGF0IGxlZnQgb2YgaW5wdXQgdmFsdWUgKi9cbiAgICBpY29uTGVhZGluZz86IEljb247XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBpbnB1dCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIGlucHV0IGVkaXRpbmcgZmVhdHVyZXMgb2ZmZXJlZCBieSB0aGUgYnJvd3NlciAqL1xuICAgIGlucHV0bW9kZT86IElucHV0TW9kZTtcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbGllcyBhIG1heGltdW0gY2hhcmFjdGVyIGNvdW50IHRvIHRoZSBpbnB1dCAqL1xuICAgIG1heGxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKiBBcHBsaWVzIGEgbWluaW11bSBjaGFyYWN0ZXIgY291bnQgdG8gdGhlIGlucHV0ICovXG4gICAgbWlubGVuZ3RoPzogbnVtYmVyO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBJbnB1dCBwcmVmaXggKi9cbiAgICBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIHJlcXVpcmVkICovXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIElucHV0IHN1ZmZpeCAoaS5lLiB1bml0cykgKi9cbiAgICBzdWZmaXg/OiBzdHJpbmc7XG5cbiAgICAvKiogRXhwbGFpbmVyIHRleHQgYmVuZWF0aCBpbnB1dCAqL1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgdGV4dCBmb3JtYXR0aW5nIGFwcGxpZWQgdG8gaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdHlwZShzKSBvZiB2YWx1ZXMgZXhwZWN0ZWQgYnkgdGhlIGlucHV0ICovXG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBtZXRob2QocykgdXNlZCB0byBjaGVjayBmb3IgdmFsaWQgaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgaW5wdXRtb2RlOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpbnB1dEVsZW1lbnQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpbnB1dE1vZGVBdHRyaWJ1dGUgPSBjb21wdXRlZDxJbnB1dE1vZGUgfCB1bmRlZmluZWQ+KCgpID0+IGdldFRleHRJbnB1dE1vZGUocHJvcHMudHlwZSwgcHJvcHMuaW5wdXRtb2RlKSk7XG4gIGNvbnN0IGlucHV0VHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PSBudWxsIHx8IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgbW9kZWxWYWx1ZS52YWx1ZSAmJiBwcm9wcy50eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcbiAgKTtcbiAgY29uc3Qgc2hvdWxkU2hvd1Bhc3N3b3JkQnV0dG9uID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgbW9kZWxWYWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gaW5wdXRFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIFttb2RlbFZhbHVlLCAoKSA9PiBwcm9wcy50cmFuc2Zvcm1WYWx1ZV0sXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKCFwcm9wcy50cmFuc2Zvcm1WYWx1ZSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBkaWdpdHMgPSBtb2RlbFZhbHVlLnZhbHVlPy5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG4gICAgICBtb2RlbFZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBzaG93RXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWZpZWxkJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlRmllbGRDbGlja1wiXG4gICAgICBAbW91c2Vkb3duPVwicHJldmVudElucHV0Rm9jdXNMb3NzT25Nb3VzZWRvd25cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1sYWJlbCcsXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDppbnB1dG1vZGU9XCJpbnB1dE1vZGVBdHRyaWJ1dGVcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dEVsZW1lbnRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJpbnB1dFR5cGVcIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJzdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dDbGVhckJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dQYXNzd29yZEJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFRleHQudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybURlcHJlY2F0ZWQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdHJhbnNmb3JtVmFsdWU/OiBGb3JtVmFsdWVUcmFuc2Zvcm1lcjtcbiAgICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzQ2xlYXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiB2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuICBjb25zdCBpbnB1dFR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHVwZGF0ZVZhbHVlLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1maWVsZCcsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWxhYmVsJyxcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIEBpbnB1dD1cImhhbmRsZUlucHV0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJoYXNDbGVhciAmJiB0eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJ0eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRleHRhcmVhIGlucHV0IGludGVuZGVkIHRvIGJlIHVzZWQgaW4gZm9ybXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dHRleHRhcmVhLS1kb2NzKSBmb3IgVGlkZUlucHV0VGV4dGFyZWFcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYW5kIHZhbGlkIHN0YXRlICovXG4gICAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGVycm9ycyBkaXNwbGF5IHByaW9yIHRvIGJsdXIgKi9cbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBpbnB1dCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBBcHBsaWVzIGEgbWF4aW11bSBjaGFyYWN0ZXIgY291bnQgdG8gdGhlIGlucHV0ICovXG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEFwcGxpZXMgYSBtaW5pbXVtIGNoYXJhY3RlciBjb3VudCB0byB0aGUgaW5wdXQgKi9cbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogTmFtZSBhdHRyaWJ1dGUgKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIGlucHV0ICovXG4gICAgcm93cz86IG51bWJlcjtcblxuICAgIC8qKiBFeHBsYWluZXIgdGV4dCBiZW5lYXRoIGlucHV0ICovXG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBtZXRob2QocykgdXNlZCB0byBjaGVjayBmb3IgdmFsaWQgaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCB0ZXh0YXJlYUVsZW1lbnQgPSByZWY8SFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIHRleHRhcmVhRWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gdGV4dGFyZWFFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBzaG93RXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUZpZWxkQ2xpY2tcIlxuICAgICAgQG1vdXNlZG93bj1cInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCcsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuUEFERElORy5YLk9ORSwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJ0ZXh0YXJlYUVsZW1lbnRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicm93c1wiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0YXJlYS52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgaGFzRXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwnLFxuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgZ2VuZXJpYyBtZW51IGl0ZW0gaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBuYXZpZ2F0aW9uIG1lbnVzIG9yIGRyb3Bkb3ducy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZW1lbnVpdGVtLS1kb2NzKSBmb3IgVGlkZU1lbnVJdGVtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBUaGUgZWxlbWVudCB0byByZW5kZXIgdGhlIHJvb3QgZWxlbWVudCBhcy4gKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBUaGUgaHJlZiBhdHRyaWJ1dGUgdG8gYXBwbHkgd2hlbiB0aGUgZWxlbWVudCBpcyBhIGxpbmsuICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRvIG9wZW4gbGluayBpbiBhIG5ldyB0YWIuICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIEljb24gdG8gc2hvdyBhZnRlciB0aGUgbGFiZWwuICovXG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcblxuICAgIC8qKiBUaGUgbGFiZWwgdG8gYmUgZGlzcGxheWVkLiAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLW1lbnUtaXRlbScsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuWkVSTyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICBdXCJcbiAgICA6aHJlZj1cImhyZWZcIlxuICAgIDp0YXJnZXQ9XCJpc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwiZWxlbWVudFwiXG4gID5cbiAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICA6aWNvbj1cImljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgdi1pZj1cImljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tZW51LWl0ZW0ge1xuICAgIGhlaWdodDogNDBweDtcbiAgfVxuXG4gIC50aWRlLW1lbnUtaXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG48L3N0eWxlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVCA9IHtcbiAgU006ICdzbScsXG4gIE1EOiAnbWQnLFxuICBMRzogJ2xnJyxcbiAgWEw6ICd4bCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTUVESUEgPSB7XG4gIFNNOiA3NjgsXG4gIE1EOiA5OTIsXG4gIExHOiAxMjMyLFxuICBYTDogMTkyMCxcbn07XG5cbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIEJSRUFLUE9JTlQpW2tleW9mIHR5cGVvZiBCUkVBS1BPSU5UXTtcbmV4cG9ydCB0eXBlIE1lZGlhID0gKHR5cGVvZiBNRURJQSlba2V5b2YgdHlwZW9mIE1FRElBXTtcbiIsImltcG9ydCB7IG5leHRUaWNrIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBEaXJlY3RseSBtb2RpZmllcyB0aGUgYDxib2R5PmAgZWxlbWVudCB0byBhcHBseSBvciByZW1vdmUgc2Nyb2xsIGxvY2suXG4gKiBXaGVuIGBmYWxzZWAgaXMgcHJvdmlkZWQsIGl0IG9ubHkgdW5sb2NrcyBzY3JvbGwgaWYgdGhlcmUgYXJlIG5vIG9wZW5cbiAqIEhUTUwgZGlhbG9nIGVsZW1lbnRzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0U2Nyb2xsTG9jayA9IGFzeW5jIChpc0xvY2tlZDogYm9vbGVhbikgPT4ge1xuICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAvLyBjb25zdCBCT0RZX0xPQ0tfQ0xBU1MgPSAnYm9keS1zY3JvbGwtbG9jayc7XG5cbiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG5cbiAgaWYgKGlzTG9ja2VkKSB7XG4gICAgaWYgKCFib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kpIHtcbiAgICAgIGNvbnN0IHNjcm9sbFkgPSB3aW5kb3cuc2Nyb2xsWTtcblxuICAgICAgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZID0gc2Nyb2xsWS50b1N0cmluZygpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScsIGAke3Njcm9sbFl9cHhgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ2luc2V0JywgJzAnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCBgY2FsYygwcHggLSB2YXIoLS1zYXZlZC1zY3JvbGwteSwgMHB4KSlgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCAnc2Nyb2xsJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdmaXhlZCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfTE9DS19DTEFTUyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2dbb3Blbl0nKSkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxZID0gcGFyc2VJbnQoYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZIHx8ICcwJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9MT0NLX0NMQVNTKTtcblxuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnaW5zZXQnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ21hcmdpbi10b3AnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ292ZXJmbG93LXknKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3Bvc2l0aW9uJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15Jyk7XG5cbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnYXV0bycsXG4gICAgICAgIHRvcDogc2F2ZWRTY3JvbGxZLFxuICAgICAgfSk7XG5cbiAgICAgIGRlbGV0ZSBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1k7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgVE9QX0xBWUVSX0lEID0gJ3RpZGUtdG9wLWxheWVyJztcblxuZXhwb3J0IGNvbnN0IGluaXRGYXV4VG9wTGF5ZXIgPSAoKSA9PiB7XG4gIGxldCB0b3BMYXllciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFRPUF9MQVlFUl9JRCk7XG4gIGlmICghdG9wTGF5ZXIpIHtcbiAgICB0b3BMYXllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRvcExheWVyLmlkID0gVE9QX0xBWUVSX0lEO1xuICAgIHRvcExheWVyLnNldEF0dHJpYnV0ZSgnZGF0YS1jc3Mtc2NvcGUnLCAnJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3BMYXllcik7XG4gIH1cbiAgdG9wTGF5ZXIuc3R5bGUuaXNvbGF0aW9uID0gJ2lzb2xhdGUnO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgbW9kYWwgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9yIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVtb2RhbC0tZG9jcykgZm9yIFRpZGVNb2RhbFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgbmV4dFRpY2ssIG9uQmVmb3JlTW91bnQsIG9uQmVmb3JlVW5tb3VudCwgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJSRUFLUE9JTlQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGJlZm9yZSB0aGUgbW9kYWwgY2xvc2VzLlxuICAgICAqXG4gICAgICogUmV0dXJuIGBmYWxzZWAgdG8gY2FuY2VsIHRoZSBjbG9zZSBldmVudC5cbiAgICAgKi9cbiAgICBiZWZvcmVDbG9zZT86ICgpID0+IHZvaWQgfCBib29sZWFuIHwgUHJvbWlzZTx2b2lkIHwgYm9vbGVhbj47XG4gICAgLyoqIENvbnRyb2xzIGRpc3BsYXkgb2YgdGhlIGJhY2sgYnV0dG9uLiAqL1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gICAgLyoqIENvbnRyb2xzIHdoZXRoZXIgdGhlIG1vZGFsIGNhbiBiZSBkaXNtaXNzZWQgd2l0aCBhIGNsb3NlIGJ1dHRvbiBvciBvdGhlciBnZXN0dXJlcy4gKi9cbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgICAvKiogVGhlIHRpdGxlIHRvIGRpc3BsYXkgaW4gdGhlIG1vZGFsJ3MgaGVhZGVyLiAqL1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIC8qKiBDdXN0b20gb3ZlcnJpZGUgdG8gdGhlIG1vZGFsJ3Mgd2lkdGggY29uc3RyYWludC4gSW5jbHVkZSB1bml0cy4gKi9cbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJlZm9yZUNsb3NlOiB1bmRlZmluZWQsXG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kYWxDb250ZW50OiBSZWY8SFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG4gIGNvbnN0IG1vZGFsRGlhbG9nOiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uc2hvd01vZGFsKCk7XG4gICAgc2V0U2Nyb2xsTG9jayh0cnVlKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LmNsb3NlKCk7XG4gICAgc2V0U2Nyb2xsTG9jayhmYWxzZSk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQ29udGVudFRvVG9wID0gKCkgPT4ge1xuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmICghbW9kYWxDb250ZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBtb2RhbENvbnRlbnQudmFsdWUuc2Nyb2xsVG9wID0gMDtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBjbG9zZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAocHJvcHMuYmVmb3JlQ2xvc2UpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3BzLmJlZm9yZUNsb3NlKCk7XG4gICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkgcmV0dXJuO1xuICAgIH1cblxuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5dXAgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGNsb3NlKCk7XG4gIH07XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFtb2RhbERpYWxvZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICBzY3JvbGxDb250ZW50VG9Ub3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJtb2RhbERpYWxvZ1wiXG4gICAgICA6c3R5bGU9XCJ7ICctLW1vZGFsLXdpZHRoJzogd2lkdGggfVwiXG4gICAgICBAY2FuY2VsLnByZXZlbnRcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAa2V5dXAuZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5dXBcIlxuICAgICAgY2xvc2VkYnk9XCJub25lXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1ib2R5JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgICAgICAgQ1NTLndpdGhCcmVha3BvaW50KFtDU1MuU0hBRE9XLkJPVFRPTV0sIEJSRUFLUE9JTlQuU00pLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWhlYWRlcicsXG4gICAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuWl9JTkRFWC5PTkUsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgICAgZGF0YS10ZXN0PVwidGlkZS1tb2RhbC1iYWNrXCJcbiAgICAgICAgICAgIHRpdGxlPVwiQmFja1wiXG4gICAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgICAgdi10ZXh0PVwidGl0bGVcIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImNsb3NlXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdD1cInRpZGUtbW9kYWwtY2xvc2VcIlxuICAgICAgICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5UV08sXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICByZWY9XCJtb2RhbENvbnRlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGZvb3RlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWZvb3RlcicsXG4gICAgICAgICAgICBDU1MuQVhJUzEuRU5ELFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5HQVAuVFdPLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwiJHNsb3RzLmZvb3RlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCIgLz5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLW1vZGFsIHtcbiAgICAtLW1vZGFsLXBhZGRpbmcteDogMjBweDtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cblxuICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICB9XG5cbiAgLnRpZGUtbW9kYWw6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuXG4gIEBzdGFydGluZy1zdHlsZSB7XG4gICAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG5cbiAgICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG5cbiAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgd2lkdGg6IHZhcigtLW1vZGFsLXdpZHRoLCA1NzZweCk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsLWhlYWRlcixcbiAgLnRpZGUtbW9kYWwtZm9vdGVyIHtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsLWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tbW9kYWwtcGFkZGluZy14KSB2YXIoLS10aWRlLXNhZmUtZnIpIHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gICAgY29udGFpbjogbGF5b3V0O1xuICB9XG5cbiAgOndoZXJlKC50aWRlLW1vZGFsLWNvbnRlbnQpOmRlZXAoPiA6d2hlcmUoKikpIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgfVxuXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLW1vZGFsIHtcbiAgICAgIC0tbW9kYWwtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMik7XG4gICAgfVxuXG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiA4NSU7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBwYWdpbmF0aW9uIGNvbXBvbmVudCBmb3IgbmF2aWdhdGluZyB0aHJvdWdoIHBhZ2VzIG9mIGNvbnRlbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVwYWdpbmF0aW9uLS1kb2NzKSBmb3IgVGlkZVBhZ2luYXRpb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIFRvdGFsIG51bWJlciBvZiBwYWdlcyBhdmFpbGFibGUgKi9cbiAgICBwYWdlQ291bnQ6IG51bWJlcjtcbiAgICAvKiogTnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlLiBXaGVuIHByb3ZpZGVkLCBhIHJlc3VsdHMgc3VtbWFyeSBpcyBzaG93biBiZWxvdyB0aGUgcGFnaW5hdGlvbiBjb250cm9scy4gKi9cbiAgICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgICAvKiogVG90YWwgbnVtYmVyIG9mIHJlc3VsdHMgKi9cbiAgICB0b3RhbFJlc3VsdHM6IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIGNvbnN0IGN1cnJlbnRJbmRleCA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLnBhZ2VDb3VudCA8IDEpIHJldHVybjtcblxuICAgIGNvbnN0IGNsYW1wZWQgPSBNYXRoLm1pbihNYXRoLm1heChjdXJyZW50SW5kZXgudmFsdWUsIDEpLCBwcm9wcy5wYWdlQ291bnQpO1xuICAgIGlmIChjbGFtcGVkICE9PSBjdXJyZW50SW5kZXgudmFsdWUpIGN1cnJlbnRJbmRleC52YWx1ZSA9IGNsYW1wZWQ7XG4gIH0pO1xuXG4gIGNvbnN0IHJlc3VsdFN0YXJ0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy5wYWdlU2l6ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy50b3RhbFJlc3VsdHMgPT09IDApIHJldHVybiBmb3JtYXROdW1iZXIoMCk7XG4gICAgcmV0dXJuIGZvcm1hdE51bWJlcigoY3VycmVudEluZGV4LnZhbHVlIC0gMSkgKiBwcm9wcy5wYWdlU2l6ZSArIDEpO1xuICB9KTtcblxuICBjb25zdCByZXN1bHRFbmQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLnBhZ2VTaXplID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKHByb3BzLnRvdGFsUmVzdWx0cyA9PT0gMCkgcmV0dXJuIGZvcm1hdE51bWJlcigwKTtcbiAgICByZXR1cm4gZm9ybWF0TnVtYmVyKE1hdGgubWluKGN1cnJlbnRJbmRleC52YWx1ZSAqIHByb3BzLnBhZ2VTaXplLCBwcm9wcy50b3RhbFJlc3VsdHMpKTtcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlUHJldmlvdXNDbGljayA9ICgpID0+IHtcbiAgICBpZiAoY3VycmVudEluZGV4LnZhbHVlID4gMSkge1xuICAgICAgY3VycmVudEluZGV4LnZhbHVlLS07XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU5leHRDbGljayA9ICgpID0+IHtcbiAgICBpZiAoY3VycmVudEluZGV4LnZhbHVlIDwgcHJvcHMucGFnZUNvdW50KSB7XG4gICAgICBjdXJyZW50SW5kZXgudmFsdWUrKztcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvbiA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRl1cIj5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgOmRpc2FibGVkPVwiY3VycmVudEluZGV4IDw9IDFcIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZVByZXZpb3VzQ2xpY2tcIlxuICAgICAgLz5cblxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQlVUVE9OXzEsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAge3sgZm9ybWF0TnVtYmVyKGN1cnJlbnRJbmRleCkgfX0gLyB7eyBmb3JtYXROdW1iZXIocGFnZUNvdW50KSB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgOmRpc2FibGVkPVwiY3VycmVudEluZGV4ID49IHBhZ2VDb3VudFwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZU5leHRDbGlja1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPHBcbiAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICB2LWlmPVwicHJvcHMucGFnZVNpemUgIT09IHVuZGVmaW5lZFwiXG4gICAgPlxuICAgICAge3sgcmVzdWx0U3RhcnQgfX3igJN7eyByZXN1bHRFbmQgfX0gb2Yge3sgZm9ybWF0TnVtYmVyKHRvdGFsUmVzdWx0cykgfX0gcmVzdWx0c1xuICAgIDwvcD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cbiIsIi8qKlxuICogQ3VzdG9tIHBvc2l0aW9uaW5nIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3ZpcnR1YWwtZWxlbWVudHNcbiAqL1xuXG5jb25zdCBzaWRlcyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5jb25zdCBhbGlnbm1lbnRzID0gWydzdGFydCcsICdlbmQnXTtcbmNvbnN0IHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovc2lkZXMucmVkdWNlKChhY2MsIHNpZGUpID0+IGFjYy5jb25jYXQoc2lkZSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1swXSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1sxXSksIFtdKTtcbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5jb25zdCBmbG9vciA9IE1hdGguZmxvb3I7XG5jb25zdCBjcmVhdGVDb29yZHMgPSB2ID0+ICh7XG4gIHg6IHYsXG4gIHk6IHZcbn0pO1xuY29uc3Qgb3Bwb3NpdGVTaWRlTWFwID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuY29uc3Qgb3Bwb3NpdGVBbGlnbm1lbnRNYXAgPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZnVuY3Rpb24gY2xhbXAoc3RhcnQsIHZhbHVlLCBlbmQpIHtcbiAgcmV0dXJuIG1heChzdGFydCwgbWluKHZhbHVlLCBlbmQpKTtcbn1cbmZ1bmN0aW9uIGV2YWx1YXRlKHZhbHVlLCBwYXJhbSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocGFyYW0pIDogdmFsdWU7XG59XG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBeGlzTGVuZ3RoKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbn1cbmZ1bmN0aW9uIGdldFNpZGVBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKSA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBnZXRPcHBvc2l0ZUF4aXMoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSk7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGxldCBtYWluQWxpZ25tZW50U2lkZSA9IGFsaWdubWVudEF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiBbbWFpbkFsaWdubWVudFNpZGUsIGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKV07XG59XG5mdW5jdGlvbiBnZXRFeHBhbmRlZFBsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGNvbnN0IG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBhbGlnbm1lbnQgPT4gb3Bwb3NpdGVBbGlnbm1lbnRNYXBbYWxpZ25tZW50XSk7XG59XG5mdW5jdGlvbiBnZXRTaWRlTGlzdChzaWRlLCBpc1N0YXJ0LCBydGwpIHtcbiAgY29uc3QgbHIgPSBbJ2xlZnQnLCAncmlnaHQnXTtcbiAgY29uc3QgcmwgPSBbJ3JpZ2h0JywgJ2xlZnQnXTtcbiAgY29uc3QgdGIgPSBbJ3RvcCcsICdib3R0b20nXTtcbiAgY29uc3QgYnQgPSBbJ2JvdHRvbScsICd0b3AnXTtcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgaWYgKHJ0bCkgcmV0dXJuIGlzU3RhcnQgPyBybCA6IGxyO1xuICAgICAgcmV0dXJuIGlzU3RhcnQgPyBsciA6IHJsO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gdGIgOiBidDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKHBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZGlyZWN0aW9uLCBydGwpIHtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGxldCBsaXN0ID0gZ2V0U2lkZUxpc3QoZ2V0U2lkZShwbGFjZW1lbnQpLCBkaXJlY3Rpb24gPT09ICdzdGFydCcsIHJ0bCk7XG4gIGlmIChhbGlnbm1lbnQpIHtcbiAgICBsaXN0ID0gbGlzdC5tYXAoc2lkZSA9PiBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnQpO1xuICAgIGlmIChmbGlwQWxpZ25tZW50KSB7XG4gICAgICBsaXN0ID0gbGlzdC5jb25jYXQobGlzdC5tYXAoZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuZnVuY3Rpb24gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIC4uLnBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gcmVjdDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIGxlZnQ6IHgsXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmV4cG9ydCB7IGFsaWdubWVudHMsIGNsYW1wLCBjcmVhdGVDb29yZHMsIGV2YWx1YXRlLCBleHBhbmRQYWRkaW5nT2JqZWN0LCBmbG9vciwgZ2V0QWxpZ25tZW50LCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0QXhpc0xlbmd0aCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBeGlzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0UGFkZGluZ09iamVjdCwgZ2V0U2lkZSwgZ2V0U2lkZUF4aXMsIG1heCwgbWluLCBwbGFjZW1lbnRzLCByZWN0VG9DbGllbnRSZWN0LCByb3VuZCwgc2lkZXMgfTtcbiIsImltcG9ydCB7IGdldFNpZGVBeGlzLCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBeGlzTGVuZ3RoLCBnZXRTaWRlLCBnZXRBbGlnbm1lbnQsIGV2YWx1YXRlLCBnZXRQYWRkaW5nT2JqZWN0LCByZWN0VG9DbGllbnRSZWN0LCBtaW4sIGNsYW1wLCBwbGFjZW1lbnRzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlUGxhY2VtZW50LCBnZXRFeHBhbmRlZFBsYWNlbWVudHMsIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMsIHNpZGVzLCBtYXgsIGdldE9wcG9zaXRlQXhpcyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5leHBvcnQgeyByZWN0VG9DbGllbnRSZWN0IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcblxuZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoX3JlZiwgcGxhY2VtZW50LCBydGwpIHtcbiAgbGV0IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHNpZGVBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25MZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gc2lkZUF4aXMgPT09ICd5JztcbiAgY29uc3QgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGZsb2F0aW5nLndpZHRoIC8gMjtcbiAgY29uc3QgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBmbG9hdGluZy5oZWlnaHQgLyAyO1xuICBjb25zdCBjb21tb25BbGlnbiA9IHJlZmVyZW5jZVthbGlnbkxlbmd0aF0gLyAyIC0gZmxvYXRpbmdbYWxpZ25MZW5ndGhdIC8gMjtcbiAgbGV0IGNvb3JkcztcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBmbG9hdGluZy5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZmxvYXRpbmcud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cbiAgc3dpdGNoIChnZXRBbGlnbm1lbnQocGxhY2VtZW50KSkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSAtPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmQnOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdICs9IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBjb29yZHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICpcbiAqIFRoaXMgZXhwb3J0IGRvZXMgbm90IGhhdmUgYW55IGBwbGF0Zm9ybWAgaW50ZXJmYWNlIGxvZ2ljLiBZb3Ugd2lsbCBuZWVkIHRvXG4gKiB3cml0ZSBvbmUgZm9yIHRoZSBwbGF0Zm9ybSB5b3UgYXJlIHVzaW5nIEZsb2F0aW5nIFVJIHdpdGguXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpXTtcbiAgICBjb25zdCB7XG4gICAgICB4OiBuZXh0WCxcbiAgICAgIHk6IG5leHRZLFxuICAgICAgZGF0YSxcbiAgICAgIHJlc2V0XG4gICAgfSA9IGF3YWl0IGZuKHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgaW5pdGlhbFBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICBzdHJhdGVneSxcbiAgICBtaWRkbGV3YXJlRGF0YVxuICB9O1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIHZhciBfYXdhaXQkcGxhdGZvcm0kaXNFbGU7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGF0Zm9ybSxcbiAgICByZWN0cyxcbiAgICBlbGVtZW50cyxcbiAgICBzdHJhdGVneVxuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHtcbiAgICBib3VuZGFyeSA9ICdjbGlwcGluZ0FuY2VzdG9ycycsXG4gICAgcm9vdEJvdW5kYXJ5ID0gJ3ZpZXdwb3J0JyxcbiAgICBlbGVtZW50Q29udGV4dCA9ICdmbG9hdGluZycsXG4gICAgYWx0Qm91bmRhcnkgPSBmYWxzZSxcbiAgICBwYWRkaW5nID0gMFxuICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgY29uc3QgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8gJ3JlZmVyZW5jZScgOiAnZmxvYXRpbmcnO1xuICBjb25zdCBlbGVtZW50ID0gZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICBjb25zdCBjbGlwcGluZ0NsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KGF3YWl0IHBsYXRmb3JtLmdldENsaXBwaW5nUmVjdCh7XG4gICAgZWxlbWVudDogKChfYXdhaXQkcGxhdGZvcm0kaXNFbGUgPSBhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoZWxlbWVudCkpKSAhPSBudWxsID8gX2F3YWl0JHBsYXRmb3JtJGlzRWxlIDogdHJ1ZSkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCAoYXdhaXQgKHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnRzLmZsb2F0aW5nKSkpLFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9KSk7XG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3RzLmZsb2F0aW5nLndpZHRoLFxuICAgIGhlaWdodDogcmVjdHMuZmxvYXRpbmcuaGVpZ2h0XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBvZmZzZXRTY2FsZSA9IChhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkpID8gKGF3YWl0IChwbGF0Zm9ybS5nZXRTY2FsZSA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkpIHx8IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3QgZWxlbWVudENsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBvcHRpb25zID0+ICh7XG4gIG5hbWU6ICdhcnJvdycsXG4gIG9wdGlvbnMsXG4gIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgY29uc3Qge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHMsXG4gICAgICBtaWRkbGV3YXJlRGF0YVxuICAgIH0gPSBzdGF0ZTtcbiAgICAvLyBTaW5jZSBgZWxlbWVudGAgaXMgcmVxdWlyZWQsIHdlIGRvbid0IFBhcnRpYWw8PiB0aGUgdHlwZS5cbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgeCxcbiAgICAgIHlcbiAgICB9O1xuICAgIGNvbnN0IGF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChheGlzKTtcbiAgICBjb25zdCBhcnJvd0RpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgIGNvbnN0IGlzWUF4aXMgPSBheGlzID09PSAneSc7XG4gICAgY29uc3QgbWluUHJvcCA9IGlzWUF4aXMgPyAndG9wJyA6ICdsZWZ0JztcbiAgICBjb25zdCBtYXhQcm9wID0gaXNZQXhpcyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICBjb25zdCBjbGllbnRQcm9wID0gaXNZQXhpcyA/ICdjbGllbnRIZWlnaHQnIDogJ2NsaWVudFdpZHRoJztcbiAgICBjb25zdCBlbmREaWZmID0gcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gKyByZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBjb29yZHNbYXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIGNvbnN0IHN0YXJ0RGlmZiA9IGNvb3Jkc1theGlzXSAtIHJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgICBjb25zdCBhcnJvd09mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50KSk7XG4gICAgbGV0IGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGFycm93T2Zmc2V0UGFyZW50W2NsaWVudFByb3BdIDogMDtcblxuICAgIC8vIERPTSBwbGF0Zm9ybSBjYW4gcmV0dXJuIGB3aW5kb3dgIGFzIHRoZSBgb2Zmc2V0UGFyZW50YC5cbiAgICBpZiAoIWNsaWVudFNpemUgfHwgIShhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoYXJyb3dPZmZzZXRQYXJlbnQpKSkpIHtcbiAgICAgIGNsaWVudFNpemUgPSBlbGVtZW50cy5mbG9hdGluZ1tjbGllbnRQcm9wXSB8fCByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIH1cbiAgICBjb25zdCBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjtcblxuICAgIC8vIElmIHRoZSBwYWRkaW5nIGlzIGxhcmdlIGVub3VnaCB0aGF0IGl0IGNhdXNlcyB0aGUgYXJyb3cgdG8gbm8gbG9uZ2VyIGJlXG4gICAgLy8gY2VudGVyZWQsIG1vZGlmeSB0aGUgcGFkZGluZyBzbyB0aGF0IGl0IGlzIGNlbnRlcmVkLlxuICAgIGNvbnN0IGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiAtIDE7XG4gICAgY29uc3QgbWluUGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21pblByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcbiAgICBjb25zdCBtYXhQYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWF4UHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBmbG9hdGluZyBlbGVtZW50IGlmIHRoZSBjZW50ZXJcbiAgICAvLyBwb2ludCBpcyBvdXRzaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50J3MgYm91bmRzLlxuICAgIGNvbnN0IG1pbiQxID0gbWluUGFkZGluZztcbiAgICBjb25zdCBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLSBtYXhQYWRkaW5nO1xuICAgIGNvbnN0IGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gICAgY29uc3Qgb2Zmc2V0ID0gY2xhbXAobWluJDEsIGNlbnRlciwgbWF4KTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGwgZW5vdWdoIHRoYXQgdGhlIGFycm93J3MgcGFkZGluZyBjYXVzZXMgaXQgdG9cbiAgICAvLyB0byBwb2ludCB0byBub3RoaW5nIGZvciBhbiBhbGlnbmVkIHBsYWNlbWVudCwgYWRqdXN0IHRoZSBvZmZzZXQgb2YgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCBpdHNlbGYuIFRvIGVuc3VyZSBgc2hpZnQoKWAgY29udGludWVzIHRvIHRha2UgYWN0aW9uLFxuICAgIC8vIGEgc2luZ2xlIHJlc2V0IGlzIHBlcmZvcm1lZCB3aGVuIHRoaXMgaXMgdHJ1ZS5cbiAgICBjb25zdCBzaG91bGRBZGRPZmZzZXQgPSAhbWlkZGxld2FyZURhdGEuYXJyb3cgJiYgZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT09IG9mZnNldCAmJiByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSAoY2VudGVyIDwgbWluJDEgPyBtaW5QYWRkaW5nIDogbWF4UGFkZGluZykgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgPCAwO1xuICAgIGNvbnN0IGFsaWdubWVudE9mZnNldCA9IHNob3VsZEFkZE9mZnNldCA/IGNlbnRlciA8IG1pbiQxID8gY2VudGVyIC0gbWluJDEgOiBjZW50ZXIgLSBtYXggOiAwO1xuICAgIHJldHVybiB7XG4gICAgICBbYXhpc106IGNvb3Jkc1theGlzXSArIGFsaWdubWVudE9mZnNldCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgW2F4aXNdOiBvZmZzZXQsXG4gICAgICAgIGNlbnRlck9mZnNldDogY2VudGVyIC0gb2Zmc2V0IC0gYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgICAuLi4oc2hvdWxkQWRkT2Zmc2V0ICYmIHtcbiAgICAgICAgICBhbGlnbm1lbnRPZmZzZXRcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICByZXNldDogc2hvdWxkQWRkT2Zmc2V0XG4gICAgfTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50LCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykge1xuICBjb25zdCBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50ID0gYWxpZ25tZW50ID8gWy4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCksIC4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT09IGFsaWdubWVudCldIDogYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRTaWRlKHBsYWNlbWVudCkgPT09IHBsYWNlbWVudCk7XG4gIHJldHVybiBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50LmZpbHRlcihwbGFjZW1lbnQgPT4ge1xuICAgIGlmIChhbGlnbm1lbnQpIHtcbiAgICAgIHJldHVybiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50IHx8IChhdXRvQWxpZ25tZW50ID8gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSAhPT0gcGxhY2VtZW50IDogZmFsc2UpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG59XG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXV0b1BsYWNlbWVudCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhdXRvUCwgX21pZGRsZXdhcmVEYXRhJGF1dG9QMiwgX3BsYWNlbWVudHNUaGF0Rml0T25FO1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBhbGlnbm1lbnQsXG4gICAgICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cyxcbiAgICAgICAgYXV0b0FsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHMkMSA9IGFsaWdubWVudCAhPT0gdW5kZWZpbmVkIHx8IGFsbG93ZWRQbGFjZW1lbnRzID09PSBwbGFjZW1lbnRzID8gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQgfHwgbnVsbCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIDogYWxsb3dlZFBsYWNlbWVudHM7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gKChfbWlkZGxld2FyZURhdGEkYXV0b1AgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QLmluZGV4KSB8fCAwO1xuICAgICAgY29uc3QgY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudHMkMVtjdXJyZW50SW5kZXhdO1xuICAgICAgaWYgKGN1cnJlbnRQbGFjZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBhbGlnbm1lbnRTaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKGN1cnJlbnRQbGFjZW1lbnQsIHJlY3RzLCBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpO1xuXG4gICAgICAvLyBNYWtlIGBjb21wdXRlQ29vcmRzYCBzdGFydCBmcm9tIHRoZSByaWdodCBwbGFjZS5cbiAgICAgIGlmIChwbGFjZW1lbnQgIT09IGN1cnJlbnRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRzJDFbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50T3ZlcmZsb3dzID0gW292ZXJmbG93W2dldFNpZGUoY3VycmVudFBsYWNlbWVudCldLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1swXV0sIG92ZXJmbG93W2FsaWdubWVudFNpZGVzWzFdXV07XG4gICAgICBjb25zdCBhbGxPdmVyZmxvd3MgPSBbLi4uKCgoX21pZGRsZXdhcmVEYXRhJGF1dG9QMiA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AyLm92ZXJmbG93cykgfHwgW10pLCB7XG4gICAgICAgIHBsYWNlbWVudDogY3VycmVudFBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzOiBjdXJyZW50T3ZlcmZsb3dzXG4gICAgICB9XTtcbiAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4ICsgMV07XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBtb3JlIHBsYWNlbWVudHMgdG8gY2hlY2suXG4gICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UgPSBhbGxPdmVyZmxvd3MubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQoZC5wbGFjZW1lbnQpO1xuICAgICAgICByZXR1cm4gW2QucGxhY2VtZW50LCBhbGlnbm1lbnQgJiYgY3Jvc3NBeGlzID9cbiAgICAgICAgLy8gQ2hlY2sgYWxvbmcgdGhlIG1haW5BeGlzIGFuZCBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBkLm92ZXJmbG93cy5zbGljZSgwLCAyKS5yZWR1Y2UoKGFjYywgdikgPT4gYWNjICsgdiwgMCkgOlxuICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBtYWluQXhpcy5cbiAgICAgICAgZC5vdmVyZmxvd3NbMF0sIGQub3ZlcmZsb3dzXTtcbiAgICAgIH0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZSA9IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZS5maWx0ZXIoZCA9PiBkWzJdLnNsaWNlKDAsXG4gICAgICAvLyBBbGlnbmVkIHBsYWNlbWVudHMgc2hvdWxkIG5vdCBjaGVjayB0aGVpciBvcHBvc2l0ZSBjcm9zc0F4aXNcbiAgICAgIC8vIHNpZGUuXG4gICAgICBnZXRBbGlnbm1lbnQoZFswXSkgPyAyIDogMykuZXZlcnkodiA9PiB2IDw9IDApKTtcbiAgICAgIGNvbnN0IHJlc2V0UGxhY2VtZW50ID0gKChfcGxhY2VtZW50c1RoYXRGaXRPbkUgPSBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGVbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfcGxhY2VtZW50c1RoYXRGaXRPbkVbMF0pIHx8IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZVswXVswXTtcbiAgICAgIGlmIChyZXNldFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ZsaXAnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRmbGlwO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgaW5pdGlhbFBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWUsXG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgICBmYWxsYmFja1N0cmF0ZWd5ID0gJ2Jlc3RGaXQnLFxuICAgICAgICBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gJ25vbmUnLFxuICAgICAgICBmbGlwQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gICAgICAvLyBJZiBhIHJlc2V0IGJ5IHRoZSBhcnJvdyB3YXMgY2F1c2VkIGR1ZSB0byBhbiBhbGlnbm1lbnQgb2Zmc2V0IGJlaW5nXG4gICAgICAvLyBhZGRlZCwgd2Ugc2hvdWxkIHNraXAgYW55IGxvZ2ljIG5vdyBzaW5jZSBgZmxpcCgpYCBoYXMgYWxyZWFkeSBkb25lIGl0c1xuICAgICAgLy8gd29yay5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjU0OSNpc3N1ZWNvbW1lbnQtMTcxOTYwMTY0M1xuICAgICAgaWYgKChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpbml0aWFsU2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhpbml0aWFsUGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzQmFzZVBsYWNlbWVudCA9IGdldFNpZGUoaW5pdGlhbFBsYWNlbWVudCkgPT09IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gICAgICBjb25zdCBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcEFsaWdubWVudCA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChpbml0aWFsUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZFBsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9IGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gIT09ICdub25lJztcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzLnB1c2goLi4uZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uLCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHMgPSBbaW5pdGlhbFBsYWNlbWVudCwgLi4uZmFsbGJhY2tQbGFjZW1lbnRzXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBvdmVyZmxvd3MgPSBbXTtcbiAgICAgIGxldCBvdmVyZmxvd3NEYXRhID0gKChfbWlkZGxld2FyZURhdGEkZmxpcCA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcC5vdmVyZmxvd3MpIHx8IFtdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZV0pO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IHNpZGVzID0gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKTtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZXNbMF1dLCBvdmVyZmxvd1tzaWRlc1sxXV0pO1xuICAgICAgfVxuICAgICAgb3ZlcmZsb3dzRGF0YSA9IFsuLi5vdmVyZmxvd3NEYXRhLCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzXG4gICAgICB9XTtcblxuICAgICAgLy8gT25lIG9yIG1vcmUgc2lkZXMgaXMgb3ZlcmZsb3dpbmcuXG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeShzaWRlID0+IHNpZGUgPD0gMCkpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwMiwgX292ZXJmbG93c0RhdGEkZmlsdGVyO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoKChfbWlkZGxld2FyZURhdGEkZmxpcDIgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAyLmluZGV4KSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgcGxhY2VtZW50IGFuZCByZS1ydW4gdGhlIGxpZmVjeWNsZS5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGNhbmRpZGF0ZXMgdGhhdCBmaXQgb24gdGhlIG1haW5BeGlzIHNpZGUgb2Ygb3ZlcmZsb3csXG4gICAgICAgIC8vIHRoZW4gZmluZCB0aGUgcGxhY2VtZW50IHRoYXQgZml0cyB0aGUgYmVzdCBvbiB0aGUgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgbGV0IHJlc2V0UGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlciA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYSwgYikgPT4gYS5vdmVyZmxvd3NbMV0gLSBiLm92ZXJmbG93c1sxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjay5cbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYmVzdEZpdCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkZmlsdGVyMjtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyMiA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoZC5wbGFjZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpZGVBeGlzID09PSBpbml0aWFsU2lkZUF4aXMgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgYmlhcyB0byB0aGUgYHlgIHNpZGUgYXhpcyBkdWUgdG8gaG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICAvLyByZWFkaW5nIGRpcmVjdGlvbnMgZmF2b3JpbmcgZ3JlYXRlciB3aWR0aC5cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNpZGVBeGlzID09PSAneSc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KS5tYXAoZCA9PiBbZC5wbGFjZW1lbnQsIGQub3ZlcmZsb3dzLmZpbHRlcihvdmVyZmxvdyA9PiBvdmVyZmxvdyA+IDApLnJlZHVjZSgoYWNjLCBvdmVyZmxvdykgPT4gYWNjICsgb3ZlcmZsb3csIDApXSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyMlswXTtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2luaXRpYWxQbGFjZW1lbnQnOlxuICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50ICE9PSByZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0KSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGhcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gc2lkZXMuc29tZShzaWRlID0+IG92ZXJmbG93W3NpZGVdID49IDApO1xufVxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2hpZGUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3RyYXRlZ3kgPSAncmVmZXJlbmNlSGlkZGVuJyxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgICBjYXNlICdyZWZlcmVuY2VIaWRkZW4nOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5yZWZlcmVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbk9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2VzY2FwZWQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLmZsb2F0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICBlc2NhcGVkOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ1JlY3QocmVjdHMpIHtcbiAgY29uc3QgbWluWCA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgY29uc3QgbWluWSA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnRvcCkpO1xuICBjb25zdCBtYXhYID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgY29uc3QgbWF4WSA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmJvdHRvbSkpO1xuICByZXR1cm4ge1xuICAgIHg6IG1pblgsXG4gICAgeTogbWluWSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UmVjdHNCeUxpbmUocmVjdHMpIHtcbiAgY29uc3Qgc29ydGVkUmVjdHMgPSByZWN0cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IGEueSAtIGIueSk7XG4gIGNvbnN0IGdyb3VwcyA9IFtdO1xuICBsZXQgcHJldlJlY3QgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZFJlY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcmVjdCA9IHNvcnRlZFJlY3RzW2ldO1xuICAgIGlmICghcHJldlJlY3QgfHwgcmVjdC55IC0gcHJldlJlY3QueSA+IHByZXZSZWN0LmhlaWdodCAvIDIpIHtcbiAgICAgIGdyb3Vwcy5wdXNoKFtyZWN0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0ucHVzaChyZWN0KTtcbiAgICB9XG4gICAgcHJldlJlY3QgPSByZWN0O1xuICB9XG4gIHJldHVybiBncm91cHMubWFwKHJlY3QgPT4gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QocmVjdCkpKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaW5saW5lJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgZWxlbWVudHMsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIC8vIEEgTW91c2VFdmVudCdzIGNsaWVudHtYLFl9IGNvb3JkcyBjYW4gYmUgdXAgdG8gMiBwaXhlbHMgb2ZmIGFcbiAgICAgIC8vIENsaWVudFJlY3QncyBib3VuZHMsIGRlc3BpdGUgdGhlIGV2ZW50IGxpc3RlbmVyIGJlaW5nIHRyaWdnZXJlZC4gQVxuICAgICAgLy8gcGFkZGluZyBvZiAyIHNlZW1zIHRvIGhhbmRsZSB0aGlzIGlzc3VlLlxuICAgICAgY29uc3Qge1xuICAgICAgICBwYWRkaW5nID0gMixcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG5hdGl2ZUNsaWVudFJlY3RzID0gQXJyYXkuZnJvbSgoYXdhaXQgKHBsYXRmb3JtLmdldENsaWVudFJlY3RzID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyhlbGVtZW50cy5yZWZlcmVuY2UpKSkgfHwgW10pO1xuICAgICAgY29uc3QgY2xpZW50UmVjdHMgPSBnZXRSZWN0c0J5TGluZShuYXRpdmVDbGllbnRSZWN0cyk7XG4gICAgICBjb25zdCBmYWxsYmFjayA9IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KG5hdGl2ZUNsaWVudFJlY3RzKSk7XG4gICAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID09PSAyICYmIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodCAmJiB4ICE9IG51bGwgJiYgeSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVjdCBpbiB3aGljaCB0aGUgcG9pbnQgaXMgZnVsbHkgaW5zaWRlLlxuICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0cy5maW5kKHJlY3QgPT4geCA+IHJlY3QubGVmdCAtIHBhZGRpbmdPYmplY3QubGVmdCAmJiB4IDwgcmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQgJiYgeSA+IHJlY3QudG9wIC0gcGFkZGluZ09iamVjdC50b3AgJiYgeSA8IHJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIHx8IGZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlcmUgYXJlIDIgb3IgbW9yZSBjb25uZWN0ZWQgcmVjdHMuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIGlmIChnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneScpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGNsaWVudFJlY3RzWzBdO1xuICAgICAgICAgICAgY29uc3QgbGFzdFJlY3QgPSBjbGllbnRSZWN0c1tjbGllbnRSZWN0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGlzVG9wID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAndG9wJztcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IGZpcnN0UmVjdC50b3A7XG4gICAgICAgICAgICBjb25zdCBib3R0b20gPSBsYXN0UmVjdC5ib3R0b207XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gaXNUb3AgPyBmaXJzdFJlY3QubGVmdCA6IGxhc3RSZWN0LmxlZnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGlzVG9wID8gZmlyc3RSZWN0LnJpZ2h0IDogbGFzdFJlY3QucmlnaHQ7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0xlZnRTaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAnbGVmdCc7XG4gICAgICAgICAgY29uc3QgbWF4UmlnaHQgPSBtYXgoLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICAgICAgICAgIGNvbnN0IG1pbkxlZnQgPSBtaW4oLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gICAgICAgICAgY29uc3QgbWVhc3VyZVJlY3RzID0gY2xpZW50UmVjdHMuZmlsdGVyKHJlY3QgPT4gaXNMZWZ0U2lkZSA/IHJlY3QubGVmdCA9PT0gbWluTGVmdCA6IHJlY3QucmlnaHQgPT09IG1heFJpZ2h0KTtcbiAgICAgICAgICBjb25zdCB0b3AgPSBtZWFzdXJlUmVjdHNbMF0udG9wO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IG1lYXN1cmVSZWN0c1ttZWFzdXJlUmVjdHMubGVuZ3RoIC0gMV0uYm90dG9tO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBtaW5MZWZ0O1xuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gbWF4UmlnaHQ7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc2V0UmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICByZWZlcmVuY2U6IHtcbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RcbiAgICAgICAgfSxcbiAgICAgICAgZmxvYXRpbmc6IGVsZW1lbnRzLmZsb2F0aW5nLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSk7XG4gICAgICBpZiAocmVjdHMucmVmZXJlbmNlLnggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnggfHwgcmVjdHMucmVmZXJlbmNlLnkgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnkgfHwgcmVjdHMucmVmZXJlbmNlLndpZHRoICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS53aWR0aCB8fCByZWN0cy5yZWZlcmVuY2UuaGVpZ2h0ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHJlc2V0UmVjdHNcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLy8gRm9yIHR5cGUgYmFja3dhcmRzLWNvbXBhdGliaWxpdHksIHRoZSBgT2Zmc2V0T3B0aW9uc2AgdHlwZSB3YXMgYWxzb1xuLy8gRGVyaXZhYmxlLlxuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50LFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBzdGF0ZTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFsnbGVmdCcsICd0b3AnXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZSxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbFxuICB9IDoge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZS5tYWluQXhpcyB8fCAwLFxuICAgIGNyb3NzQXhpczogcmF3VmFsdWUuY3Jvc3NBeGlzIHx8IDAsXG4gICAgYWxpZ25tZW50QXhpczogcmF3VmFsdWUuYWxpZ25tZW50QXhpc1xuICB9O1xuICBpZiAoYWxpZ25tZW50ICYmIHR5cGVvZiBhbGlnbm1lbnRBeGlzID09PSAnbnVtYmVyJykge1xuICAgIGNyb3NzQXhpcyA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyBhbGlnbm1lbnRBeGlzICogLTEgOiBhbGlnbm1lbnRBeGlzO1xuICB9XG4gIHJldHVybiBpc1ZlcnRpY2FsID8ge1xuICAgIHg6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpLFxuICAgIHk6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aVxuICB9IDoge1xuICAgIHg6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aSxcbiAgICB5OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aVxuICB9O1xufVxuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkYXJyb3c7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGRpZmZDb29yZHMgPSBhd2FpdCBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucyk7XG5cbiAgICAgIC8vIElmIHRoZSBwbGFjZW1lbnQgaXMgdGhlIHNhbWUgYW5kIHRoZSBhcnJvdyBjYXVzZWQgYW4gYWxpZ25tZW50IG9mZnNldFxuICAgICAgLy8gdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgcG9zaXRpb25pbmcgY29vcmRpbmF0ZXMuXG4gICAgICBpZiAocGxhY2VtZW50ID09PSAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZS5wbGFjZW1lbnQpICYmIChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5kaWZmQ29vcmRzLFxuICAgICAgICAgIHBsYWNlbWVudFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2hpZnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBsaW1pdGVyID0ge1xuICAgICAgICAgIGZuOiBfcmVmID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH0gPSBfcmVmO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IG1haW5BeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IG1haW5BeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWFpbkF4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBtYWluQXhpc0Nvb3JkID0gY2xhbXAobWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gY2xhbXAobWluLCBjcm9zc0F4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpbWl0ZWRDb29yZHMgPSBsaW1pdGVyLmZuKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5saW1pdGVkQ29vcmRzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgeDogbGltaXRlZENvb3Jkcy54IC0geCxcbiAgICAgICAgICB5OiBsaW1pdGVkQ29vcmRzLnkgLSB5LFxuICAgICAgICAgIGVuYWJsZWQ6IHtcbiAgICAgICAgICAgIFttYWluQXhpc106IGNoZWNrTWFpbkF4aXMsXG4gICAgICAgICAgICBbY3Jvc3NBeGlzXTogY2hlY2tDcm9zc0F4aXNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBvZmZzZXQgPSAwLFxuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGNvbnN0IHJhd09mZnNldCA9IGV2YWx1YXRlKG9mZnNldCwgc3RhdGUpO1xuICAgICAgY29uc3QgY29tcHV0ZWRPZmZzZXQgPSB0eXBlb2YgcmF3T2Zmc2V0ID09PSAnbnVtYmVyJyA/IHtcbiAgICAgICAgbWFpbkF4aXM6IHJhd09mZnNldCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwXG4gICAgICB9IDoge1xuICAgICAgICBtYWluQXhpczogMCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwLFxuICAgICAgICAuLi5yYXdPZmZzZXRcbiAgICAgIH07XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dIC0gY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGlmIChtYWluQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAobWFpbkF4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJG9mZnNlMjtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICAgICAgY29uc3QgaXNPcmlnaW5TaWRlID0gWyd0b3AnLCAnbGVmdCddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgKGlzT3JpZ2luU2lkZSA/ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlW2Nyb3NzQXhpc10pIHx8IDAgOiAwKSArIChpc09yaWdpblNpZGUgPyAwIDogY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzKTtcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dICsgKGlzT3JpZ2luU2lkZSA/IDAgOiAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZTIgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UyW2Nyb3NzQXhpc10pIHx8IDApIC0gKGlzT3JpZ2luU2lkZSA/IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyA6IDApO1xuICAgICAgICBpZiAoY3Jvc3NBeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAoY3Jvc3NBeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpemUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfc3RhdGUkbWlkZGxld2FyZURhdGEsIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTI7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBseSA9ICgpID0+IHt9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNZQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgICAgfSA9IHJlY3RzLmZsb2F0aW5nO1xuICAgICAgbGV0IGhlaWdodFNpZGU7XG4gICAgICBsZXQgd2lkdGhTaWRlO1xuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGhlaWdodFNpZGUgPSBzaWRlO1xuICAgICAgICB3aWR0aFNpZGUgPSBhbGlnbm1lbnQgPT09ICgoYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKSA/ICdzdGFydCcgOiAnZW5kJykgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGhTaWRlID0gc2lkZTtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgfVxuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nSGVpZ2h0ID0gaGVpZ2h0IC0gb3ZlcmZsb3cudG9wIC0gb3ZlcmZsb3cuYm90dG9tO1xuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nV2lkdGggPSB3aWR0aCAtIG92ZXJmbG93LmxlZnQgLSBvdmVyZmxvdy5yaWdodDtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0ID0gbWluKGhlaWdodCAtIG92ZXJmbG93W2hlaWdodFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVXaWR0aCA9IG1pbih3aWR0aCAtIG92ZXJmbG93W3dpZHRoU2lkZV0sIG1heGltdW1DbGlwcGluZ1dpZHRoKTtcbiAgICAgIGNvbnN0IG5vU2hpZnQgPSAhc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQ7XG4gICAgICBsZXQgYXZhaWxhYmxlSGVpZ2h0ID0gb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQ7XG4gICAgICBsZXQgYXZhaWxhYmxlV2lkdGggPSBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoO1xuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEuZW5hYmxlZC54KSB7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9XG4gICAgICBpZiAoKF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTIgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEyLmVuYWJsZWQueSkge1xuICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobm9TaGlmdCAmJiAhYWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBtYXgob3ZlcmZsb3cubGVmdCwgMCk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBtYXgob3ZlcmZsb3cucmlnaHQsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gbWF4KG92ZXJmbG93LnRvcCwgMCk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBtYXgob3ZlcmZsb3cuYm90dG9tLCAwKTtcbiAgICAgICAgaWYgKGlzWUF4aXMpIHtcbiAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gMiAqICh4TWluICE9PSAwIHx8IHhNYXggIT09IDAgPyB4TWluICsgeE1heCA6IG1heChvdmVyZmxvdy5sZWZ0LCBvdmVyZmxvdy5yaWdodCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIDIgKiAoeU1pbiAhPT0gMCB8fCB5TWF4ICE9PSAwID8geU1pbiArIHlNYXggOiBtYXgob3ZlcmZsb3cudG9wLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHkoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGgsXG4gICAgICAgIGF2YWlsYWJsZUhlaWdodFxuICAgICAgfSk7XG4gICAgICBjb25zdCBuZXh0RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgaWYgKHdpZHRoICE9PSBuZXh0RGltZW5zaW9ucy53aWR0aCB8fCBoZWlnaHQgIT09IG5leHREaW1lbnNpb25zLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHNoaWZ0LCBzaXplIH07XG4iLCJmdW5jdGlvbiBoYXNXaW5kb3coKSB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cbmZ1bmN0aW9uIGdldE5vZGVOYW1lKG5vZGUpIHtcbiAgaWYgKGlzTm9kZShub2RlKSkge1xuICAgIHJldHVybiAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICAvLyBNb2NrZWQgbm9kZXMgaW4gdGVzdGluZyBlbnZpcm9ubWVudHMgbWF5IG5vdCBiZSBpbnN0YW5jZXMgb2YgTm9kZS4gQnlcbiAgLy8gcmV0dXJuaW5nIGAjZG9jdW1lbnRgIGFuIGluZmluaXRlIGxvb3Agd29uJ3Qgb2NjdXIuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjMxN1xuICByZXR1cm4gJyNkb2N1bWVudCc7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuIChub2RlID09IG51bGwgfHwgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICB2YXIgX3JlZjtcbiAgcmV0dXJuIChfcmVmID0gKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZWYuZG9jdW1lbnRFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgTm9kZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkgfHwgdHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLlNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVsnaW5saW5lJywgJ2NvbnRlbnRzJ10uaW5jbHVkZXMoZGlzcGxheSk7XG59XG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpO1xufVxuZnVuY3Rpb24gaXNUb3BMYXllcihlbGVtZW50KSB7XG4gIHJldHVybiBbJzpwb3BvdmVyLW9wZW4nLCAnOm1vZGFsJ10uc29tZShzZWxlY3RvciA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudE9yQ3NzKSB7XG4gIGNvbnN0IHdlYmtpdCA9IGlzV2ViS2l0KCk7XG4gIGNvbnN0IGNzcyA9IGlzRWxlbWVudChlbGVtZW50T3JDc3MpID8gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50T3JDc3MpIDogZWxlbWVudE9yQ3NzO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdHJhbnNmb3Jtcy0yLyNpbmRpdmlkdWFsLXRyYW5zZm9ybXNcbiAgcmV0dXJuIFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnXS5zb21lKHZhbHVlID0+IGNzc1t2YWx1ZV0gPyBjc3NbdmFsdWVdICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgKGNzcy5jb250YWluZXJUeXBlID8gY3NzLmNvbnRhaW5lclR5cGUgIT09ICdub3JtYWwnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5iYWNrZHJvcEZpbHRlciA/IGNzcy5iYWNrZHJvcEZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgWyd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlJywgJ3NjYWxlJywgJ3JvdGF0ZScsICdwZXJzcGVjdGl2ZScsICdmaWx0ZXInXS5zb21lKHZhbHVlID0+IChjc3Mud2lsbENoYW5nZSB8fCAnJykuaW5jbHVkZXModmFsdWUpKSB8fCBbJ3BhaW50JywgJ2xheW91dCcsICdzdHJpY3QnLCAnY29udGVudCddLnNvbWUodmFsdWUgPT4gKGNzcy5jb250YWluIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgaWYgKGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSBpZiAoaXNUb3BMYXllcihjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gaXNXZWJLaXQoKSB7XG4gIGlmICh0eXBlb2YgQ1NTID09PSAndW5kZWZpbmVkJyB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyJywgJ25vbmUnKTtcbn1cbmZ1bmN0aW9uIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShub2RlKSB7XG4gIHJldHVybiBbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShub2RlKSk7XG59XG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbFgsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUobm9kZSkge1xuICBpZiAoZ2V0Tm9kZU5hbWUobm9kZSkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBub2RlO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9XG4gIC8vIFN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlLlxuICBub2RlLmFzc2lnbmVkU2xvdCB8fFxuICAvLyBET00gRWxlbWVudCBkZXRlY3RlZC5cbiAgbm9kZS5wYXJlbnROb2RlIHx8XG4gIC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWQuXG4gIGlzU2hhZG93Um9vdChub2RlKSAmJiBub2RlLmhvc3QgfHxcbiAgLy8gRmFsbGJhY2suXG4gIGdldERvY3VtZW50RWxlbWVudChub2RlKTtcbiAgcmV0dXJuIGlzU2hhZG93Um9vdChyZXN1bHQpID8gcmVzdWx0Lmhvc3QgOiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKG5vZGUpO1xuICBpZiAoaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudCA/IG5vZGUub3duZXJEb2N1bWVudC5ib2R5IDogbm9kZS5ib2R5O1xuICB9XG4gIGlmIChpc0hUTUxFbGVtZW50KHBhcmVudE5vZGUpICYmIGlzT3ZlcmZsb3dFbGVtZW50KHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKHBhcmVudE5vZGUpO1xufVxuZnVuY3Rpb24gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMobm9kZSwgbGlzdCwgdHJhdmVyc2VJZnJhbWVzKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50MjtcbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuICBpZiAodHJhdmVyc2VJZnJhbWVzID09PSB2b2lkIDApIHtcbiAgICB0cmF2ZXJzZUlmcmFtZXMgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHNjcm9sbGFibGVBbmNlc3RvciA9IGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpO1xuICBjb25zdCBpc0JvZHkgPSBzY3JvbGxhYmxlQW5jZXN0b3IgPT09ICgoX25vZGUkb3duZXJEb2N1bWVudDIgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50Mi5ib2R5KTtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KHNjcm9sbGFibGVBbmNlc3Rvcik7XG4gIGlmIChpc0JvZHkpIHtcbiAgICBjb25zdCBmcmFtZUVsZW1lbnQgPSBnZXRGcmFtZUVsZW1lbnQod2luKTtcbiAgICByZXR1cm4gbGlzdC5jb25jYXQod2luLCB3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzT3ZlcmZsb3dFbGVtZW50KHNjcm9sbGFibGVBbmNlc3RvcikgPyBzY3JvbGxhYmxlQW5jZXN0b3IgOiBbXSwgZnJhbWVFbGVtZW50ICYmIHRyYXZlcnNlSWZyYW1lcyA/IGdldE92ZXJmbG93QW5jZXN0b3JzKGZyYW1lRWxlbWVudCkgOiBbXSk7XG4gIH1cbiAgcmV0dXJuIGxpc3QuY29uY2F0KHNjcm9sbGFibGVBbmNlc3RvciwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoc2Nyb2xsYWJsZUFuY2VzdG9yLCBbXSwgdHJhdmVyc2VJZnJhbWVzKSk7XG59XG5mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQod2luKSB7XG4gIHJldHVybiB3aW4ucGFyZW50ICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih3aW4ucGFyZW50KSA/IHdpbi5mcmFtZUVsZW1lbnQgOiBudWxsO1xufVxuXG5leHBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBnZXRDb250YWluaW5nQmxvY2ssIGdldERvY3VtZW50RWxlbWVudCwgZ2V0RnJhbWVFbGVtZW50LCBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciwgZ2V0Tm9kZU5hbWUsIGdldE5vZGVTY3JvbGwsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBnZXRXaW5kb3csIGlzQ29udGFpbmluZ0Jsb2NrLCBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNOb2RlLCBpc092ZXJmbG93RWxlbWVudCwgaXNTaGFkb3dSb290LCBpc1RhYmxlRWxlbWVudCwgaXNUb3BMYXllciwgaXNXZWJLaXQgfTtcbiIsImltcG9ydCB7IHJlY3RUb0NsaWVudFJlY3QsIGRldGVjdE92ZXJmbG93IGFzIGRldGVjdE92ZXJmbG93JDEsIG9mZnNldCBhcyBvZmZzZXQkMSwgYXV0b1BsYWNlbWVudCBhcyBhdXRvUGxhY2VtZW50JDEsIHNoaWZ0IGFzIHNoaWZ0JDEsIGZsaXAgYXMgZmxpcCQxLCBzaXplIGFzIHNpemUkMSwgaGlkZSBhcyBoaWRlJDEsIGFycm93IGFzIGFycm93JDEsIGlubGluZSBhcyBpbmxpbmUkMSwgbGltaXRTaGlmdCBhcyBsaW1pdFNoaWZ0JDEsIGNvbXB1dGVQb3NpdGlvbiBhcyBjb21wdXRlUG9zaXRpb24kMSB9IGZyb20gJ0BmbG9hdGluZy11aS9jb3JlJztcbmltcG9ydCB7IHJvdW5kLCBjcmVhdGVDb29yZHMsIG1heCwgbWluLCBmbG9vciB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5pbXBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBpc0hUTUxFbGVtZW50LCBpc0VsZW1lbnQsIGdldFdpbmRvdywgaXNXZWJLaXQsIGdldEZyYW1lRWxlbWVudCwgZ2V0Tm9kZVNjcm9sbCwgZ2V0RG9jdW1lbnRFbGVtZW50LCBpc1RvcExheWVyLCBnZXROb2RlTmFtZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzQ29udGFpbmluZ0Jsb2NrLCBpc1RhYmxlRWxlbWVudCwgZ2V0Q29udGFpbmluZ0Jsb2NrIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5leHBvcnQgeyBnZXRPdmVyZmxvd0FuY2VzdG9ycyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuXG5mdW5jdGlvbiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgLy8gSW4gdGVzdGluZyBlbnZpcm9ubWVudHMsIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBwcm9wZXJ0aWVzIGFyZSBlbXB0eVxuICAvLyBzdHJpbmdzIGZvciBTVkcgZWxlbWVudHMsIHJldHVybmluZyBOYU4uIEZhbGxiYWNrIHRvIGAwYCBpbiB0aGlzIGNhc2UuXG4gIGxldCB3aWR0aCA9IHBhcnNlRmxvYXQoY3NzLndpZHRoKSB8fCAwO1xuICBsZXQgaGVpZ2h0ID0gcGFyc2VGbG9hdChjc3MuaGVpZ2h0KSB8fCAwO1xuICBjb25zdCBoYXNPZmZzZXQgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBvZmZzZXRXaWR0aCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0V2lkdGggOiB3aWR0aDtcbiAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRIZWlnaHQgOiBoZWlnaHQ7XG4gIGNvbnN0IHNob3VsZEZhbGxiYWNrID0gcm91bmQod2lkdGgpICE9PSBvZmZzZXRXaWR0aCB8fCByb3VuZChoZWlnaHQpICE9PSBvZmZzZXRIZWlnaHQ7XG4gIGlmIChzaG91bGRGYWxsYmFjaykge1xuICAgIHdpZHRoID0gb2Zmc2V0V2lkdGg7XG4gICAgaGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0O1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICQ6IHNob3VsZEZhbGxiYWNrXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gIWlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgOiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBnZXRTY2FsZShlbGVtZW50KSB7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZG9tRWxlbWVudCkpIHtcbiAgICByZXR1cm4gY3JlYXRlQ29vcmRzKDEpO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZG9tRWxlbWVudCk7XG4gIGxldCB4ID0gKCQgPyByb3VuZChyZWN0LndpZHRoKSA6IHJlY3Qud2lkdGgpIC8gd2lkdGg7XG4gIGxldCB5ID0gKCQgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb29yZHMoMCk7XG5mdW5jdGlvbiBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoIWlzV2ViS2l0KCkgfHwgIXdpbi52aXN1YWxWaWV3cG9ydCkge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCxcbiAgICB5OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wXG4gIH07XG59XG5mdW5jdGlvbiBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGVsZW1lbnQsIGlzRml4ZWQsIGZsb2F0aW5nT2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cbiAgaWYgKCFmbG9hdGluZ09mZnNldFBhcmVudCB8fCBpc0ZpeGVkICYmIGZsb2F0aW5nT2Zmc2V0UGFyZW50ICE9PSBnZXRXaW5kb3coZWxlbWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzRml4ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpID8gZ2V0VmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgbGV0IHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgdmlzdWFsT2Zmc2V0cy54KSAvIHNjYWxlLng7XG4gIGxldCB5ID0gKGNsaWVudFJlY3QudG9wICsgdmlzdWFsT2Zmc2V0cy55KSAvIHNjYWxlLnk7XG4gIGxldCB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZS54O1xuICBsZXQgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZS55O1xuICBpZiAoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhkb21FbGVtZW50KTtcbiAgICBjb25zdCBvZmZzZXRXaW4gPSBvZmZzZXRQYXJlbnQgJiYgaXNFbGVtZW50KG9mZnNldFBhcmVudCkgPyBnZXRXaW5kb3cob2Zmc2V0UGFyZW50KSA6IG9mZnNldFBhcmVudDtcbiAgICBsZXQgY3VycmVudFdpbiA9IHdpbjtcbiAgICBsZXQgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSBjdXJyZW50V2luKSB7XG4gICAgICBjb25zdCBpZnJhbWVTY2FsZSA9IGdldFNjYWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgaWZyYW1lUmVjdCA9IGN1cnJlbnRJRnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgbGVmdCA9IGlmcmFtZVJlY3QubGVmdCArIChjdXJyZW50SUZyYW1lLmNsaWVudExlZnQgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nTGVmdCkpICogaWZyYW1lU2NhbGUueDtcbiAgICAgIGNvbnN0IHRvcCA9IGlmcmFtZVJlY3QudG9wICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50VG9wICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ1RvcCkpICogaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIHkgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHdpZHRoICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICBoZWlnaHQgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKz0gbGVmdDtcbiAgICAgIHkgKz0gdG9wO1xuICAgICAgY3VycmVudFdpbiA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKTtcbiAgICAgIGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG4vLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4vLyBpbmNvcnJlY3QgZm9yIFJUTC5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCwgcmVjdCkge1xuICBjb25zdCBsZWZ0U2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xuICBpZiAoIXJlY3QpIHtcbiAgICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGxlZnRTY3JvbGw7XG4gIH1cbiAgcmV0dXJuIHJlY3QubGVmdCArIGxlZnRTY3JvbGw7XG59XG5cbmZ1bmN0aW9uIGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIGlnbm9yZVNjcm9sbGJhclgpIHtcbiAgaWYgKGlnbm9yZVNjcm9sbGJhclggPT09IHZvaWQgMCkge1xuICAgIGlnbm9yZVNjcm9sbGJhclggPSBmYWxzZTtcbiAgfVxuICBjb25zdCBodG1sUmVjdCA9IGRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeCA9IGh0bWxSZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIChpZ25vcmVTY3JvbGxiYXJYID8gMCA6XG4gIC8vIFJUTCA8Ym9keT4gc2Nyb2xsYmFyLlxuICBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCwgaHRtbFJlY3QpKTtcbiAgY29uc3QgeSA9IGh0bWxSZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3A7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgdG9wTGF5ZXIgPSBlbGVtZW50cyA/IGlzVG9wTGF5ZXIoZWxlbWVudHMuZmxvYXRpbmcpIDogZmFsc2U7XG4gIGlmIChvZmZzZXRQYXJlbnQgPT09IGRvY3VtZW50RWxlbWVudCB8fCB0b3BMYXllciAmJiBpc0ZpeGVkKSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCB0cnVlKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcmVjdC53aWR0aCAqIHNjYWxlLngsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAqIHNjYWxlLnksXG4gICAgeDogcmVjdC54ICogc2NhbGUueCAtIHNjcm9sbC5zY3JvbGxMZWZ0ICogc2NhbGUueCArIG9mZnNldHMueCArIGh0bWxPZmZzZXQueCxcbiAgICB5OiByZWN0LnkgKiBzY2FsZS55IC0gc2Nyb2xsLnNjcm9sbFRvcCAqIHNjYWxlLnkgKyBvZmZzZXRzLnkgKyBodG1sT2Zmc2V0LnlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdHMoZWxlbWVudCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmdldENsaWVudFJlY3RzKCkpO1xufVxuXG4vLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KTtcbiAgY29uc3QgYm9keSA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICBjb25zdCB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5LnNjcm9sbFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgbGV0IHggPSAtc2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICBjb25zdCB5ID0gLXNjcm9sbC5zY3JvbGxUb3A7XG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKSAtIHdpZHRoO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgbGV0IHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgbGV0IGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICBsZXQgeCA9IDA7XG4gIGxldCB5ID0gMDtcbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgY29uc3QgdmlzdWFsVmlld3BvcnRCYXNlZCA9IGlzV2ViS2l0KCk7XG4gICAgaWYgKCF2aXN1YWxWaWV3cG9ydEJhc2VkIHx8IHZpc3VhbFZpZXdwb3J0QmFzZWQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbi8vIFJldHVybnMgdGhlIGlubmVyIGNsaWVudCByZWN0LCBzdWJ0cmFjdGluZyBzY3JvbGxiYXJzIGlmIHByZXNlbnQuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgY29uc3QgdG9wID0gY2xpZW50UmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgY29uc3QgbGVmdCA9IGNsaWVudFJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgY29uc3Qgc2NhbGUgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0U2NhbGUoZWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aCAqIHNjYWxlLng7XG4gIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICogc2NhbGUueTtcbiAgY29uc3QgeCA9IGxlZnQgKiBzY2FsZS54O1xuICBjb25zdCB5ID0gdG9wICogc2NhbGUueTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpIHtcbiAgbGV0IHJlY3Q7XG4gIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAndmlld3BvcnQnKSB7XG4gICAgcmVjdCA9IGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSk7XG4gIH0gZWxzZSBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ2RvY3VtZW50Jykge1xuICAgIHJlY3QgPSBnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKTtcbiAgfSBlbHNlIGlmIChpc0VsZW1lbnQoY2xpcHBpbmdBbmNlc3RvcikpIHtcbiAgICByZWN0ID0gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpO1xuICAgIHJlY3QgPSB7XG4gICAgICB4OiBjbGlwcGluZ0FuY2VzdG9yLnggLSB2aXN1YWxPZmZzZXRzLngsXG4gICAgICB5OiBjbGlwcGluZ0FuY2VzdG9yLnkgLSB2aXN1YWxPZmZzZXRzLnksXG4gICAgICB3aWR0aDogY2xpcHBpbmdBbmNlc3Rvci53aWR0aCxcbiAgICAgIGhlaWdodDogY2xpcHBpbmdBbmNlc3Rvci5oZWlnaHRcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHJlY3QpO1xufVxuZnVuY3Rpb24gaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIHN0b3BOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAocGFyZW50Tm9kZSA9PT0gc3RvcE5vZGUgfHwgIWlzRWxlbWVudChwYXJlbnROb2RlKSB8fCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUocGFyZW50Tm9kZSkucG9zaXRpb24gPT09ICdmaXhlZCcgfHwgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKHBhcmVudE5vZGUsIHN0b3BOb2RlKTtcbn1cblxuLy8gQSBcImNsaXBwaW5nIGFuY2VzdG9yXCIgaXMgYW4gYG92ZXJmbG93YCBlbGVtZW50IHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBjaGlsZCBlbGVtZW50cy4gVGhpcyByZXR1cm5zIGFsbCBjbGlwcGluZyBhbmNlc3RvcnNcbi8vIG9mIHRoZSBnaXZlbiBlbGVtZW50IHVwIHRoZSB0cmVlLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIGNhY2hlKSB7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlLmdldChlbGVtZW50KTtcbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnQsIFtdLCBmYWxzZSkuZmlsdGVyKGVsID0+IGlzRWxlbWVudChlbCkgJiYgZ2V0Tm9kZU5hbWUoZWwpICE9PSAnYm9keScpO1xuICBsZXQgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICBjb25zdCBlbGVtZW50SXNGaXhlZCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCc7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgd2hpbGUgKGlzRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBpc1RvcExheWVyKGVsZW1lbnQpID8gW10gOiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGVsZW1lbnQsIG9mZnNldFBhcmVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSA8Ym9keT4gc2Nyb2xsYmFyIGFwcGVhcnMgb24gdGhlIGxlZnQgKGUuZy4gUlRMIHN5c3RlbXMpLiBVc2VcbiAgICAgIC8vIEZpcmVmb3ggd2l0aCBsYXlvdXQuc2Nyb2xsYmFyLnNpZGUgPSAzIGluIGFib3V0OmNvbmZpZyB0byB0ZXN0IHRoaXMuXG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IHggPSByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCAtIGh0bWxPZmZzZXQueDtcbiAgY29uc3QgeSA9IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueSAtIGh0bWxPZmZzZXQueTtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYyc7XG59XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgbGV0IHJhd09mZnNldFBhcmVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50O1xuXG4gIC8vIEZpcmVmb3ggcmV0dXJucyB0aGUgPGh0bWw+IGVsZW1lbnQgYXMgdGhlIG9mZnNldFBhcmVudCBpZiBpdCdzIG5vbi1zdGF0aWMsXG4gIC8vIHdoaWxlIENocm9tZSBhbmQgU2FmYXJpIHJldHVybiB0aGUgPGJvZHk+IGVsZW1lbnQuIFRoZSA8Ym9keT4gZWxlbWVudCBtdXN0XG4gIC8vIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29ycmVjdCBjYWxjdWxhdGlvbnMgZXZlbiBpZiB0aGUgPGh0bWw+IGVsZW1lbnQgaXNcbiAgLy8gbm9uLXN0YXRpYy5cbiAgaWYgKGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSA9PT0gcmF3T2Zmc2V0UGFyZW50KSB7XG4gICAgcmF3T2Zmc2V0UGFyZW50ID0gcmF3T2Zmc2V0UGFyZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICByZXR1cm4gcmF3T2Zmc2V0UGFyZW50O1xufVxuXG4vLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKGlzVG9wTGF5ZXIoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIGxldCBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgIHdoaWxlIChzdmdPZmZzZXRQYXJlbnQgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICBpZiAoaXNFbGVtZW50KHN2Z09mZnNldFBhcmVudCkgJiYgIWlzU3RhdGljUG9zaXRpb25lZChzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHJldHVybiBzdmdPZmZzZXRQYXJlbnQ7XG4gICAgICB9XG4gICAgICBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKHN2Z09mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiB3aW47XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCwgcG9seWZpbGwpO1xuICB9XG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgaXNMYXN0VHJhdmVyc2FibGVOb2RlKG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkgJiYgIWlzQ29udGFpbmluZ0Jsb2NrKG9mZnNldFBhcmVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbjtcbn1cblxuY29uc3QgZ2V0RWxlbWVudFJlY3RzID0gYXN5bmMgZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgZ2V0T2Zmc2V0UGFyZW50Rm4gPSB0aGlzLmdldE9mZnNldFBhcmVudCB8fCBnZXRPZmZzZXRQYXJlbnQ7XG4gIGNvbnN0IGdldERpbWVuc2lvbnNGbiA9IHRoaXMuZ2V0RGltZW5zaW9ucztcbiAgY29uc3QgZmxvYXRpbmdEaW1lbnNpb25zID0gYXdhaXQgZ2V0RGltZW5zaW9uc0ZuKGRhdGEuZmxvYXRpbmcpO1xuICByZXR1cm4ge1xuICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZGF0YS5yZWZlcmVuY2UsIGF3YWl0IGdldE9mZnNldFBhcmVudEZuKGRhdGEuZmxvYXRpbmcpLCBkYXRhLnN0cmF0ZWd5KSxcbiAgICBmbG9hdGluZzoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogZmxvYXRpbmdEaW1lbnNpb25zLndpZHRoLFxuICAgICAgaGVpZ2h0OiBmbG9hdGluZ0RpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gaXNSVEwoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5kaXJlY3Rpb24gPT09ICdydGwnO1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldEVsZW1lbnRSZWN0cyxcbiAgZ2V0Q2xpZW50UmVjdHMsXG4gIGdldERpbWVuc2lvbnMsXG4gIGdldFNjYWxlLFxuICBpc0VsZW1lbnQsXG4gIGlzUlRMXG59O1xuXG5mdW5jdGlvbiByZWN0c0FyZUVxdWFsKGEsIGIpIHtcbiAgcmV0dXJuIGEueCA9PT0gYi54ICYmIGEueSA9PT0gYi55ICYmIGEud2lkdGggPT09IGIud2lkdGggJiYgYS5oZWlnaHQgPT09IGIuaGVpZ2h0O1xufVxuXG4vLyBodHRwczovL3NhbXRob3IuYXUvMjAyMS9vYnNlcnZpbmctZG9tL1xuZnVuY3Rpb24gb2JzZXJ2ZU1vdmUoZWxlbWVudCwgb25Nb3ZlKSB7XG4gIGxldCBpbyA9IG51bGw7XG4gIGxldCB0aW1lb3V0SWQ7XG4gIGNvbnN0IHJvb3QgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgdmFyIF9pbztcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAoX2lvID0gaW8pID09IG51bGwgfHwgX2lvLmRpc2Nvbm5lY3QoKTtcbiAgICBpbyA9IG51bGw7XG4gIH1cbiAgZnVuY3Rpb24gcmVmcmVzaChza2lwLCB0aHJlc2hvbGQpIHtcbiAgICBpZiAoc2tpcCA9PT0gdm9pZCAwKSB7XG4gICAgICBza2lwID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgICAgdGhyZXNob2xkID0gMTtcbiAgICB9XG4gICAgY2xlYW51cCgpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qge1xuICAgICAgbGVmdCxcbiAgICAgIHRvcCxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgfSA9IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbjtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmF0aW8gPT09IDEgJiYgIXJlY3RzQXJlRXF1YWwoZWxlbWVudFJlY3RGb3JSb290TWFyZ2luLCBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSkge1xuICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgZXZlbiB0aG91Z2ggdGhlIHJhdGlvIGlzIHJlcG9ydGVkIGFzIDEsIHRoZVxuICAgICAgICAvLyBlbGVtZW50IGlzIG5vdCBhY3R1YWxseSBmdWxseSB3aXRoaW4gdGhlIEludGVyc2VjdGlvbk9ic2VydmVyJ3Mgcm9vdFxuICAgICAgICAvLyBhcmVhIGFueW1vcmUuIFRoaXMgY2FuIGhhcHBlbiB1bmRlciBwZXJmb3JtYW5jZSBjb25zdHJhaW50cy4gVGhpcyBtYXlcbiAgICAgICAgLy8gYmUgYSBidWcgaW4gdGhlIGJyb3dzZXIncyBJbnRlcnNlY3Rpb25PYnNlcnZlciBpbXBsZW1lbnRhdGlvbi4gVG9cbiAgICAgICAgLy8gd29yayBhcm91bmQgdGhpcywgd2UgY29tcGFyZSB0aGUgZWxlbWVudCdzIGJvdW5kaW5nIHJlY3Qgbm93IHdpdGhcbiAgICAgICAgLy8gd2hhdCBpdCB3YXMgYXQgdGhlIHRpbWUgd2UgY3JlYXRlZCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuIElmIHRoZXlcbiAgICAgICAgLy8gYXJlIG5vdCBlcXVhbCB0aGVuIHRoZSBlbGVtZW50IG1vdmVkLCBzbyB3ZSByZWZyZXNoLlxuICAgICAgICByZWZyZXNoKCk7XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAhcmVjdHNBcmVFcXVhbChwcmV2UmVmUmVjdCwgbmV4dFJlZlJlY3QpKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gICAgcHJldlJlZlJlY3QgPSBuZXh0UmVmUmVjdDtcbiAgICBmcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lTG9vcCk7XG4gIH1cbiAgdXBkYXRlKCk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgdmFyIF9yZXNpemVPYnNlcnZlcjI7XG4gICAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlKTtcbiAgICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gICAgfSk7XG4gICAgY2xlYW51cElvID09IG51bGwgfHwgY2xlYW51cElvKCk7XG4gICAgKF9yZXNpemVPYnNlcnZlcjIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTtcbiAgICByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5jb25zdCBkZXRlY3RPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93JDE7XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IG9mZnNldCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGF1dG9QbGFjZW1lbnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gc2hpZnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmbGlwJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IHNpemUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBoaWRlJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gYXJyb3ckMTtcblxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gaW5saW5lJDE7XG5cbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBsaW1pdFNoaWZ0JDE7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSAocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykgPT4ge1xuICAvLyBUaGlzIGNhY2hlcyB0aGUgZXhwZW5zaXZlIGBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnNgIGZ1bmN0aW9uIHNvIHRoYXRcbiAgLy8gbXVsdGlwbGUgbGlmZWN5Y2xlIHJlc2V0cyByZS11c2UgdGhlIHNhbWUgcmVzdWx0LiBJdCBvbmx5IGxpdmVzIGZvciBhXG4gIC8vIHNpbmdsZSBjYWxsLiBJZiBvdGhlciBmdW5jdGlvbnMgYmVjb21lIGV4cGVuc2l2ZSwgd2UgY2FuIGFkZCB0aGVtIGFzIHdlbGwuXG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0ge1xuICAgIHBsYXRmb3JtLFxuICAgIC4uLm9wdGlvbnNcbiAgfTtcbiAgY29uc3QgcGxhdGZvcm1XaXRoQ2FjaGUgPSB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucy5wbGF0Zm9ybSxcbiAgICBfYzogY2FjaGVcbiAgfTtcbiAgcmV0dXJuIGNvbXB1dGVQb3NpdGlvbiQxKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybVdpdGhDYWNoZVxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH07XG4iLCJpbXBvcnQgeyBhcnJvdyBhcyBhcnJvdyQxLCBjb21wdXRlUG9zaXRpb24gfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmV4cG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBpc05vZGUsIGdldE5vZGVOYW1lIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyB1bnJlZiwgY29tcHV0ZWQsIHJlZiwgc2hhbGxvd1JlZiwgd2F0Y2gsIGdldEN1cnJlbnRTY29wZSwgb25TY29wZURpc3Bvc2UsIHNoYWxsb3dSZWFkb25seSB9IGZyb20gJ3Z1ZS1kZW1pJztcblxuZnVuY3Rpb24gaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldCAhPSBudWxsICYmIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmICckZWwnIGluIHRhcmdldDtcbn1cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQodGFyZ2V0KSB7XG4gIGlmIChpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlKHRhcmdldCkpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGFyZ2V0LiRlbDtcbiAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnI2NvbW1lbnQnID8gbnVsbCA6IGVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gdG9WYWx1ZShzb3VyY2UpIHtcbiAgcmV0dXJuIHR5cGVvZiBzb3VyY2UgPT09ICdmdW5jdGlvbicgPyBzb3VyY2UoKSA6IHVucmVmKHNvdXJjZSk7XG59XG5cbi8qKlxuICogUG9zaXRpb25zIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc3VjaCB0aGF0IGl0IGlzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBhcnJvdyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmZ1bmN0aW9uIGFycm93KG9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXJyb3cnLFxuICAgIG9wdGlvbnMsXG4gICAgZm4oYXJncykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHVud3JhcEVsZW1lbnQodG9WYWx1ZShvcHRpb25zLmVsZW1lbnQpKTtcbiAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycm93JDEoe1xuICAgICAgICBlbGVtZW50LFxuICAgICAgICBwYWRkaW5nOiBvcHRpb25zLnBhZGRpbmdcbiAgICAgIH0pLmZuKGFyZ3MpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RFBSKGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgY29uc3Qgd2luID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgcmV0dXJuIHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG59XG5cbmZ1bmN0aW9uIHJvdW5kQnlEUFIoZWxlbWVudCwgdmFsdWUpIHtcbiAgY29uc3QgZHByID0gZ2V0RFBSKGVsZW1lbnQpO1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGRwcikgLyBkcHI7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBuZXh0IHRvIGEgcmVmZXJlbmNlIGVsZW1lbnQgd2hlbiBpdCBpcyBnaXZlbiBhIGNlcnRhaW4gQ1NTIHBvc2l0aW9uaW5nIHN0cmF0ZWd5LlxuICogQHBhcmFtIHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBmbG9hdGluZyBUaGUgZmxvYXRpbmcgdGVtcGxhdGUgcmVmLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGZsb2F0aW5nIG9wdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdnVlXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9IG9wdGlvbnMud2hpbGVFbGVtZW50c01vdW50ZWQ7XG4gIGNvbnN0IG9wZW5PcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlO1xuICAgIHJldHVybiAoX3RvVmFsdWUgPSB0b1ZhbHVlKG9wdGlvbnMub3BlbikpICE9IG51bGwgPyBfdG9WYWx1ZSA6IHRydWU7XG4gIH0pO1xuICBjb25zdCBtaWRkbGV3YXJlT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4gdG9WYWx1ZShvcHRpb25zLm1pZGRsZXdhcmUpKTtcbiAgY29uc3QgcGxhY2VtZW50T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTI7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTIgPSB0b1ZhbHVlKG9wdGlvbnMucGxhY2VtZW50KSkgIT0gbnVsbCA/IF90b1ZhbHVlMiA6ICdib3R0b20nO1xuICB9KTtcbiAgY29uc3Qgc3RyYXRlZ3lPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlMztcbiAgICByZXR1cm4gKF90b1ZhbHVlMyA9IHRvVmFsdWUob3B0aW9ucy5zdHJhdGVneSkpICE9IG51bGwgPyBfdG9WYWx1ZTMgOiAnYWJzb2x1dGUnO1xuICB9KTtcbiAgY29uc3QgdHJhbnNmb3JtT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTQ7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTQgPSB0b1ZhbHVlKG9wdGlvbnMudHJhbnNmb3JtKSkgIT0gbnVsbCA/IF90b1ZhbHVlNCA6IHRydWU7XG4gIH0pO1xuICBjb25zdCByZWZlcmVuY2VFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChyZWZlcmVuY2UudmFsdWUpKTtcbiAgY29uc3QgZmxvYXRpbmdFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChmbG9hdGluZy52YWx1ZSkpO1xuICBjb25zdCB4ID0gcmVmKDApO1xuICBjb25zdCB5ID0gcmVmKDApO1xuICBjb25zdCBzdHJhdGVneSA9IHJlZihzdHJhdGVneU9wdGlvbi52YWx1ZSk7XG4gIGNvbnN0IHBsYWNlbWVudCA9IHJlZihwbGFjZW1lbnRPcHRpb24udmFsdWUpO1xuICBjb25zdCBtaWRkbGV3YXJlRGF0YSA9IHNoYWxsb3dSZWYoe30pO1xuICBjb25zdCBpc1Bvc2l0aW9uZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBmbG9hdGluZ1N0eWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCdcbiAgICB9O1xuICAgIGlmICghZmxvYXRpbmdFbGVtZW50LnZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5pdGlhbFN0eWxlcztcbiAgICB9XG4gICAgY29uc3QgeFZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB4LnZhbHVlKTtcbiAgICBjb25zdCB5VmFsID0gcm91bmRCeURQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHkudmFsdWUpO1xuICAgIGlmICh0cmFuc2Zvcm1PcHRpb24udmFsdWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmluaXRpYWxTdHlsZXMsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIgKyB4VmFsICsgXCJweCwgXCIgKyB5VmFsICsgXCJweClcIixcbiAgICAgICAgLi4uKGdldERQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUpID49IDEuNSAmJiB7XG4gICAgICAgICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3kudmFsdWUsXG4gICAgICBsZWZ0OiB4VmFsICsgXCJweFwiLFxuICAgICAgdG9wOiB5VmFsICsgXCJweFwiXG4gICAgfTtcbiAgfSk7XG4gIGxldCB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXA7XG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSA9PSBudWxsIHx8IGZsb2F0aW5nRWxlbWVudC52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9wZW4gPSBvcGVuT3B0aW9uLnZhbHVlO1xuICAgIGNvbXB1dGVQb3NpdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHtcbiAgICAgIG1pZGRsZXdhcmU6IG1pZGRsZXdhcmVPcHRpb24udmFsdWUsXG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudE9wdGlvbi52YWx1ZSxcbiAgICAgIHN0cmF0ZWd5OiBzdHJhdGVneU9wdGlvbi52YWx1ZVxuICAgIH0pLnRoZW4ocG9zaXRpb24gPT4ge1xuICAgICAgeC52YWx1ZSA9IHBvc2l0aW9uLng7XG4gICAgICB5LnZhbHVlID0gcG9zaXRpb24ueTtcbiAgICAgIHN0cmF0ZWd5LnZhbHVlID0gcG9zaXRpb24uc3RyYXRlZ3k7XG4gICAgICBwbGFjZW1lbnQudmFsdWUgPSBwb3NpdGlvbi5wbGFjZW1lbnQ7XG4gICAgICBtaWRkbGV3YXJlRGF0YS52YWx1ZSA9IHBvc2l0aW9uLm1pZGRsZXdhcmVEYXRhO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgZmxvYXRpbmcgZWxlbWVudCdzIHBvc2l0aW9uIG1heSBiZSByZWNvbXB1dGVkIHdoaWxlIGl0J3MgY2xvc2VkXG4gICAgICAgKiBidXQgc3RpbGwgbW91bnRlZCAoc3VjaCBhcyB3aGVuIHRyYW5zaXRpb25pbmcgb3V0KS4gVG8gZW5zdXJlXG4gICAgICAgKiBgaXNQb3NpdGlvbmVkYCB3aWxsIGJlIGBmYWxzZWAgaW5pdGlhbGx5IG9uIHRoZSBuZXh0IG9wZW4sIGF2b2lkXG4gICAgICAgKiBzZXR0aW5nIGl0IHRvIGB0cnVlYCB3aGVuIGBvcGVuID09PSBmYWxzZWAgKG11c3QgYmUgc3BlY2lmaWVkKS5cbiAgICAgICAqL1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gb3BlbiAhPT0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBpZiAodHlwZW9mIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwKCk7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGF0dGFjaCgpIHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSAhPSBudWxsICYmIGZsb2F0aW5nRWxlbWVudC52YWx1ZSAhPSBudWxsKSB7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHVwZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGlmICghb3Blbk9wdGlvbi52YWx1ZSkge1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdhdGNoKFttaWRkbGV3YXJlT3B0aW9uLCBwbGFjZW1lbnRPcHRpb24sIHN0cmF0ZWd5T3B0aW9uLCBvcGVuT3B0aW9uXSwgdXBkYXRlLCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgd2F0Y2goW3JlZmVyZW5jZUVsZW1lbnQsIGZsb2F0aW5nRWxlbWVudF0sIGF0dGFjaCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKG9wZW5PcHRpb24sIHJlc2V0LCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgaWYgKGdldEN1cnJlbnRTY29wZSgpKSB7XG4gICAgb25TY29wZURpc3Bvc2UoY2xlYW51cCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiBzaGFsbG93UmVhZG9ubHkoeCksXG4gICAgeTogc2hhbGxvd1JlYWRvbmx5KHkpLFxuICAgIHN0cmF0ZWd5OiBzaGFsbG93UmVhZG9ubHkoc3RyYXRlZ3kpLFxuICAgIHBsYWNlbWVudDogc2hhbGxvd1JlYWRvbmx5KHBsYWNlbWVudCksXG4gICAgbWlkZGxld2FyZURhdGE6IHNoYWxsb3dSZWFkb25seShtaWRkbGV3YXJlRGF0YSksXG4gICAgaXNQb3NpdGlvbmVkOiBzaGFsbG93UmVhZG9ubHkoaXNQb3NpdGlvbmVkKSxcbiAgICBmbG9hdGluZ1N0eWxlcyxcbiAgICB1cGRhdGVcbiAgfTtcbn1cblxuZXhwb3J0IHsgYXJyb3csIHVzZUZsb2F0aW5nIH07XG4iLCJleHBvcnQgY29uc3QgaXNDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQsIGVsZW1lbnRzOiBIVE1MRWxlbWVudCB8IEhUTUxFbGVtZW50W10pOiBib29sZWFuID0+IHtcbiAgY29uc3QgdGFyZ2V0cyA9IEFycmF5LmlzQXJyYXkoZWxlbWVudHMpID8gZWxlbWVudHMgOiBbZWxlbWVudHNdO1xuICByZXR1cm4gIXRhcmdldHMuc29tZSgoZWwpID0+IGVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSk7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBwb3BvdmVyIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXBvcG92ZXItLWRvY3MpIGZvciBUaWRlUG9wb3ZlclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgb2Zmc2V0IGFzIG9mZnNldE1pZGRsZXdhcmUsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gJ0BmbG9hdGluZy11aS92dWUnO1xuICBpbXBvcnQgeyBjb21wdXRlZCwgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgaXNDbGlja091dHNpZGUgfSBmcm9tICdAL3V0aWxpdGllcy9ldmVudCc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgSFRNTCBub2RlIG92ZXIgd2hpY2ggdGhlIFBvcG92ZXIgd2lsbCBhcHBlYXIgKi9cbiAgICBhbmNob3JJZDogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgc3BhY2luZyBiZXR3ZWVuIFBvcG92ZXIgYW5kIGFuY2hvciBub2RlICovXG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb2Zmc2V0OiAxNixcbiAgfSk7XG5cbiAgY29uc3QgYW5jaG9yOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgZmxvYXRpbmc6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCByb290OiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgaXNIb3ZlcmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaXNUb2dnbGVkT3BlbiA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlzVG91Y2hEZXZpY2UgPSByZWYoZmFsc2UpO1xuICBjb25zdCBtaWRkbGV3YXJlID0gcmVmKFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXSk7XG5cbiAgY29uc3QgaXNTaG93UG9wb3ZlciA9IGNvbXB1dGVkKCgpID0+IGlzSG92ZXJlZC52YWx1ZSB8fCBpc1RvZ2dsZWRPcGVuLnZhbHVlKTtcblxuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyhhbmNob3IsIGZsb2F0aW5nLCB7XG4gICAgbWlkZGxld2FyZSxcbiAgICBzdHJhdGVneTogJ2ZpeGVkJyxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUgfHwgIWZsb2F0aW5nLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzQ2xpY2tPdXRzaWRlKGUsIFthbmNob3IudmFsdWUsIGZsb2F0aW5nLnZhbHVlXSkpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIgPSAoKSA9PiB7XG4gICAgaWYgKGlzVG91Y2hEZXZpY2UudmFsdWUpIHJldHVybjtcbiAgICBpc0hvdmVyZWQudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlID0gKCkgPT4ge1xuICAgIGlmIChpc1RvdWNoRGV2aWNlLnZhbHVlKSByZXR1cm47XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudFRvdWNoU3RhcnQgPSAoKSA9PiB7XG4gICAgaXNUb3VjaERldmljZS52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlzVG9nZ2xlZE9wZW4udmFsdWUpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhhbmRsZUFuY2hvckVsZW1lbnRUb3VjaFN0YXJ0LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgaGFuZGxlQW5jaG9yRWxlbWVudFRvdWNoU3RhcnQpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93biA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRPcGVuTGlzdGVuZXJzVG9Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVBbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGFuY2hvci52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmFuY2hvcklkKTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBpc1RvZ2dsZWRPcGVuLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCgpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5hbmNob3JJZCxcbiAgICAoKSA9PiB7XG4gICAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICAgICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gICAgfVxuICApO1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBtaWRkbGV3YXJlLnZhbHVlID0gW2F1dG9QbGFjZW1lbnQoKSwgb2Zmc2V0TWlkZGxld2FyZSh7IG1haW5BeGlzOiBwcm9wcy5vZmZzZXQgfSksIHNoaWZ0KHsgcGFkZGluZzogMTYgfSldO1xuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgIHJvb3QudmFsdWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8VHJhbnNpdGlvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXBvcG92ZXInLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8yLFxuICAgICAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiZmxvYXRpbmdcIlxuICAgICAgICA6c3R5bGU9XCJ7IC4uLmZsb2F0aW5nU3R5bGVzIH1cIlxuICAgICAgICB2LXNob3c9XCJpc1Nob3dQb3BvdmVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvVHJhbnNpdGlvbj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXBvcG92ZXIge1xuICAgIG1heC13aWR0aDogMjU2cHg7XG4gIH1cbiAgLnYtZW50ZXItZnJvbSxcbiAgLnYtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgLnYtZW50ZXItYWN0aXZlLFxuICAudi1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuICAudi1lbnRlci10byxcbiAgLnYtbGVhdmUtZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcmF0aW5nIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBkaXNwbGF5aW5nIGFuZCBzZWxlY3RpbmcgYSByYXRpbmcuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVyYXRpbmctLWRvY3MpIGZvciBUaWRlUmF0aW5nXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgdGhlIHRleHQgZGlzcGxheWVkIGJlbG93IHRoZSB0aXRsZSAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqIE1heGltdW0gcmF0aW5nIHZhbHVlIC8gTnVtYmVyIG9mIHNlZ21lbnRzICovXG4gICAgbWF4UmF0aW5nPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBjdXJyZW50IHJhdGluZyB2YWx1ZSAqL1xuICAgIHNob3dSYXRpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHRpdGxlIHRleHQgZGlzcGxheWVkIGFib3ZlIHRoZSByYXRpbmcgY29tcG9uZW50ICovXG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIG1heFJhdGluZzogMTAsXG4gICAgc2hvd1JhdGluZzogZmFsc2UsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgcmF0aW5nVmFsdWUgPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3Qgc2VnbWVudHMgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBwcm9wcy5tYXhSYXRpbmcgfSwgKF8sIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChzZWdtZW50OiBudW1iZXIpID0+IHtcbiAgICByYXRpbmdWYWx1ZS52YWx1ZSA9IHNlZ21lbnQ7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1yYXRpbmcnLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICA8c2VjdGlvbiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLkJPVFRPTS5IQUxGXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yXVwiPlxuICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzMsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMuc2hvd1JhdGluZ1wiXG4gICAgICA+XG4gICAgICAgIHt7IHJhdGluZ1ZhbHVlIH19L3t7IHByb3BzLm1heFJhdGluZyB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxzZWN0aW9uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzIsIENTUy5QQURESU5HLkJPVFRPTS5PTkUsIENTUy5PVkVSRkxPVy5YWS5ISURERU4sIENTUy5FTExJUFNJU11cIlxuICAgICAgdi1pZj1cInByb3BzLmRlc2NyaXB0aW9uXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5kZXNjcmlwdGlvbiB9fVxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIDpjbGFzcz1cIlsndGlkZS1yYXRpbmctYmFyJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRkxFWC5TSFJJTksuT05dXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1yYXRpbmctc2VnbWVudCcsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICAgIENTUy5GTEVYLlNIUklOSy5PTixcbiAgICAgICAgICBDU1MuRkxFWC5CQVNJUy5aRVJPLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5aRVJPLFxuICAgICAgICAgIHNlZ21lbnQgPT09IDEgJiYgWyd0aWRlLXJhdGluZy1zZWdtZW50LWZpcnN0J10sXG4gICAgICAgICAgc2VnbWVudCA9PT0gc2VnbWVudHMubGVuZ3RoICYmIFsndGlkZS1yYXRpbmctc2VnbWVudC1sYXN0J10sXG4gICAgICAgICAgc2VnbWVudCA8PSByYXRpbmdWYWx1ZSAmJiBbQ1NTLkJHLlNVUkZBQ0UuR1JBRElFTlRdLFxuICAgICAgICBdXCJcbiAgICAgICAgOmtleT1cInNlZ21lbnRcIlxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhzZWdtZW50KVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWZvcj1cInNlZ21lbnQgaW4gc2VnbWVudHNcIlxuICAgICAgLz5cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcmF0aW5nLWJhciB7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICB9XG5cbiAgLnRpZGUtcmF0aW5nLXNlZ21lbnQge1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigxMiUgMCwgMTAwJSAwLCA4OCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuXG4gIC50aWRlLXJhdGluZy1zZWdtZW50LWZpcnN0IHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA5OTk5cHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOTk5OXB4O1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDEwMCUgMCwgODglIDEwMCUsIDAgMTAwJSk7XG4gIH1cblxuICAudGlkZS1yYXRpbmctc2VnbWVudC1sYXN0IHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogOTk5OXB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA5OTk5cHg7XG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDEyJSAwLCAxMDAlIDAsIDEwMCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IExPR09fSEVJR0hUID0ge1xuICBMQVJHRTogMzIsXG4gIFNNQUxMOiAyNCxcbn07XG5cbmV4cG9ydCBjb25zdCBMT0dPX1dJRFRIX0xBUkdFOiBSZWNvcmQ8UmVhbG1LZXksIG51bWJlcj4gPSB7XG4gIEFFUk86IDE0NyxcbiAgQVRWOiAxNDIsXG4gIEJPQVRNQVJUOiAxMjgsXG4gIENZQ0xFOiAxNjksXG4gIEVRVUlQTUVOVDogMTIyLFxuICBQV0M6IDE0OCxcbiAgUlY6IDEyOSxcbiAgU05PVzogMTM2LFxuICBUUlVDSzogMTQ4LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IENTU19SRUFMTV9MT0dPX1NJWkUgPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG4iLCJpbXBvcnQgeyBSRUFMTSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5pbXBvcnQgdHlwZSB7IFJlYWxtLCBSZWFsbUtleSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhbG1LZXlGcm9tUmVhbG0gPSAocmVhbG06IFJlYWxtKTogUmVhbG1LZXkgPT4ge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoUkVBTE0pIGFzIFtSZWFsbUtleSwgUmVhbG1dW107XG5cbiAgY29uc3QgbWF0Y2ggPSBlbnRyaWVzLmZpbmQoKGVudHJ5KTogZW50cnkgaXMgW1JlYWxtS2V5LCBSZWFsbV0gPT4ge1xuICAgIHJldHVybiBlbnRyeVsxXSA9PT0gcmVhbG07XG4gIH0pO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1hcHBpbmcgZm9yICR7cmVhbG19IG5vdCBmb3VuZGApO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoWzBdO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcmVhbG0gbG9nbyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhIHJlYWxtJ3MgbG9nby5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXJlYWxtbG9nby0tZG9jcykgZm9yIFRpZGVSZWFsbUxvZ29cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgTE9HT19IRUlHSFQsIExPR09fV0lEVEhfTEFSR0UgfSBmcm9tICdAL3R5cGVzL1JlYWxtTG9nbyc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0UmVhbG1LZXlGcm9tUmVhbG0gfSBmcm9tICdAL3V0aWxpdGllcy9yZWFsbSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWFsbSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGV4dCBpbiB0aGUgbG9nbyAqL1xuICAgIG1hcmtPbmx5PzogYm9vbGVhbjtcblxuICAgIC8qKiBTZXRzIHRoZSByZWFsbSBmb3IgdGhpcyBsb2dvIGluc3RhbmNlICovXG4gICAgcmVhbG06IFJlYWxtO1xuICB9O1xuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG1hcmtPbmx5OiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgaW5uZXJTVkcgPSByZWY8Q29tcG9uZW50PigpO1xuXG4gIHR5cGUgQ3NzTGVuZ3RoUGl4ZWxzID0gYCR7bnVtYmVyfXB4YDtcbiAgdHlwZSBMb2dvU2l6ZSA9IHtcbiAgICBoZWlnaHQ6IENzc0xlbmd0aFBpeGVscztcbiAgICB3aWR0aDogQ3NzTGVuZ3RoUGl4ZWxzO1xuICB9O1xuXG4gIGNvbnN0IGxvZ29GdWxsID0gY29tcHV0ZWQ8TG9nb1NpemU+KCgpID0+ICh7XG4gICAgaGVpZ2h0OiBgJHtMT0dPX0hFSUdIVC5MQVJHRX1weGAsXG4gICAgd2lkdGg6IGAke0xPR09fV0lEVEhfTEFSR0VbZ2V0UmVhbG1LZXlGcm9tUmVhbG0ocHJvcHMucmVhbG0pXX1weGAsXG4gIH0pKTtcblxuICBjb25zdCBsb2dvU21hbGwgPSBjb21wdXRlZDxMb2dvU2l6ZT4oKCkgPT4ge1xuICAgIGNvbnN0IHNocmlua0ZhY3RvciA9IExPR09fSEVJR0hULlNNQUxMIC8gTE9HT19IRUlHSFQuTEFSR0U7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogYCR7TE9HT19IRUlHSFQuU01BTEx9cHhgLFxuICAgICAgd2lkdGg6IGAke01hdGgucm91bmQoTE9HT19XSURUSF9MQVJHRVtnZXRSZWFsbUtleUZyb21SZWFsbShwcm9wcy5yZWFsbSldICogc2hyaW5rRmFjdG9yKX1weGAsXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3QgbG9nb01hcms6IExvZ29TaXplID0ge1xuICAgIGhlaWdodDogJzMycHgnLFxuICAgIHdpZHRoOiAnMzJweCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gW3Byb3BzLm1hcmtPbmx5LCBwcm9wcy5yZWFsbV0sXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGVmaW5lQXN5bmNDb21wb25lbnQoKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMubWFya09ubHkpIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvYnJhbmRpbmcvbWFyay9tYXJrLSR7cHJvcHMucmVhbG19LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgICAgZWxzZSByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2JyYW5kaW5nL2xvZ28vbG9nby0ke3Byb3BzLnJlYWxtfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICB9KTtcbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1yZWFsbS1sb2dvJywgcHJvcHMubWFya09ubHkgPyAnbWFyaycgOiAnZnVsbCddXCJcbiAgICA6c3R5bGU9XCJ7XG4gICAgICAnLS1sb2dvLWhlaWdodC1mdWxsJzogbG9nb0Z1bGwuaGVpZ2h0LFxuICAgICAgJy0tbG9nby1oZWlnaHQtbWFyayc6IGxvZ29NYXJrLmhlaWdodCxcbiAgICAgICctLWxvZ28taGVpZ2h0LXNtYWxsJzogbG9nb1NtYWxsLmhlaWdodCxcbiAgICAgICctLWxvZ28td2lkdGgtZnVsbCc6IGxvZ29GdWxsLndpZHRoLFxuICAgICAgJy0tbG9nby13aWR0aC1tYXJrJzogbG9nb01hcmsud2lkdGgsXG4gICAgICAnLS1sb2dvLXdpZHRoLXNtYWxsJzogbG9nb1NtYWxsLndpZHRoLFxuICAgIH1cIlxuICA+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcmVhbG0tbG9nbyxcbiAgLnRpZGUtcmVhbG0tbG9nby5sYXJnZSB7XG4gICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtZnVsbCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgfVxuXG4gIC50aWRlLXJlYWxtLWxvZ28uc21hbGwge1xuICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLXNtYWxsKTtcbiAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgfVxuXG4gIC50aWRlLXJlYWxtLWxvZ28ubWFyayB7XG4gICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtbWFyayk7XG4gICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1tYXJrKTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLXJlYWxtLWxvZ28uc20tc21hbGwge1xuICAgICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtc21hbGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1zbWFsbCk7XG4gICAgfVxuXG4gICAgLnRpZGUtcmVhbG0tbG9nby5zbS1sYXJnZSB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1mdWxsKTtcbiAgICAgIGhlaWdodDogdmFyKC0tbG9nby1oZWlnaHQtZnVsbCk7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby5tZC1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLm1kLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby5sZy1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLmxnLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTkyMHB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby54bC1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLnhsLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IExpbmsgfSBmcm9tICdAL3R5cGVzL0xpbmsnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBsaW5rczogTGlua1tdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogJycsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0aWRlLXNlby1saW5rc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNlby1saW5rJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRk9OVC5ST0xFLkJPRFlfMl1cIlxuICAgICAgICA6a2V5PVwibGluay5sYWJlbFwiXG4gICAgICAgIHYtZm9yPVwibGluayBpbiBwcm9wcy5saW5rc1wiXG4gICAgICA+XG4gICAgICAgIDxJbnRlcm5hbEJhc2VMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdXCJcbiAgICAgICAgICA6aHJlZj1cImxpbmsudXJsXCJcbiAgICAgICAgICA6dGFyZ2V0PVwibGluay5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9JbnRlcm5hbEJhc2VMaW5rPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAvKiBUT0RPOiBSZWZhY3RvciB0byBhY2NlcHQgYnJlYWtwb2ludCBwcm9wIGluIG9yZGVyIHRvIGFjY29tcGxpc2ggdGhpcyB3aXRoIG5laXRoZXIgY3VzdG9tIGJyZWFrcG9pbnRzIG5vciBkZXBlbmRlbmN5IG9uIFZpZXdwb3J0U3RvcmUuICovXG4gIC50aWRlLXNlby1saW5rIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLXNlby1saW5rIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtc2VvLWxpbmsge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc2hlZXQgY29tcG9uZW50IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgY29udGVudCBpbiBhIG1vZGFsLWxpa2UgbWVudSBvdmVybGF5IG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBzY3JlZW4uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzaGVldC0tZG9jcykgZm9yIFRpZGVTaGVldFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCwgb25CZWZvcmVVbm1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENvbnRyb2xzIGRpc3BsYXkgb2YgdGhlIGJhY2sgYnV0dG9uLiAqL1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgZGlhbG9nRWxlbWVudDogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgICBzZXRTY3JvbGxMb2NrKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5jbG9zZSgpO1xuICAgIHNldFNjcm9sbExvY2soZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXl1cCA9ICgpID0+IHtcbiAgICBjbG9zZSgpO1xuICB9O1xuXG4gIHdhdGNoKGlzT3BlbiwgKCkgPT4ge1xuICAgIGlmICghZGlhbG9nRWxlbWVudC52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8ZGlhbG9nXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2hlZXQnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgICAgcmVmPVwiZGlhbG9nRWxlbWVudFwiXG4gICAgICBAY2FuY2VsLnByZXZlbnRcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAa2V5dXAuZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5dXBcIlxuICAgICAgY2xvc2VkYnk9XCJub25lXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1zaGVldC1ib2R5JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuVE9QLk9ORSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgICAgZGF0YS10ZXN0PVwidGlkZS1zaGVldC1iYWNrXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImNsb3NlXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdD1cInRpZGUtc2hlZXQtY2xvc2VcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxUaWRlRGl2aWRlciAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1zaGVldC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXNoZWV0IHtcbiAgICAtLXNoZWV0LXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTEpO1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAganVzdGlmeS1pdGVtczogcmlnaHQ7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQ6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWJvZHkge1xuICAgIG1heC13aWR0aDogbWluKGNhbGMoMTAwdncgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpLCAzMTFweCk7XG4gIH1cblxuICAudGlkZS1zaGVldC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXNoZWV0LXBhZGRpbmcteCkgdmFyKC0tdGlkZS1zYWZlLWZyKSB2YXIoLS1zaGVldC1wYWRkaW5nLXgpO1xuICAgIGNvbnRhaW46IGxheW91dDtcbiAgfVxuXG4gIDp3aGVyZSgudGlkZS1zaGVldC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxuXG4gICAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc3dpdGNoIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0b2dnbGluZyBhIGJvb2xlYW4gdmFsdWUuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzd2l0Y2gtLWRvY3MpIGZvciBUaWRlU3dpdGNoXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgY2xpY2thYmlsaXR5ICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXN3aXRjaCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgICAgIGlzQWN0aXZlID8gWydhY3RpdmUnLCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgZGlzYWJsZWQgJiYgW0NTUy5PUEFDSVRZLkRJU0FCTEVEXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJTd2l0Y2hcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1zd2l0Y2gtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBpc0FjdGl2ZSA/IFsnYWN0aXZlJywgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0gOiBbQ1NTLkJHLlNFQ09OREFSWV0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc3dpdGNoIHtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZTogMjRweDtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luOiB2YXIoLS10aWRlLXNwYWNpbmctMVxcLzQpO1xuICAgIC0tc3dpdGNoLWJvcmRlci13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgLS1zd2l0Y2gtd2lkdGg6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAqIDIgKyB2YXIoLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbikgKiA0KTtcbiAgICAtLXN3aXRjaC1oZWlnaHQ6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSArIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAqIDIpO1xuXG4gICAgd2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zd2l0Y2gtaGVpZ2h0KTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogdmFyKC0tc3dpdGNoLWluZGljYXRvci1tYXJnaW4pO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgYm9yZGVyLWNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvci5hY3RpdmUge1xuICAgIGxlZnQ6IGNhbGMoXG4gICAgICB2YXIoLS1zd2l0Y2gtd2lkdGgpIC0gdmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAtIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAtIHZhcigtLXN3aXRjaC1ib3JkZXItd2lkdGgpXG4gICAgKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdGFicyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXRhYnMtLWRvY3MpIGZvciBUaWRlVGFic1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVDYXJvdXNlbCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSc7XG4gIGltcG9ydCBUaWRlTGluayBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBTZXRzIGxhYmVscyBhbmQgY2FsbGJhY2sgZm9yIGVhY2ggdGFiICovXG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudFRhYiA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY3VycmVudFRhYi52YWx1ZSA9IGluZGV4O1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtdGFicycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5CT1JERVIuQk9UVE9NLlRXTywgQ1NTLkJPUkRFUi5DT0xPUi5MT1ddXCI+XG4gICAgPFRpZGVDYXJvdXNlbCA6aXMtZmxvYXRpbmc9XCJ0cnVlXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlguSEFMRl1cIlxuICAgICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGluZGV4ID09PSBjdXJyZW50VGFiID8gW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuQlJBTkRdIDogW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmVsZW1lbnQ9XCJFTEVNRU5ULkJVVFRPTlwiXG4gICAgICAgICAgOmxhYmVsPVwidGFiLmxhYmVsXCJcbiAgICAgICAgICA6c3VidGxlPVwidHJ1ZVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3JvdW5kZWQtYm9yZGVyJywgQ1NTLk1BUkdJTi5YLkhBTEYsIGluZGV4ID09PSBjdXJyZW50VGFiICYmIFtDU1MuQkcuUFJJTUFSWV1dXCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC9UaWRlQ2Fyb3VzZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnJvdW5kZWQtYm9yZGVyIHtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSAwIDA7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUsIHJlYWRvbmx5LCByZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFRpZGVUb2FzdCwgVGlkZVRvYXN0T21pdElkLCBUaWRlVG9hc3RlciB9IGZyb20gJ0AvdHlwZXMvVG9hc3QnO1xuXG5jb25zdCBUT0FTVEVSX0tFWSA9IFN5bWJvbCgndGlkZS10b2FzdGVyJyk7XG5cbmNvbnN0IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUyA9IHtcbiAgQUNUSU9OQUJMRTogMTAwMDAsXG4gIElORk9STUFUSU9OQUw6IDUwMDAsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZVRvYXN0ZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGluamVjdGVkID0gaW5qZWN0PFRpZGVUb2FzdGVyPihUT0FTVEVSX0tFWSk7XG4gIGlmIChpbmplY3RlZCkgcmV0dXJuIGluamVjdGVkO1xuXG4gIGNvbnN0IHRpbWVvdXRJZCA9IHJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuICBjb25zdCB0b2FzdHMgPSByZWY8VGlkZVRvYXN0W10+KFtdKTtcbiAgY29uc3QgaWQgPSByZWY8bnVtYmVyPigwKTtcblxuICBjb25zdCBhZGRUb2FzdCA9IChuZXdUb2FzdDogVGlkZVRvYXN0T21pdElkKSA9PiB7XG4gICAgaWQudmFsdWUrKztcbiAgICBjbGVhclRvYXN0cygpO1xuXG4gICAgdG9hc3RzLnZhbHVlLnB1c2goe1xuICAgICAgLi4ubmV3VG9hc3QsXG4gICAgICBpZDogYHRpZGUtdG9hc3QtJHtpZC52YWx1ZX1gLFxuICAgIH0gYXMgVGlkZVRvYXN0KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY2FuY2VsQXV0b0Rpc21pc3MoKTtcbiAgICAgIHN0YXJ0QXV0b0Rpc21pc3MoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xlYXJUb2FzdHMgPSAoKSA9PiB7XG4gICAgdG9hc3RzLnZhbHVlID0gW107XG4gIH07XG5cbiAgY29uc3QgY2FuY2VsQXV0b0Rpc21pc3MgPSAoKSA9PiB7XG4gICAgaWYgKHRpbWVvdXRJZC52YWx1ZSkgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgc3RhcnRBdXRvRGlzbWlzcyA9ICgpID0+IHtcbiAgICBpZiAoIXRvYXN0cy52YWx1ZS5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IGF1dG9EaXNtaXNzRHVyYXRpb24gPSB0b2FzdHMudmFsdWVbMF0uYWN0aW9uXG4gICAgICA/IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5BQ1RJT05BQkxFXG4gICAgICA6IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5JTkZPUk1BVElPTkFMO1xuICAgIHRpbWVvdXRJZC52YWx1ZSA9IHNldFRpbWVvdXQoY2xlYXJUb2FzdHMsIGF1dG9EaXNtaXNzRHVyYXRpb24pO1xuICB9O1xuXG4gIGNvbnN0IHRvYXN0ZXI6IFRpZGVUb2FzdGVyID0ge1xuICAgIGFkZFRvYXN0LFxuICAgIGNhbmNlbEF1dG9EaXNtaXNzLFxuICAgIGNsZWFyVG9hc3RzLFxuICAgIHN0YXJ0QXV0b0Rpc21pc3MsXG4gICAgdG9hc3RzOiByZWFkb25seSh0b2FzdHMpLFxuICB9O1xuXG4gIHByb3ZpZGUoVE9BU1RFUl9LRVksIHRvYXN0ZXIpO1xuXG4gIHJldHVybiB0b2FzdGVyO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdG9hc3RlciBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRldG9hc3Rlci0tZG9jcykgZm9yIFRpZGVUb2FzdGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBvbkJlZm9yZU1vdW50IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUFsZXJ0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlJztcbiAgaW1wb3J0IHsgdXNlVGlkZVRvYXN0ZXIgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVUb2FzdGVyJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgY29uc3QgeyB0b2FzdHMsIGNsZWFyVG9hc3RzLCBjYW5jZWxBdXRvRGlzbWlzcywgc3RhcnRBdXRvRGlzbWlzcyB9ID0gdXNlVGlkZVRvYXN0ZXIoKTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtdG9hc3RlcicsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkZJWEVELFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VHJhbnNpdGlvbkdyb3VwIG5hbWU9XCJwb3BcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLXRvYXN0LXdyYXAnLFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguU1RSRVRDSCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6a2V5PVwidG9hc3QuaWRcIlxuICAgICAgICAgIEBtb3VzZWVudGVyPVwiY2FuY2VsQXV0b0Rpc21pc3NcIlxuICAgICAgICAgIEBtb3VzZWxlYXZlPVwic3RhcnRBdXRvRGlzbWlzc1wiXG4gICAgICAgICAgdi1mb3I9XCJ0b2FzdCBpbiB0b2FzdHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVBbGVydFxuICAgICAgICAgICAgOmN0YS1sYWJlbD1cInRvYXN0LmFjdGlvbj8ubGFiZWxcIlxuICAgICAgICAgICAgOmhlYWRpbmc9XCJ0b2FzdC5oZWFkaW5nXCJcbiAgICAgICAgICAgIDpzdHlsZT1cInsgJy0tdGlkZS1tYXgtd2lkdGgnOiAnbm9uZScgfVwiXG4gICAgICAgICAgICBAY2xvc2U9XCJjbGVhclRvYXN0c1wiXG4gICAgICAgICAgICBAY3RhLWNsaWNrPVwidG9hc3Q/LmFjdGlvbj8uY2FsbGJhY2tcIlxuICAgICAgICAgICAgaXMtZGlzbWlzc2libGVcbiAgICAgICAgICAgIGlzLXRvYXN0XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdG9hc3QuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICA8L1RpZGVBbGVydD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1RyYW5zaXRpb25Hcm91cD5cbiAgICA8L2Rpdj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC5wb3AtZW50ZXItYWN0aXZlLFxuICAucG9wLWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCB0cmFuc2Zvcm0sIHRyYW5zbGF0ZTtcbiAgfVxuXG4gIC5wb3AtZW50ZXItZnJvbSB7XG4gICAgdHJhbnNsYXRlOiAxMDAlIDA7XG4gIH1cblxuICAucG9wLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHotaW5kZXg6IDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5wb3AtbGVhdmUtYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAudGlkZS10b2FzdC13cmFwIHtcbiAgICAgIHdpZHRoOiA0MDBweDtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iXSwibmFtZXMiOlsiT1JJRU5UQVRJT04iLCJDU1MiLCJ1dGlsaXRpZXMiLCJicmVha3BvaW50IiwidXRpbGl0eSIsIl9fZGVmYXVsdF9fIiwicHJvcHMiLCJfX3Byb3BzIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfaG9pc3RlZF8xIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ub3JtYWxpemVDbGFzcyIsIl91bnJlZiIsIlJFQUxNIiwiU0laRSIsIlNJWkVfQlVUVE9OIiwiZm9ybWF0TnVtYmVyIiwiaW5wdXQiLCJvdXRwdXQiLCJkaWdpdHMiLCJmb3JtYXRQYXNjYWxDYXNlIiwid29yZCIsImZvcm1hdFBob25lIiwiZm9ybWF0UHJpY2UiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJfY3JlYXRlQmxvY2siLCJfcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJJQ09OIiwiSUNPTl9SRUFMTSIsImlzRXhwYW5kZWQiLCJfdXNlTW9kZWwiLCJoYW5kbGVUb2dnbGVDbGljayIsIm5ld1ZhbHVlIiwiVGlkZURpdmlkZXIiLCJfY3JlYXRlVk5vZGUiLCJUaWRlSWNvbiIsIl9yZW5kZXJTbG90IiwiX2N0eCIsIkVMRU1FTlQiLCJFTEVNRU5UX0JST0FEIiwidGlkZUNvbmZpZ0RlZmF1bHRzIiwiQ09ORklHX0tFWSIsInByb3ZpZGVUaWRlQ29uZmlnIiwiY29uZmlnIiwiY29uZmlnV2l0aERlZmF1bHRzIiwicHJvdmlkZSIsInVzZVRpZGVDb25maWciLCJpbmplY3QiLCJsaW5rQ29tcG9uZW50IiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJ0eXBlQXR0cmlidXRlIiwiY29tcHV0ZWQiLCJyb290RWxlbWVudCIsIkludGVybmFsQmFzZUxpbmsiLCJfdG9EaXNwbGF5U3RyaW5nIiwiQUxFUlQiLCJlbWl0IiwiX19lbWl0Iiwic2xvdHMiLCJ1c2VTbG90cyIsImhhc0JvZHkiLCJub2RlcyIsIl9hIiwibm9kZSIsIkNvbW1lbnQiLCJpY29uVHlwZSIsIlRpZGVMaW5rIiwiVGlkZUJ1dHRvbkljb24iLCJCQURHRV9DT0xPUiIsIkJBREdFX0NPTE9SX0RFVEFJTFMiLCJCQURHRV9UUlVTVEVEIiwiX0ZyYWdtZW50IiwiY3J1bWIiLCJpbmRleCIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJfaG9pc3RlZF8yIiwiaXNUb3VjaGVkIiwiaXNTYXZlZCIsIl9jYWNoZSIsIiRldmVudCIsImN1cnJlbnRJbmRleCIsInVuaXF1ZUlkIiwidXNlSWQiLCJpbnB1dEZvcm1BdHRyaWJ1dGUiLCJpbnB1dE5hbWVBdHRyaWJ1dGUiLCJfcmVuZGVyTGlzdCIsInRhYiIsIlRZUEVfQ0FSRCIsImNhcm91c2VsUmVmIiwiY29udGFpbmVyUmVmIiwiY29udGVudFdpZHRoIiwiY3VycmVudFBhZ2VJbmRleCIsImRvdHNSZWYiLCJmcmFtZVdpZHRoIiwiaXNGaXJzdFNsaWRlIiwiaXNMYXN0U2xpZGUiLCJzaG93QnV0dG9ucyIsInNsaWRlT2JzZXJ2ZXIiLCJzbGlkZXMiLCJzbGlkZXNJblZpZXciLCJzbG90T2JzZXJ2ZXIiLCJ0b3VjaFN0YXJ0Iiwic2xpZGVzSW5WaWV3Q291bnQiLCJjdXJyZW50UGFnZSIsImRvdENvbnRhaW5lcldpZHRoIiwiZG90Q291bnRWaXNpYmxlIiwiZG90V2lkdGgiLCJkb3RHYXAiLCJ0b3RhbFBhZ2VzIiwicXVvdGllbnQiLCJzY3JvbGxUaW1lb3V0IiwiZ2V0RG90Q2xhc3MiLCJkb3RJbmRleCIsImNsYXNzTmFtZSIsImdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lciIsImVsZW1lbnQiLCJjb250YWluZXIiLCJjb250YWluZXJSZWN0IiwiY29udGFpbmVyUmlnaHQiLCJlbGVtZW50UmVjdCIsImhhbmRsZVRvdWNoRW5kIiwiZXZlbnQiLCJ0b3VjaEVuZCIsImRlbHRhWCIsImRlbHRhWSIsInNjcm9sbEJ5RGVsdGEiLCJoYW5kbGVUb3VjaFN0YXJ0IiwiaGFuZGxlV2hlZWwiLCJpc1NoaWZ0S2V5RG93biIsImlzV2hlZWwiLCJvZmZzZXQiLCJzY3JvbGxUb09mZnNldCIsIm1lYXN1cmVEb20iLCJzbGlkZSIsIm9ic2VydmVTbGlkZXMiLCJvcHRpb25zIiwiZW50cmllcyIsInNsaWRlc0FkZGVkVG9WaWV3IiwiZW50cnkiLCJzbGlkZUluZGV4IiwiYSIsImIiLCJjaGlsZCIsIm9ic2VydmVTbG90Iiwib2JzZXJ2ZXJDYWxsYmFjayIsImRlbHRhIiwic2hvd1ByZXZpb3VzUGFnZSIsInNob3dQcmV2aW91c1NsaWRlIiwic2hvd05leHRQYWdlIiwic2hvd05leHRTbGlkZSIsInRhcmdldCIsImlzU2Nyb2xsaW5nTGVmdCIsInVwZGF0ZURvdHMiLCJuZXh0U2xpZGUiLCJwcmV2aW91c1NsaWRlIiwiY2VudGVyRG90Iiwib25Nb3VudGVkIiwib25Vbm1vdW50ZWQiLCJfYiIsIl9ub3JtYWxpemVTdHlsZSIsIl8iLCJpc0FjdGl2ZSIsImhhbmRsZUNsaWNrIiwiX2hvaXN0ZWRfMyIsIl9ob2lzdGVkXzQiLCJfaG9pc3RlZF81IiwiRk9STV9LRVkiLCJ1c2VUaWRlRm9ybSIsImZvcmNlU2hvd0Vycm9ycyIsInVzZUZvcm1Db250ZXh0IiwicmV2ZWFsVmFsaWRhdGlvbkVycm9ycyIsImhhbmRsZVN1Ym1pdCIsImUiLCJPQkpFQ1RfRklUIiwicGljdHVyZSIsImltZyIsImltYWdlRGVmYXVsdCIsIm9iamVjdEZpdENsYXNzTmFtZSIsInNldEltYWdlRnJvbURlZmF1bHQiLCJjdXJyZW50U3JjIiwic291cmNlcyIsInNvdXJjZSIsIl9jIiwiVGlkZUltYWdlIiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsIlZBTElEQVRJT05fUkVTVUxUIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJtZXNzYWdlIiwidmFsdWUiLCJyZXN1bHQiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJyZXF1aXJlZCIsImlzRW1wdHlBbmRVbnJlcXVpcmVkIiwiaXNUb29Mb25nIiwiZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IiwiZXJyb3JGcm9tUHJvcHMiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGhWYWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsIm1vZGVsVmFsdWUiLCJmb3JtQ29udGV4dCIsImlzVmFsaWRhdGluZyIsImVycm9yUmVmIiwiZm9ybWF0dGVkTGFiZWwiLCJpc0NoZWNrZWQiLCJzaG93RXJyb3IiLCJoYXNFcnJvckZyb21Qcm9wIiwic3VwcG9ydGluZ1RleHRNZXNzYWdlIiwiZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0Iiwid2F0Y2hFZmZlY3QiLCJUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCIsImNoZWNrZWQiLCJvbGRWYWx1ZSIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIlZBTElEQVRPUiIsIkVSUk9SX0RJU1BMQVkiLCJoYXNGb2N1cyIsImlucHV0SWQiLCJzZWxlY3RFbGVtZW50IiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0Iiwib3B0Z3JvdXAiLCJvcHRpb24iLCJfaG9pc3RlZF82IiwiZ2V0RXJyb3JNZXNzYWdlIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImhhbmRsZUZpZWxkVmFsaWRhdGlvbiIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiaGFzRXJyb3IiLCJfX2V4cG9zZSIsIlRFWFRfSU5QVVRfVFlQRSIsIklOUFVUX01PREUiLCJnZXRUZXh0SW5wdXRNb2RlIiwidHlwZSIsImlucHV0bW9kZSIsImlucHV0RWxlbWVudCIsInNob3dQYXNzd29yZCIsImlucHV0TW9kZUF0dHJpYnV0ZSIsImlucHV0VHlwZSIsInNob3VsZFNob3dDbGVhckJ1dHRvbiIsInNob3VsZFNob3dQYXNzd29yZEJ1dHRvbiIsImhhbmRsZUNsZWFyIiwiaGFuZGxlRmllbGRDbGljayIsInByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duIiwiaGFzQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJ1cGRhdGVWYWx1ZSIsInRleHRhcmVhRWxlbWVudCIsInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duIiwiQlJFQUtQT0lOVCIsIk1FRElBIiwic2V0U2Nyb2xsTG9jayIsImlzTG9ja2VkIiwiYm9keSIsInNjcm9sbFkiLCJuZXh0VGljayIsInNhdmVkU2Nyb2xsWSIsIlRPUF9MQVlFUl9JRCIsImluaXRGYXV4VG9wTGF5ZXIiLCJ0b3BMYXllciIsIm1vZGFsQ29udGVudCIsIm1vZGFsRGlhbG9nIiwiaXNPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4iLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UiLCJzY3JvbGxDb250ZW50VG9Ub3AiLCJjbG9zZSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJoYW5kbGVFc2NhcGVLZXl1cCIsIm9uQmVmb3JlTW91bnQiLCJvbkJlZm9yZVVubW91bnQiLCJfVGVsZXBvcnQiLCIkc2xvdHMiLCJjbGFtcGVkIiwicmVzdWx0U3RhcnQiLCJyZXN1bHRFbmQiLCJoYW5kbGVQcmV2aW91c0NsaWNrIiwiaGFuZGxlTmV4dENsaWNrIiwic2lkZXMiLCJhbGlnbm1lbnRzIiwicGxhY2VtZW50cyIsImFjYyIsInNpZGUiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImZsb29yIiwiY3JlYXRlQ29vcmRzIiwidiIsIm9wcG9zaXRlU2lkZU1hcCIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwiY2xhbXAiLCJzdGFydCIsImVuZCIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlIiwicGxhY2VtZW50IiwiZ2V0QWxpZ25tZW50IiwiZ2V0T3Bwb3NpdGVBeGlzIiwiYXhpcyIsImdldEF4aXNMZW5ndGgiLCJnZXRTaWRlQXhpcyIsImdldEFsaWdubWVudEF4aXMiLCJnZXRBbGlnbm1lbnRTaWRlcyIsInJlY3RzIiwicnRsIiwiYWxpZ25tZW50IiwiYWxpZ25tZW50QXhpcyIsImxlbmd0aCIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiZ2V0UGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwic2lkZUF4aXMiLCJhbGlnbkxlbmd0aCIsImlzVmVydGljYWwiLCJjb21tb25YIiwiY29tbW9uWSIsImNvbW1vbkFsaWduIiwiY29vcmRzIiwiY29tcHV0ZVBvc2l0aW9uIiwic3RyYXRlZ3kiLCJtaWRkbGV3YXJlIiwicGxhdGZvcm0iLCJ2YWxpZE1pZGRsZXdhcmUiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsIm1pZGRsZXdhcmVEYXRhIiwicmVzZXRDb3VudCIsImkiLCJmbiIsIm5leHRYIiwibmV4dFkiLCJkYXRhIiwicmVzZXQiLCJkZXRlY3RPdmVyZmxvdyIsInN0YXRlIiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwiZWxlbWVudHMiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiY2xpcHBpbmdDbGllbnRSZWN0Iiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJlbGVtZW50Q2xpZW50UmVjdCIsImdldFBsYWNlbWVudExpc3QiLCJhdXRvQWxpZ25tZW50IiwiYWxsb3dlZFBsYWNlbWVudHMiLCJhdXRvUGxhY2VtZW50IiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QIiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QMiIsIl9wbGFjZW1lbnRzVGhhdEZpdE9uRSIsImNyb3NzQXhpcyIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsInBsYWNlbWVudHMkMSIsIm92ZXJmbG93IiwiY3VycmVudFBsYWNlbWVudCIsImFsaWdubWVudFNpZGVzIiwiY3VycmVudE92ZXJmbG93cyIsImFsbE92ZXJmbG93cyIsIm5leHRQbGFjZW1lbnQiLCJwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UiLCJkIiwicmVzZXRQbGFjZW1lbnQiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsIm1haW5BeGlzTXVsdGkiLCJjcm9zc0F4aXNNdWx0aSIsInJhd1ZhbHVlIiwibWFpbkF4aXMiLCJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJkaWZmQ29vcmRzIiwic2hpZnQiLCJjaGVja01haW5BeGlzIiwiY2hlY2tDcm9zc0F4aXMiLCJsaW1pdGVyIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWluU2lkZSIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwiaGFzV2luZG93IiwiZ2V0Tm9kZU5hbWUiLCJpc05vZGUiLCJnZXRXaW5kb3ciLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiaXNFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsImlzT3ZlcmZsb3dFbGVtZW50Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZGlzcGxheSIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImlzVG9wTGF5ZXIiLCJzZWxlY3RvciIsImlzQ29udGFpbmluZ0Jsb2NrIiwiZWxlbWVudE9yQ3NzIiwid2Via2l0IiwiaXNXZWJLaXQiLCJjc3MiLCJnZXRDb250YWluaW5nQmxvY2siLCJjdXJyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IiLCJwYXJlbnROb2RlIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJsaXN0IiwidHJhdmVyc2VJZnJhbWVzIiwiX25vZGUkb3duZXJEb2N1bWVudDIiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJ3aW4iLCJmcmFtZUVsZW1lbnQiLCJnZXRGcmFtZUVsZW1lbnQiLCJnZXRDc3NEaW1lbnNpb25zIiwiaGFzT2Zmc2V0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaG91bGRGYWxsYmFjayIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsImRvbUVsZW1lbnQiLCIkIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsInNob3VsZEFkZFZpc3VhbE9mZnNldHMiLCJpc0ZpeGVkIiwiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGUiLCJ2aXN1YWxPZmZzZXRzIiwib2Zmc2V0V2luIiwiY3VycmVudFdpbiIsImN1cnJlbnRJRnJhbWUiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImxlZnRTY3JvbGwiLCJnZXRIVE1MT2Zmc2V0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwiaWdub3JlU2Nyb2xsYmFyWCIsImh0bWxSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJvZmZzZXRzIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiaHRtbE9mZnNldCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiaHRtbCIsImdldFZpZXdwb3J0UmVjdCIsInZpc3VhbFZpZXdwb3J0IiwidmlzdWFsVmlld3BvcnRCYXNlZCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiY2FjaGUiLCJjYWNoZWRSZXN1bHQiLCJlbCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nUmVjdCIsImNsaXBwaW5nQW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldERpbWVuc2lvbnMiLCJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsImlzU3RhdGljUG9zaXRpb25lZCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsInJhd09mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsInN2Z09mZnNldFBhcmVudCIsImdldEVsZW1lbnRSZWN0cyIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZmxvYXRpbmdEaW1lbnNpb25zIiwiaXNSVEwiLCJyZWN0c0FyZUVxdWFsIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRvVmFsdWUiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwiaXNUb3VjaERldmljZSIsIm9mZnNldE1pZGRsZXdhcmUiLCJpc1Nob3dQb3BvdmVyIiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSIsImhhbmRsZUFuY2hvckVsZW1lbnRUb3VjaFN0YXJ0IiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIl9UcmFuc2l0aW9uIiwicmF0aW5nVmFsdWUiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJMT0dPX0hFSUdIVCIsIkxPR09fV0lEVEhfTEFSR0UiLCJDU1NfUkVBTE1fTE9HT19TSVpFIiwiZ2V0UmVhbG1LZXlGcm9tUmVhbG0iLCJyZWFsbSIsIm1hdGNoIiwibG9nb0Z1bGwiLCJsb2dvU21hbGwiLCJzaHJpbmtGYWN0b3IiLCJsb2dvTWFyayIsImxpbmsiLCJkaWFsb2dFbGVtZW50IiwiY3VycmVudFRhYiIsIlRpZGVDYXJvdXNlbCIsIlRPQVNURVJfS0VZIiwiQVVUT19ESVNNSVNTX0RVUkFUSU9OX01TIiwidXNlVGlkZVRvYXN0ZXIiLCJpbmplY3RlZCIsInRvYXN0cyIsImFkZFRvYXN0IiwibmV3VG9hc3QiLCJjbGVhclRvYXN0cyIsImNhbmNlbEF1dG9EaXNtaXNzIiwic3RhcnRBdXRvRGlzbWlzcyIsImF1dG9EaXNtaXNzRHVyYXRpb24iLCJ0b2FzdGVyIiwicmVhZG9ubHkiLCJfVHJhbnNpdGlvbkdyb3VwIiwidG9hc3QiLCJhcmdzIiwiVGlkZUFsZXJ0Il0sIm1hcHBpbmdzIjoiO0FBQU8sTUFBTUEsS0FBYztBQUFBLEVBQ3pCLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFDWixHQ0NhQyxJQUFNO0FBQUEsRUFDakIsZ0JBQWdCLENBQUNDLEdBQXFCQyxNQUM3QkQsRUFBVSxJQUFJLENBQUNFLE1BQVksR0FBR0QsQ0FBVSxJQUFJQyxDQUFPLEVBQUU7QUFBQSxFQUU5RCxPQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsTUFDUixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsR0FBRztBQUFBLE1BQ0QsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLElBQUE7QUFBQSxFQUNWO0FBQUEsRUFFRixPQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsRUFBQTtBQUFBLEVBRVQsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLElBQUk7QUFBQSxJQUNGLFFBQVE7QUFBQSxNQUNOLFNBQVM7QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxNQUFBO0FBQUEsTUFFWCxTQUFTO0FBQUEsUUFDUCxPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLElBQ1Y7QUFBQSxJQUVGLFNBQVM7QUFBQSxJQUNULE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxNQUNWLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxJQUFBO0FBQUEsSUFFWCxhQUFhO0FBQUEsTUFDWCxhQUFhO0FBQUEsTUFDYixhQUFhO0FBQUEsTUFDYixlQUFlO0FBQUEsTUFDZixjQUFjO0FBQUEsSUFBQTtBQUFBLEVBQ2hCO0FBQUEsRUFFRixRQUFRO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLE1BRVYsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsVUFBVTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLElBQUE7QUFBQSxJQUVYLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsUUFBUTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQUE7QUFBQSxJQUVQLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUFBO0FBQUEsSUFFUCxNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsSUFBQTtBQUFBLElBRVAsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQUE7QUFBQSxJQUVQLEtBQUs7QUFBQSxNQUNILE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUFBO0FBQUEsRUFDUDtBQUFBLEVBRUYsWUFBWTtBQUFBLElBQ1YsWUFBWTtBQUFBLElBQ1osYUFBYTtBQUFBLEVBQUE7QUFBQSxFQUVmLGNBQWM7QUFBQSxJQUNaLGNBQWM7QUFBQSxFQUFBO0FBQUEsRUFFaEIsWUFBWTtBQUFBLElBQ1YsS0FBSztBQUFBLElBQ0wsSUFBSTtBQUFBLEVBQUE7QUFBQSxFQUVOLFNBQVM7QUFBQSxJQUNQLFNB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LE1BQU07QUFBQSxJQUNKLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLElBQUk7QUFBQSxFQUFBO0FBQUEsRUFFTixRQUFRO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFBQTtBQUFBLEVBRVosV0FBVztBQUFBLElBQ1QsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLGNBQWM7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUFBO0FBQUEsRUFFUCxRQUFRO0FBQUEsSUFDTixRQUFRO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsS0FBSztBQUFBLE1BQ0gsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLEVBQ1I7QUFBQSxFQUVGLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxFQUFBO0FBQUEsRUFFZCxTQUFTO0FBQUEsSUFDUCxVQUFVO0FBQUEsSUFDVixLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFBQTtBQUFBLEVBRU4sVUFBVTtBQUFBLElBQ1IsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLElBQUE7QUFBQSxJQUVWLElBQUk7QUFBQSxNQUNGLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUFBO0FBQUEsSUFFVixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFBQTtBQUFBLEVBQ1Y7QUFBQSxFQUVGLFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFB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R0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsb0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsb0NBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEscUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxnREFBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEscUJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxnREFBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsRUFBQSxDQUFBLEdBQUEsMkJBQUFMLENBQUEsUUFBQSxDQUFBLENBQ1I7QUFFRCxRQUFBSixFQUFTLFFBQVFVLEdBQVFILENBQVM7QUFBQSxNQUNwQztBQUFBLE1BQ0EsRUFBRSxXQUFXLEdBQUE7QUFBQSxJQUFLLG1CQUtwQnZCLEVBUU0sT0FBQTtBQUFBLE1BUkEsT0FBS0csRUFBQSxDQUFBLGFBQWdCTixFQUFNLE1BQU1PLEVBQUFaLENBQUEsRUFBSSxLQUFLLE9BQU8sR0FBRyxDQUFBO0FBQUEsSUFBQTtNQU1oRHdCLEVBQUEsU0FMUmpCLEVBQUEsR0FBQTRCLEVBTUVDLEdBRktaLEVBQUEsS0FBUSxHQUFBO0FBQUE7UUFIWixPQUFLYixFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxRQUFRLEtBQUssQ0FBQTtBQUFBLFFBQ3pCLGFBQVdNLEVBQUE7QUFBQSxRQUNaLE1BQUs7QUFBQSxNQUFBOzs7SUM1REUrQixJQUFPO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsZ0JBQWdCO0FBQUEsRUFDaEIsa0JBQWtCO0FBQUEsRUFDbEIsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2YsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AscUJBQXFCO0FBQUEsRUFDckIsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsaUJBQWlCO0FBQUEsRUFDakIsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsYUFBYTtBQUFBLEVBQ2IsT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsaUJBQWlCO0FBQUEsRUFDakIsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2Ysc0JBQXNCO0FBQUEsRUFDdEIsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1Asb0JBQW9CO0FBQUEsRUFDcEIsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsZ0JBQWdCO0FBQUEsRUFDaEIsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sZUFBZTtBQUFBLEVBQ2YsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsTUFBTTtBQUFBLEVBQ04sZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsS0FBSztBQUFBLEVBQ0wsV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsa0JBQWtCO0FBQUEsRUFDbEIsVUFBVTtBQUFBLEVBQ1YsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1Ys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RUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxJQUFJLEdBQUc7QUFBQSxJQUNsQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxNQUFNLEdBQUc7QUFBQSxJQUNwQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxNQUFNLEdBQUc7QUFBQSxJQUNwQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxHQUFHLEdBQUc7QUFBQSxJQUNqQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxNQUFNLEdBQUc7QUFBQSxJQUNwQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxJQUFJLEdBQUc7QUFBQSxJQUNsQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxNQUFNLEdBQUc7QUFBQSxJQUNwQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVB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TTRDLEVBNkJrQnltQixJQUFBLEVBN0JELE1BQUssU0FBSztBQUFBLHNCQWV2QixNQUF1QjtBQUFBLG9CQWR6QjdvQixFQTJCTTBFLEdBQUEsTUFBQWMsR0FiWXBGLEVBQUFnb0IsQ0FBQSxHQUFNLENBQWZVLE1BQUs7OzBCQWRkOW9CLEVBMkJNLE9BQUE7QUFBQSxnQkExQkgsT0FBS0csRUFBQTtBQUFBO2tCQUErQ0MsRUFBQVosQ0FBQSxFQUFJLGVBQWU7QUFBQSxrQkFBZ0JZLEVBQUFaLENBQUEsRUFBSSxTQUFTO0FBQUEsa0JBQXNCWSxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLGtCQUFpQlksRUFBQVosQ0FBQSxFQUFJLFlBQVk7QUFBQSxrQkFBbUJZLEVBQUFaLENBQUEsRUFBSSxZQUFZO0FBQUEsa0JBQWlCWSxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLO0FBQUEsa0JBQWlCWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLGdCQUFBO2dCQVV0USxLQUFLc3BCLEVBQU07QUFBQSxnQkFDWCxjQUFVN2pCLEVBQUEsQ0FBQSxNQUFBQSxFQUFBLENBQUE7QUFBQSwwQkFBRTdFLEVBQUFvb0IsQ0FBQSxLQUFBcG9CLEVBQUFvb0IsQ0FBQSxFQUFBLEdBQUFPLENBQUE7QUFBQSxnQkFDWixjQUFVOWpCLEVBQUEsQ0FBQSxNQUFBQSxFQUFBLENBQUE7QUFBQSwwQkFBRTdFLEVBQUFxb0IsQ0FBQSxLQUFBcm9CLEVBQUFxb0IsQ0FBQSxFQUFBLEdBQUFNLENBQUE7QUFBQSxjQUFBO2dCQUdiM21CLEVBVVk0bUIsSUFBQTtBQUFBLGtCQVRULGNBQVcva0IsSUFBQTZrQixFQUFNLFdBQU4sZ0JBQUE3a0IsRUFBYztBQUFBLGtCQUN6QixTQUFTNmtCLEVBQU07QUFBQSxrQkFDZixPQUFPLEVBQUEsb0JBQUEsT0FBQTtBQUFBLGtCQUNQLFNBQU8xb0IsRUFBQW1vQixDQUFBO0FBQUEsa0JBQ1AsYUFBV3RlLElBQUE2ZSxLQUFBLGdCQUFBQSxFQUFPLFdBQVAsZ0JBQUE3ZSxFQUFlO0FBQUEsa0JBQzNCLGtCQUFBO0FBQUEsa0JBQ0EsWUFBQTtBQUFBLGdCQUFBOzhCQUVBLE1BQXVCO0FBQUEsb0JBQXBCcEYsR0FBQXBCLEVBQUFxbEIsRUFBTSxXQUFXLEdBQUEsQ0FBQTtBQUFBLGtCQUFBOzs7Ozs7Ozs7Ozs7IiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzYxLDYyLDYzLDY0LDY1XX0=
5374
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy9PcmllbnRhdGlvbi50cyIsIi4uL3NyYy90eXBlcy9TdHlsZXMudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUiLCIuLi9zcmMvdHlwZXMvUmVhbG0udHMiLCIuLi9zcmMvdHlwZXMvU2l6ZS50cyIsIi4uL3NyYy91dGlsaXRpZXMvZm9ybWF0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUljb24udnVlIiwiLi4vc3JjL3R5cGVzL0ljb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWNjb3JkaW9uSXRlbS52dWUiLCIuLi9zcmMvdHlwZXMvRWxlbWVudC50cyIsIi4uL3NyYy9jb21wb3NhYmxlcy91c2VUaWRlQ29uZmlnLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUiLCIuLi9zcmMvdHlwZXMvUHJpb3JpdHkudHMiLCIuLi9zcmMvdHlwZXMvVGFyZ2V0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlIiwiLi4vc3JjL3R5cGVzL0FsZXJ0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUFsZXJ0LnZ1ZSIsIi4uL3NyYy90eXBlcy9CYWRnZS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCYWRnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2VUcnVzdGVkUGFydG5lci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2VWZXJpZmllZFZlaGljbGUudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJyZWFkQ3J1bWJzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvblNhdmUudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvblNlZ21lbnRlZC52dWUiLCIuLi9zcmMvdHlwZXMvQ2FyZC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDYXJkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDYXJvdXNlbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2hpcEFjdGlvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2hpcEZpbHRlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2hpcElucHV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDb2x1bW5zLnZ1ZSIsIi4uL3NyYy9jb21wb3NhYmxlcy91c2VUaWRlRm9ybS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVGb3JtLnZ1ZSIsIi4uL3NyYy90eXBlcy9JbWFnZS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2VCYWNrZ3JvdW5kLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbmRpY2F0b3IudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlIiwiLi4vc3JjL3V0aWxpdGllcy92YWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0Q2hlY2tib3gudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0Q2hlY2tib3hEZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFJhZGlvLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFJhZGlvRGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvdHlwZXMvRm9ybWF0dGVkLnRzIiwiLi4vc3JjL3R5cGVzL1ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3QudnVlIiwiLi4vc3JjL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3REZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9UZXh0SW5wdXQudHMiLCIuLi9zcmMvdXRpbGl0aWVzL2Zvcm1zLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0YXJlYS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0YXJlYURlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1lbnVJdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9CcmVha3BvaW50LnRzIiwiLi4vc3JjL3V0aWxpdGllcy92aWV3cG9ydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNb2RhbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUGFnaW5hdGlvbi52dWUiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9jb3JlL2Rpc3QvZmxvYXRpbmctdWkuY29yZS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdnVlL2Rpc3QvZmxvYXRpbmctdWkudnVlLm1qcyIsIi4uL3NyYy91dGlsaXRpZXMvZXZlbnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUG9wb3Zlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUmF0aW5nLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbUxvZ28udHMiLCIuLi9zcmMvdXRpbGl0aWVzL3JlYWxtLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVJlYWxtTG9nby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU2VvTGlua3MudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNoZWV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVRhYnMudnVlIiwiLi4vc3JjL2NvbXBvc2FibGVzL3VzZVRpZGVUb2FzdGVyLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVRvYXN0ZXIudnVlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBPUklFTlRBVElPTiA9IHtcbiAgSE9SSVpPTlRBTDogJ2hvcml6b250YWwnLFxuICBWRVJUSUNBTDogJ3ZlcnRpY2FsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID0gKHR5cGVvZiBPUklFTlRBVElPTilba2V5b2YgdHlwZW9mIE9SSUVOVEFUSU9OXTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuaW1wb3J0IHR5cGUgeyBCcmVha3BvaW50IH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcblxuZXhwb3J0IGNvbnN0IENTUyA9IHtcbiAgd2l0aEJyZWFrcG9pbnQ6ICh1dGlsaXRpZXM6IHN0cmluZ1tdLCBicmVha3BvaW50OiBCcmVha3BvaW50KTogc3RyaW5nW10gPT4ge1xuICAgIHJldHVybiB1dGlsaXRpZXMubWFwKCh1dGlsaXR5KSA9PiBgJHticmVha3BvaW50fS0ke3V0aWxpdHl9YCk7XG4gIH0sXG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBKVVNUSUZZOiAndGlkZS10ZXh0LWp1c3RpZnknLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICAgIFNUUkVUQ0g6ICd0aWRlLWF4aXMyLXN0cmV0Y2gnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYmctc3VyZmFjZS1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJnLXN1cmZhY2UtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1iZy1zdXJmYWNlLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJnLXN1cmZhY2Utb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1iZy1zdXJmYWNlLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYmctc3VyZmFjZS1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJnLXN1cmZhY2Utc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYmctc3VyZmFjZS10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1iZy1zdXJmYWNlLXllbGxvdycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBJTlZFUlNFOiAndGlkZS1iZy1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgVkFSSUFOVDogJ3RpZGUtYmctc3VyZmFjZS12YXJpYW50JyxcbiAgICB9LFxuICAgIFRSQU5TUEFSRU5UOiB7XG4gICAgICBPTkVfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMTAwJyxcbiAgICAgIFRXT19IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0yMDAnLFxuICAgICAgVEhSRUVfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMzAwJyxcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtNDAwJyxcbiAgICB9LFxuICB9LFxuICBCT1JERVI6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1ib3JkZXItZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1ib3JkZXItaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJvcmRlci1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtYm9yZGVyLXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWJvcmRlci1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJvcmRlci1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWJvcmRlci1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1ib3JkZXItb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1ib3JkZXItcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1ib3JkZXItcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1ib3JkZXItc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYm9yZGVyLXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWJvcmRlci15ZWxsb3cnLFxuICAgICAgfSxcbiAgICAgIElOSVRJQUw6ICd0aWRlLWJvcmRlci1jb2xvci1pbml0aWFsJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJvcmRlcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYm9yZGVyLWZsb2F0aW5nJyxcbiAgICAgIEhJR0g6ICd0aWRlLWJvcmRlci1oaWdoJyxcbiAgICAgIExPVzogJ3RpZGUtYm9yZGVyLWxvdycsXG4gICAgICBQUklNQVJZOiAndGlkZS1ib3JkZXItcHJpbWFyeScsXG4gICAgfSxcbiAgICBSQURJVVM6IHtcbiAgICAgIFpFUk86ICd0aWRlLXJhZGl1cy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXJhZGl1cy0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcmFkaXVzLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXJhZGl1cy0xJyxcbiAgICAgIEZVTEw6ICd0aWRlLXJhZGl1cy1mdWxsJyxcbiAgICB9LFxuICAgIFNUWUxFOiB7XG4gICAgICBEQVNIRUQ6ICd0aWRlLWJvcmRlci1kYXNoZWQnLFxuICAgICAgU09MSUQ6ICd0aWRlLWJvcmRlci1zb2xpZCcsXG4gICAgfSxcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1ib3R0b20tMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1ib3R0b20tMicsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLTInLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWxlZnQtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItbGVmdC0yJyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItcmlnaHQtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItdG9wLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItdG9wLTInLFxuICAgIH0sXG4gIH0sXG4gIEJPWF9TSVpJTkc6IHtcbiAgICBCT1JERVJfQk9YOiAndGlkZS1ib3gtYm9yZGVyJyxcbiAgICBDT05URU5UX0JPWDogJ3RpZGUtYm94LWNvbnRlbnQnLFxuICB9LFxuICBCUkVBS19JTlNJREU6IHtcbiAgICBBVk9JRF9DT0xVTU46ICd0aWRlLWJyZWFrLWluc2lkZS1hdm9pZC1jb2x1bW4nLFxuICB9LFxuICBCUkVBS19XT1JEOiB7XG4gICAgT0ZGOiAndGlkZS1icmVhay1pbml0aWFsJyxcbiAgICBPTjogJ3RpZGUtYnJlYWstd29yZCcsXG4gIH0sXG4gIENPTFVNTlM6IHtcbiAgICBJTklUSUFMOiAndGlkZS1jb2x1bW5zLWluaXRpYWwnLFxuICAgIE9ORTogJ3RpZGUtY29sdW1ucy0xJyxcbiAgICBUV086ICd0aWRlLWNvbHVtbnMtMicsXG4gICAgVEhSRUU6ICd0aWRlLWNvbHVtbnMtMycsXG4gICAgRk9VUjogJ3RpZGUtY29sdW1ucy00JyxcbiAgfSxcbiAgQ1VSU09SOiB7XG4gICAgTk9UX0FMTE9XRUQ6ICd0aWRlLWN1cnNvci1ub3QtYWxsb3dlZCcsXG4gICAgUE9JTlRFUjogJ3RpZGUtY3Vyc29yLXBvaW50ZXInLFxuICAgIFRFWFQ6ICd0aWRlLWN1cnNvci10ZXh0JyxcbiAgfSxcbiAgRElTUExBWToge1xuICAgIEJMT0NLOiAndGlkZS1kaXNwbGF5LWJsb2NrJyxcbiAgICBDT05URU5UUzogJ3RpZGUtZGlzcGxheS1jb250ZW50cycsXG4gICAgRkxFWDogJ3RpZGUtZGlzcGxheS1mbGV4JyxcbiAgICBHUklEOiAndGlkZS1kaXNwbGF5LWdyaWQnLFxuICAgIElOSVRJQUw6ICd0aWRlLWRpc3BsYXktaW5pdGlhbCcsXG4gICAgSU5MSU5FOiAndGlkZS1kaXNwbGF5LWlubGluZScsXG4gICAgSU5MSU5FX0JMT0NLOiAndGlkZS1kaXNwbGF5LWlubGluZS1ibG9jaycsXG4gICAgSU5MSU5FX0ZMRVg6ICd0aWRlLWRpc3BsYXktaW5saW5lLWZsZXgnLFxuICAgIE5PTkU6ICd0aWRlLWRpc3BsYXktbm9uZScsXG4gIH0sXG4gIEVMTElQU0lTOiAndGlkZS1lbGxpcHNpcycsXG4gIEZMRVg6IHtcbiAgICBCQVNJUzoge1xuICAgICAgQVVUTzogJ3RpZGUtZmxleC1iYXNpcy1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLWZsZXgtYmFzaXMtMCcsXG4gICAgfSxcbiAgICBESVJFQ1RJT046IHtcbiAgICAgIENPTFVNTjogJ3RpZGUtZmxleC1jb2x1bW4nLFxuICAgICAgQ09MVU1OX1JFVkVSU0U6ICd0aWRlLWZsZXgtY29sdW1uLXJldmVyc2UnLFxuICAgICAgUk9XOiAndGlkZS1mbGV4LXJvdycsXG4gICAgICBST1dfUkVWRVJTRTogJ3RpZGUtZmxleC1yb3ctcmV2ZXJzZScsXG4gICAgfSxcbiAgICBHUk9XOiB7XG4gICAgICBPRkY6ICd0aWRlLWdyb3ctbm9uZScsXG4gICAgICBPTjogJ3RpZGUtZ3JvdycsXG4gICAgfSxcbiAgICBTSFJJTks6IHtcbiAgICAgIE9GRjogJ3RpZGUtc2hyaW5rLW5vbmUnLFxuICAgICAgT046ICd0aWRlLXNocmluaycsXG4gICAgfSxcbiAgICBXUkFQOiAndGlkZS1mbGV4LXdyYXAnLFxuICB9LFxuICBGT05UOiB7XG4gICAgQ09MT1I6IHtcbiAgICAgIEdMT0JBTDoge1xuICAgICAgICBFUlJPUjogJ3RpZGUtZm9udC1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWZvbnQtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWZvbnQtc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWZvbnQtd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWZvbnQtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1mb250LWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1mb250LXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtZm9udC1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtZm9udC10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1mb250LXllbGxvdycsXG5cbiAgICAgICAgUFJJTUFSWToge1xuICAgICAgICAgIEJMVUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1ibHVlJyxcbiAgICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1wcmltYXJ5LWdyZWVuJyxcbiAgICAgICAgICBMSU1FOiAndGlkZS1mb250LXByaW1hcnktbGltZScsXG4gICAgICAgICAgT1JBTkdFOiAndGlkZS1mb250LXByaW1hcnktb3JhbmdlJyxcbiAgICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHJpbWFyeS1wdXJwbGUnLFxuICAgICAgICAgIFJFRDogJ3RpZGUtZm9udC1wcmltYXJ5LXJlZCcsXG4gICAgICAgICAgU0FMTU9OOiAndGlkZS1mb250LXByaW1hcnktc2FsbW9uJyxcbiAgICAgICAgICBURUFMOiAndGlkZS1mb250LXByaW1hcnktdGVhbCcsXG4gICAgICAgICAgWUVMTE9XOiAndGlkZS1mb250LXByaW1hcnkteWVsbG93JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBQUklNQVJZOiAndGlkZS1mb250LW9uLXByaW1hcnknLFxuICAgICAgU0VDT05EQVJZOiAndGlkZS1mb250LW9uLXNlY29uZGFyeScsXG4gICAgICBTVVJGQUNFOiB7XG4gICAgICAgIEJSQU5EOiAndGlkZS1mb250LW9uLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgICBERUZBVUxUOiAndGlkZS1mb250LW9uLXN1cmZhY2UnLFxuICAgICAgICBJTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtaW52ZXJzZScsXG4gICAgICAgIFZBUklBTlQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50JyxcbiAgICAgICAgVkFSSUFOVF9JTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudC1pbnZlcnNlJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBST0xFOiB7XG4gICAgICBESVNQTEFZXzE6ICd0aWRlLXR5cG9ncmFwaHktZGlzcGxheS0xJyxcbiAgICAgIEhFQURMSU5FXzE6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMScsXG4gICAgICBIRUFETElORV8yOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTInLFxuICAgICAgSEVBRExJTkVfMzogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0zJyxcbiAgICAgIFRJVExFXzE6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMScsXG4gICAgICBUSVRMRV8yOiAndGlkZS10eXBvZ3JhcGh5LXRpdGxlLTInLFxuICAgICAgQk9EWV8xOiAndGlkZS10eXBvZ3JhcGh5LWJvZHktMScsXG4gICAgICBCT0RZXzI6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0yJyxcbiAgICAgIExBQkVMXzE6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMScsXG4gICAgICBMQUJFTF8xX1NFTUlCT0xEOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTEtc2VtaWJvbGQnLFxuICAgICAgTEFCRUxfMjogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yJyxcbiAgICAgIExBQkVMXzJfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMi1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8zOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTMnLFxuICAgICAgTElOS18xOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMScsXG4gICAgICBMSU5LXzI6ICd0aWRlLXR5cG9ncmFwaHktbGluay0yJyxcbiAgICAgIExJTktfMzogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTMnLFxuICAgICAgQlVUVE9OXzE6ICd0aWRlLXR5cG9ncmFwaHktYnV0dG9uLTEnLFxuICAgICAgQlVUVE9OXzI6ICd0aWRlLXR5cG9ncmFwaHktYnV0dG9uLTInLFxuICAgIH0sXG4gICAgU0laRToge1xuICAgICAgVFdFTFZFOiAndGlkZS1mb250LTEyJyxcbiAgICAgIEZPVVJURUVOOiAndGlkZS1mb250LTE0JyxcbiAgICAgIFNJWFRFRU46ICd0aWRlLWZvbnQtMTYnLFxuICAgICAgVFdFTlRZOiAndGlkZS1mb250LTIwJyxcbiAgICAgIFRXRU5UWV9GT1VSOiAndGlkZS1mb250LTI0JyxcbiAgICAgIFRISVJUWV9UV086ICd0aWRlLWZvbnQtMzInLFxuICAgIH0sXG4gICAgV0VJR0hUOiB7XG4gICAgICBGT1VSX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNDAwJyxcbiAgICAgIEZJVkVfSFVORFJFRDogJ3RpZGUtZm9udC01MDAnLFxuICAgICAgU0lYX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNjAwJyxcbiAgICAgIFNFVkVOX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNzAwJyxcbiAgICB9LFxuICB9LFxuICBHQVA6IHtcbiAgICBaRVJPOiAndGlkZS1nYXAtMCcsXG4gICAgUVVBUlRFUjogJ3RpZGUtZ2FwLTEvNCcsXG4gICAgSEFMRjogJ3RpZGUtZ2FwLTEvMicsXG4gICAgT05FOiAndGlkZS1nYXAtMScsXG4gICAgVFdPOiAndGlkZS1nYXAtMicsXG4gICAgRk9VUjogJ3RpZGUtZ2FwLTQnLFxuICB9LFxuICBHUklEOiB7XG4gICAgRkxVSUQ6ICd0aWRlLWZsdWlkJyxcbiAgICBJVEVNOiAndGlkZS1ncmlkLWl0ZW0nLFxuICAgIExBWU9VVDogJ3RpZGUtZ3JpZC1sYXlvdXQnLFxuICAgIFhMOiAndGlkZS1ncmlkLXhsJyxcbiAgfSxcbiAgSEVJR0hUOiB7XG4gICAgQVVUTzogJ3RpZGUtaGVpZ2h0LWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLWhlaWdodC0wJyxcbiAgICBGVUxMOiAndGlkZS1oZWlnaHQtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC1oZWlnaHQtZnVsbCcsXG4gICAgTUlOX1pFUk86ICd0aWRlLW1pbi1oZWlnaHQtMCcsXG4gIH0sXG4gIElTT0xBVElPTjoge1xuICAgIElTT0xBVEU6ICd0aWRlLWlzb2xhdGUnLFxuICB9LFxuICBMSVNUX0JVTExFVFM6IHtcbiAgICBPRkY6ICd0aWRlLWxpc3Qtbm9uZScsXG4gIH0sXG4gIE1BUkdJTjoge1xuICAgIEJPVFRPTToge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tbGVmdC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tdG9wLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4teC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXktMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPUEFDSVRZOiB7XG4gICAgRElTQUJMRUQ6ICd0aWRlLW9wYWNpdHktZGlzYWJsZWQnLFxuICAgIE9GRjogJ3RpZGUtb3BhY2l0eS1ub25lJyxcbiAgICBPTjogJ3RpZGUtb3BhY2l0eScsXG4gIH0sXG4gIE9WRVJGTE9XOiB7XG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUteC1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteC1oaWRkZW4nLFxuICAgICAgU0NST0xMOiAndGlkZS14LXNjcm9sbCcsXG4gICAgfSxcbiAgICBYWToge1xuICAgICAgQVVUTzogJ3RpZGUteHktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXh5LWhpZGRlbicsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBBVVRPOiAndGlkZS15LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS15LWhpZGRlbicsXG4gICAgfSxcbiAgfSxcbiAgUEFERElORzoge1xuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctYm90dG9tLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctbGVmdC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctcmlnaHQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy15LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy15LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgUE9JTlRFUl9FVkVOVFM6IHtcbiAgICBPRkY6ICd0aWRlLXBvaW50ZXItZXZlbnRzLW5vbmUnLFxuICAgIE9OOiAndGlkZS1wb2ludGVyLWV2ZW50cycsXG4gIH0sXG4gIFBPU0lUSU9OOiB7XG4gICAgQUJTT0xVVEU6ICd0aWRlLXBvc2l0aW9uLWFic29sdXRlJyxcbiAgICBGSVhFRDogJ3RpZGUtcG9zaXRpb24tZml4ZWQnLFxuICAgIFJFTEFUSVZFOiAndGlkZS1wb3NpdGlvbi1yZWxhdGl2ZScsXG4gICAgU1RBVElDOiAndGlkZS1wb3NpdGlvbi1zdGF0aWMnLFxuICAgIFNUSUNLWTogJ3RpZGUtcG9zaXRpb24tc3RpY2t5JyxcbiAgfSxcbiAgUE9TSVRJT05JTkc6IHtcbiAgICBCT1RUT006ICd0aWRlLWJvdHRvbS0wJyxcbiAgICBMRUZUOiAndGlkZS1sZWZ0LTAnLFxuICAgIFJJR0hUOiAndGlkZS1yaWdodC0wJyxcbiAgICBUT1A6ICd0aWRlLXRvcC0wJyxcbiAgfSxcbiAgUkFUSU86IHtcbiAgICBPTkVfVE9fT05FOiAndGlkZS1yYXRpby0xLzEnLFxuICAgIFNJWFRFRU5fVE9fTklORTogJ3RpZGUtcmF0aW8tMTYvOScsXG4gICAgVEhSRUVfVE9fVFdPOiAndGlkZS1yYXRpby0zLzInLFxuICB9LFxuICBTQ1JPTExCQVI6IHtcbiAgICBPRkY6ICd0aWRlLXNjcm9sbGJhci1ub25lJyxcbiAgfSxcbiAgU0hBRE9XOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtc2hhZG93LWluaXRpYWwnLFxuICAgIEJPVFRPTTogJ3RpZGUtc2hhZG93LWJvdHRvbScsXG4gICAgVE9QOiAndGlkZS1zaGFkb3ctdG9wJyxcbiAgICBURVhUOiAndGlkZS1zaGFkb3ctdGV4dCcsXG4gIH0sXG4gIFNOQVA6IHtcbiAgICBPTjogJ3RpZGUtc2Nyb2xsLXNuYXAnLFxuICB9LFxuICBTTkFQX0FMSUdOOiB7XG4gICAgU1RBUlQ6ICd0aWRlLXNjcm9sbC1zbmFwLXN0YXJ0JyxcbiAgfSxcbiAgU1RSSUtFVEhST1VHSDoge1xuICAgIE9GRjogJ3RpZGUtc3RyaWtldGhyb3VnaC1ub25lJyxcbiAgICBPTjogJ3RpZGUtc3RyaWtldGhyb3VnaCcsXG4gIH0sXG4gIFRFWFRfVFJBTlNGT1JNOiB7XG4gICAgTE9XRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLWxvd2VyJyxcbiAgICBOT05FOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1ub25lJyxcbiAgICBVUFBFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tdXBwZXInLFxuICB9LFxuICBVTkRFUkxJTkU6IHtcbiAgICBIT1ZFUjoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ob3Zlci1ub25lJyxcbiAgICB9LFxuICAgIFJFU1Q6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUnLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgfSxcbiAgfSxcbiAgVVNFUl9TRUxFQ1Q6IHtcbiAgICBJTklUSUFMOiAndGlkZS11c2VyLXNlbGVjdC1pbml0aWFsJyxcbiAgICBOT05FOiAndGlkZS11c2VyLXNlbGVjdC1ub25lJyxcbiAgfSxcbiAgVklTSUJJTElUWToge1xuICAgIE9GRjogJ3RpZGUtdmlzaWJsZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdmlzaWJsZScsXG4gIH0sXG4gIFdISVRFU1BBQ0VfV1JBUDoge1xuICAgIE9GRjogJ3RpZGUtd2hpdGVzcGFjZS1ub3dyYXAnLFxuICB9LFxuICBXSURUSDoge1xuICAgIEFVVE86ICd0aWRlLXdpZHRoLWF1dG8nLFxuICAgIEZVTEw6ICd0aWRlLXdpZHRoLWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtd2lkdGgtZnVsbCcsXG4gICAgTUlOX1pFUk86ICd0aWRlLW1pbi13aWR0aC0wJyxcbiAgICBTVFJFVENIOiAndGlkZS13aWR0aC1zdHJldGNoJyxcbiAgICBaRVJPOiAndGlkZS13aWR0aC0wJyxcbiAgfSxcbiAgWl9JTkRFWDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXotaW5kZXgtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS16LWluZGV4LTEnLFxuICB9LFxufSBhcyBjb25zdDtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgZGl2aWRlciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVkaXZpZGVyLS1kb2NzKSBmb3IgVGlkZURpdmlkZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IE9SSUVOVEFUSU9OIH0gZnJvbSAnQC90eXBlcy9PcmllbnRhdGlvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IE9yaWVudGF0aW9uIH0gZnJvbSAnQC90eXBlcy9PcmllbnRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIERpdmlkZXIgaXMgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCAqL1xuICAgIG9yaWVudGF0aW9uPzogT3JpZW50YXRpb247XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvcmllbnRhdGlvbjogT1JJRU5UQVRJT04uSE9SSVpPTlRBTCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1kaXZpZGVyJ11cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICBwcm9wcy5vcmllbnRhdGlvbiA9PT0gT1JJRU5UQVRJT04uSE9SSVpPTlRBTFxuICAgICAgICAgID8gW0NTUy5NQVJHSU4uWS5IQUxGLCBDU1MuQk9SREVSLkJPVFRPTS5PTkUsIENTUy5XSURUSC5GVUxMXVxuICAgICAgICAgIDogW0NTUy5NQVJHSU4uWC5IQUxGLCBDU1MuQk9SREVSLlJJR0hULk9ORSwgQ1NTLkhFSUdIVC5GVUxMXSxcbiAgICAgIF1cIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtZGl2aWRlciB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBSVlQ6ICdydnQnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpY29uIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWljb24tLWRvY3MpIGZvciBUaWRlSWNvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgZGVmaW5lQXN5bmNDb21wb25lbnQsIG1hcmtSYXcsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IFJFQUxNIH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdFBhc2NhbENhc2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB0eXBlIHsgQ29tcG9uZW50IH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBJY29uICovXG4gICAgaWNvbjogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGljb24gZGltZW5zaW9ucyAqL1xuICAgIHNpemU/OiBTaXplO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgc2l6ZTogU0laRS5TTUFMTCxcbiAgfSk7XG5cbiAgY29uc3QgaW5uZXJTVkcgPSByZWY8Q29tcG9uZW50PigpO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmljb24sXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaWQ6IHN0cmluZyA9IHByb3BzLmljb247XG4gICAgICBjb25zdCBuYW1lID0gZm9ybWF0UGFzY2FsQ2FzZShpZCk7XG4gICAgICBjb25zdCBbcHJlZml4XSA9IGlkLnNwbGl0KCctJyk7XG4gICAgICBjb25zdCByZWFsbUZvbGRlciA9IFJFQUxNW3ByZWZpeD8udG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgUkVBTE1dO1xuXG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkZWZpbmVBc3luY0NvbXBvbmVudCgoKSA9PiB7XG4gICAgICAgIGlmIChyZWFsbUZvbGRlcikge1xuICAgICAgICAgIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvaWNvbnMvcmVhbG0vJHtyZWFsbUZvbGRlcn0vSWNvbiR7bmFtZX0uc3ZnP2NvbXBvbmVudGApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICB9KTtcblxuICAgICAgaW5uZXJTVkcudmFsdWUgPSBtYXJrUmF3KGNvbXBvbmVudCk7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pY29uJywgcHJvcHMuc2l6ZSwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIj5cbiAgICA8Q29tcG9uZW50XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICAgIDpkYXRhLWljb249XCJpY29uXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgOmlzPVwiaW5uZXJTVkdcIlxuICAgICAgdi1pZj1cImlubmVyU1ZHXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZT5cbiAgLnRpZGUtaWNvbiB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24uc21hbGwge1xuICAgIHdpZHRoOiAxLjI1cmVtO1xuICAgIGhlaWdodDogMS4yNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24gc3ZnIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdHlwZSB7IFJlYWxtS2V5IH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5cbmV4cG9ydCBjb25zdCBJQ09OID0ge1xuICBBQ0NPVU5UX0JBTEFOQ0U6ICdhY2NvdW50LWJhbGFuY2UnLFxuICBBQ1VURTogJ2FjdXRlJyxcbiAgQUREOiAnYWRkJyxcbiAgQUlfREVTQ1JJUFRJT046ICdhaS1kZXNjcmlwdGlvbicsXG4gIEFMSUdOX1NQQUNFX0VWRU46ICdhbGlnbi1zcGFjZS1ldmVuJyxcbiAgQVBQTEVfUEFZOiAnYXBwbGUtcGF5JyxcbiAgQVJST1dfQkFDSzogJ2Fycm93LWJhY2snLFxuICBBUlJPV19DWUNMRTogJ2Fycm93LWN5Y2xlJyxcbiAgQVJST1dfRk9SV0FSRDogJ2Fycm93LWZvcndhcmQnLFxuICBBUlJPV19SSUdIVDogJ2Fycm93LXJpZ2h0JyxcbiAgQVJST1dfVVA6ICdhcnJvdy11cCcsXG4gIEFTU0lHTk1FTlQ6ICdhc3NpZ25tZW50JyxcbiAgQVRUQUNIX01PTkVZOiAnYXR0YWNoLW1vbmV5JyxcbiAgQVVUT19SRU5FVzogJ2F1dG8tcmVuZXcnLFxuICBBV0FSRF9TVEFSOiAnYXdhcmQtc3RhcicsXG4gIEJFRDogJ2JlZCcsXG4gIEJPTFQ6ICdib2x0JyxcbiAgQk9PS01BUks6ICdib29rbWFyaycsXG4gIEJVTktIT1VTRTogJ2J1bmtob3VzZScsXG4gIENBTENVTEFURTogJ2NhbGN1bGF0ZScsXG4gIENBTEVOREFSX01PTlRIOiAnY2FsZW5kYXItbW9udGgnLFxuICBDQUxMOiAnY2FsbCcsXG4gIENBTExfUVVBTElUWTogJ2NhbGwtcXVhbGl0eScsXG4gIENBUl9SRU5UQUw6ICdjYXItcmVudGFsJyxcbiAgQ0hFQ0s6ICdjaGVjaycsXG4gIENIRVZST05fTEVGVDogJ2NoZXZyb24tbGVmdCcsXG4gIENIRVZST05fUklHSFQ6ICdjaGV2cm9uLXJpZ2h0JyxcbiAgQ0xFQVI6ICdjbGVhcicsXG4gIENMT1NFOiAnY2xvc2UnLFxuICBDT05UUkFDVDogJ2NvbnRyYWN0JyxcbiAgQ1JBU0g6ICdjcmFzaCcsXG4gIERBU0hCT0FSRF9DVVNUT01JWkU6ICdkYXNoYm9hcmQtY3VzdG9taXplJyxcbiAgREVMRVRFOiAnZGVsZXRlJyxcbiAgRElBTU9ORDogJ2RpYW1vbmQnLFxuICBESVJFQ1RJT05TX0JPQVQ6ICdkaXJlY3Rpb25zLWJvYXQnLFxuICBET01BSU46ICdkb21haW4nLFxuICBEUkFGVDogJ2RyYWZ0JyxcbiAgRURJVDogJ2VkaXQnLFxuICBFTkdJTkU6ICdlbmdpbmUnLFxuICBFTkdJTkVFUklORzogJ2VuZ2luZWVyaW5nJyxcbiAgRVJST1I6ICdlcnJvcicsXG4gIEVYUEFORF9DT05URU5UOiAnZXhwYW5kLWNvbnRlbnQnLFxuICBFWFBBTkRfTEVTUzogJ2V4cGFuZC1sZXNzJyxcbiAgRVhQQU5EX01PUkU6ICdleHBhbmQtbW9yZScsXG4gIEZBQ0VCT09LOiAnZmFjZWJvb2snLFxuICBGQVZPUklURTogJ2Zhdm9yaXRlJyxcbiAgRkFWT1JJVEVfRklMTEVEOiAnZmF2b3JpdGUtZmlsbGVkJyxcbiAgRkxBRzogJ2ZsYWcnLFxuICBGT1JNQVRfQk9MRDogJ2Zvcm1hdC1ib2xkJyxcbiAgRk9STUFUX0lUQUxJQzogJ2Zvcm1hdC1pdGFsaWMnLFxuICBGT1JNQVRfTElTVF9CVUxMRVRFRDogJ2Zvcm1hdC1saXN0LWJ1bGxldGVkJyxcbiAgRk9SVU06ICdmb3J1bScsXG4gIEdBUzogJ2dhcycsXG4gIEdBVkVMOiAnZ2F2ZWwnLFxuICBHRUFSUzogJ2dlYXJzJyxcbiAgR0xPQkVfTE9DQVRJT05fUElOOiAnZ2xvYmUtbG9jYXRpb24tcGluJyxcbiAgR09PR0xFOiAnZ29vZ2xlJyxcbiAgR09PR0xFX1BBWTogJ2dvb2dsZS1wYXknLFxuICBHUklEOiAnZ3JpZCcsXG4gIEhBTkRTSEFLRTogJ2hhbmRzaGFrZScsXG4gIEhBTkRZTUFOOiAnaGFuZHltYW4nLFxuICBIRUlHSFQ6ICdoZWlnaHQnLFxuICBIRUxQOiAnaGVscCcsXG4gIElORk86ICdpbmZvJyxcbiAgSU5GT1JNQVRJT046ICdpbmZvcm1hdGlvbicsXG4gIElOU0VSVF9URVhUOiAnaW5zZXJ0LXRleHQnLFxuICBJTlNUQUdSQU06ICdpbnN0YWdyYW0nLFxuICBJT1NfU0hBUkU6ICdpb3Mtc2hhcmUnLFxuICBMQVlPVVQ6ICdsYXlvdXQnLFxuICBMRVZFTExJTkdfSkFDSzogJ2xldmVsbGluZy1qYWNrJyxcbiAgTElOS0VEX0lOOiAnbGlua2VkLWluJyxcbiAgTE9DQUxfU0hJUFBJTkc6ICdsb2NhbC1zaGlwcGluZycsXG4gIExPQ0s6ICdsb2NrJyxcbiAgTUFJTDogJ21haWwnLFxuICBNRU5VOiAnbWVudScsXG4gIE1PTkVZX0JBRzogJ21vbmV5LWJhZycsXG4gIE1PUkVfSE9SSVo6ICdtb3JlLWhvcml6JyxcbiAgTU9WRTogJ21vdmUnLFxuICBOT1RJRklDQVRJT05TOiAnbm90aWZpY2F0aW9ucycsXG4gIE9ET01FVEVSOiAnb2RvbWV0ZXInLFxuICBPUEVOX0lOX05FVzogJ29wZW4taW4tbmV3JyxcbiAgUEFMRVRURTogJ3BhbGV0dGUnLFxuICBQQVlQQUw6ICdwYXlwYWwnLFxuICBQRVJTT046ICdwZXJzb24nLFxuICBQRVJTT05fU0VBUkNIOiAncGVyc29uLXNlYXJjaCcsXG4gIFBIT1RPX0NBTUVSQTogJ3Bob3RvLWNhbWVyYScsXG4gIFBJTlRFUkVTVDogJ3BpbnRlcmVzdCcsXG4gIFBMQVlfQVJST1c6ICdwbGF5LWFycm93JyxcbiAgUE9MSUNZOiAncG9saWN5JyxcbiAgUE9XRVI6ICdwb3dlcicsXG4gIFBPV0VSX09GRjogJ3Bvd2VyLW9mZicsXG4gIFBSSU9SSVRZX0hJR0g6ICdwcmlvcml0eS1oaWdoJyxcbiAgUkVNT1ZFOiAncmVtb3ZlJyxcbiAgUkVRVUVTVF9RVU9URTogJ3JlcXVlc3QtcXVvdGUnLFxuICBSRVNFVF9XUkVOQ0g6ICdyZXNldC13cmVuY2gnLFxuICBST0FEOiAncm9hZCcsXG4gIFJPVU5ERURfQ09STkVSOiAncm91bmRlZC1jb3JuZXInLFxuICBSVUxFUjogJ3J1bGVyJyxcbiAgU0FJTElORzogJ3NhaWxpbmcnLFxuICBTQ0hPT0w6ICdzY2hvb2wnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBTRUFUSU5HOiAnc2VhdGluZycsXG4gIFNFTEw6ICdzZWxsJyxcbiAgU0VOU09SUzogJ3NlbnNvcnMnLFxuICBTRVRUSU5HUzogJ3NldHRpbmdzJyxcbiAgU0hBUkU6ICdzaGFyZScsXG4gIFNISUVMRF9DSEVDSzogJ3NoaWVsZC1jaGVjaycsXG4gIFNIT1BQSU5HX0NBUlQ6ICdzaG9wcGluZy1jYXJ0JyxcbiAgU0xFRVBTOiAnc2xlZXBzJyxcbiAgU01TOiAnc21zJyxcbiAgU05PV0ZMQUtFOiAnc25vd2ZsYWtlJyxcbiAgU1RBUjogJ3N0YXInLFxuICBTVEFSX0ZJTExFRDogJ3N0YXItZmlsbGVkJyxcbiAgU1RBUl9IQUxGOiAnc3Rhci1oYWxmJyxcbiAgU1VNTUFSSVpFOiAnc3VtbWFyaXplJyxcbiAgU1dBUF9IT1JJWjogJ3N3YXAtaG9yaXonLFxuICBTV0FQX1ZFUlQ6ICdzd2FwLXZlcnQnLFxuICBUSFJFRV9EX1JPVEFUSU9OOiAndGhyZWUtZC1yb3RhdGlvbicsXG4gIFRIVU1CX1VQOiAndGh1bWItdXAnLFxuICBUUkVORElOR19ET1dOOiAndHJlbmRpbmctZG93bicsXG4gIFRST1BIWTogJ3Ryb3BoeScsXG4gIFRVTkU6ICd0dW5lJyxcbiAgVFdJVFRFUjogJ3R3aXR0ZXInLFxuICBVTUJSRUxMQTogJ3VtYnJlbGxhJyxcbiAgVkVSSUZJRUQ6ICd2ZXJpZmllZCcsXG4gIFZJREVPQ0FNOiAndmlkZW9jYW0nLFxuICBWSUVXX0lOX0FSOiAndmlldy1pbi1hcicsXG4gIFZJU0lCSUxJVFk6ICd2aXNpYmlsaXR5JyxcbiAgVk9MVU1FX09GRjogJ3ZvbHVtZS1vZmYnLFxuICBWT0xVTUVfT046ICd2b2x1bWUtb24nLFxuICBXQVJFSE9VU0U6ICd3YXJlaG91c2UnLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG4gIFdBVEVSOiAnd2F0ZXInLFxuICBXRUlHSFQ6ICd3ZWlnaHQnLFxuICBXSURUSDogJ3dpZHRoJyxcbiAgV09SS1NQQUNFX1BSRU1JVU06ICd3b3Jrc3BhY2UtcHJlbWl1bScsXG4gIFdSRU5DSDogJ3dyZW5jaCcsXG4gIFlPVVRVQkU6ICd5b3V0dWJlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBJQ09OX1JFQUxNID0ge1xuICBBRVJPOiB7XG4gICAgRkxJR0hUOiAnYWVyby1mbGlnaHQnLFxuICAgIEhFTElDT1BURVI6ICdhZXJvLWhlbGljb3B0ZXInLFxuICAgIE1PREVfRkFOOiAnYWVyby1tb2RlLWZhbicsXG4gICAgUExBTkVfQ09OVFJBSUxTOiAnYWVyby1wbGFuZS1jb250cmFpbHMnLFxuICB9LFxuICBBVFY6IHtcbiAgICBBVFY6ICdhdHYtYXR2JyxcbiAgICBEVU5FX0JVR0dZOiAnYXR2LWR1bmUtYnVnZ3knLFxuICAgIEdPTEZfQ0FSVDogJ2F0di1nb2xmLWNhcnQnLFxuICAgIEdPX0tBUlQ6ICdhdHYtZ28ta2FydCcsXG4gICAgU0FORF9SQUlMOiAnYXR2LXNhbmQtcmFpbCcsXG4gICAgU0lERV9CWV9TSURFOiAnYXR2LXNpZGUtYnktc2lkZScsXG4gICAgVFJBSUxFUjogJ2F0di10cmFpbGVyJyxcbiAgfSxcbiAgQk9BVE1BUlQ6IHtcbiAgICBQV0M6ICdib2F0bWFydC1wd2MnLFxuICAgIFRSQUlMRVI6ICdib2F0bWFydC10cmFpbGVyJyxcbiAgfSxcbiAgQ1lDTEU6IHtcbiAgICBNT1RPUkNZQ0xFOiAnY3ljbGUtbW90b3JjeWNsZScsXG4gICAgVFJBSUxFUjogJ2N5Y2xlLXRyYWlsZXInLFxuICB9LFxuICBQV0M6IHtcbiAgICBQV0M6ICdwd2MtcHdjJyxcbiAgICBTTk9XTU9CSUxFOiAncHdjLXNub3dtb2JpbGUnLFxuICAgIFRSQUlMRVI6ICdwd2MtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgREVTVElOQVRJT05fVFJBSUxFUjogJ3J2LWRlc3RpbmF0aW9uLXRyYWlsZXInLFxuICAgIEZJRlRIX1dIRUVMOiAncnYtZmlmdGgtd2hlZWwnLFxuICAgIEZJU0hfSE9VU0U6ICdydi1maXNoLWhvdXNlJyxcbiAgICBQQVJLX01PREVMOiAncnYtcGFyay1tb2RlbCcsXG4gICAgUE9QX1VQX0NBTVBFUjogJ3J2LXBvcC11cC1jYW1wZXInLFxuICAgIFRFQVJEUk9QX1RSQUlMRVI6ICdydi10ZWFyZHJvcC10cmFpbGVyJyxcbiAgICBUUkFWRUxfVFJBSUxFUjogJ3J2LXRyYXZlbC10cmFpbGVyJyxcbiAgICBUUlVDS19DQU1QRVI6ICdydi10cnVjay1jYW1wZXInLFxuICB9LFxuICBTTk9XOiB7XG4gICAgTU9UT1JDWUNMRTogJ3Nub3ctbW90b3JjeWNsZScsXG4gICAgUFdDOiAnc25vdy1wd2MnLFxuICAgIFNJREVfQllfU0lERTogJ3Nub3ctc2lkZS1ieS1zaWRlJyxcbiAgICBTTk9XTU9CSUxFOiAnc25vdy1zbm93bW9iaWxlJyxcbiAgICBUUkFJTEVSOiAnc25vdy10cmFpbGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbnR5cGUgR2xvYmFsSWNvbiA9ICh0eXBlb2YgSUNPTilba2V5b2YgdHlwZW9mIElDT05dO1xuXG5leHBvcnQgdHlwZSBJY29uID0gR2xvYmFsSWNvbiB8IFJlYWxtSWNvbjtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGFjY29yZGlvbiBpdGVtIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gbmF2aWdhdGlvbiBtZW51cyByZWxhdGluZyB0byBhY2NvcmRpb24gZHJvcGRvd25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYWNjb3JkaW9uaXRlbS0tZG9jcykgZm9yIFRpZGVBY2NvcmRpb25JdGVtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBhY2NvcmRpb24gaXRlbSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gaW5jbHVkZSBib3R0b20gZGl2aWRlciAqL1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBpbmNsdWRlIHRvcCBkaXZpZGVyICovXG4gICAgaGFzVG9wRGl2aWRlcj86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgXCIob3B0aW9uYWwpXCIgaW5kaWNhdG9yIGFmdGVyIGxhYmVsICovXG4gICAgaXNPcHRpb25hbD86IGJvb2xlYW47XG5cbiAgICAvKiogVGhlIGxhYmVsIG9mIHRoZSBhY2NvcmRpb24gaXRlbSAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaGFzQm90dG9tRGl2aWRlcjogZmFsc2UsXG4gICAgaGFzVG9wRGl2aWRlcjogZmFsc2UsXG4gICAgaXNPcHRpb25hbDogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGlzRXhwYW5kZWQgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlzRXhwYW5kZWQudmFsdWUgPSAhaXNFeHBhbmRlZC52YWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5kaXNhYmxlZCxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICBpc0V4cGFuZGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24taXRlbSddXCI+XG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJoYXNUb3BEaXZpZGVyXCIgLz5cblxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYWNjb3JkaW9uLWhlYWQnLFxuICAgICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgZGlzYWJsZWQgPyBbQ1NTLk9QQUNJVFkuRElTQUJMRUQsIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdIDogW10sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZVRvZ2dsZUNsaWNrXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEYsIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRF1cIj5cbiAgICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cImlzT3B0aW9uYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgKG9wdGlvbmFsKVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiaXNFeHBhbmRlZCA/IElDT04uRVhQQU5EX0xFU1MgOiBJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24tYm9keScsIGlzRXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCcsIENTUy5ESVNQTEFZLkdSSURdXCI+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuT1ZFUkZMT1cuWS5ISURERU4sIENTUy5NQVJHSU4uWS5PTkUsIENTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwiaGFzQm90dG9tRGl2aWRlclwiIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWNjb3JkaW9uLWl0ZW0ge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keSB7XG4gICAgdHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1yb3dzIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keS5leHBhbmRlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoMHB4LCAxZnIpO1xuICB9XG5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkuY29sbGFwc2VkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCgwcHgsIDBmcik7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfQlJPQUQgPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIERJVjogJ2RpdicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnQgPSAodHlwZW9mIEVMRU1FTlQpW2tleW9mIHR5cGVvZiBFTEVNRU5UXTtcbmV4cG9ydCB0eXBlIEVsZW1lbnRCcm9hZCA9ICh0eXBlb2YgRUxFTUVOVF9CUk9BRClba2V5b2YgdHlwZW9mIEVMRU1FTlRfQlJPQURdO1xuIiwiaW1wb3J0IHsgaW5qZWN0LCBwcm92aWRlIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG5cbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50IH0gZnJvbSAndnVlJztcblxudHlwZSBUaWRlQ29uZmlnID0ge1xuICBsaW5rQ29tcG9uZW50OiBDb21wb25lbnQgfCB0eXBlb2YgRUxFTUVOVC5MSU5LO1xufTtcblxuY29uc3QgdGlkZUNvbmZpZ0RlZmF1bHRzOiBUaWRlQ29uZmlnID0geyBsaW5rQ29tcG9uZW50OiBFTEVNRU5ULkxJTksgfTtcblxuY29uc3QgQ09ORklHX0tFWSA9IFN5bWJvbCgndGlkZS1jb25maWcnKTtcblxuZXhwb3J0IGNvbnN0IHByb3ZpZGVUaWRlQ29uZmlnID0gKGNvbmZpZzogUGFydGlhbDxUaWRlQ29uZmlnPiA9IHt9KSA9PiB7XG4gIGNvbnN0IGNvbmZpZ1dpdGhEZWZhdWx0czogVGlkZUNvbmZpZyA9IHsgLi4udGlkZUNvbmZpZ0RlZmF1bHRzLCAuLi5jb25maWcgfTtcblxuICBwcm92aWRlPFRpZGVDb25maWc+KENPTkZJR19LRVksIGNvbmZpZ1dpdGhEZWZhdWx0cyk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZUNvbmZpZyA9ICgpID0+IHtcbiAgcmV0dXJuIGluamVjdDxUaWRlQ29uZmlnPihDT05GSUdfS0VZLCB0aWRlQ29uZmlnRGVmYXVsdHMpO1xufTtcbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IHVzZVRpZGVDb25maWcgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVDb25maWcnO1xuXG4gIGNvbnN0IHsgbGlua0NvbXBvbmVudCB9ID0gdXNlVGlkZUNvbmZpZygpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudCA6aXM9XCJsaW5rQ29tcG9uZW50XCI+XG4gICAgPHNsb3QgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgUFJJT1JJVFkgPSB7XG4gIFBSSU1BUlk6ICdwcmltYXJ5JyxcbiAgU0VDT05EQVJZOiAnc2Vjb25kYXJ5JyxcbiAgVEVSVElBUlk6ICd0ZXJ0aWFyeScsXG4gIFFVQVRFUk5BUlk6ICdxdWF0ZXJuYXJ5JyxcbiAgRkxPQVRJTkc6ICdmbG9hdGluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBQcmlvcml0eSA9ICh0eXBlb2YgUFJJT1JJVFkpW2tleW9mIHR5cGVvZiBQUklPUklUWV07XG4iLCJleHBvcnQgY29uc3QgVEFSR0VUID0ge1xuICBCTEFOSzogJ19ibGFuaycsXG4gIFNFTEY6IHVuZGVmaW5lZCxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRhcmdldCA9ICh0eXBlb2YgVEFSR0VUKVtrZXlvZiB0eXBlb2YgVEFSR0VUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgaWNvbiBidXR0b24gY29tcG9uZW50IHdpdGggdmFyaW91cyBzdHlsaW5nIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b25pY29uLS1kb2NzKSBmb3IgVGlkZUJ1dHRvbkljb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBQcmlvcml0eSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgdHlwZSB7IEJ1dHRvblR5cGUgfSBmcm9tICdAL3R5cGVzL1R5cGUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgY2xpY2thYmlsaXR5IChCdXR0b24gb25seSkgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogSFRNTCB0YWcgdHlwZSAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuXG4gICAgLyoqIFVSTCB0byBvcGVuIChMaW5rIG9ubHkpICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBJY29uIHRvIHNob3cgKi9cbiAgICBpY29uOiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byB0YXJnZXQgYSBuZXcgYnJvd3NlciB0YWIgKExpbmsgb25seSkgKi9cbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB2aXN1YWwgcHJvbWluZW5jZSAqL1xuICAgIHByaW9yaXR5PzogUHJpb3JpdHk7XG5cbiAgICAvKiogQXBwbGllcyB0eXBlIGF0dHJpYnV0ZSB0byBIVE1MIGVsZW1lbnQgKi9cbiAgICB0eXBlPzogQnV0dG9uVHlwZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5ULkJVVFRPTixcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbjogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBwcmlvcml0eTogUFJJT1JJVFkuUFJJTUFSWSxcbiAgICB0eXBlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHR5cGVBdHRyaWJ1dGUgPSBjb21wdXRlZDxzdHJpbmcgfCB1bmRlZmluZWQ+KCgpID0+XG4gICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gPyBwcm9wcy50eXBlID8/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXG4gICk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6YXJpYS1sYWJlbD1cImljb25cIlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1pY29uJyxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gICAgICBgdGlkZS1idXR0b24tJHtwcmlvcml0eX1gLFxuICAgICAgZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogJycsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gJiYgZGlzYWJsZWRcIlxuICAgIDpocmVmPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIGhyZWYgPyBocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dGFyZ2V0PVwiZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIGlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwidHlwZUF0dHJpYnV0ZVwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cImljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJpY29uXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGxpbmsgZWxlbWVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWxpbmstLWRvY3MpIGZvciBUaWRlTGlua1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFNpemUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEhUTUwgdGFnIHR5cGUgKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBVUkwgdG8gb3BlbiAoTGluayBvbmx5KSAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogSWNvbiB0byBsZWZ0IG9mIGxhYmVsICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIFNpemUgb2YgdGhlIGljb25zICovXG4gICAgaWNvblNpemU/OiBTaXplO1xuXG4gICAgLyoqIEljb24gdG8gcmlnaHQgb2YgbGFiZWwgKi9cbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byB0YXJnZXQgYSBuZXcgYnJvd3NlciB0YWIgKExpbmsgb25seSkgKi9cbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG5cbiAgICAvKiogTGluayB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBIaWRlcyB0aGUgdW5kZXJsaW5lIHVudGlsIGhvdmVyZWQsIGRlLWVtcGhhc2l6aW5nIHRoZSBsaW5rICovXG4gICAgc3VidGxlPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpY29uU2l6ZTogU0laRS5TTUFMTCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBzdWJ0bGU6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWxpbmsnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FLFxuICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgIHN1YnRsZSA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLCBDU1MuVU5ERVJMSU5FLkhPVkVSLk9OXSA6IFtDU1MuVU5ERVJMSU5FLlJFU1QuT04sIENTUy5VTkRFUkxJTkUuSE9WRVIuT0ZGXSxcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cImVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkFMSUdOLlkuTUlERExFLCBDU1MuTUFSR0lOLlJJR0hULlFVQVJURVIsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkFMSUdOLlkuTUlERExFXVwiPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5BTElHTi5ZLk1JRERMRSwgQ1NTLk1BUkdJTi5MRUZULlFVQVJURVIsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwiaWNvblNpemVcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGFsZXJ0IGNvbXBvbmVudCB3aXRoIGN1c3RvbWl6YWJsZSBjb250ZW50IGFuZCBiZWhhdmlvci5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWFsZXJ0LS1kb2NzKSBmb3IgVGlkZUFsZXJ0XG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDb21tZW50LCBjb21wdXRlZCwgdXNlU2xvdHMgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSc7XG4gIGltcG9ydCB7IEFMRVJUIH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB0eXBlIHsgVk5vZGUgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENhbGwgVG8gQWN0aW9uIHRoYXQgcmVuZGVycyBhcyBhIFRpZGVMaW5rOyBjbGlja2luZyBlbWl0cyBhIHNlcGFyYXRlIGBjbGlja2AgZXZlbnQgKi9cbiAgICBjdGFMYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBIZWFkaW5nIHRleHQgKi9cbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQWxlcnQgY2FuIGJlIGNsb3NlZCBieSB0aGUgdXNlciAqL1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQWxlcnQgaXMgYW4gb3ZlcmxheSBvciBkaXNwbGFjZXMgY29udGVudCAqL1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuXG4gICAgLyoqIEFsZXJ0IHR5cGUgKi9cbiAgICB0eXBlPzogQWxlcnQ7XG4gIH07XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdjbG9zZScpOiB2b2lkO1xuICAgIChldmVudDogJ2N0YUNsaWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjdGFMYWJlbDogdW5kZWZpbmVkLFxuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIGlzVG9hc3Q6IGZhbHNlLFxuICAgIHR5cGU6IEFMRVJULklORk8sXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcbiAgY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuICBjb25zdCBoYXNCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGVzID0gc2xvdHMuZGVmYXVsdD8uKHt9KTtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gbm9kZXMuc29tZShcbiAgICAgIChub2RlOiBWTm9kZSkgPT4gbm9kZS50eXBlICE9PSBDb21tZW50ICYmICh0eXBlb2Ygbm9kZS5jaGlsZHJlbiAhPT0gJ3N0cmluZycgfHwgbm9kZS5jaGlsZHJlbi50cmltKCkubGVuZ3RoID4gMClcbiAgICApO1xuICB9KTtcblxuICBjb25zdCBpY29uVHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IpIHJldHVybiBJQ09OLlBSSU9SSVRZX0hJR0g7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MpIHJldHVybiBJQ09OLkNIRUNLO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HKSByZXR1cm4gSUNPTi5XQVJOSU5HO1xuICAgIHJldHVybiBJQ09OLklORk9STUFUSU9OO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy50eXBlLFxuICAgICAgJ3RpZGUtYWxlcnQnLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuRVJST1IsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkVSUk9SXSA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuSU5GTywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuSU5GT10gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1NcbiAgICAgICAgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLlNVQ0NFU1MsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlNVQ0NFU1NdXG4gICAgICAgIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5XQVJOSU5HLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5XQVJOSU5HXVxuICAgICAgICA6ICcnLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlksIENTUy5TSEFET1cuQk9UVE9NXSA6IENTUy5CT1JERVIuTEVGVC5UV08sXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWljb24nLFxuICAgICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5JTkZPLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5TVUNDRVNTLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5XQVJOSU5HLFxuICAgICAgXVwiXG4gICAgICB2LWlmPVwiIXByb3BzLmlzVG9hc3RcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImljb25UeXBlXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWhlYWRpbmcnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XLFxuICAgICAgICAhaGFzQm9keSA/IFtDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLk1BUkdJTi5SSUdIVC5IQUxGXSA6ICcnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXCI+e3sgcHJvcHMuaGVhZGluZyB9fTwvc3Bhbj5cblxuICAgICAgPFRpZGVMaW5rXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMl1cIlxuICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgOmxhYmVsPVwicHJvcHMuY3RhTGFiZWxcIlxuICAgICAgICBAY2xpY2s9XCJlbWl0KCdjdGFDbGljaycpXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmICFoYXNCb2R5XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgYWxlcnRcIlxuICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1ib2R5JywgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsICFwcm9wcy5pc1RvYXN0ICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgIDxzbG90IC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uVE9QLkhBTEZdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmIGhhc0JvZHlcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzJdXCJcbiAgICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgICA6bGFiZWw9XCJwcm9wcy5jdGFMYWJlbFwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY3RhQ2xpY2snKVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFsZXJ0IHtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ2ljb24gaGVhZGluZyBjbG9zZSdcbiAgICAgICcuIGJvZHkgLic7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIHZhcigtLXRpZGUtc2FmZS1mcikgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IHZhcigtLXRpZGUtc3BhY2luZy0xXFwvMik7XG4gICAgbWF4LXdpZHRoOiB2YXIoLS10aWRlLW1heC13aWR0aCwgNjQwcHgpO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUiA9IHtcbiAgQkxBQ0s6ICdibGFjaycsXG4gIEJMVUU6ICdibHVlJyxcbiAgR1JFRU46ICdncmVlbicsXG4gIExJTUU6ICdsaW1lJyxcbiAgT1JBTkdFOiAnb3JhbmdlJyxcbiAgUFVSUExFOiAncHVycGxlJyxcbiAgUkVEOiAncmVkJyxcbiAgU0FMTU9OOiAnc2FsbW9uJyxcbiAgVEVBTDogJ3RlYWwnLFxuICBZRUxMT1c6ICd5ZWxsb3cnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SX0RFVEFJTFM6IFJlY29yZDxcbiAgQmFkZ2VDb2xvcixcbiAge1xuICAgIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gICAgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIFtCQURHRV9DT0xPUi5CTEFDS106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5ISUdILFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICB9LFxuICBbQkFER0VfQ09MT1IuQkxVRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuQkxVRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkJMVUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5HUkVFTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuR1JFRU4sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5HUkVFTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkxJTUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkxJTUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5MSU1FLFxuICB9LFxuICBbQkFER0VfQ09MT1IuT1JBTkdFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5PUkFOR0UsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5PUkFOR0UsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5QVVJQTEVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlBVUlBMRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlBVUlBMRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlJFRF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUkVELFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUkVELFxuICB9LFxuICBbQkFER0VfQ09MT1IuU0FMTU9OXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TQUxNT04sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5TQUxNT04sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5URUFMXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5URUFMLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuVEVBTCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLllFTExPV106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuWUVMTE9XLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuWUVMTE9XLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfMjA6ICcyMCcsXG4gIFlFQVJTXzI1OiAnMjUnLFxuICBZRUFSU18zMDogJzMwJyxcbiAgWUVBUlNfMzU6ICczNScsXG4gIFlFQVJTXzU6ICc1Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJhZGdlQ29sb3IgPSAodHlwZW9mIEJBREdFX0NPTE9SKVtrZXlvZiB0eXBlb2YgQkFER0VfQ09MT1JdO1xuZXhwb3J0IHR5cGUgQmFkZ2VUcnVzdGVkWWVhcnMgPSAodHlwZW9mIEJBREdFX1RSVVNURUQpW2tleW9mIHR5cGVvZiBCQURHRV9UUlVTVEVEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYmFkZ2UgY29tcG9uZW50IHdpdGggY3VzdG9taXphYmxlIGNvbnRlbnQgYW5kIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYmFkZ2UtLWRvY3MpIGZvciBUaWRlQmFkZ2VcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfQ09MT1JfREVUQUlMUyB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCYWRnZUNvbG9yIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGljaCBjb2xvciBvcHRpb24gdG8gYWRvcHQgKGlmIGFueSkgKi9cbiAgICBjb2xvcj86IEJhZGdlQ29sb3I7XG5cbiAgICAvKiogSWNvbiB0byBsZWZ0IG9mIGxhYmVsICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBcIkZsb2F0aW5nXCIgdmFyaWFudCBzdHlsZXMgKi9cbiAgICBpc0Zsb2F0aW5nPzogYm9vbGVhbjtcblxuICAgIC8qKiBCYWRnZSB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNvbG9yOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UnLFxuICAgICAgcHJvcHMuaXNGbG9hdGluZyB8fCBwcm9wcy5jb2xvciA/IFtDU1MuQkcuU1VSRkFDRS5GTE9BVElORywgQ1NTLlNIQURPVy5CT1RUT01dIDogW0NTUy5CRy5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIHByb3BzLmNvbG9yICYmIFtDU1MuQk9SREVSLkxFRlQuVFdPLCBCQURHRV9DT0xPUl9ERVRBSUxTW3Byb3BzLmNvbG9yXS5ib3JkZXJDb2xvcl0sXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkYsIHByb3BzLmNvbG9yICYmIEJBREdFX0NPTE9SX0RFVEFJTFNbcHJvcHMuY29sb3JdLmljb25Db2xvcl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRydXN0ZWQgcGFydG5lciBiYWRnZSBjb21wb25lbnQgd2l0aCBwcmVzZXQgeWVhcnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGViYWRnZXRydXN0ZWRwYXJ0bmVyLS1kb2NzKSBmb3IgVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfVFJVU1RFRCB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQmFkZ2VUcnVzdGVkWWVhcnMgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBOdW1iZXIgb2YgeWVhcnMgdG8gZGlzcGxheSBpbiB0aGUgdHJ1c3RlZCBwYXJ0bmVyIGJhZGdlICovXG4gICAgeWVhcnM/OiBCYWRnZVRydXN0ZWRZZWFycztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHllYXJzOiBCQURHRV9UUlVTVEVELllFQVJTXzUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlLXRydXN0ZWQtcGFydG5lcicsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkJSQU5ELFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uQVdBUkRfU1RBUlwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5cbiAgICAgIDxzcGFuPnt7IHByb3BzLnllYXJzIH19IHllYXIgdHJ1c3RlZCBwYXJ0bmVyPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYmFkZ2UgY29tcG9uZW50IGZvciBpbmRpY2F0aW5nIGEgdmVyaWZpZWQgdmVoaWNsZS5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJhZGdldmVyaWZpZWR2ZWhpY2xlLS1kb2NzKSBmb3IgVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UtdmVyaWZpZWQtdmVoaWNsZScsXG4gICAgICBDU1MuQkcuU0VDT05EQVJZLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLlZFUklGSUVEXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5WZXJpZmllZCB2ZWhpY2xlPC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWluZm8tcHJpbWFyeSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHNldCBvZiBicmVhZGNydW1icyBmb3IgbmF2aWdhdGlvbiBwdXJwb3Nlcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJyZWFkY3J1bWJzLS1kb2NzKSBmb3IgVGlkZUJyZWFkQ3J1bWJzXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQnJlYWRDcnVtYiB9IGZyb20gJ0AvdHlwZXMvQnJlYWRDcnVtYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogQW4gYXJyYXkgb2YgbGFiZWxzIGFuZCBvcHRpb25hbCBVUkxzIHRvIGRpc3BsYXkgZm9yIGVhY2ggYnJlYWQgY3J1bWIuICovXG4gICAgYnJlYWRDcnVtYnM6IEJyZWFkQ3J1bWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJyZWFkQ3J1bWJzOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHVsIDpjbGFzcz1cIlsndGlkZS1icmVhZC1jcnVtYnMnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgIDx0ZW1wbGF0ZVxuICAgICAgOmtleT1cImNydW1iLmxhYmVsXCJcbiAgICAgIHYtZm9yPVwiKGNydW1iLCBpbmRleCkgaW4gcHJvcHMuYnJlYWRDcnVtYnNcIlxuICAgID5cbiAgICAgIDxsaSA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzJdXCI+XG4gICAgICAgIDxJbnRlcm5hbEJhc2VMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTElOS18yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICA6ZGF0YS10cmFjaz1cImNydW1iLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgIDpocmVmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgICB2LWlmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNydW1iLmxhYmVsIH19XG4gICAgICAgIDwvSW50ZXJuYWxCYXNlTGluaz5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIDpkYXRhLXRyYWNrPVwiY3J1bWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjcnVtYi5sYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgdi1pZj1cInByb3BzLmJyZWFkQ3J1bWJzICYmIGluZGV4IDwgcHJvcHMuYnJlYWRDcnVtYnMubGVuZ3RoIC0gMVwiPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6aWNvbj1cIklDT04uQVJST1dfUklHSFRcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvdWw+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBidXR0b24gY29tcG9uZW50IHdpdGggdmFyaW91cyBzdHlsaW5nIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b24tLWRvY3MpIGZvciBUaWRlQnV0dG9uXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSwgU0laRV9CVVRUT04gfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZUJ1dHRvbiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB0eXBlIHsgQnV0dG9uVHlwZSB9IGZyb20gJ0AvdHlwZXMvVHlwZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyBjbGlja2FiaWxpdHkgKEJ1dHRvbiBvbmx5KSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBIVE1MIHRhZyB0eXBlICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG9wZW4gKExpbmsgb25seSkgKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIEljb24gdG8gbGVmdCBvZiBsYWJlbCAqL1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcblxuICAgIC8qKiBJY29uIHRvIHJpZ2h0IG9mIGxhYmVsICovXG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdGFyZ2V0IGEgbmV3IGJyb3dzZXIgdGFiIChMaW5rIG9ubHkpICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIEJ1dHRvbiB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHZpc3VhbCBwcm9taW5lbmNlICovXG4gICAgcHJpb3JpdHk/OiBFeGNsdWRlPFByaW9yaXR5LCB0eXBlb2YgUFJJT1JJVFkuRkxPQVRJTkc+O1xuXG4gICAgLyoqIERldGVybWluZXMgcmVuZGVyZWQgc2l6ZSAqL1xuICAgIHNpemU/OiBTaXplQnV0dG9uO1xuXG4gICAgLyoqIEFwcGxpZXMgdHlwZSBhdHRyaWJ1dGUgdG8gSFRNTCBlbGVtZW50ICovXG4gICAgdHlwZT86IEJ1dHRvblR5cGU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gICAgc2l6ZTogU0laRV9CVVRUT04uTEFSR0UsXG4gICAgdHlwZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCB0eXBlQXR0cmlidXRlID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gcHJvcHMudHlwZSA/PyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uJyxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCxcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QQURESU5HLlguVFdPLFxuICAgICAgYHRpZGUtYnV0dG9uLSR7cHJpb3JpdHl9YCxcbiAgICAgIGVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuRElTUExBWS5JTkxJTkVfRkxFWCwgQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiBbQ1NTLkRJU1BMQVkuRkxFWF0sXG4gICAgICBzaXplID09PSBTSVpFX0JVVFRPTi5TTUFMTFxuICAgICAgICA/IFtDU1MuRk9OVC5ST0xFLkJVVFRPTl8yLCBDU1MuUEFERElORy5ZLkhBTEZdXG4gICAgICAgIDogW0NTUy5GT05ULlJPTEUuQlVUVE9OXzEsIENTUy5QQURESU5HLlkuT05FXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBkaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaHJlZiA/IGhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJ0eXBlQXR0cmlidXRlXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgOnNpemU9XCJzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSA/IFNJWkUuTEFSR0UgOiBTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJpY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIHt7IGxhYmVsIH19XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwiaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGJ1dHRvbiBjb21wb25lbnQgZm9yIHVzZSB0byBzYXZlIGl0ZW1zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9uc2F2ZS0tZG9jcykgZm9yIFRpZGVCdXR0b25TYXZlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgY29uc3QgaXNUb3VjaGVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaXNTYXZlZCA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgd2F0Y2goXG4gICAgaXNTYXZlZCxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoIWlzVG91Y2hlZC52YWx1ZSkgaXNUb3VjaGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiBmYWxzZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLWJ1dHRvbi1zYXZlJywgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLCBpc1NhdmVkICYmICdzYXZlZCddXCJcbiAgICBAY2xpY2s9XCJpc1NhdmVkID0gIWlzU2F2ZWRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGRpdiA6Y2xhc3M9XCJbJ2hlYXJ0LWNvbnRhaW5lcicsIENTUy5ESVNQTEFZLkZMRVgsIGlzU2F2ZWQgJiYgaXNUb3VjaGVkICYmICdhbmltYXRlLWhlYXJ0YmVhdCddXCI+XG4gICAgICA8c3ZnXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1idXR0b24tc2F2ZS1pY29uJywgQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgICAgaGVpZ2h0PVwiMzJcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgd2lkdGg9XCIzMlwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIDpjbGFzcz1cIlsnaGVhcnQtZmlsbGVkJywgaXNTYXZlZCA/IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlJFRCA6ICdmaWxsZWQtdHJhbnNwYXJlbnQnXVwiXG4gICAgICAgICAgZD1cIm0xMiAyMS0xLjQ1LTEuM2MtMS42ODMzLTEuNTE2Ny0zLjA3NS0yLjgyNS00LjE3NS0zLjkyNS0xLjEtMS4xLTEuOTc1LTIuMDg3NS0yLjYyNS0yLjk2MjUtLjY1LS44NzUtMS4xMDQyLTEuNjc5Mi0xLjM2MjUtMi40MTI1QzIuMTI5MiA5LjY2NjcgMiA4LjkxNjcgMiA4LjE1YzAtMS41NjY3LjUyNS0yLjg3NSAxLjU3NS0zLjkyNUM0LjYyNSAzLjE3NSA1LjkzMzMgMi42NSA3LjUgMi42NWMuODY2NyAwIDEuNjkxNy4xODMzIDIuNDc1LjU1Ljc4MzMuMzY2NyAxLjQ1ODMuODgzMyAyLjAyNSAxLjU1LjU2NjctLjY2NjcgMS4yNDE3LTEuMTgzMyAyLjAyNS0xLjU1Ljc4MzMtLjM2NjcgMS42MDgzLS41NSAyLjQ3NS0uNTUgMS41NjY3IDAgMi44NzUuNTI1IDMuOTI1IDEuNTc1QzIxLjQ3NSA1LjI3NSAyMiA2LjU4MzMgMjIgOC4xNWMwIC43NjY3LS4xMjkyIDEuNTE2Ny0uMzg3NSAyLjI1LS4yNTgzLjczMzMtLjcxMjUgMS41Mzc1LTEuMzYyNSAyLjQxMjVzLTEuNTI1IDEuODYyNS0yLjYyNSAyLjk2MjVjLTEuMSAxLjEtMi40OTE3IDIuNDA4My00LjE3NSAzLjkyNUwxMiAyMVpcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgOmNsYXNzPVwiWydoZWFydC1vdXRsaW5lJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFXVwiXG4gICAgICAgICAgZD1cIm0xMiAyMS0xLjQ1LTEuM2MtMS42ODMzLTEuNTE2Ny0zLjA3NS0yLjgyNS00LjE3NS0zLjkyNS0xLjEtMS4xLTEuOTc1LTIuMDg3NS0yLjYyNS0yLjk2MjUtLjY1LS44NzUtMS4xMDQyLTEuNjc5Mi0xLjM2MjUtMi40MTI1QzIuMTI5MiA5LjY2NjcgMiA4LjkxNjcgMiA4LjE1YzAtMS41NjY3LjUyNS0yLjg3NSAxLjU3NS0zLjkyNUM0LjYyNSAzLjE3NSA1LjkzMzMgMi42NSA3LjUgMi42NWMuODY2NyAwIDEuNjkxNy4xODMzIDIuNDc1LjU1Ljc4MzMuMzY2NyAxLjQ1ODMuODgzMyAyLjAyNSAxLjU1LjU2NjctLjY2NjcgMS4yNDE3LTEuMTgzMyAyLjAyNS0xLjU1Ljc4MzMtLjM2NjcgMS42MDgzLS41NSAyLjQ3NS0uNTUgMS41NjY3IDAgMi44NzUuNTI1IDMuOTI1IDEuNTc1QzIxLjQ3NSA1LjI3NSAyMiA2LjU4MzMgMjIgOC4xNWMwIC43NjY3LS4xMjkyIDEuNTE2Ny0uMzg3NSAyLjI1LS4yNTgzLjczMzMtLjcxMjUgMS41Mzc1LTEuMzYyNSAyLjQxMjVzLTEuNTI1IDEuODYyNS0yLjYyNSAyLjk2MjVjLTEuMSAxLjEtMi40OTE3IDIuNDA4My00LjE3NSAzLjkyNUwxMiAyMVptMC0yLjdjMS42LTEuNDMzMyAyLjkxNjctMi42NjI1IDMuOTUtMy42ODc1czEuODUtMS45MTY3IDIuNDUtMi42NzVjLjYtLjc1ODMgMS4wMTY3LTEuNDMzMyAxLjI1LTIuMDI1LjIzMzMtLjU5MTcuMzUtMS4xNzkyLjM1LTEuNzYyNSAwLTEtLjMzMzMtMS44MzMzLTEtMi41LS42NjY3LS42NjY3LTEuNS0xLTIuNS0xLS43ODMzIDAtMS41MDgzLjIyMDgtMi4xNzUuNjYyNUMxMy42NTgzIDUuNzU0MiAxMy4yIDYuMzE2NyAxMi45NSA3aC0xLjljLS4yNS0uNjgzMy0uNzA4My0xLjI0NTgtMS4zNzUtMS42ODc1UzguMjgzMyA0LjY1IDcuNSA0LjY1Yy0xIDAtMS44MzMzLjMzMzMtMi41IDEtLjY2NjcuNjY2Ny0xIDEuNS0xIDIuNSAwIC41ODMzLjExNjcgMS4xNzA4LjM1IDEuNzYyNS4yMzMzLjU5MTcuNjUgMS4yNjY3IDEuMjUgMi4wMjVzMS40MTY3IDEuNjUgMi40NSAyLjY3NVMxMC40IDE2Ljg2NjcgMTIgMTguM1pcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLmhlYXJ0LWNvbnRhaW5lciB7XG4gICAgLS1yb3RhdGUtZHVyaW5nLWhlYXJ0LWJlYXQ6IDlkZWc7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMykpO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtZHVyYXRpb24tMzAwKSB2YXIoLS10aWRlLWVhc2luZy1lYXNlLW91dCk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBzY2FsZTtcbiAgICByb3RhdGU6IDBkZWc7XG4gIH1cblxuICAuaGVhcnQtY29udGFpbmVyLmFuaW1hdGUtaGVhcnRiZWF0IHtcbiAgICBhbmltYXRpb246IGhlYXJ0QmVhdCB2YXIoLS10aWRlLWR1cmF0aW9uLTE1MCk7XG4gICAgYW5pbWF0aW9uLWRpcmVjdGlvbjogYWx0ZXJuYXRlO1xuICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDQ7XG4gIH1cblxuICAuaGVhcnQtY29udGFpbmVyOmFjdGl2ZSB7XG4gICAgc2NhbGU6IDAuOTtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS10aWRlLWR1cmF0aW9uLTc1KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1zYXZlLWljb24ge1xuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgfVxuXG4gIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgLmhlYXJ0LWNvbnRhaW5lciB7XG4gICAgICAtLXJvdGF0ZS1kdXJpbmctaGVhcnQtYmVhdDogMGRlZztcbiAgICB9XG5cbiAgICAudGlkZS1idXR0b24tc2F2ZTp3aGVyZSg6aG92ZXIsIDpmb2N1cy12aXNpYmxlKSAuaGVhcnQtY29udGFpbmVyIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDlkZWcpO1xuICAgIH1cbiAgfVxuXG4gIC5oZWFydC1maWxsZWQge1xuICAgIHNjYWxlOiAwLjk4NTsgLyogYXZvaWQgaGFpcmxpbmUgYm9yZGVyIHJlbmRlciBpc3N1ZSAqL1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10aWRlLWR1cmF0aW9uLTc1KSB2YXIoLS10aWRlLWVhc2luZy1saW5lYXIpO1xuICB9XG5cbiAgLmZpbGxlZC10cmFuc3BhcmVudCB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgfVxuXG4gIEBrZXlmcmFtZXMgaGVhcnRCZWF0IHtcbiAgICBmcm9tIHtcbiAgICAgIHNjYWxlOiAxO1xuICAgICAgcm90YXRlOiAwZGVnO1xuICAgIH1cbiAgICB0byB7XG4gICAgICBzY2FsZTogMS4yNTtcbiAgICAgIHJvdGF0ZTogdmFyKC0tcm90YXRlLWR1cmluZy1oZWFydC1iZWF0KTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHNlZ21lbnRlZCBidXR0b24gY29tcG9uZW50IGZvciBuYXZpZ2F0aW9uIHB1cnBvc2VzLlxuICAgKlxuICAgKiBQb3dlcmVkIGJ5IG5hdGl2ZSBpbnB1dFt0eXBlPVwicmFkaW9cIl0gdW5kZXIgdGhlIGhvb2QgZm9yIGVuaGFuY2VkIGFjY2Vzc2liaWxpdHkuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b25zZWdtZW50ZWQtLWRvY3MpIGZvciBUaWRlQnV0dG9uU2VnbWVudGVkXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgdXNlSWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBTZXRzIGxhYmVsIGFuZCBjYWxsYmFjayBmb3IgZWFjaCB0YWIgKi9cbiAgICB0YWJzOiBUYWJbXSB8IHJlYWRvbmx5IFRhYltdO1xuXG4gICAgLyoqIE9wdHMgaW4gYXMgYSBuYXRpdmUgSFRNTCBmb3JtIGZpZWxkIHdpdGggdGhpcyBuYW1lLiAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBjdXJyZW50SW5kZXggPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgdW5pcXVlSWQgPSB1c2VJZCgpO1xuXG4gIGNvbnN0IGlucHV0Rm9ybUF0dHJpYnV0ZSA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5uYW1lID8gdW5kZWZpbmVkIDogJ25vbmUnKSk7XG4gIGNvbnN0IGlucHV0TmFtZUF0dHJpYnV0ZSA9IGNvbXB1dGVkKCgpID0+IHByb3BzLm5hbWUgPz8gdW5pcXVlSWQpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5BVVRPLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgIF1cIlxuICAgIHJvbGU9XCJyYWRpb2dyb3VwXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkLXRhYicsXG4gICAgICAgIGluZGV4ID09PSBjdXJyZW50SW5kZXhcbiAgICAgICAgICA/IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsIENTUy5TSEFET1cuQk9UVE9NXVxuICAgICAgICAgIDogWydpbmFjdGl2ZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgIENTUy5BTElHTi5YLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLlRXTyxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLFxuICAgICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgIENTUy5XSURUSC5BVVRPLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIDpjaGVja2VkPVwiaW5kZXggPT09IGN1cnJlbnRJbmRleFwiXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICAgIDpmb3JtPVwiaW5wdXRGb3JtQXR0cmlidXRlXCJcbiAgICAgICAgOm5hbWU9XCJpbnB1dE5hbWVBdHRyaWJ1dGVcIlxuICAgICAgICA6dmFsdWU9XCJpbmRleFwiXG4gICAgICAgIEBjaGFuZ2U9XCJjdXJyZW50SW5kZXggPSBpbmRleFwiXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAvPlxuXG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiPlxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIlxuICAgICAgICB2LWlmPVwidGFiLmNvdW50ICYmIHRhYi5jb3VudCA+IDBcIlxuICAgICAgPlxuICAgICAgICAoe3sgdGFiLmNvdW50IH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZCB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cblxuICAudGlkZS1idXR0b24tc2VnbWVudGVkOmhhcyg6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gIH1cblxuICAuaW5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLmluYWN0aXZlOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWRlZmF1bHQpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRZUEVfQ0FSRCA9IHtcbiAgQUNUSU9OQUJMRTogJ2FjdGlvbicsXG4gIElORk9STUFUSU9OQUw6ICdpbmZvcm1hdGlvbmFsJyxcbiAgU0VMRUNUQUJMRTogJ3NlbGVjdCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDYXJkVHlwZSA9ICh0eXBlb2YgVFlQRV9DQVJEKVtrZXlvZiB0eXBlb2YgVFlQRV9DQVJEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2FyZCBjb21wb25lbnQgd2l0aCBhIGhlYWRpbmcsIGRlc2NyaXB0aW9uLCBhbmQgb3B0aW9uYWwgaWNvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNhcmQtLWRvY3MpIGZvciBUaWRlQ2FyZFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgVFlQRV9DQVJEIH0gZnJvbSAnQC90eXBlcy9DYXJkJztcbiAgaW1wb3J0IHsgRUxFTUVOVF9CUk9BRCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBDYXJkVHlwZSB9IGZyb20gJ0AvdHlwZXMvQ2FyZCc7XG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudEJyb2FkIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBPcHRpb25hbCBkZXNjcmlwdGlvbiB0ZXh0IGRpc3BsYXllZCBiZWxvdyB0aGUgaGVhZGluZyAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBtYWluIGhlYWRpbmcgb2YgdGhlIGNhcmQuICovXG4gICAgaGVhZGluZzogc3RyaW5nO1xuXG4gICAgLyoqIE9wdGlvbmFsIGljb24gZGlzcGxheWVkIG9uIHRoZSBjYXJkLiAqL1xuICAgIGljb24/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgQ2FyZCBpcyBzZWxlY3RlZCAoZm9yIHNlbGVjdGFibGUgY2FyZHMpLiAqL1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBUeXBlIG9mIHRoZSBjYXJkICovXG4gICAgdHlwZT86IENhcmRUeXBlO1xuXG4gICAgLyoqIFVSTCB0byBuYXZpZ2F0ZSB0byBvbiBjbGljay4gKi9cbiAgICBocmVmPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbjogdW5kZWZpbmVkLFxuICAgIHNlbGVjdGVkOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVFlQRV9DQVJELklORk9STUFUSU9OQUwsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQ8RWxlbWVudEJyb2FkIHwgdHlwZW9mIEludGVybmFsQmFzZUxpbms+KCgpID0+XG4gICAgcHJvcHMuaHJlZiA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy50eXBlID09PSBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCA/IEVMRU1FTlRfQlJPQUQuRElWIDogRUxFTUVOVF9CUk9BRC5CVVRUT05cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jYXJkJyxcbiAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgIENTUy5BTElHTi5YLkxFRlQsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgdHlwZSAhPT0gVFlQRV9DQVJELklORk9STUFUSU9OQUwgJiYgJ2hvdmVyYWJsZScsXG4gICAgICB0eXBlID09PSBUWVBFX0NBUkQuU0VMRUNUQUJMRSAmJiBzZWxlY3RlZCAmJiAnc2VsZWN0ZWQnLFxuICAgIF1cIlxuICAgIDpocmVmPVwiaHJlZlwiXG4gICAgOnR5cGU9XCJyb290RWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5CVVRUT04gPyBFTEVNRU5UX0JST0FELkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiaWNvblwiXG4gICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImljb25cIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuQVhJUzIuU1RBUlQsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuSEFMRl1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICB7eyBoZWFkaW5nIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cImRlc2NyaXB0aW9uXCJcbiAgICAgID5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcmQuaG92ZXJhYmxlOm5vdCguc2VsZWN0ZWQpOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLXJlc3QpO1xuICB9XG4gIC50aWRlLWNhcmQuc2VsZWN0ZWQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2Fyb3VzZWwgY29tcG9uZW50IHdpdGggbmF2aWdhdGlvbiBjb250cm9scyBhbmQgc2xpZGUgaW5kaWNhdG9ycy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNhcm91c2VsLS1kb2NzKSBmb3IgVGlkZUNhcm91c2VsXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGluZGljYXRvciBkb3RzIG92ZXJsYXk8YnIgLz4oT25seSB2YWxpZCB3aXRoIGZ1bGwgd2lkdGggY2FyZHMpICovXG4gICAgaGFzRG90cz86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgb24tcGFnZSBvciBmbG9hdGluZyBjYXJvdXNlbCAqL1xuICAgIGlzRmxvYXRpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgZm9udCByb2xlIHVzZWQgZm9yIHRpdGxlIGRpc3BsYXkgKi9cbiAgICBpc0hlYWRsaW5lMT86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIG9uLXBhZ2UgYnV0dG9ucyBzaG91bGQgYmUgaGlkZGVuIHVudGlsIGhvdmVyICovXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBzY3JvbGwgYnkgcGFnZSBvciBieSBpbmRpdmlkdWFsIHNsaWRlICovXG4gICAgaXNTY3JvbGxCeVBhZ2U/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIG1heCBudW1iZXIgb2YgaW5kaWNhdG9yIGRvdHMgdG8gZGlzcGxheSBhdCBhIGdpdmVuIHRpbWUgKi9cbiAgICBtYXhEb3RzPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHRleHQgZGlzcGxheWVkIHRvIHRoZSByaWdodCBvZiB0aGUgdGl0bGUgKi9cbiAgICBzdWJ0aXRsZT86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0aXRsZSB0ZXh0IGRpc3BsYXllZCBhYm92ZSB0aGUgY2Fyb3VzZWwgKi9cbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0RvdHM6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgICBpc0hlYWRsaW5lMTogZmFsc2UsXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM6IHRydWUsXG4gICAgaXNTY3JvbGxCeVBhZ2U6IHRydWUsXG4gICAgbWF4RG90czogNSxcbiAgICBzdWJ0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNJblZpZXc6IG51bWJlcltdKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgY2Fyb3VzZWxSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBjdXJyZW50UGFnZUluZGV4ID0gcmVmPG51bWJlcj4oMCk7XG4gIGNvbnN0IGRvdHNSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgZnJhbWVXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBpc0ZpcnN0U2xpZGUgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd0J1dHRvbnMgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IHNsaWRlT2JzZXJ2ZXIgPSByZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2xpZGVzID0gcmVmPEhUTUxFbGVtZW50W10+KFtdKTtcbiAgY29uc3Qgc2xpZGVzSW5WaWV3ID0gcmVmPG51bWJlcltdPihbXSk7XG4gIGNvbnN0IHNsb3RPYnNlcnZlciA9IHJlZjxNdXRhdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHRvdWNoU3RhcnQgPSByZWY8VG91Y2ggfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IHNsaWRlc0luVmlld0NvdW50ID0gcmVmPG51bWJlcj4oMSk7XG5cbiAgY29uc3QgY3VycmVudFBhZ2UgPSBjb21wdXRlZCgoKSA9PiBjdXJyZW50UGFnZUluZGV4LnZhbHVlICsgMSk7XG4gIGNvbnN0IGRvdENvbnRhaW5lcldpZHRoID0gY29tcHV0ZWQoKCkgPT4gZG90Q291bnRWaXNpYmxlLnZhbHVlICogZG90V2lkdGggKyAoZG90Q291bnRWaXNpYmxlLnZhbHVlIC0gMSkgKiBkb3RHYXApO1xuICBjb25zdCBkb3RDb3VudFZpc2libGUgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMubWF4RG90cyA+IHRvdGFsUGFnZXMudmFsdWUgPyB0b3RhbFBhZ2VzLnZhbHVlIDogcHJvcHMubWF4RG90cykpO1xuICBjb25zdCB0b3RhbFBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghc2xpZGVzLnZhbHVlLmxlbmd0aCkgcmV0dXJuIDA7XG4gICAgaWYgKCFwcm9wcy5pc1Njcm9sbEJ5UGFnZSkgcmV0dXJuIHNsaWRlcy52YWx1ZS5sZW5ndGg7XG5cbiAgICBjb25zdCBxdW90aWVudCA9IE1hdGguZmxvb3Ioc2xpZGVzLnZhbHVlLmxlbmd0aCAvIHNsaWRlc0luVmlld0NvdW50LnZhbHVlKTtcbiAgICBjb25zdCByZW1haW5kZXIgPSBzbGlkZXMudmFsdWUubGVuZ3RoICUgc2xpZGVzSW5WaWV3Q291bnQudmFsdWU7XG5cbiAgICByZXR1cm4gcmVtYWluZGVyID8gcXVvdGllbnQgKyAxIDogcXVvdGllbnQ7XG4gIH0pO1xuXG4gIGNvbnN0IGRvdEdhcDogbnVtYmVyID0gODtcbiAgY29uc3QgZG90V2lkdGg6IG51bWJlciA9IDg7XG4gIGxldCBzY3JvbGxUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgZ2V0RG90Q2xhc3MgPSAoZG90SW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGxldCBjbGFzc05hbWUgPSAnJztcblxuICAgIGlmIChkb3RJbmRleCA9PT0gY3VycmVudFBhZ2VJbmRleC52YWx1ZSkgY2xhc3NOYW1lID0gJ3RpZGUtY2Fyb3VzZWwtZG90LWFjdGl2ZSc7XG4gICAgaWYgKE1hdGguYWJzKGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSBkb3RJbmRleCkgPT09IDEpIGNsYXNzTmFtZSA9ICd0aWRlLWNhcm91c2VsLWRvdC1uZWlnaGJvcic7XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9O1xuXG4gIGNvbnN0IGdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lciA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgY29udGFpbmVyOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyUmlnaHQgPSBjb250YWluZXJSZWN0LmxlZnQgKyBjb250YWluZXJSZWN0LndpZHRoO1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlbGVtZW50UmlnaHQgPSBlbGVtZW50UmVjdC5sZWZ0ICsgZWxlbWVudFJlY3Qud2lkdGg7XG5cbiAgICByZXR1cm4gZWxlbWVudFJpZ2h0IDw9IGNvbnRhaW5lclJpZ2h0ICYmIGVsZW1lbnRSZWN0LmxlZnQgPj0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvdWNoRW5kID0gKGV2ZW50OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0b3VjaFN0YXJ0LnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCB0b3VjaEVuZCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdO1xuICAgIGNvbnN0IGRlbHRhWCA9IHRvdWNoU3RhcnQudmFsdWUuY2xpZW50WCAtIHRvdWNoRW5kLmNsaWVudFg7XG4gICAgY29uc3QgZGVsdGFZID0gdG91Y2hFbmQuY2xpZW50WSAtIHRvdWNoU3RhcnQudmFsdWUuY2xpZW50WTtcblxuICAgIGlmIChNYXRoLmFicyhkZWx0YVgpID4gTWF0aC5hYnMoZGVsdGFZKSkgc2Nyb2xsQnlEZWx0YShkZWx0YVgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvdWNoU3RhcnQgPSAoZXZlbnQ6IFRvdWNoRXZlbnQpID0+IHtcbiAgICB0b3VjaFN0YXJ0LnZhbHVlID0gZXZlbnQudG91Y2hlc1swXTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVXaGVlbCA9IChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgIGNvbnN0IGlzU2hpZnRLZXlEb3duID0gZXZlbnQuc2hpZnRLZXk7XG4gICAgY29uc3QgaXNXaGVlbCA9IE1hdGguYWJzKGV2ZW50LmRlbHRhWSkgPj0gODA7XG5cbiAgICBpZiAoaXNXaGVlbCAmJiAhaXNTaGlmdEtleURvd24pIHJldHVybjtcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dCk7XG5cbiAgICBzY3JvbGxUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKGlzV2hlZWwpIHtcbiAgICAgICAgc2Nyb2xsQnlEZWx0YShldmVudC5kZWx0YVkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVzLnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZVswXV0/Lm9mZnNldExlZnQgfHwgMDtcblxuICAgICAgICBzY3JvbGxUb09mZnNldChvZmZzZXQpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5lclJlZi52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29udGVudFdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGZyYW1lV2lkdGgudmFsdWUgPSBjb250YWluZXJSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgc2hvd0J1dHRvbnMudmFsdWUgPSBjb250ZW50V2lkdGgudmFsdWUgPiBmcmFtZVdpZHRoLnZhbHVlO1xuXG4gICAgc2xpZGVzSW5WaWV3Q291bnQudmFsdWUgPSBzbGlkZXMudmFsdWUuZmlsdGVyKChzbGlkZSkgPT5cbiAgICAgIGdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lcihzbGlkZSwgY29udGFpbmVyUmVmLnZhbHVlIGFzIEhUTUxFbGVtZW50KVxuICAgICkubGVuZ3RoO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IGNhcm91c2VsUmVmPy52YWx1ZSxcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMXB4IDBweCAwcHgnLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgIH07XG5cbiAgICBzbGlkZU9ic2VydmVyLnZhbHVlID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBsZXQgc2xpZGVzQWRkZWRUb1ZpZXc6IG51bWJlcltdID0gW107XG5cbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IHNsaWRlcy52YWx1ZS5pbmRleE9mKGVudHJ5LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgc2xpZGVzQWRkZWRUb1ZpZXcucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuZmlsdGVyKChzbGlkZSkgPT4gc2xpZGUgIT09IHNsaWRlSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgIH0pO1xuXG4gICAgICBpc0ZpcnN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoMCk7XG4gICAgICBpc0xhc3RTbGlkZS52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5pbmNsdWRlcyhzbGlkZXMudmFsdWUubGVuZ3RoIC0gMSk7XG5cbiAgICAgIGlmIChzbGlkZXNBZGRlZFRvVmlldy5sZW5ndGggPiAwKSBlbWl0KCdzbGlkZXNBZGRlZFRvVmlldycsIHNsaWRlc0FkZGVkVG9WaWV3KTtcbiAgICB9LCBvcHRpb25zKTtcblxuICAgIHNsaWRlcy52YWx1ZS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgaWYgKHNsaWRlT2JzZXJ2ZXIudmFsdWUpIHNsaWRlT2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShjaGlsZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZVNsb3QgPSAoKSA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2ZXJDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG4gICAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgfTtcblxuICAgIHNsb3RPYnNlcnZlci52YWx1ZSA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9ic2VydmVyQ2FsbGJhY2spO1xuXG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSkgc2xvdE9ic2VydmVyLnZhbHVlLm9ic2VydmUoY29udGFpbmVyUmVmLnZhbHVlLCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxCeURlbHRhID0gKGRlbHRhOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBpc1Njcm9sbGluZ0xlZnQgPSBkZWx0YSA8IDA7XG5cbiAgICBpZiAoaXNTY3JvbGxpbmdMZWZ0KSB7XG4gICAgICBwcm9wcy5pc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BzLmlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvT2Zmc2V0ID0gKHRhcmdldDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgY29uc3QgaXNTY3JvbGxpbmdMZWZ0ID0gdGFyZ2V0IDw9IGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxMZWZ0O1xuXG4gICAgY3VycmVudFBhZ2VJbmRleC52YWx1ZSA9IGlzU2Nyb2xsaW5nTGVmdCA/IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSAxIDogY3VycmVudFBhZ2VJbmRleC52YWx1ZSArIDE7XG5cbiAgICBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogdGFyZ2V0LFxuICAgIH0pO1xuICAgIHVwZGF0ZURvdHMoaXNTY3JvbGxpbmdMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFBhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDAgfHwgaXNMYXN0U2xpZGUudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggLSAxXSArIDE7XG4gICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVzLnZhbHVlW25leHRTbGlkZV0/Lm9mZnNldExlZnQ7XG5cbiAgICBzY3JvbGxUb09mZnNldChvZmZzZXQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1BhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDAgfHwgaXNGaXJzdFNsaWRlLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSBzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoO1xuICAgIGNvbnN0IG9mZnNldCA9IHNsaWRlcy52YWx1ZVtwcmV2aW91c1NsaWRlXT8ub2Zmc2V0TGVmdCB8fCAwO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFNsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPiAxID8gc2xpZGVzSW5WaWV3LnZhbHVlWzFdIDogc2xpZGVzSW5WaWV3LnZhbHVlWzBdICsgMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtuZXh0U2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1NsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZURvdHMgPSAoaXNTY3JvbGxpbmdMZWZ0OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKCFkb3RzUmVmLnZhbHVlIHx8IGRvdENvdW50VmlzaWJsZS52YWx1ZSA+PSB0b3RhbFBhZ2VzLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBpc09kZERvdENvdW50ID0gZG90Q291bnRWaXNpYmxlLnZhbHVlICUgMiAhPT0gMDtcbiAgICBjb25zdCBjZW50ZXJEb3QgPVxuICAgICAgaXNPZGREb3RDb3VudCB8fCBpc1Njcm9sbGluZ0xlZnRcbiAgICAgICAgPyBNYXRoLmZsb29yKGRvdENvdW50VmlzaWJsZS52YWx1ZSAvIDIpICsgMVxuICAgICAgICA6IE1hdGguZmxvb3IoZG90Q291bnRWaXNpYmxlLnZhbHVlIC8gMik7XG5cbiAgICBkb3RzUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IGN1cnJlbnRQYWdlLnZhbHVlIDwgY2VudGVyRG90ID8gMCA6IChjdXJyZW50UGFnZS52YWx1ZSAtIGNlbnRlckRvdCkgKiAoZG90V2lkdGggKyBkb3RHYXApLFxuICAgIH0pO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICBtZWFzdXJlRG9tKCk7XG4gICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIG9ic2VydmVTbG90KCk7XG5cbiAgICBpZiAod2luZG93KSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gICAgfVxuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHNsb3RPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcm91c2VsJyxcbiAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIoIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnMpIHx8IHByb3BzLnRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW2lzSGVhZGxpbmUxID8gQ1NTLkZPTlQuUk9MRS5IRUFETElORV8xIDogQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VidGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VidGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cIiFwcm9wcy5pc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNGaXJzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzbG90IG5hbWU9XCJtaXNjXCIgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkRJU1BMQVkuRkxFWF1cIj5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtY29udGFpbmVyJyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgIENTUy5MSVNUX0JVTExFVFMuT0ZGLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICBDU1MuU05BUC5PTixcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImNvbnRhaW5lclJlZlwiXG4gICAgICAgIEB0b3VjaGVuZD1cImhhbmRsZVRvdWNoRW5kXCJcbiAgICAgICAgQHRvdWNoc3RhcnQucGFzc2l2ZT1cImhhbmRsZVRvdWNoU3RhcnRcIlxuICAgICAgICBAd2hlZWw9XCJoYW5kbGVXaGVlbFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L3VsPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLk1BUkdJTi5CT1RUT00uSEFMRixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImhhc0RvdHMgJiYgdG90YWxQYWdlcyA+IDFcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLWNhcm91c2VsLWRvdHMtY29udGFpbmVyJ11cIlxuICAgICAgICAgIDpzdHlsZT1cIntcbiAgICAgICAgICAgIHdpZHRoOiBgJHtkb3RDb250YWluZXJXaWR0aH1weGAsXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdHMnLFxuICAgICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgICBDU1MuQVhJUzEuU1RBUlQsXG4gICAgICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguU0NST0xMLFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgcmVmPVwiZG90c1JlZlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtZG90JyxcbiAgICAgICAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICAgICAgICAgIENTUy5IRUlHSFQuWkVSTyxcbiAgICAgICAgICAgICAgICBDU1MuV0lEVEguWkVSTyxcbiAgICAgICAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgICAgICAgZ2V0RG90Q2xhc3MoaW5kZXgpLFxuICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgOmtleT1cImluZGV4XCJcbiAgICAgICAgICAgICAgdi1mb3I9XCIoXywgaW5kZXgpIGluIHRvdGFsUGFnZXNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXknLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBwcm9wcy5pc0hpZGVhd2F5QnV0dG9ucyA/ICdoaWRlYXdheScgOiAnJyxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJpc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzRmlyc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93TmV4dFBhZ2UoKSA6IHNob3dOZXh0U2xpZGUoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbDpob3ZlciAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdCB7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDhweDtcbiAgICBvcGFjaXR5OiAwLjc1O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90LW5laWdoYm9yIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzUpO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90LWFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpIHtcbiAgICAudGlkZS1jYXJvdXNlbCAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2hpcCBhY3Rpb24gYnV0dG9uIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gbmF2aWdhdGlvbiBtZW51cyByZWxhdGluZyB0byBzZWFyY2hlcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNoaXBhY3Rpb24tLWRvY3MpIGZvciBUaWRlQ2hpcEFjdGlvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEhUTUwgdGFnIHR5cGUuICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG5hdmlnYXRlIHRvIG9uIGNsaWNrLiAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogSWNvbiB0byBzaG93IGJlZm9yZSB0aGUgbGFiZWwuICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byB0YXJnZXQgYSBuZXcgYnJvd3NlciB0YWIuICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIENoaXAgdGV4dC4gKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogSUNPTi5TRUFSQ0gsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtYWN0aW9uJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxJTktfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb24gOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiIC8+XG5cbiAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWFjdGlvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNoaXAgZmlsdGVyIGNvbXBvbmVudCBmb3IgdXNlIGluIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjaGlwZmlsdGVyLS1kb2NzKSBmb3IgVGlkZUNoaXBGaWx0ZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBDaGlwIHRleHQuICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1maWx0ZXInLFxuICAgICAgaXNBY3RpdmVcbiAgICAgICAgPyBbJ2FjdGl2ZScsIENTUy5CRy5TRUNPTkRBUlksIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cbiAgICAgICAgOiBbQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICBdXCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c2xvdCAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMSwgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkZdXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLyogQm9yZGVyIG11c3QgYWx3YXlzIGV4aXN0IHRvIHByZXZlbnQgcmVzaXplIG9uIGhvdmVyIHN0YXRlLCBidXQgbWF0Y2ggYmFja2dyb3VuZCBjb2xvciBvbiByZXN0IHN0YXRlIHRvIGJsZW5kIGluLiAqL1xuICAudGlkZS1jaGlwLWZpbHRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAudGlkZS1jaGlwLWZpbHRlci5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1maWx0ZXI6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgaW5wdXQgY2hpcCBjb21wb25lbnQgZm9yIHVzZSBpbiBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlY2hpcGlucHV0LS1kb2NzKSBmb3IgVGlkZUNoaXBJbnB1dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENoaXAgdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWlucHV0JyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgIF1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG5cbiAgICA8VGlkZUljb24gOmljb249XCJJQ09OLkNMT1NFXCIgLz5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWlucHV0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtaW5wdXQ6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNvbHVtbnMgY29tcG9uZW50IGZvciB1c2UgaW4gbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNvbHVtbnMtLWRvY3MpIGZvciBUaWRlQ29sdW1uc1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgbGFiZWwgZm9yIHRoZSBjb2x1bW5zIHNlY3Rpb24uICovXG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6ICcnLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGlkZS1jb2x1bW5zXCI+XG4gICAgPGgyIDpjbGFzcz1cIltDU1MuTUFSR0lOLkJPVFRPTS5IQUxGXVwiPlxuICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgIDwvaDI+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5HQVAuVFdPLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24xXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24yXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24zXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb240XCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSAycmVtKSAvIDIpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjMycHgpIHtcbiAgICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDZyZW0pIC8gNCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgaW5qZWN0LCBwcm92aWRlLCByZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbnR5cGUgVGlkZUZvcm1Db250ZXh0ID0ge1xuICBmb3JjZVNob3dFcnJvcnM6IFJlZjxib29sZWFuPjtcbn07XG5cbmNvbnN0IEZPUk1fS0VZID0gU3ltYm9sKCd0aWRlLWZvcm0nKTtcblxuZXhwb3J0IGNvbnN0IHVzZVRpZGVGb3JtID0gKCkgPT4ge1xuICBjb25zdCBmb3JjZVNob3dFcnJvcnMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByb3ZpZGU8VGlkZUZvcm1Db250ZXh0PihGT1JNX0tFWSwgeyBmb3JjZVNob3dFcnJvcnMgfSk7XG5cbiAgY29uc3QgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyA9ICgpID0+IHtcbiAgICBmb3JjZVNob3dFcnJvcnMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIHJldHVybiB7IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VGb3JtQ29udGV4dCA9ICgpID0+IHtcbiAgcmV0dXJuIGluamVjdDxUaWRlRm9ybUNvbnRleHQ+KEZPUk1fS0VZKTtcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGZvcm0gY29tcG9uZW50IHRvIGJlIHVzZWQgdG8gd3JhcCBmb3JtIGVsZW1lbnRzIGFuZCBoYW5kbGUgZm9ybSBzdWJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlZm9ybS0tZG9jcykgZm9yIFRpZGVGb3JtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyB1c2VUaWRlRm9ybSB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc3VibWl0JywgZTogU3VibWl0RXZlbnQpOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgeyByZXZlYWxWYWxpZGF0aW9uRXJyb3JzIH0gPSB1c2VUaWRlRm9ybSgpO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBTdWJtaXRFdmVudCkgPT4ge1xuICAgIHJldmVhbFZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICBlbWl0KCdzdWJtaXQnLCBlKTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxmb3JtXG4gICAgQHN1Ym1pdC5wcmV2ZW50PVwiaGFuZGxlU3VibWl0XCJcbiAgICBub3ZhbGlkYXRlXG4gID5cbiAgICA8c2xvdCAvPlxuICA8L2Zvcm0+XG48L3RlbXBsYXRlPlxuIiwiZXhwb3J0IGNvbnN0IE9CSkVDVF9GSVQgPSB7XG4gIENPTlRBSU46ICdjb250YWluJyxcbiAgQ09WRVI6ICdjb3ZlcicsXG4gIFNDQUxFX0RPV046ICdzY2FsZS1kb3duJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9iamVjdEZpdCA9ICh0eXBlb2YgT0JKRUNUX0ZJVClba2V5b2YgdHlwZW9mIE9CSkVDVF9GSVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW1hZ2UgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW1hZ2UtLWRvY3MpIGZvciBUaWRlSW1hZ2VcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT2JqZWN0Rml0IH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIFRleHQgZGlzcGxheSB3aGVuIGltYWdlIGNhbid0IGJlIGxvYWRlZC4gKi9cbiAgICBhbHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbHkgYSBcImhlaWdodFwiIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJuYWwgaW1hZ2UgdGFnIChpbmNsdWRpbmcgdW5pdCkuICovXG4gICAgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkZWxheSBsb2FkaW5nIHVudGlsIGltYWdlIGlzIGluIHZpZXdwb3J0LiAqL1xuICAgIGlzTGF6eT86IGJvb2xlYW47XG5cbiAgICAvKiogQ29udHJvbHMgaG93IHRoZSBpbWFnZSBzY2FsZXMgd2l0aGluIGl0cyBib3gsIGVmZmVjdGl2ZSBvbmx5IHdoZW4gaW1hZ2Ugc2l6ZSBkaWZmZXJzIGZyb20gaXRzIGludHJpbnNpYyBkaW1lbnNpb25zLiAqL1xuICAgIG9iamVjdEZpdD86IE9iamVjdEZpdDtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGltYWdlIHNvdXJjZXMgYnkgYnJlYWtwb2ludC4gKi9cbiAgICBzb3VyY2VzPzogU291cmNlW107XG5cbiAgICAvKiogSW1hZ2UgVVJMLiAqL1xuICAgIHNyYz86IHN0cmluZztcblxuICAgIC8qKiBBcHBseSBhIFwid2lkdGhcIiBhdHRyaWJ1dGUgdG8gdGhlIGludGVybmFsIGltYWdlIHRhZyAoaW5jbHVkaW5nIHVuaXQpLiAqL1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgb2JqZWN0Rml0OiBPQkpFQ1RfRklULkNPVkVSLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHBpY3R1cmUgPSByZWYoKTtcbiAgY29uc3QgaW1nID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gJ2h0dHBzOi8vY2RuLXN0YXRpYy50aWxhYnMuaW8vbWFya2V0cGxhY2UvY29tbW9uL2ltYWdlLWNvbWluZy1zb29uLnN2Zyc7XG5cbiAgY29uc3Qgb2JqZWN0Rml0Q2xhc3NOYW1lID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgc3dpdGNoIChwcm9wcy5vYmplY3RGaXQpIHtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT05UQUlOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT05UQUlOO1xuICAgICAgY2FzZSBPQkpFQ1RfRklULkNPVkVSOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT1ZFUjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5TQ0FMRV9ET1dOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5TQ0FMRV9ET1dOO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIE9CSkVDVF9GSVQuQ09WRVI7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3Qgc291cmNlcyA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NvdXJjZScpID8/IFtdO1xuXG4gICAgaWYgKCFjdXJyZW50U3JjKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IG5ldyBVUkwoc291cmNlLnNyY3NldCwgd2luZG93LmxvY2F0aW9uLmhyZWYpLmhyZWY7XG5cbiAgICAgIGlmIChyZXNvbHZlZCA9PT0gY3VycmVudFNyYykge1xuICAgICAgICBzb3VyY2UucmVtb3ZlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGltZy52YWx1ZT8uZ2V0QXR0cmlidXRlKCdzcmMnKSAhPT0gaW1hZ2VEZWZhdWx0KSB7XG4gICAgICBpbWcudmFsdWUuc3JjID0gaW1hZ2VEZWZhdWx0O1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxwaWN0dXJlXG4gICAgOmNsYXNzPVwiWyd0aWRlLWltYWdlJywgQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICByZWY9XCJwaWN0dXJlXCJcbiAgPlxuICAgIDxzb3VyY2VcbiAgICAgIDprZXk9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIDptZWRpYT1cImAobWluLXdpZHRoOiR7c291cmNlLm1lZGlhfXB4KWBcIlxuICAgICAgOnNyY3NldD1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgdi1mb3I9XCJzb3VyY2UgaW4gcHJvcHMuc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxpbWdcbiAgICAgIDphbHQ9XCJhbHRcIlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbWFnZS1pbWcnLFxuICAgICAgICAhcHJvcHMud2lkdGggJiYgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICFwcm9wcy5oZWlnaHQgJiYgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuT0JKRUNULkNFTlRFUixcbiAgICAgICAgb2JqZWN0Rml0Q2xhc3NOYW1lLFxuICAgICAgXVwiXG4gICAgICA6ZmV0Y2hwcmlvcml0eT1cImlzTGF6eSA/IHVuZGVmaW5lZCA6ICdoaWdoJ1wiXG4gICAgICA6aGVpZ2h0PVwicHJvcHMuaGVpZ2h0XCJcbiAgICAgIDpsb2FkaW5nPVwicHJvcHMuaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgICByZWY9XCJpbWdcIlxuICAgICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgICAgOndpZHRoPVwicHJvcHMud2lkdGhcIlxuICAgICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gICAgLz5cbiAgPC9waWN0dXJlPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW1hZ2UtaW1nIHtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW1hZ2UgYmFja2dyb3VuZCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbWFnZWJhY2tncm91bmQtLWRvY3MpIGZvciBUaWRlSW1hZ2VCYWNrZ3JvdW5kXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUltYWdlIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlJztcbiAgaW1wb3J0IHsgT0JKRUNUX0ZJVCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogVGV4dCBkaXNwbGF5IHdoZW4gaW1hZ2UgY2FuJ3QgYmUgbG9hZGVkLiAqL1xuICAgIGFsdD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGVsYXkgbG9hZGluZyB1bnRpbCBpbWFnZSBpcyBpbiB2aWV3cG9ydC4gKi9cbiAgICBpc0xhenk/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgaW1hZ2Ugc291cmNlcyBieSBicmVha3BvaW50LiAqL1xuICAgIHNvdXJjZXM/OiBTb3VyY2VbXTtcblxuICAgIC8qKiBJbWFnZSBVUkwuICovXG4gICAgc3JjPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgc291cmNlczogKCkgPT4gW10sXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UtYmFja2dyb3VuZCcsIENTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTiwgQ1NTLklTT0xBVElPTi5JU09MQVRFXVwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJbWFnZVxuICAgICAgICA6YWx0PVwicHJvcHMuYWx0XCJcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuSEVJR0hULkZVTExdXCJcbiAgICAgICAgOmlzLWxhenk9XCJwcm9wcy5pc0xhenlcIlxuICAgICAgICA6b2JqZWN0LWZpdD1cIk9CSkVDVF9GSVQuQ09WRVJcIlxuICAgICAgICA6c291cmNlcz1cInByb3BzLnNvdXJjZXNcIlxuICAgICAgICA6c3JjPVwicHJvcHMuc3JjXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8c2xvdCAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIDpkZWVwKC50aWRlLWltYWdlKSB7XG4gICAgei1pbmRleDogLTE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpbmRpY2F0b3IgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5kaWNhdG9yLS1kb2NzKSBmb3IgVGlkZUluZGljYXRvclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEluZGljYXRvciB0ZXh0ICovXG4gICAgbGFiZWw/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbmRpY2F0b3InLFxuICAgICAgcHJvcHMubGFiZWwgPyAnJyA6ICdkb3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICAgICAgQ1NTLkFMSUdOLlguQ0VOVEVSLFxuICAgICAgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIHByb3BzLmxhYmVsICYmIHByb3BzLmxhYmVsLnRvU3RyaW5nKCkubGVuZ3RoID4gMSA/IFtDU1MuUEFERElORy5YLkhBTEZdIDogW10sXG4gICAgICBwcm9wcy5sYWJlbFxuICAgICAgICA/IFtDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5GT05ULlJPTEUuTEFCRUxfMywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFXVxuICAgICAgICA6IFtDU1MuQk9SREVSLkZVTEwuT05FXSxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1pbmRpY2F0b3ItbGFiZWwnXVwiXG4gICAgICB2LWlmPVwicHJvcHMubGFiZWxcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5kaWNhdG9yOm5vdCguZG90KSB7XG4gICAgbWluLXdpZHRoOiAxcmVtO1xuICAgIG1pbi1oZWlnaHQ6IDFyZW07XG4gIH1cblxuICAudGlkZS1pbmRpY2F0b3IuZG90IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtZ3JheS0xMDApO1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIC50aWRlLWluZGljYXRvci1sYWJlbCB7XG4gICAgLyogVXNlIGJvdHRvbS13ZWlnaHRpbmcgdG8gb2Zmc2V0IHRoZSBtYXRoZW1hdGljYWwgY2VudGVyIHRvIHRoZSBvcHRpY2FsIGNlbnRlci4gKi9cbiAgICBtYXJnaW4tdG9wOiAtMXB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW5wdXQgc3VwcG9ydGluZyB0ZXh0IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0c3VwcG9ydGluZ3RleHQtLWRvY3MpIGZvciBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzRXJyb3I6IGJvb2xlYW47XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9O1xuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMyxcbiAgICAgIGlzRXJyb3IgPyBbQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SXSA6IFtDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaXNFcnJvclwiXG4gICAgLz5cblxuICAgIDxkaXY+XG4gICAgICB7eyBtZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUnO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVElPTl9SRVNVTFQgPSB7XG4gIE5PX0VSUk9SOiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH0sXG4gIFJFUVVJUkVEOiB7XG4gICAgbWVzc2FnZTogJ1BsZWFzZSBmaWxsIG91dCB0aGlzIGZpZWxkJyxcbiAgICB2YWxpZDogZmFsc2UsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHAsIG1lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdDogVmFsaWRhdGlvblJlc3VsdCA9IFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlID8/IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCA9ICh7XG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvckZyb21Qcm9wczogc3RyaW5nO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU6IFJlZjxzdHJpbmc+O1xufSk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAoZXJyb3JGcm9tUHJvcHMgIT09ICcnKVxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiBlcnJvckZyb21Qcm9wcyxcbiAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICB9O1xuXG4gIC8vIGN1c3RvbSB2YWxpZGF0b3IgcHJvcCBlcnJvcnMgZnJvbSBoYXZlIHNlY29uZCBoaWdoZXN0IHByZWNlZGVuY2VcbiAgaWYgKHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZS52YWx1ZSA/PyAnJywgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFsbCBvdGhlciBwcm9wLWJhc2VkIGVycm9ycyBjb21lIGxhc3RcbiAgaWYgKHJlcXVpcmVkICYmIHZhbHVlLnZhbHVlPy50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULlJFUVVJUkVEO1xuICB9XG5cbiAgaWYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiBsZW5ndGhWYWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBFbnRlciBhIHZhbHVlIGJldHdlZW4gJHtmb3JtYXROdW1iZXIobWlubGVuZ3RoKX0gYW5kICR7Zm9ybWF0TnVtYmVyKG1heGxlbmd0aCl9IGNoYXJhY3RlcnNgO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgVXNlICR7Zm9ybWF0TnVtYmVyKG1heGxlbmd0aCl9IGNoYXJhY3RlcnMgb3IgZmV3ZXJgO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgRW50ZXIgYXQgbGVhc3QgJHtmb3JtYXROdW1iZXIobWlubGVuZ3RoKX0gY2hhcmFjdGVyc2A7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGlucHV0IGNoZWNrYm94IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0Y2hlY2tib3gtLWRvY3MpIGZvciBUaWRlSW5wdXRDaGVja2JveFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxUIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgQ2hlY2tib3ggc3RhdGUgaXMgaW50ZXJhY3RhYmxlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGFuZCB2YWxpZCBzdGF0ZSAqL1xuICAgIGVycm9yPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBDaGVja2JveCBpcyBpbmRldGVybWluYXRlICovXG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBDaGVja2JveCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBQYXJlbnRoZXRpY2FsIHJlc3BvbnNlIGNvdW50ICovXG4gICAgbnVtYmVyPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIHZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSk7XG5cbiAgY29uc3QgZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0ID0gKCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGlmIChwcm9wcy5lcnJvciAhPT0gJycpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXNzYWdlOiBwcm9wcy5lcnJvcixcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICBpZiAoIXByb3BzLnJlcXVpcmVkIHx8IGlzQ2hlY2tlZC52YWx1ZSkgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xuICAgIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5SRVFVSVJFRDtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQoKTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgbW9kZWxWYWx1ZSxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAobW9kZWxWYWx1ZS52YWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtY2hlY2tib3gnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVJdXCI+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5VU0VSX1NFTEVDVC5OT05FLFxuICAgICAgICBzaG93RXJyb3IgPyBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuRVJST1IgOiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIGRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICBpc0NoZWNrZWRcbiAgICAgICAgICAgID8gW3Nob3dFcnJvciA/IENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUiA6IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuQk9SREVSLkNPTE9SLkhJR0hdXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgc2hvd0Vycm9yXG4gICAgICAgICAgICAgICAgICA/IFtDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5FUlJPUiwgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SXVxuICAgICAgICAgICAgICAgICAgOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXCJcbiAgICAgICAgICA6aWNvbj1cImluZGV0ZXJtaW5hdGUgPyBJQ09OLlJFTU9WRSA6IElDT04uQ0hFQ0tcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgICAgdi1pZj1cImlzQ2hlY2tlZFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPnt7IGZvcm1hdHRlZExhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJudW1iZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgKHt7IGZvcm1hdE51bWJlcihudW1iZXIpIH19KVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICBpcy1lcnJvclxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveCB7XG4gICAgYWxpZ24tc2VsZjogc3RhcnQ7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIGxhYmVsOmhhcyhpbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgb3V0bGluZTogYXV0bztcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0Q2hlY2tib3gudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuY2hlY2tlZCB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1jaGVja2JveCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgZGlzYWJsZWQgPyBbJ2Rpc2FibGVkJywgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl0gOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0gsIENTUy5CRy5TRUNPTkRBUlldIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgIGlzQ2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGlucHV0IHJhZGlvIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0cmFkaW8tLWRvY3MpIGZvciBUaWRlSW5wdXRSYWRpb1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgaXMgaW50ZXJhY3RhYmxlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBhdHRyaWJ1dGUgKHRvIGJpbmQgaW5wdXQgbGFiZWwgdG8gaW5wdXQpICovXG4gICAgaW5wdXRJZD86IHN0cmluZztcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBOYW1lIGF0dHJpYnV0ZSAqL1xuICAgIG5hbWU6IHN0cmluZztcblxuICAgIC8qKiBQYXJlbnRoZXRpY2FsIHJlc3BvbnNlIGNvdW50ICovXG4gICAgbnVtYmVyPzogbnVtYmVyO1xuXG4gICAgLyoqIFZhbHVlIGF0dHJpYnV0ZSAqL1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gcHJvcHMudmFsdWUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGxhYmVsXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgIHByb3BzLmRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgIF1cIlxuICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICA6dmFsdWU9XCJ2YWx1ZVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgaXNDaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIj5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2xhYmVsPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG5cbiAgbGFiZWw6aGFzKGlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRSYWRpby52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5jaGVja2VkLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgICAgY2hlY2tlZC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFBob25lLCBmb3JtYXRQcmljZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHRlZCA9IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgRk9STUFUID0ge1xuICBOVU1CRVI6IGZvcm1hdE51bWJlcixcbiAgUEhPTkU6IGZvcm1hdFBob25lLFxuICBQUklDRTogZm9ybWF0UHJpY2UsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRk9STUFUX1JFR0VYID0ge1xuICBhbHBoYTogL15bYS16QS1aXSskL2csXG4gIGFscGhhTnVtYmVyT3JFbXB0eTogL14kfF5bYS16MC05XSskL2ksXG4gIGFscGhhU3BhY2U6IC9eW2EtekEtWiBdKyQvZyxcbiAgZW1haWw6XG4gICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoPyEoPzpbYS16QS1aMC05LV0rXFwuKSooPzx0bGQ+W2EtekEtWl17Mix9KVxcLlxcazx0bGQ+JCkoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWjAtOS1dK1xcLikrW2EtekEtWl17Mix9KSkkLyxcbiAgbnVtYmVyRm9ybWF0dGVkOiAvXiR8KD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG4gIHBob25lOiAvXig/OlxcZHszfS1cXGR7M30tXFxkezR9fFxcZHsxfS1cXGR7M30tXFxkezN9LVxcZHs0fSk/JC8sXG4gIHByaWNlOiAvKD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG4gIHppcDogL15cXGR7NX0kLyxcbn07XG4iLCJpbXBvcnQgeyBGT1JNQVRfUkVHRVggfSBmcm9tICdAL3R5cGVzL0Zvcm1hdHRlZCc7XG5pbXBvcnQgeyBjaGVja0Zvcm1hdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVE9SID0ge1xuICBBTFBIQV9OVU1CRVJfRU1QVFk6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYU51bWJlck9yRW1wdHkpLFxuICBBTFBIQV9TUEFDRTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhU3BhY2UpLFxuICBFTUFJTDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmVtYWlsLCAnRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIChlLmcuIG5hbWVAZXhhbXBsZS5jb20pJyksXG4gIE5VTUJFUjogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLm51bWJlckZvcm1hdHRlZCwgJ0VudGVyIGEgdmFsaWQgbnVtYmVyJyksXG4gIFBIT05FOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgucGhvbmUsICdFbnRlciBhIHZhbGlkIHBob25lIG51bWJlcicpLFxuICBaSVA6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC56aXAsICdFbnRlciBhIHZhbGlkIFppcCBjb2RlJyksXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRXJyb3IgPSBzdHJpbmcgfCBib29sZWFuO1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB2YWxpZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25MZW5ndGggPSB7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuXG5leHBvcnQgY29uc3QgRVJST1JfRElTUExBWSA9IHtcbiAgRUFHRVI6ICdlYWdlcicsXG4gIExBWlk6ICdsYXp5Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVycm9yRGlzcGxheSA9ICh0eXBlb2YgRVJST1JfRElTUExBWSlba2V5b2YgdHlwZW9mIEVSUk9SX0RJU1BMQVldO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBzZWxlY3QgaW5wdXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBmb3Jtcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0c2VsZWN0LS1kb2NzKSBmb3IgVGlkZUlucHV0U2VsZWN0XG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB1c2VJZCwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIFNlbGVjdCBpcyBpbnRlcmFjdGFibGUgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYW5kIHZhbGlkIHN0YXRlICovXG4gICAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGVycm9ycyBkaXNwbGF5IHByaW9yIHRvIGJsdXIgKi9cbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG5cbiAgICAvKiogTGFiZWwgY29udGVudCAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIGdyb3VwZWQgdmFsdWVzIGZvdW5kIGluc2lkZSBTZWxlY3QgKi9cbiAgICBvcHRncm91cHM/OiAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW10gfCByZWFkb25seSAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW107XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB1bmdyb3VwZWQgdmFsdWVzIGZvdW5kIGluc2lkZSBTZWxlY3QgKi9cbiAgICBvcHRpb25zPzogU2VsZWN0T3B0aW9uW10gfCByZWFkb25seSBTZWxlY3RPcHRpb25bXTtcblxuICAgIC8qKiBQcmVmaXggY29udGVudCAqL1xuICAgIHByZWZpeD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgU2VsZWN0IGlzIHJlcXVpcmVkICovXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIFN1ZmZpeCBjb250ZW50ICovXG4gICAgc3VmZml4Pzogc3RyaW5nO1xuXG4gICAgLyoqIEV4cGxhaW5lciB0ZXh0IGJlbmVhdGggaW5wdXQgKi9cbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG9wdGdyb3VwczogdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaW5wdXRJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHNlbGVjdEVsZW1lbnQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT0gbnVsbCB8fCBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgc2VsZWN0RWxlbWVudD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgc2hvd0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5XSURUSC5GVUxMLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLk1BUkdJTi5MRUZULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRiwgbGFiZWwgJiYgQ1NTLk1BUkdJTi5UT1AuT05FXVwiXG4gICAgICAgICAgICB2LWlmPVwicHJlZml4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICAgICAgICAgICAgICBDU1MuUEFERElORy5UT1AuT05FLFxuICAgICAgICAgICAgICBDU1MuUEFERElORy5SSUdIVC5UV08sXG4gICAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgICAgcHJlZml4ID8gQ1NTLlBBRERJTkcuTEVGVC5aRVJPIDogQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJzZWxlY3RFbGVtZW50XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIG9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwiYGdyb3VwLSR7KG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbH1gXCJcbiAgICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cImBvcHRpb24tJHsob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZX1gXCJcbiAgICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJtb2RlbFZhbHVlID09PSAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cIm1vZGVsVmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuUklHSFQsXG4gICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgQ1NTLk1BUkdJTi5SSUdIVC5UV08sXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBsYWJlbCAmJiBDU1MuTUFSR0lOLlRPUC5PTkUsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gOmNsYXNzPVwiQ1NTLlBBRERJTkcuUklHSFQuT05FXCI+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgcHJpY2VUb051bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgU3RyaW5nSW5wdXQgfSBmcm9tICdAL3R5cGVzL0Zvcm1EZXByZWNhdGVkJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbnR5cGUgUmFuZ2VEYXRhID0ge1xuICBtaW46IG51bWJlciB8IG51bGw7XG4gIG1heDogbnVtYmVyIHwgbnVsbDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUuJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHApID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IG5vRXJyb3I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVycm9yTWVzc2FnZSA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAodHlwZW9mIGVycm9yRnJvbVByb3BzID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21Qcm9wcy5sZW5ndGggPiAwKSByZXR1cm4gZXJyb3JGcm9tUHJvcHM7XG5cbiAgcmV0dXJuIHR5cGVvZiBlcnJvckZyb21SZWYgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVJlZi5sZW5ndGggPiAwID8gZXJyb3JGcm9tUmVmIDogZXJyb3JNZXNzYWdlRGVmYXVsdDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG5cbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNYXhSYW5nZUlzVmFsaWQgPSAoeyBtaW4gfTogUGljazxSYW5nZURhdGEsICdtaW4nPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01heDogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWF4ID0gIWlzTmFOKG5ld01heCkgPyBuZXdNYXggOiBudWxsO1xuICAgIGlmIChtaW4gJiYgbmV3TWF4KSB7XG4gICAgICBpZiAobmV3TWF4ID49IG1pbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBncmVhdGVyIHRoYW4gbWluYCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0T3B0aW9uc0Zyb21TdHJpbmdzID0gKHN0cmluZ3M6IHN0cmluZ1tdKSA9PlxuICBzdHJpbmdzLm1hcChcbiAgICAob3B0aW9uKSA9PlxuICAgICAgKHtcbiAgICAgICAgbGFiZWw6IG9wdGlvbixcbiAgICAgICAgdmFsdWU6IG9wdGlvbixcbiAgICAgIH0gYXMgU2VsZWN0T3B0aW9uKVxuICApO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gPSAoe1xuICBlcnJvcixcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3I6IFJlZjxWYWxpZGF0aW9uRXJyb3I+O1xuICBlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlPzogUmVmPHN0cmluZyB8IHVuZGVmaW5lZD47XG59KSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG5cbiAgZXJyb3IudmFsdWUgPSBlcnJvckZyb21Qcm9wcyA/IGVycm9yRnJvbVByb3BzIDogZmFsc2U7XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvcGVydHkodmFsdWU/LnZhbHVlIHx8ICcnLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWU/LnZhbHVlIHx8ICcnLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGxlbmd0aFZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7XG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWx1ZSxcbn06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7bWlubGVuZ3RofSBhbmQgJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBtb3JlIHRoYW4gJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBsZXNzIHRoYW4gJHttaW5sZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0U2VsZWN0LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGREZXByZWNhdGVkJztcbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBTZWxlY3RGaWVsZCB7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcmVxdWlyZWQgPSByZWYocHJvcHMucmVxdWlyZWQpO1xuICBjb25zdCB2YWx1ZSA9IHJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIGlucHV0Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBwcm9wcy5vcHRncm91cHNcIj5cbiAgICAgICAgICAgIDxvcHRncm91cFxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L29wdGdyb3VwPlxuXG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikubGFiZWwgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG5cbmV4cG9ydCBjb25zdCBJTlBVVF9NT0RFID0ge1xuICBERUNJTUFMOiAnZGVjaW1hbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBOVU1FUklDOiAnbnVtZXJpYycsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVVJMOiAndXJsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIElucHV0TW9kZSA9ICh0eXBlb2YgSU5QVVRfTU9ERSlba2V5b2YgdHlwZW9mIElOUFVUX01PREVdO1xuIiwiaW1wb3J0IHsgSU5QVVRfTU9ERSwgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0TW9kZSwgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuZXhwb3J0IGNvbnN0IGdldFRleHRJbnB1dE1vZGUgPSAodHlwZTogVGV4dElucHV0VHlwZSwgaW5wdXRtb2RlPzogSW5wdXRNb2RlKTogSW5wdXRNb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlucHV0bW9kZSkgcmV0dXJuIGlucHV0bW9kZTtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5URUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5URUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuU0VBUkNIOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuU0VBUkNIO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLk5VTUJFUjpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLk5VTUVSSUM7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuRU1BSUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5FTUFJTDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5VUkw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5VUkw7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdGV4dCBpbnB1dCBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGZvcm1zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5wdXR0ZXh0LS1kb2NzKSBmb3IgVGlkZUlucHV0VGV4dFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgRVJST1JfRElTUExBWSB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG4gIGltcG9ydCB7IGdldFRleHRJbnB1dE1vZGUgfSBmcm9tICdAL3V0aWxpdGllcy9mb3Jtcyc7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxULCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBJbnB1dE1vZGUsIFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBicm93c2VyIGF0dGVtcHRzIHRvIGF1dG9jb21wbGV0ZSAqL1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIGludGVyYWN0YWJsZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBhbmQgdmFsaWQgc3RhdGUgKi9cbiAgICBlcnJvcj86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgZXJyb3JzIGRpc3BsYXkgcHJpb3IgdG8gYmx1ciAqL1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBjbGVhci9yZXNldCBidXR0b24gaXMgc2hvd24gZm9yIHRoZSBpbnB1dCAqL1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcblxuICAgIC8qKiBJY29uIGF0IGxlZnQgb2YgaW5wdXQgdmFsdWUgKi9cbiAgICBpY29uTGVhZGluZz86IEljb247XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBpbnB1dCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIGlucHV0IGVkaXRpbmcgZmVhdHVyZXMgb2ZmZXJlZCBieSB0aGUgYnJvd3NlciAqL1xuICAgIGlucHV0bW9kZT86IElucHV0TW9kZTtcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbGllcyBhIG1heGltdW0gY2hhcmFjdGVyIGNvdW50IHRvIHRoZSBpbnB1dCAqL1xuICAgIG1heGxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKiBBcHBsaWVzIGEgbWluaW11bSBjaGFyYWN0ZXIgY291bnQgdG8gdGhlIGlucHV0ICovXG4gICAgbWlubGVuZ3RoPzogbnVtYmVyO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBJbnB1dCBwcmVmaXggKi9cbiAgICBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIHJlcXVpcmVkICovXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIElucHV0IHN1ZmZpeCAoaS5lLiB1bml0cykgKi9cbiAgICBzdWZmaXg/OiBzdHJpbmc7XG5cbiAgICAvKiogRXhwbGFpbmVyIHRleHQgYmVuZWF0aCBpbnB1dCAqL1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgdGV4dCBmb3JtYXR0aW5nIGFwcGxpZWQgdG8gaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdHlwZShzKSBvZiB2YWx1ZXMgZXhwZWN0ZWQgYnkgdGhlIGlucHV0ICovXG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBtZXRob2QocykgdXNlZCB0byBjaGVjayBmb3IgdmFsaWQgaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgaW5wdXRtb2RlOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpbnB1dEVsZW1lbnQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpbnB1dE1vZGVBdHRyaWJ1dGUgPSBjb21wdXRlZDxJbnB1dE1vZGUgfCB1bmRlZmluZWQ+KCgpID0+IGdldFRleHRJbnB1dE1vZGUocHJvcHMudHlwZSwgcHJvcHMuaW5wdXRtb2RlKSk7XG4gIGNvbnN0IGlucHV0VHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PSBudWxsIHx8IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgbW9kZWxWYWx1ZS52YWx1ZSAmJiBwcm9wcy50eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcbiAgKTtcbiAgY29uc3Qgc2hvdWxkU2hvd1Bhc3N3b3JkQnV0dG9uID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgbW9kZWxWYWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gaW5wdXRFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIFttb2RlbFZhbHVlLCAoKSA9PiBwcm9wcy50cmFuc2Zvcm1WYWx1ZV0sXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKCFwcm9wcy50cmFuc2Zvcm1WYWx1ZSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBkaWdpdHMgPSBtb2RlbFZhbHVlLnZhbHVlPy5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG4gICAgICBtb2RlbFZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBzaG93RXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWZpZWxkJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlRmllbGRDbGlja1wiXG4gICAgICBAbW91c2Vkb3duPVwicHJldmVudElucHV0Rm9jdXNMb3NzT25Nb3VzZWRvd25cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1sYWJlbCcsXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDppbnB1dG1vZGU9XCJpbnB1dE1vZGVBdHRyaWJ1dGVcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dEVsZW1lbnRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJpbnB1dFR5cGVcIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJzdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dDbGVhckJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dQYXNzd29yZEJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFRleHQudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybURlcHJlY2F0ZWQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdHJhbnNmb3JtVmFsdWU/OiBGb3JtVmFsdWVUcmFuc2Zvcm1lcjtcbiAgICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzQ2xlYXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiB2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuICBjb25zdCBpbnB1dFR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHVwZGF0ZVZhbHVlLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1maWVsZCcsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWxhYmVsJyxcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIEBpbnB1dD1cImhhbmRsZUlucHV0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJoYXNDbGVhciAmJiB0eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJ0eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRleHRhcmVhIGlucHV0IGludGVuZGVkIHRvIGJlIHVzZWQgaW4gZm9ybXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dHRleHRhcmVhLS1kb2NzKSBmb3IgVGlkZUlucHV0VGV4dGFyZWFcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYW5kIHZhbGlkIHN0YXRlICovXG4gICAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGVycm9ycyBkaXNwbGF5IHByaW9yIHRvIGJsdXIgKi9cbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBpbnB1dCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBBcHBsaWVzIGEgbWF4aW11bSBjaGFyYWN0ZXIgY291bnQgdG8gdGhlIGlucHV0ICovXG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEFwcGxpZXMgYSBtaW5pbXVtIGNoYXJhY3RlciBjb3VudCB0byB0aGUgaW5wdXQgKi9cbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogTmFtZSBhdHRyaWJ1dGUgKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIGlucHV0ICovXG4gICAgcm93cz86IG51bWJlcjtcblxuICAgIC8qKiBFeHBsYWluZXIgdGV4dCBiZW5lYXRoIGlucHV0ICovXG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBtZXRob2QocykgdXNlZCB0byBjaGVjayBmb3IgdmFsaWQgaW5wdXQgdmFsdWUgdXBvbiBpbnZva2luZyByZWxldmFudCBsaXN0ZW5lciBldmVudChzKSAqL1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCB0ZXh0YXJlYUVsZW1lbnQgPSByZWY8SFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIHRleHRhcmVhRWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gdGV4dGFyZWFFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBzaG93RXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUZpZWxkQ2xpY2tcIlxuICAgICAgQG1vdXNlZG93bj1cInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCcsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuUEFERElORy5YLk9ORSwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJ0ZXh0YXJlYUVsZW1lbnRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicm93c1wiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0YXJlYS52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgaGFzRXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwnLFxuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgZ2VuZXJpYyBtZW51IGl0ZW0gaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBuYXZpZ2F0aW9uIG1lbnVzIG9yIGRyb3Bkb3ducy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZW1lbnVpdGVtLS1kb2NzKSBmb3IgVGlkZU1lbnVJdGVtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBUaGUgZWxlbWVudCB0byByZW5kZXIgdGhlIHJvb3QgZWxlbWVudCBhcy4gKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBUaGUgaHJlZiBhdHRyaWJ1dGUgdG8gYXBwbHkgd2hlbiB0aGUgZWxlbWVudCBpcyBhIGxpbmsuICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRvIG9wZW4gbGluayBpbiBhIG5ldyB0YWIuICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIEljb24gdG8gc2hvdyBhZnRlciB0aGUgbGFiZWwuICovXG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcblxuICAgIC8qKiBUaGUgbGFiZWwgdG8gYmUgZGlzcGxheWVkLiAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLW1lbnUtaXRlbScsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuWkVSTyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICBdXCJcbiAgICA6aHJlZj1cImhyZWZcIlxuICAgIDp0YXJnZXQ9XCJpc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwiZWxlbWVudFwiXG4gID5cbiAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICA6aWNvbj1cImljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgdi1pZj1cImljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tZW51LWl0ZW0ge1xuICAgIGhlaWdodDogNDBweDtcbiAgfVxuXG4gIC50aWRlLW1lbnUtaXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG48L3N0eWxlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVCA9IHtcbiAgU006ICdzbScsXG4gIE1EOiAnbWQnLFxuICBMRzogJ2xnJyxcbiAgWEw6ICd4bCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTUVESUEgPSB7XG4gIFNNOiA3NjgsXG4gIE1EOiA5OTIsXG4gIExHOiAxMjMyLFxuICBYTDogMTkyMCxcbn07XG5cbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIEJSRUFLUE9JTlQpW2tleW9mIHR5cGVvZiBCUkVBS1BPSU5UXTtcbmV4cG9ydCB0eXBlIE1lZGlhID0gKHR5cGVvZiBNRURJQSlba2V5b2YgdHlwZW9mIE1FRElBXTtcbiIsImltcG9ydCB7IG5leHRUaWNrIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBEaXJlY3RseSBtb2RpZmllcyB0aGUgYDxib2R5PmAgZWxlbWVudCB0byBhcHBseSBvciByZW1vdmUgc2Nyb2xsIGxvY2suXG4gKiBXaGVuIGBmYWxzZWAgaXMgcHJvdmlkZWQsIGl0IG9ubHkgdW5sb2NrcyBzY3JvbGwgaWYgdGhlcmUgYXJlIG5vIG9wZW5cbiAqIEhUTUwgZGlhbG9nIGVsZW1lbnRzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0U2Nyb2xsTG9jayA9IGFzeW5jIChpc0xvY2tlZDogYm9vbGVhbikgPT4ge1xuICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAvLyBjb25zdCBCT0RZX0xPQ0tfQ0xBU1MgPSAnYm9keS1zY3JvbGwtbG9jayc7XG5cbiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG5cbiAgaWYgKGlzTG9ja2VkKSB7XG4gICAgaWYgKCFib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kpIHtcbiAgICAgIGNvbnN0IHNjcm9sbFkgPSB3aW5kb3cuc2Nyb2xsWTtcblxuICAgICAgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZID0gc2Nyb2xsWS50b1N0cmluZygpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScsIGAke3Njcm9sbFl9cHhgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ2luc2V0JywgJzAnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCBgY2FsYygwcHggLSB2YXIoLS1zYXZlZC1zY3JvbGwteSwgMHB4KSlgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCAnc2Nyb2xsJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdmaXhlZCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfTE9DS19DTEFTUyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2dbb3Blbl0nKSkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxZID0gcGFyc2VJbnQoYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZIHx8ICcwJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9MT0NLX0NMQVNTKTtcblxuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnaW5zZXQnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ21hcmdpbi10b3AnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ292ZXJmbG93LXknKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3Bvc2l0aW9uJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15Jyk7XG5cbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnYXV0bycsXG4gICAgICAgIHRvcDogc2F2ZWRTY3JvbGxZLFxuICAgICAgfSk7XG5cbiAgICAgIGRlbGV0ZSBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1k7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgVE9QX0xBWUVSX0lEID0gJ3RpZGUtdG9wLWxheWVyJztcblxuZXhwb3J0IGNvbnN0IGluaXRGYXV4VG9wTGF5ZXIgPSAoKSA9PiB7XG4gIGxldCB0b3BMYXllciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFRPUF9MQVlFUl9JRCk7XG4gIGlmICghdG9wTGF5ZXIpIHtcbiAgICB0b3BMYXllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRvcExheWVyLmlkID0gVE9QX0xBWUVSX0lEO1xuICAgIHRvcExheWVyLnNldEF0dHJpYnV0ZSgnZGF0YS1jc3Mtc2NvcGUnLCAnJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3BMYXllcik7XG4gIH1cbiAgdG9wTGF5ZXIuc3R5bGUuaXNvbGF0aW9uID0gJ2lzb2xhdGUnO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgbW9kYWwgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9yIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVtb2RhbC0tZG9jcykgZm9yIFRpZGVNb2RhbFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgbmV4dFRpY2ssIG9uQmVmb3JlTW91bnQsIG9uQmVmb3JlVW5tb3VudCwgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJSRUFLUE9JTlQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGJlZm9yZSB0aGUgbW9kYWwgY2xvc2VzLlxuICAgICAqXG4gICAgICogUmV0dXJuIGBmYWxzZWAgdG8gY2FuY2VsIHRoZSBjbG9zZSBldmVudC5cbiAgICAgKi9cbiAgICBiZWZvcmVDbG9zZT86ICgpID0+IHZvaWQgfCBib29sZWFuIHwgUHJvbWlzZTx2b2lkIHwgYm9vbGVhbj47XG4gICAgLyoqIENvbnRyb2xzIGRpc3BsYXkgb2YgdGhlIGJhY2sgYnV0dG9uLiAqL1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gICAgLyoqIENvbnRyb2xzIHdoZXRoZXIgdGhlIG1vZGFsIGNhbiBiZSBkaXNtaXNzZWQgd2l0aCBhIGNsb3NlIGJ1dHRvbiBvciBvdGhlciBnZXN0dXJlcy4gKi9cbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgICAvKiogVGhlIHRpdGxlIHRvIGRpc3BsYXkgaW4gdGhlIG1vZGFsJ3MgaGVhZGVyLiAqL1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIC8qKiBDdXN0b20gb3ZlcnJpZGUgdG8gdGhlIG1vZGFsJ3Mgd2lkdGggY29uc3RyYWludC4gSW5jbHVkZSB1bml0cy4gKi9cbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJlZm9yZUNsb3NlOiB1bmRlZmluZWQsXG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kYWxDb250ZW50OiBSZWY8SFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG4gIGNvbnN0IG1vZGFsRGlhbG9nOiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uc2hvd01vZGFsKCk7XG4gICAgc2V0U2Nyb2xsTG9jayh0cnVlKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LmNsb3NlKCk7XG4gICAgc2V0U2Nyb2xsTG9jayhmYWxzZSk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQ29udGVudFRvVG9wID0gKCkgPT4ge1xuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmICghbW9kYWxDb250ZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBtb2RhbENvbnRlbnQudmFsdWUuc2Nyb2xsVG9wID0gMDtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBjbG9zZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAocHJvcHMuYmVmb3JlQ2xvc2UpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3BzLmJlZm9yZUNsb3NlKCk7XG4gICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkgcmV0dXJuO1xuICAgIH1cblxuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5dXAgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGNsb3NlKCk7XG4gIH07XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFtb2RhbERpYWxvZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICBzY3JvbGxDb250ZW50VG9Ub3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJtb2RhbERpYWxvZ1wiXG4gICAgICA6c3R5bGU9XCJ7ICctLW1vZGFsLXdpZHRoJzogd2lkdGggfVwiXG4gICAgICBAY2FuY2VsLnByZXZlbnRcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAa2V5dXAuZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5dXBcIlxuICAgICAgY2xvc2VkYnk9XCJub25lXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1ib2R5JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgICAgICAgQ1NTLndpdGhCcmVha3BvaW50KFtDU1MuU0hBRE9XLkJPVFRPTV0sIEJSRUFLUE9JTlQuU00pLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWhlYWRlcicsXG4gICAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuWl9JTkRFWC5PTkUsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgICAgZGF0YS10ZXN0PVwidGlkZS1tb2RhbC1iYWNrXCJcbiAgICAgICAgICAgIHRpdGxlPVwiQmFja1wiXG4gICAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgICAgdi10ZXh0PVwidGl0bGVcIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImNsb3NlXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdD1cInRpZGUtbW9kYWwtY2xvc2VcIlxuICAgICAgICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5UV08sXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICByZWY9XCJtb2RhbENvbnRlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGZvb3RlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWZvb3RlcicsXG4gICAgICAgICAgICBDU1MuQVhJUzEuRU5ELFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5HQVAuVFdPLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwiJHNsb3RzLmZvb3RlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCIgLz5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLW1vZGFsIHtcbiAgICAtLW1vZGFsLXBhZGRpbmcteDogMjBweDtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cblxuICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICB9XG5cbiAgLnRpZGUtbW9kYWw6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuXG4gIEBzdGFydGluZy1zdHlsZSB7XG4gICAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG5cbiAgICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG5cbiAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgd2lkdGg6IHZhcigtLW1vZGFsLXdpZHRoLCA1NzZweCk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsLWhlYWRlcixcbiAgLnRpZGUtbW9kYWwtZm9vdGVyIHtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsLWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tbW9kYWwtcGFkZGluZy14KSB2YXIoLS10aWRlLXNhZmUtZnIpIHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gICAgY29udGFpbjogbGF5b3V0O1xuICB9XG5cbiAgOndoZXJlKC50aWRlLW1vZGFsLWNvbnRlbnQpOmRlZXAoPiA6d2hlcmUoKikpIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgfVxuXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLW1vZGFsIHtcbiAgICAgIC0tbW9kYWwtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMik7XG4gICAgfVxuXG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiA4NSU7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBwYWdpbmF0aW9uIGNvbXBvbmVudCBmb3IgbmF2aWdhdGluZyB0aHJvdWdoIHBhZ2VzIG9mIGNvbnRlbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVwYWdpbmF0aW9uLS1kb2NzKSBmb3IgVGlkZVBhZ2luYXRpb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIFRvdGFsIG51bWJlciBvZiBwYWdlcyBhdmFpbGFibGUgKi9cbiAgICBwYWdlQ291bnQ6IG51bWJlcjtcbiAgICAvKiogTnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlLiBXaGVuIHByb3ZpZGVkLCBhIHJlc3VsdHMgc3VtbWFyeSBpcyBzaG93biBiZWxvdyB0aGUgcGFnaW5hdGlvbiBjb250cm9scy4gKi9cbiAgICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgICAvKiogVG90YWwgbnVtYmVyIG9mIHJlc3VsdHMgKi9cbiAgICB0b3RhbFJlc3VsdHM6IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIGNvbnN0IGN1cnJlbnRJbmRleCA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLnBhZ2VDb3VudCA8IDEpIHJldHVybjtcblxuICAgIGNvbnN0IGNsYW1wZWQgPSBNYXRoLm1pbihNYXRoLm1heChjdXJyZW50SW5kZXgudmFsdWUsIDEpLCBwcm9wcy5wYWdlQ291bnQpO1xuICAgIGlmIChjbGFtcGVkICE9PSBjdXJyZW50SW5kZXgudmFsdWUpIGN1cnJlbnRJbmRleC52YWx1ZSA9IGNsYW1wZWQ7XG4gIH0pO1xuXG4gIGNvbnN0IHJlc3VsdFN0YXJ0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy5wYWdlU2l6ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy50b3RhbFJlc3VsdHMgPT09IDApIHJldHVybiBmb3JtYXROdW1iZXIoMCk7XG4gICAgcmV0dXJuIGZvcm1hdE51bWJlcigoY3VycmVudEluZGV4LnZhbHVlIC0gMSkgKiBwcm9wcy5wYWdlU2l6ZSArIDEpO1xuICB9KTtcblxuICBjb25zdCByZXN1bHRFbmQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLnBhZ2VTaXplID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKHByb3BzLnRvdGFsUmVzdWx0cyA9PT0gMCkgcmV0dXJuIGZvcm1hdE51bWJlcigwKTtcbiAgICByZXR1cm4gZm9ybWF0TnVtYmVyKE1hdGgubWluKGN1cnJlbnRJbmRleC52YWx1ZSAqIHByb3BzLnBhZ2VTaXplLCBwcm9wcy50b3RhbFJlc3VsdHMpKTtcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlUHJldmlvdXNDbGljayA9ICgpID0+IHtcbiAgICBpZiAoY3VycmVudEluZGV4LnZhbHVlID4gMSkge1xuICAgICAgY3VycmVudEluZGV4LnZhbHVlLS07XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU5leHRDbGljayA9ICgpID0+IHtcbiAgICBpZiAoY3VycmVudEluZGV4LnZhbHVlIDwgcHJvcHMucGFnZUNvdW50KSB7XG4gICAgICBjdXJyZW50SW5kZXgudmFsdWUrKztcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvbiA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRl1cIj5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgOmRpc2FibGVkPVwiY3VycmVudEluZGV4IDw9IDFcIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZVByZXZpb3VzQ2xpY2tcIlxuICAgICAgLz5cblxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQlVUVE9OXzEsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAge3sgZm9ybWF0TnVtYmVyKGN1cnJlbnRJbmRleCkgfX0gLyB7eyBmb3JtYXROdW1iZXIocGFnZUNvdW50KSB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgOmRpc2FibGVkPVwiY3VycmVudEluZGV4ID49IHBhZ2VDb3VudFwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZU5leHRDbGlja1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPHBcbiAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICB2LWlmPVwicHJvcHMucGFnZVNpemUgIT09IHVuZGVmaW5lZFwiXG4gICAgPlxuICAgICAge3sgcmVzdWx0U3RhcnQgfX3igJN7eyByZXN1bHRFbmQgfX0gb2Yge3sgZm9ybWF0TnVtYmVyKHRvdGFsUmVzdWx0cykgfX0gcmVzdWx0c1xuICAgIDwvcD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cbiIsIi8qKlxuICogQ3VzdG9tIHBvc2l0aW9uaW5nIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3ZpcnR1YWwtZWxlbWVudHNcbiAqL1xuXG5jb25zdCBzaWRlcyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5jb25zdCBhbGlnbm1lbnRzID0gWydzdGFydCcsICdlbmQnXTtcbmNvbnN0IHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovc2lkZXMucmVkdWNlKChhY2MsIHNpZGUpID0+IGFjYy5jb25jYXQoc2lkZSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1swXSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1sxXSksIFtdKTtcbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5jb25zdCBmbG9vciA9IE1hdGguZmxvb3I7XG5jb25zdCBjcmVhdGVDb29yZHMgPSB2ID0+ICh7XG4gIHg6IHYsXG4gIHk6IHZcbn0pO1xuY29uc3Qgb3Bwb3NpdGVTaWRlTWFwID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuY29uc3Qgb3Bwb3NpdGVBbGlnbm1lbnRNYXAgPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZnVuY3Rpb24gY2xhbXAoc3RhcnQsIHZhbHVlLCBlbmQpIHtcbiAgcmV0dXJuIG1heChzdGFydCwgbWluKHZhbHVlLCBlbmQpKTtcbn1cbmZ1bmN0aW9uIGV2YWx1YXRlKHZhbHVlLCBwYXJhbSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocGFyYW0pIDogdmFsdWU7XG59XG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBeGlzTGVuZ3RoKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbn1cbmZ1bmN0aW9uIGdldFNpZGVBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKSA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBnZXRPcHBvc2l0ZUF4aXMoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSk7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGxldCBtYWluQWxpZ25tZW50U2lkZSA9IGFsaWdubWVudEF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiBbbWFpbkFsaWdubWVudFNpZGUsIGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKV07XG59XG5mdW5jdGlvbiBnZXRFeHBhbmRlZFBsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGNvbnN0IG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBhbGlnbm1lbnQgPT4gb3Bwb3NpdGVBbGlnbm1lbnRNYXBbYWxpZ25tZW50XSk7XG59XG5mdW5jdGlvbiBnZXRTaWRlTGlzdChzaWRlLCBpc1N0YXJ0LCBydGwpIHtcbiAgY29uc3QgbHIgPSBbJ2xlZnQnLCAncmlnaHQnXTtcbiAgY29uc3QgcmwgPSBbJ3JpZ2h0JywgJ2xlZnQnXTtcbiAgY29uc3QgdGIgPSBbJ3RvcCcsICdib3R0b20nXTtcbiAgY29uc3QgYnQgPSBbJ2JvdHRvbScsICd0b3AnXTtcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgaWYgKHJ0bCkgcmV0dXJuIGlzU3RhcnQgPyBybCA6IGxyO1xuICAgICAgcmV0dXJuIGlzU3RhcnQgPyBsciA6IHJsO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gdGIgOiBidDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKHBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZGlyZWN0aW9uLCBydGwpIHtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGxldCBsaXN0ID0gZ2V0U2lkZUxpc3QoZ2V0U2lkZShwbGFjZW1lbnQpLCBkaXJlY3Rpb24gPT09ICdzdGFydCcsIHJ0bCk7XG4gIGlmIChhbGlnbm1lbnQpIHtcbiAgICBsaXN0ID0gbGlzdC5tYXAoc2lkZSA9PiBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnQpO1xuICAgIGlmIChmbGlwQWxpZ25tZW50KSB7XG4gICAgICBsaXN0ID0gbGlzdC5jb25jYXQobGlzdC5tYXAoZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuZnVuY3Rpb24gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIC4uLnBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gcmVjdDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIGxlZnQ6IHgsXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmV4cG9ydCB7IGFsaWdubWVudHMsIGNsYW1wLCBjcmVhdGVDb29yZHMsIGV2YWx1YXRlLCBleHBhbmRQYWRkaW5nT2JqZWN0LCBmbG9vciwgZ2V0QWxpZ25tZW50LCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0QXhpc0xlbmd0aCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBeGlzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0UGFkZGluZ09iamVjdCwgZ2V0U2lkZSwgZ2V0U2lkZUF4aXMsIG1heCwgbWluLCBwbGFjZW1lbnRzLCByZWN0VG9DbGllbnRSZWN0LCByb3VuZCwgc2lkZXMgfTtcbiIsImltcG9ydCB7IGdldFNpZGVBeGlzLCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBeGlzTGVuZ3RoLCBnZXRTaWRlLCBnZXRBbGlnbm1lbnQsIGV2YWx1YXRlLCBnZXRQYWRkaW5nT2JqZWN0LCByZWN0VG9DbGllbnRSZWN0LCBtaW4sIGNsYW1wLCBwbGFjZW1lbnRzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlUGxhY2VtZW50LCBnZXRFeHBhbmRlZFBsYWNlbWVudHMsIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMsIHNpZGVzLCBtYXgsIGdldE9wcG9zaXRlQXhpcyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5leHBvcnQgeyByZWN0VG9DbGllbnRSZWN0IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcblxuZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoX3JlZiwgcGxhY2VtZW50LCBydGwpIHtcbiAgbGV0IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHNpZGVBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25MZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gc2lkZUF4aXMgPT09ICd5JztcbiAgY29uc3QgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGZsb2F0aW5nLndpZHRoIC8gMjtcbiAgY29uc3QgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBmbG9hdGluZy5oZWlnaHQgLyAyO1xuICBjb25zdCBjb21tb25BbGlnbiA9IHJlZmVyZW5jZVthbGlnbkxlbmd0aF0gLyAyIC0gZmxvYXRpbmdbYWxpZ25MZW5ndGhdIC8gMjtcbiAgbGV0IGNvb3JkcztcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBmbG9hdGluZy5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZmxvYXRpbmcud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cbiAgc3dpdGNoIChnZXRBbGlnbm1lbnQocGxhY2VtZW50KSkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSAtPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmQnOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdICs9IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBjb29yZHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICpcbiAqIFRoaXMgZXhwb3J0IGRvZXMgbm90IGhhdmUgYW55IGBwbGF0Zm9ybWAgaW50ZXJmYWNlIGxvZ2ljLiBZb3Ugd2lsbCBuZWVkIHRvXG4gKiB3cml0ZSBvbmUgZm9yIHRoZSBwbGF0Zm9ybSB5b3UgYXJlIHVzaW5nIEZsb2F0aW5nIFVJIHdpdGguXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpXTtcbiAgICBjb25zdCB7XG4gICAgICB4OiBuZXh0WCxcbiAgICAgIHk6IG5leHRZLFxuICAgICAgZGF0YSxcbiAgICAgIHJlc2V0XG4gICAgfSA9IGF3YWl0IGZuKHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgaW5pdGlhbFBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICBzdHJhdGVneSxcbiAgICBtaWRkbGV3YXJlRGF0YVxuICB9O1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIHZhciBfYXdhaXQkcGxhdGZvcm0kaXNFbGU7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGF0Zm9ybSxcbiAgICByZWN0cyxcbiAgICBlbGVtZW50cyxcbiAgICBzdHJhdGVneVxuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHtcbiAgICBib3VuZGFyeSA9ICdjbGlwcGluZ0FuY2VzdG9ycycsXG4gICAgcm9vdEJvdW5kYXJ5ID0gJ3ZpZXdwb3J0JyxcbiAgICBlbGVtZW50Q29udGV4dCA9ICdmbG9hdGluZycsXG4gICAgYWx0Qm91bmRhcnkgPSBmYWxzZSxcbiAgICBwYWRkaW5nID0gMFxuICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgY29uc3QgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8gJ3JlZmVyZW5jZScgOiAnZmxvYXRpbmcnO1xuICBjb25zdCBlbGVtZW50ID0gZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICBjb25zdCBjbGlwcGluZ0NsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KGF3YWl0IHBsYXRmb3JtLmdldENsaXBwaW5nUmVjdCh7XG4gICAgZWxlbWVudDogKChfYXdhaXQkcGxhdGZvcm0kaXNFbGUgPSBhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoZWxlbWVudCkpKSAhPSBudWxsID8gX2F3YWl0JHBsYXRmb3JtJGlzRWxlIDogdHJ1ZSkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCAoYXdhaXQgKHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnRzLmZsb2F0aW5nKSkpLFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9KSk7XG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3RzLmZsb2F0aW5nLndpZHRoLFxuICAgIGhlaWdodDogcmVjdHMuZmxvYXRpbmcuaGVpZ2h0XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBvZmZzZXRTY2FsZSA9IChhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkpID8gKGF3YWl0IChwbGF0Zm9ybS5nZXRTY2FsZSA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkpIHx8IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3QgZWxlbWVudENsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBvcHRpb25zID0+ICh7XG4gIG5hbWU6ICdhcnJvdycsXG4gIG9wdGlvbnMsXG4gIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgY29uc3Qge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHMsXG4gICAgICBtaWRkbGV3YXJlRGF0YVxuICAgIH0gPSBzdGF0ZTtcbiAgICAvLyBTaW5jZSBgZWxlbWVudGAgaXMgcmVxdWlyZWQsIHdlIGRvbid0IFBhcnRpYWw8PiB0aGUgdHlwZS5cbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgeCxcbiAgICAgIHlcbiAgICB9O1xuICAgIGNvbnN0IGF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChheGlzKTtcbiAgICBjb25zdCBhcnJvd0RpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgIGNvbnN0IGlzWUF4aXMgPSBheGlzID09PSAneSc7XG4gICAgY29uc3QgbWluUHJvcCA9IGlzWUF4aXMgPyAndG9wJyA6ICdsZWZ0JztcbiAgICBjb25zdCBtYXhQcm9wID0gaXNZQXhpcyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICBjb25zdCBjbGllbnRQcm9wID0gaXNZQXhpcyA/ICdjbGllbnRIZWlnaHQnIDogJ2NsaWVudFdpZHRoJztcbiAgICBjb25zdCBlbmREaWZmID0gcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gKyByZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBjb29yZHNbYXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIGNvbnN0IHN0YXJ0RGlmZiA9IGNvb3Jkc1theGlzXSAtIHJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgICBjb25zdCBhcnJvd09mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50KSk7XG4gICAgbGV0IGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGFycm93T2Zmc2V0UGFyZW50W2NsaWVudFByb3BdIDogMDtcblxuICAgIC8vIERPTSBwbGF0Zm9ybSBjYW4gcmV0dXJuIGB3aW5kb3dgIGFzIHRoZSBgb2Zmc2V0UGFyZW50YC5cbiAgICBpZiAoIWNsaWVudFNpemUgfHwgIShhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoYXJyb3dPZmZzZXRQYXJlbnQpKSkpIHtcbiAgICAgIGNsaWVudFNpemUgPSBlbGVtZW50cy5mbG9hdGluZ1tjbGllbnRQcm9wXSB8fCByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIH1cbiAgICBjb25zdCBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjtcblxuICAgIC8vIElmIHRoZSBwYWRkaW5nIGlzIGxhcmdlIGVub3VnaCB0aGF0IGl0IGNhdXNlcyB0aGUgYXJyb3cgdG8gbm8gbG9uZ2VyIGJlXG4gICAgLy8gY2VudGVyZWQsIG1vZGlmeSB0aGUgcGFkZGluZyBzbyB0aGF0IGl0IGlzIGNlbnRlcmVkLlxuICAgIGNvbnN0IGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiAtIDE7XG4gICAgY29uc3QgbWluUGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21pblByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcbiAgICBjb25zdCBtYXhQYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWF4UHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBmbG9hdGluZyBlbGVtZW50IGlmIHRoZSBjZW50ZXJcbiAgICAvLyBwb2ludCBpcyBvdXRzaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50J3MgYm91bmRzLlxuICAgIGNvbnN0IG1pbiQxID0gbWluUGFkZGluZztcbiAgICBjb25zdCBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLSBtYXhQYWRkaW5nO1xuICAgIGNvbnN0IGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gICAgY29uc3Qgb2Zmc2V0ID0gY2xhbXAobWluJDEsIGNlbnRlciwgbWF4KTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGwgZW5vdWdoIHRoYXQgdGhlIGFycm93J3MgcGFkZGluZyBjYXVzZXMgaXQgdG9cbiAgICAvLyB0byBwb2ludCB0byBub3RoaW5nIGZvciBhbiBhbGlnbmVkIHBsYWNlbWVudCwgYWRqdXN0IHRoZSBvZmZzZXQgb2YgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCBpdHNlbGYuIFRvIGVuc3VyZSBgc2hpZnQoKWAgY29udGludWVzIHRvIHRha2UgYWN0aW9uLFxuICAgIC8vIGEgc2luZ2xlIHJlc2V0IGlzIHBlcmZvcm1lZCB3aGVuIHRoaXMgaXMgdHJ1ZS5cbiAgICBjb25zdCBzaG91bGRBZGRPZmZzZXQgPSAhbWlkZGxld2FyZURhdGEuYXJyb3cgJiYgZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT09IG9mZnNldCAmJiByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSAoY2VudGVyIDwgbWluJDEgPyBtaW5QYWRkaW5nIDogbWF4UGFkZGluZykgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgPCAwO1xuICAgIGNvbnN0IGFsaWdubWVudE9mZnNldCA9IHNob3VsZEFkZE9mZnNldCA/IGNlbnRlciA8IG1pbiQxID8gY2VudGVyIC0gbWluJDEgOiBjZW50ZXIgLSBtYXggOiAwO1xuICAgIHJldHVybiB7XG4gICAgICBbYXhpc106IGNvb3Jkc1theGlzXSArIGFsaWdubWVudE9mZnNldCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgW2F4aXNdOiBvZmZzZXQsXG4gICAgICAgIGNlbnRlck9mZnNldDogY2VudGVyIC0gb2Zmc2V0IC0gYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgICAuLi4oc2hvdWxkQWRkT2Zmc2V0ICYmIHtcbiAgICAgICAgICBhbGlnbm1lbnRPZmZzZXRcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICByZXNldDogc2hvdWxkQWRkT2Zmc2V0XG4gICAgfTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50LCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykge1xuICBjb25zdCBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50ID0gYWxpZ25tZW50ID8gWy4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCksIC4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT09IGFsaWdubWVudCldIDogYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRTaWRlKHBsYWNlbWVudCkgPT09IHBsYWNlbWVudCk7XG4gIHJldHVybiBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50LmZpbHRlcihwbGFjZW1lbnQgPT4ge1xuICAgIGlmIChhbGlnbm1lbnQpIHtcbiAgICAgIHJldHVybiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50IHx8IChhdXRvQWxpZ25tZW50ID8gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSAhPT0gcGxhY2VtZW50IDogZmFsc2UpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG59XG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXV0b1BsYWNlbWVudCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhdXRvUCwgX21pZGRsZXdhcmVEYXRhJGF1dG9QMiwgX3BsYWNlbWVudHNUaGF0Rml0T25FO1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBhbGlnbm1lbnQsXG4gICAgICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cyxcbiAgICAgICAgYXV0b0FsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHMkMSA9IGFsaWdubWVudCAhPT0gdW5kZWZpbmVkIHx8IGFsbG93ZWRQbGFjZW1lbnRzID09PSBwbGFjZW1lbnRzID8gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQgfHwgbnVsbCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIDogYWxsb3dlZFBsYWNlbWVudHM7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gKChfbWlkZGxld2FyZURhdGEkYXV0b1AgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QLmluZGV4KSB8fCAwO1xuICAgICAgY29uc3QgY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudHMkMVtjdXJyZW50SW5kZXhdO1xuICAgICAgaWYgKGN1cnJlbnRQbGFjZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBhbGlnbm1lbnRTaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKGN1cnJlbnRQbGFjZW1lbnQsIHJlY3RzLCBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpO1xuXG4gICAgICAvLyBNYWtlIGBjb21wdXRlQ29vcmRzYCBzdGFydCBmcm9tIHRoZSByaWdodCBwbGFjZS5cbiAgICAgIGlmIChwbGFjZW1lbnQgIT09IGN1cnJlbnRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRzJDFbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50T3ZlcmZsb3dzID0gW292ZXJmbG93W2dldFNpZGUoY3VycmVudFBsYWNlbWVudCldLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1swXV0sIG92ZXJmbG93W2FsaWdubWVudFNpZGVzWzFdXV07XG4gICAgICBjb25zdCBhbGxPdmVyZmxvd3MgPSBbLi4uKCgoX21pZGRsZXdhcmVEYXRhJGF1dG9QMiA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AyLm92ZXJmbG93cykgfHwgW10pLCB7XG4gICAgICAgIHBsYWNlbWVudDogY3VycmVudFBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzOiBjdXJyZW50T3ZlcmZsb3dzXG4gICAgICB9XTtcbiAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4ICsgMV07XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBtb3JlIHBsYWNlbWVudHMgdG8gY2hlY2suXG4gICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UgPSBhbGxPdmVyZmxvd3MubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQoZC5wbGFjZW1lbnQpO1xuICAgICAgICByZXR1cm4gW2QucGxhY2VtZW50LCBhbGlnbm1lbnQgJiYgY3Jvc3NBeGlzID9cbiAgICAgICAgLy8gQ2hlY2sgYWxvbmcgdGhlIG1haW5BeGlzIGFuZCBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBkLm92ZXJmbG93cy5zbGljZSgwLCAyKS5yZWR1Y2UoKGFjYywgdikgPT4gYWNjICsgdiwgMCkgOlxuICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBtYWluQXhpcy5cbiAgICAgICAgZC5vdmVyZmxvd3NbMF0sIGQub3ZlcmZsb3dzXTtcbiAgICAgIH0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZSA9IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZS5maWx0ZXIoZCA9PiBkWzJdLnNsaWNlKDAsXG4gICAgICAvLyBBbGlnbmVkIHBsYWNlbWVudHMgc2hvdWxkIG5vdCBjaGVjayB0aGVpciBvcHBvc2l0ZSBjcm9zc0F4aXNcbiAgICAgIC8vIHNpZGUuXG4gICAgICBnZXRBbGlnbm1lbnQoZFswXSkgPyAyIDogMykuZXZlcnkodiA9PiB2IDw9IDApKTtcbiAgICAgIGNvbnN0IHJlc2V0UGxhY2VtZW50ID0gKChfcGxhY2VtZW50c1RoYXRGaXRPbkUgPSBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGVbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfcGxhY2VtZW50c1RoYXRGaXRPbkVbMF0pIHx8IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZVswXVswXTtcbiAgICAgIGlmIChyZXNldFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ZsaXAnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRmbGlwO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgaW5pdGlhbFBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWUsXG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgICBmYWxsYmFja1N0cmF0ZWd5ID0gJ2Jlc3RGaXQnLFxuICAgICAgICBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gJ25vbmUnLFxuICAgICAgICBmbGlwQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gICAgICAvLyBJZiBhIHJlc2V0IGJ5IHRoZSBhcnJvdyB3YXMgY2F1c2VkIGR1ZSB0byBhbiBhbGlnbm1lbnQgb2Zmc2V0IGJlaW5nXG4gICAgICAvLyBhZGRlZCwgd2Ugc2hvdWxkIHNraXAgYW55IGxvZ2ljIG5vdyBzaW5jZSBgZmxpcCgpYCBoYXMgYWxyZWFkeSBkb25lIGl0c1xuICAgICAgLy8gd29yay5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjU0OSNpc3N1ZWNvbW1lbnQtMTcxOTYwMTY0M1xuICAgICAgaWYgKChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpbml0aWFsU2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhpbml0aWFsUGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzQmFzZVBsYWNlbWVudCA9IGdldFNpZGUoaW5pdGlhbFBsYWNlbWVudCkgPT09IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gICAgICBjb25zdCBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcEFsaWdubWVudCA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChpbml0aWFsUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZFBsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9IGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gIT09ICdub25lJztcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzLnB1c2goLi4uZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uLCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHMgPSBbaW5pdGlhbFBsYWNlbWVudCwgLi4uZmFsbGJhY2tQbGFjZW1lbnRzXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBvdmVyZmxvd3MgPSBbXTtcbiAgICAgIGxldCBvdmVyZmxvd3NEYXRhID0gKChfbWlkZGxld2FyZURhdGEkZmxpcCA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcC5vdmVyZmxvd3MpIHx8IFtdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZV0pO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IHNpZGVzID0gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKTtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZXNbMF1dLCBvdmVyZmxvd1tzaWRlc1sxXV0pO1xuICAgICAgfVxuICAgICAgb3ZlcmZsb3dzRGF0YSA9IFsuLi5vdmVyZmxvd3NEYXRhLCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzXG4gICAgICB9XTtcblxuICAgICAgLy8gT25lIG9yIG1vcmUgc2lkZXMgaXMgb3ZlcmZsb3dpbmcuXG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeShzaWRlID0+IHNpZGUgPD0gMCkpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwMiwgX292ZXJmbG93c0RhdGEkZmlsdGVyO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoKChfbWlkZGxld2FyZURhdGEkZmxpcDIgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAyLmluZGV4KSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgcGxhY2VtZW50IGFuZCByZS1ydW4gdGhlIGxpZmVjeWNsZS5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGNhbmRpZGF0ZXMgdGhhdCBmaXQgb24gdGhlIG1haW5BeGlzIHNpZGUgb2Ygb3ZlcmZsb3csXG4gICAgICAgIC8vIHRoZW4gZmluZCB0aGUgcGxhY2VtZW50IHRoYXQgZml0cyB0aGUgYmVzdCBvbiB0aGUgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgbGV0IHJlc2V0UGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlciA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYSwgYikgPT4gYS5vdmVyZmxvd3NbMV0gLSBiLm92ZXJmbG93c1sxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjay5cbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYmVzdEZpdCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkZmlsdGVyMjtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyMiA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoZC5wbGFjZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpZGVBeGlzID09PSBpbml0aWFsU2lkZUF4aXMgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgYmlhcyB0byB0aGUgYHlgIHNpZGUgYXhpcyBkdWUgdG8gaG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICAvLyByZWFkaW5nIGRpcmVjdGlvbnMgZmF2b3JpbmcgZ3JlYXRlciB3aWR0aC5cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNpZGVBeGlzID09PSAneSc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KS5tYXAoZCA9PiBbZC5wbGFjZW1lbnQsIGQub3ZlcmZsb3dzLmZpbHRlcihvdmVyZmxvdyA9PiBvdmVyZmxvdyA+IDApLnJlZHVjZSgoYWNjLCBvdmVyZmxvdykgPT4gYWNjICsgb3ZlcmZsb3csIDApXSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyMlswXTtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2luaXRpYWxQbGFjZW1lbnQnOlxuICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50ICE9PSByZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0KSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGhcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gc2lkZXMuc29tZShzaWRlID0+IG92ZXJmbG93W3NpZGVdID49IDApO1xufVxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2hpZGUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3RyYXRlZ3kgPSAncmVmZXJlbmNlSGlkZGVuJyxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgICBjYXNlICdyZWZlcmVuY2VIaWRkZW4nOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5yZWZlcmVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbk9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2VzY2FwZWQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLmZsb2F0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICBlc2NhcGVkOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ1JlY3QocmVjdHMpIHtcbiAgY29uc3QgbWluWCA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgY29uc3QgbWluWSA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnRvcCkpO1xuICBjb25zdCBtYXhYID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgY29uc3QgbWF4WSA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmJvdHRvbSkpO1xuICByZXR1cm4ge1xuICAgIHg6IG1pblgsXG4gICAgeTogbWluWSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UmVjdHNCeUxpbmUocmVjdHMpIHtcbiAgY29uc3Qgc29ydGVkUmVjdHMgPSByZWN0cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IGEueSAtIGIueSk7XG4gIGNvbnN0IGdyb3VwcyA9IFtdO1xuICBsZXQgcHJldlJlY3QgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZFJlY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcmVjdCA9IHNvcnRlZFJlY3RzW2ldO1xuICAgIGlmICghcHJldlJlY3QgfHwgcmVjdC55IC0gcHJldlJlY3QueSA+IHByZXZSZWN0LmhlaWdodCAvIDIpIHtcbiAgICAgIGdyb3Vwcy5wdXNoKFtyZWN0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0ucHVzaChyZWN0KTtcbiAgICB9XG4gICAgcHJldlJlY3QgPSByZWN0O1xuICB9XG4gIHJldHVybiBncm91cHMubWFwKHJlY3QgPT4gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QocmVjdCkpKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaW5saW5lJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgZWxlbWVudHMsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIC8vIEEgTW91c2VFdmVudCdzIGNsaWVudHtYLFl9IGNvb3JkcyBjYW4gYmUgdXAgdG8gMiBwaXhlbHMgb2ZmIGFcbiAgICAgIC8vIENsaWVudFJlY3QncyBib3VuZHMsIGRlc3BpdGUgdGhlIGV2ZW50IGxpc3RlbmVyIGJlaW5nIHRyaWdnZXJlZC4gQVxuICAgICAgLy8gcGFkZGluZyBvZiAyIHNlZW1zIHRvIGhhbmRsZSB0aGlzIGlzc3VlLlxuICAgICAgY29uc3Qge1xuICAgICAgICBwYWRkaW5nID0gMixcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG5hdGl2ZUNsaWVudFJlY3RzID0gQXJyYXkuZnJvbSgoYXdhaXQgKHBsYXRmb3JtLmdldENsaWVudFJlY3RzID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyhlbGVtZW50cy5yZWZlcmVuY2UpKSkgfHwgW10pO1xuICAgICAgY29uc3QgY2xpZW50UmVjdHMgPSBnZXRSZWN0c0J5TGluZShuYXRpdmVDbGllbnRSZWN0cyk7XG4gICAgICBjb25zdCBmYWxsYmFjayA9IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KG5hdGl2ZUNsaWVudFJlY3RzKSk7XG4gICAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID09PSAyICYmIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodCAmJiB4ICE9IG51bGwgJiYgeSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVjdCBpbiB3aGljaCB0aGUgcG9pbnQgaXMgZnVsbHkgaW5zaWRlLlxuICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0cy5maW5kKHJlY3QgPT4geCA+IHJlY3QubGVmdCAtIHBhZGRpbmdPYmplY3QubGVmdCAmJiB4IDwgcmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQgJiYgeSA+IHJlY3QudG9wIC0gcGFkZGluZ09iamVjdC50b3AgJiYgeSA8IHJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIHx8IGZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlcmUgYXJlIDIgb3IgbW9yZSBjb25uZWN0ZWQgcmVjdHMuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIGlmIChnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneScpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGNsaWVudFJlY3RzWzBdO1xuICAgICAgICAgICAgY29uc3QgbGFzdFJlY3QgPSBjbGllbnRSZWN0c1tjbGllbnRSZWN0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGlzVG9wID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAndG9wJztcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IGZpcnN0UmVjdC50b3A7XG4gICAgICAgICAgICBjb25zdCBib3R0b20gPSBsYXN0UmVjdC5ib3R0b207XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gaXNUb3AgPyBmaXJzdFJlY3QubGVmdCA6IGxhc3RSZWN0LmxlZnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGlzVG9wID8gZmlyc3RSZWN0LnJpZ2h0IDogbGFzdFJlY3QucmlnaHQ7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0xlZnRTaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAnbGVmdCc7XG4gICAgICAgICAgY29uc3QgbWF4UmlnaHQgPSBtYXgoLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICAgICAgICAgIGNvbnN0IG1pbkxlZnQgPSBtaW4oLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gICAgICAgICAgY29uc3QgbWVhc3VyZVJlY3RzID0gY2xpZW50UmVjdHMuZmlsdGVyKHJlY3QgPT4gaXNMZWZ0U2lkZSA/IHJlY3QubGVmdCA9PT0gbWluTGVmdCA6IHJlY3QucmlnaHQgPT09IG1heFJpZ2h0KTtcbiAgICAgICAgICBjb25zdCB0b3AgPSBtZWFzdXJlUmVjdHNbMF0udG9wO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IG1lYXN1cmVSZWN0c1ttZWFzdXJlUmVjdHMubGVuZ3RoIC0gMV0uYm90dG9tO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBtaW5MZWZ0O1xuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gbWF4UmlnaHQ7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc2V0UmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICByZWZlcmVuY2U6IHtcbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RcbiAgICAgICAgfSxcbiAgICAgICAgZmxvYXRpbmc6IGVsZW1lbnRzLmZsb2F0aW5nLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSk7XG4gICAgICBpZiAocmVjdHMucmVmZXJlbmNlLnggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnggfHwgcmVjdHMucmVmZXJlbmNlLnkgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnkgfHwgcmVjdHMucmVmZXJlbmNlLndpZHRoICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS53aWR0aCB8fCByZWN0cy5yZWZlcmVuY2UuaGVpZ2h0ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHJlc2V0UmVjdHNcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLy8gRm9yIHR5cGUgYmFja3dhcmRzLWNvbXBhdGliaWxpdHksIHRoZSBgT2Zmc2V0T3B0aW9uc2AgdHlwZSB3YXMgYWxzb1xuLy8gRGVyaXZhYmxlLlxuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50LFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBzdGF0ZTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFsnbGVmdCcsICd0b3AnXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZSxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbFxuICB9IDoge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZS5tYWluQXhpcyB8fCAwLFxuICAgIGNyb3NzQXhpczogcmF3VmFsdWUuY3Jvc3NBeGlzIHx8IDAsXG4gICAgYWxpZ25tZW50QXhpczogcmF3VmFsdWUuYWxpZ25tZW50QXhpc1xuICB9O1xuICBpZiAoYWxpZ25tZW50ICYmIHR5cGVvZiBhbGlnbm1lbnRBeGlzID09PSAnbnVtYmVyJykge1xuICAgIGNyb3NzQXhpcyA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyBhbGlnbm1lbnRBeGlzICogLTEgOiBhbGlnbm1lbnRBeGlzO1xuICB9XG4gIHJldHVybiBpc1ZlcnRpY2FsID8ge1xuICAgIHg6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpLFxuICAgIHk6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aVxuICB9IDoge1xuICAgIHg6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aSxcbiAgICB5OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aVxuICB9O1xufVxuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkYXJyb3c7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGRpZmZDb29yZHMgPSBhd2FpdCBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucyk7XG5cbiAgICAgIC8vIElmIHRoZSBwbGFjZW1lbnQgaXMgdGhlIHNhbWUgYW5kIHRoZSBhcnJvdyBjYXVzZWQgYW4gYWxpZ25tZW50IG9mZnNldFxuICAgICAgLy8gdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgcG9zaXRpb25pbmcgY29vcmRpbmF0ZXMuXG4gICAgICBpZiAocGxhY2VtZW50ID09PSAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZS5wbGFjZW1lbnQpICYmIChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5kaWZmQ29vcmRzLFxuICAgICAgICAgIHBsYWNlbWVudFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2hpZnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBsaW1pdGVyID0ge1xuICAgICAgICAgIGZuOiBfcmVmID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH0gPSBfcmVmO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IG1haW5BeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IG1haW5BeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWFpbkF4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBtYWluQXhpc0Nvb3JkID0gY2xhbXAobWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gY2xhbXAobWluLCBjcm9zc0F4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpbWl0ZWRDb29yZHMgPSBsaW1pdGVyLmZuKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5saW1pdGVkQ29vcmRzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgeDogbGltaXRlZENvb3Jkcy54IC0geCxcbiAgICAgICAgICB5OiBsaW1pdGVkQ29vcmRzLnkgLSB5LFxuICAgICAgICAgIGVuYWJsZWQ6IHtcbiAgICAgICAgICAgIFttYWluQXhpc106IGNoZWNrTWFpbkF4aXMsXG4gICAgICAgICAgICBbY3Jvc3NBeGlzXTogY2hlY2tDcm9zc0F4aXNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBvZmZzZXQgPSAwLFxuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGNvbnN0IHJhd09mZnNldCA9IGV2YWx1YXRlKG9mZnNldCwgc3RhdGUpO1xuICAgICAgY29uc3QgY29tcHV0ZWRPZmZzZXQgPSB0eXBlb2YgcmF3T2Zmc2V0ID09PSAnbnVtYmVyJyA/IHtcbiAgICAgICAgbWFpbkF4aXM6IHJhd09mZnNldCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwXG4gICAgICB9IDoge1xuICAgICAgICBtYWluQXhpczogMCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwLFxuICAgICAgICAuLi5yYXdPZmZzZXRcbiAgICAgIH07XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dIC0gY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGlmIChtYWluQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAobWFpbkF4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJG9mZnNlMjtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICAgICAgY29uc3QgaXNPcmlnaW5TaWRlID0gWyd0b3AnLCAnbGVmdCddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgKGlzT3JpZ2luU2lkZSA/ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlW2Nyb3NzQXhpc10pIHx8IDAgOiAwKSArIChpc09yaWdpblNpZGUgPyAwIDogY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzKTtcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dICsgKGlzT3JpZ2luU2lkZSA/IDAgOiAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZTIgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UyW2Nyb3NzQXhpc10pIHx8IDApIC0gKGlzT3JpZ2luU2lkZSA/IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyA6IDApO1xuICAgICAgICBpZiAoY3Jvc3NBeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAoY3Jvc3NBeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpemUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfc3RhdGUkbWlkZGxld2FyZURhdGEsIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTI7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBseSA9ICgpID0+IHt9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNZQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgICAgfSA9IHJlY3RzLmZsb2F0aW5nO1xuICAgICAgbGV0IGhlaWdodFNpZGU7XG4gICAgICBsZXQgd2lkdGhTaWRlO1xuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGhlaWdodFNpZGUgPSBzaWRlO1xuICAgICAgICB3aWR0aFNpZGUgPSBhbGlnbm1lbnQgPT09ICgoYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKSA/ICdzdGFydCcgOiAnZW5kJykgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGhTaWRlID0gc2lkZTtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgfVxuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nSGVpZ2h0ID0gaGVpZ2h0IC0gb3ZlcmZsb3cudG9wIC0gb3ZlcmZsb3cuYm90dG9tO1xuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nV2lkdGggPSB3aWR0aCAtIG92ZXJmbG93LmxlZnQgLSBvdmVyZmxvdy5yaWdodDtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0ID0gbWluKGhlaWdodCAtIG92ZXJmbG93W2hlaWdodFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVXaWR0aCA9IG1pbih3aWR0aCAtIG92ZXJmbG93W3dpZHRoU2lkZV0sIG1heGltdW1DbGlwcGluZ1dpZHRoKTtcbiAgICAgIGNvbnN0IG5vU2hpZnQgPSAhc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQ7XG4gICAgICBsZXQgYXZhaWxhYmxlSGVpZ2h0ID0gb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQ7XG4gICAgICBsZXQgYXZhaWxhYmxlV2lkdGggPSBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoO1xuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEuZW5hYmxlZC54KSB7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9XG4gICAgICBpZiAoKF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTIgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEyLmVuYWJsZWQueSkge1xuICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobm9TaGlmdCAmJiAhYWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBtYXgob3ZlcmZsb3cubGVmdCwgMCk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBtYXgob3ZlcmZsb3cucmlnaHQsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gbWF4KG92ZXJmbG93LnRvcCwgMCk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBtYXgob3ZlcmZsb3cuYm90dG9tLCAwKTtcbiAgICAgICAgaWYgKGlzWUF4aXMpIHtcbiAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gMiAqICh4TWluICE9PSAwIHx8IHhNYXggIT09IDAgPyB4TWluICsgeE1heCA6IG1heChvdmVyZmxvdy5sZWZ0LCBvdmVyZmxvdy5yaWdodCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIDIgKiAoeU1pbiAhPT0gMCB8fCB5TWF4ICE9PSAwID8geU1pbiArIHlNYXggOiBtYXgob3ZlcmZsb3cudG9wLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHkoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGgsXG4gICAgICAgIGF2YWlsYWJsZUhlaWdodFxuICAgICAgfSk7XG4gICAgICBjb25zdCBuZXh0RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgaWYgKHdpZHRoICE9PSBuZXh0RGltZW5zaW9ucy53aWR0aCB8fCBoZWlnaHQgIT09IG5leHREaW1lbnNpb25zLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHNoaWZ0LCBzaXplIH07XG4iLCJmdW5jdGlvbiBoYXNXaW5kb3coKSB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cbmZ1bmN0aW9uIGdldE5vZGVOYW1lKG5vZGUpIHtcbiAgaWYgKGlzTm9kZShub2RlKSkge1xuICAgIHJldHVybiAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICAvLyBNb2NrZWQgbm9kZXMgaW4gdGVzdGluZyBlbnZpcm9ubWVudHMgbWF5IG5vdCBiZSBpbnN0YW5jZXMgb2YgTm9kZS4gQnlcbiAgLy8gcmV0dXJuaW5nIGAjZG9jdW1lbnRgIGFuIGluZmluaXRlIGxvb3Agd29uJ3Qgb2NjdXIuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjMxN1xuICByZXR1cm4gJyNkb2N1bWVudCc7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuIChub2RlID09IG51bGwgfHwgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICB2YXIgX3JlZjtcbiAgcmV0dXJuIChfcmVmID0gKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZWYuZG9jdW1lbnRFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgTm9kZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkgfHwgdHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLlNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVsnaW5saW5lJywgJ2NvbnRlbnRzJ10uaW5jbHVkZXMoZGlzcGxheSk7XG59XG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpO1xufVxuZnVuY3Rpb24gaXNUb3BMYXllcihlbGVtZW50KSB7XG4gIHJldHVybiBbJzpwb3BvdmVyLW9wZW4nLCAnOm1vZGFsJ10uc29tZShzZWxlY3RvciA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudE9yQ3NzKSB7XG4gIGNvbnN0IHdlYmtpdCA9IGlzV2ViS2l0KCk7XG4gIGNvbnN0IGNzcyA9IGlzRWxlbWVudChlbGVtZW50T3JDc3MpID8gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50T3JDc3MpIDogZWxlbWVudE9yQ3NzO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdHJhbnNmb3Jtcy0yLyNpbmRpdmlkdWFsLXRyYW5zZm9ybXNcbiAgcmV0dXJuIFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnXS5zb21lKHZhbHVlID0+IGNzc1t2YWx1ZV0gPyBjc3NbdmFsdWVdICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgKGNzcy5jb250YWluZXJUeXBlID8gY3NzLmNvbnRhaW5lclR5cGUgIT09ICdub3JtYWwnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5iYWNrZHJvcEZpbHRlciA/IGNzcy5iYWNrZHJvcEZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgWyd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlJywgJ3NjYWxlJywgJ3JvdGF0ZScsICdwZXJzcGVjdGl2ZScsICdmaWx0ZXInXS5zb21lKHZhbHVlID0+IChjc3Mud2lsbENoYW5nZSB8fCAnJykuaW5jbHVkZXModmFsdWUpKSB8fCBbJ3BhaW50JywgJ2xheW91dCcsICdzdHJpY3QnLCAnY29udGVudCddLnNvbWUodmFsdWUgPT4gKGNzcy5jb250YWluIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgaWYgKGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSBpZiAoaXNUb3BMYXllcihjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gaXNXZWJLaXQoKSB7XG4gIGlmICh0eXBlb2YgQ1NTID09PSAndW5kZWZpbmVkJyB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyJywgJ25vbmUnKTtcbn1cbmZ1bmN0aW9uIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShub2RlKSB7XG4gIHJldHVybiBbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShub2RlKSk7XG59XG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbFgsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUobm9kZSkge1xuICBpZiAoZ2V0Tm9kZU5hbWUobm9kZSkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBub2RlO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9XG4gIC8vIFN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlLlxuICBub2RlLmFzc2lnbmVkU2xvdCB8fFxuICAvLyBET00gRWxlbWVudCBkZXRlY3RlZC5cbiAgbm9kZS5wYXJlbnROb2RlIHx8XG4gIC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWQuXG4gIGlzU2hhZG93Um9vdChub2RlKSAmJiBub2RlLmhvc3QgfHxcbiAgLy8gRmFsbGJhY2suXG4gIGdldERvY3VtZW50RWxlbWVudChub2RlKTtcbiAgcmV0dXJuIGlzU2hhZG93Um9vdChyZXN1bHQpID8gcmVzdWx0Lmhvc3QgOiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKG5vZGUpO1xuICBpZiAoaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudCA/IG5vZGUub3duZXJEb2N1bWVudC5ib2R5IDogbm9kZS5ib2R5O1xuICB9XG4gIGlmIChpc0hUTUxFbGVtZW50KHBhcmVudE5vZGUpICYmIGlzT3ZlcmZsb3dFbGVtZW50KHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKHBhcmVudE5vZGUpO1xufVxuZnVuY3Rpb24gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMobm9kZSwgbGlzdCwgdHJhdmVyc2VJZnJhbWVzKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50MjtcbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuICBpZiAodHJhdmVyc2VJZnJhbWVzID09PSB2b2lkIDApIHtcbiAgICB0cmF2ZXJzZUlmcmFtZXMgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHNjcm9sbGFibGVBbmNlc3RvciA9IGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpO1xuICBjb25zdCBpc0JvZHkgPSBzY3JvbGxhYmxlQW5jZXN0b3IgPT09ICgoX25vZGUkb3duZXJEb2N1bWVudDIgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50Mi5ib2R5KTtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KHNjcm9sbGFibGVBbmNlc3Rvcik7XG4gIGlmIChpc0JvZHkpIHtcbiAgICBjb25zdCBmcmFtZUVsZW1lbnQgPSBnZXRGcmFtZUVsZW1lbnQod2luKTtcbiAgICByZXR1cm4gbGlzdC5jb25jYXQod2luLCB3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzT3ZlcmZsb3dFbGVtZW50KHNjcm9sbGFibGVBbmNlc3RvcikgPyBzY3JvbGxhYmxlQW5jZXN0b3IgOiBbXSwgZnJhbWVFbGVtZW50ICYmIHRyYXZlcnNlSWZyYW1lcyA/IGdldE92ZXJmbG93QW5jZXN0b3JzKGZyYW1lRWxlbWVudCkgOiBbXSk7XG4gIH1cbiAgcmV0dXJuIGxpc3QuY29uY2F0KHNjcm9sbGFibGVBbmNlc3RvciwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoc2Nyb2xsYWJsZUFuY2VzdG9yLCBbXSwgdHJhdmVyc2VJZnJhbWVzKSk7XG59XG5mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQod2luKSB7XG4gIHJldHVybiB3aW4ucGFyZW50ICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih3aW4ucGFyZW50KSA/IHdpbi5mcmFtZUVsZW1lbnQgOiBudWxsO1xufVxuXG5leHBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBnZXRDb250YWluaW5nQmxvY2ssIGdldERvY3VtZW50RWxlbWVudCwgZ2V0RnJhbWVFbGVtZW50LCBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciwgZ2V0Tm9kZU5hbWUsIGdldE5vZGVTY3JvbGwsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBnZXRXaW5kb3csIGlzQ29udGFpbmluZ0Jsb2NrLCBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNOb2RlLCBpc092ZXJmbG93RWxlbWVudCwgaXNTaGFkb3dSb290LCBpc1RhYmxlRWxlbWVudCwgaXNUb3BMYXllciwgaXNXZWJLaXQgfTtcbiIsImltcG9ydCB7IHJlY3RUb0NsaWVudFJlY3QsIGRldGVjdE92ZXJmbG93IGFzIGRldGVjdE92ZXJmbG93JDEsIG9mZnNldCBhcyBvZmZzZXQkMSwgYXV0b1BsYWNlbWVudCBhcyBhdXRvUGxhY2VtZW50JDEsIHNoaWZ0IGFzIHNoaWZ0JDEsIGZsaXAgYXMgZmxpcCQxLCBzaXplIGFzIHNpemUkMSwgaGlkZSBhcyBoaWRlJDEsIGFycm93IGFzIGFycm93JDEsIGlubGluZSBhcyBpbmxpbmUkMSwgbGltaXRTaGlmdCBhcyBsaW1pdFNoaWZ0JDEsIGNvbXB1dGVQb3NpdGlvbiBhcyBjb21wdXRlUG9zaXRpb24kMSB9IGZyb20gJ0BmbG9hdGluZy11aS9jb3JlJztcbmltcG9ydCB7IHJvdW5kLCBjcmVhdGVDb29yZHMsIG1heCwgbWluLCBmbG9vciB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5pbXBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBpc0hUTUxFbGVtZW50LCBpc0VsZW1lbnQsIGdldFdpbmRvdywgaXNXZWJLaXQsIGdldEZyYW1lRWxlbWVudCwgZ2V0Tm9kZVNjcm9sbCwgZ2V0RG9jdW1lbnRFbGVtZW50LCBpc1RvcExheWVyLCBnZXROb2RlTmFtZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzQ29udGFpbmluZ0Jsb2NrLCBpc1RhYmxlRWxlbWVudCwgZ2V0Q29udGFpbmluZ0Jsb2NrIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5leHBvcnQgeyBnZXRPdmVyZmxvd0FuY2VzdG9ycyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuXG5mdW5jdGlvbiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgLy8gSW4gdGVzdGluZyBlbnZpcm9ubWVudHMsIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBwcm9wZXJ0aWVzIGFyZSBlbXB0eVxuICAvLyBzdHJpbmdzIGZvciBTVkcgZWxlbWVudHMsIHJldHVybmluZyBOYU4uIEZhbGxiYWNrIHRvIGAwYCBpbiB0aGlzIGNhc2UuXG4gIGxldCB3aWR0aCA9IHBhcnNlRmxvYXQoY3NzLndpZHRoKSB8fCAwO1xuICBsZXQgaGVpZ2h0ID0gcGFyc2VGbG9hdChjc3MuaGVpZ2h0KSB8fCAwO1xuICBjb25zdCBoYXNPZmZzZXQgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBvZmZzZXRXaWR0aCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0V2lkdGggOiB3aWR0aDtcbiAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRIZWlnaHQgOiBoZWlnaHQ7XG4gIGNvbnN0IHNob3VsZEZhbGxiYWNrID0gcm91bmQod2lkdGgpICE9PSBvZmZzZXRXaWR0aCB8fCByb3VuZChoZWlnaHQpICE9PSBvZmZzZXRIZWlnaHQ7XG4gIGlmIChzaG91bGRGYWxsYmFjaykge1xuICAgIHdpZHRoID0gb2Zmc2V0V2lkdGg7XG4gICAgaGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0O1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICQ6IHNob3VsZEZhbGxiYWNrXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gIWlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgOiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBnZXRTY2FsZShlbGVtZW50KSB7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZG9tRWxlbWVudCkpIHtcbiAgICByZXR1cm4gY3JlYXRlQ29vcmRzKDEpO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZG9tRWxlbWVudCk7XG4gIGxldCB4ID0gKCQgPyByb3VuZChyZWN0LndpZHRoKSA6IHJlY3Qud2lkdGgpIC8gd2lkdGg7XG4gIGxldCB5ID0gKCQgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb29yZHMoMCk7XG5mdW5jdGlvbiBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoIWlzV2ViS2l0KCkgfHwgIXdpbi52aXN1YWxWaWV3cG9ydCkge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCxcbiAgICB5OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wXG4gIH07XG59XG5mdW5jdGlvbiBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGVsZW1lbnQsIGlzRml4ZWQsIGZsb2F0aW5nT2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cbiAgaWYgKCFmbG9hdGluZ09mZnNldFBhcmVudCB8fCBpc0ZpeGVkICYmIGZsb2F0aW5nT2Zmc2V0UGFyZW50ICE9PSBnZXRXaW5kb3coZWxlbWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzRml4ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpID8gZ2V0VmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgbGV0IHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgdmlzdWFsT2Zmc2V0cy54KSAvIHNjYWxlLng7XG4gIGxldCB5ID0gKGNsaWVudFJlY3QudG9wICsgdmlzdWFsT2Zmc2V0cy55KSAvIHNjYWxlLnk7XG4gIGxldCB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZS54O1xuICBsZXQgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZS55O1xuICBpZiAoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhkb21FbGVtZW50KTtcbiAgICBjb25zdCBvZmZzZXRXaW4gPSBvZmZzZXRQYXJlbnQgJiYgaXNFbGVtZW50KG9mZnNldFBhcmVudCkgPyBnZXRXaW5kb3cob2Zmc2V0UGFyZW50KSA6IG9mZnNldFBhcmVudDtcbiAgICBsZXQgY3VycmVudFdpbiA9IHdpbjtcbiAgICBsZXQgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSBjdXJyZW50V2luKSB7XG4gICAgICBjb25zdCBpZnJhbWVTY2FsZSA9IGdldFNjYWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgaWZyYW1lUmVjdCA9IGN1cnJlbnRJRnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgbGVmdCA9IGlmcmFtZVJlY3QubGVmdCArIChjdXJyZW50SUZyYW1lLmNsaWVudExlZnQgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nTGVmdCkpICogaWZyYW1lU2NhbGUueDtcbiAgICAgIGNvbnN0IHRvcCA9IGlmcmFtZVJlY3QudG9wICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50VG9wICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ1RvcCkpICogaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIHkgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHdpZHRoICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICBoZWlnaHQgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKz0gbGVmdDtcbiAgICAgIHkgKz0gdG9wO1xuICAgICAgY3VycmVudFdpbiA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKTtcbiAgICAgIGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG4vLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4vLyBpbmNvcnJlY3QgZm9yIFJUTC5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCwgcmVjdCkge1xuICBjb25zdCBsZWZ0U2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xuICBpZiAoIXJlY3QpIHtcbiAgICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGxlZnRTY3JvbGw7XG4gIH1cbiAgcmV0dXJuIHJlY3QubGVmdCArIGxlZnRTY3JvbGw7XG59XG5cbmZ1bmN0aW9uIGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIGlnbm9yZVNjcm9sbGJhclgpIHtcbiAgaWYgKGlnbm9yZVNjcm9sbGJhclggPT09IHZvaWQgMCkge1xuICAgIGlnbm9yZVNjcm9sbGJhclggPSBmYWxzZTtcbiAgfVxuICBjb25zdCBodG1sUmVjdCA9IGRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeCA9IGh0bWxSZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIChpZ25vcmVTY3JvbGxiYXJYID8gMCA6XG4gIC8vIFJUTCA8Ym9keT4gc2Nyb2xsYmFyLlxuICBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCwgaHRtbFJlY3QpKTtcbiAgY29uc3QgeSA9IGh0bWxSZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3A7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgdG9wTGF5ZXIgPSBlbGVtZW50cyA/IGlzVG9wTGF5ZXIoZWxlbWVudHMuZmxvYXRpbmcpIDogZmFsc2U7XG4gIGlmIChvZmZzZXRQYXJlbnQgPT09IGRvY3VtZW50RWxlbWVudCB8fCB0b3BMYXllciAmJiBpc0ZpeGVkKSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCB0cnVlKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcmVjdC53aWR0aCAqIHNjYWxlLngsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAqIHNjYWxlLnksXG4gICAgeDogcmVjdC54ICogc2NhbGUueCAtIHNjcm9sbC5zY3JvbGxMZWZ0ICogc2NhbGUueCArIG9mZnNldHMueCArIGh0bWxPZmZzZXQueCxcbiAgICB5OiByZWN0LnkgKiBzY2FsZS55IC0gc2Nyb2xsLnNjcm9sbFRvcCAqIHNjYWxlLnkgKyBvZmZzZXRzLnkgKyBodG1sT2Zmc2V0LnlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdHMoZWxlbWVudCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmdldENsaWVudFJlY3RzKCkpO1xufVxuXG4vLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KTtcbiAgY29uc3QgYm9keSA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICBjb25zdCB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5LnNjcm9sbFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgbGV0IHggPSAtc2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICBjb25zdCB5ID0gLXNjcm9sbC5zY3JvbGxUb3A7XG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKSAtIHdpZHRoO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgbGV0IHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgbGV0IGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICBsZXQgeCA9IDA7XG4gIGxldCB5ID0gMDtcbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgY29uc3QgdmlzdWFsVmlld3BvcnRCYXNlZCA9IGlzV2ViS2l0KCk7XG4gICAgaWYgKCF2aXN1YWxWaWV3cG9ydEJhc2VkIHx8IHZpc3VhbFZpZXdwb3J0QmFzZWQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbi8vIFJldHVybnMgdGhlIGlubmVyIGNsaWVudCByZWN0LCBzdWJ0cmFjdGluZyBzY3JvbGxiYXJzIGlmIHByZXNlbnQuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgY29uc3QgdG9wID0gY2xpZW50UmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgY29uc3QgbGVmdCA9IGNsaWVudFJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgY29uc3Qgc2NhbGUgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0U2NhbGUoZWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aCAqIHNjYWxlLng7XG4gIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICogc2NhbGUueTtcbiAgY29uc3QgeCA9IGxlZnQgKiBzY2FsZS54O1xuICBjb25zdCB5ID0gdG9wICogc2NhbGUueTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpIHtcbiAgbGV0IHJlY3Q7XG4gIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAndmlld3BvcnQnKSB7XG4gICAgcmVjdCA9IGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSk7XG4gIH0gZWxzZSBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ2RvY3VtZW50Jykge1xuICAgIHJlY3QgPSBnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKTtcbiAgfSBlbHNlIGlmIChpc0VsZW1lbnQoY2xpcHBpbmdBbmNlc3RvcikpIHtcbiAgICByZWN0ID0gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpO1xuICAgIHJlY3QgPSB7XG4gICAgICB4OiBjbGlwcGluZ0FuY2VzdG9yLnggLSB2aXN1YWxPZmZzZXRzLngsXG4gICAgICB5OiBjbGlwcGluZ0FuY2VzdG9yLnkgLSB2aXN1YWxPZmZzZXRzLnksXG4gICAgICB3aWR0aDogY2xpcHBpbmdBbmNlc3Rvci53aWR0aCxcbiAgICAgIGhlaWdodDogY2xpcHBpbmdBbmNlc3Rvci5oZWlnaHRcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHJlY3QpO1xufVxuZnVuY3Rpb24gaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIHN0b3BOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAocGFyZW50Tm9kZSA9PT0gc3RvcE5vZGUgfHwgIWlzRWxlbWVudChwYXJlbnROb2RlKSB8fCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUocGFyZW50Tm9kZSkucG9zaXRpb24gPT09ICdmaXhlZCcgfHwgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKHBhcmVudE5vZGUsIHN0b3BOb2RlKTtcbn1cblxuLy8gQSBcImNsaXBwaW5nIGFuY2VzdG9yXCIgaXMgYW4gYG92ZXJmbG93YCBlbGVtZW50IHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBjaGlsZCBlbGVtZW50cy4gVGhpcyByZXR1cm5zIGFsbCBjbGlwcGluZyBhbmNlc3RvcnNcbi8vIG9mIHRoZSBnaXZlbiBlbGVtZW50IHVwIHRoZSB0cmVlLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIGNhY2hlKSB7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlLmdldChlbGVtZW50KTtcbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnQsIFtdLCBmYWxzZSkuZmlsdGVyKGVsID0+IGlzRWxlbWVudChlbCkgJiYgZ2V0Tm9kZU5hbWUoZWwpICE9PSAnYm9keScpO1xuICBsZXQgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICBjb25zdCBlbGVtZW50SXNGaXhlZCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCc7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgd2hpbGUgKGlzRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBpc1RvcExheWVyKGVsZW1lbnQpID8gW10gOiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGVsZW1lbnQsIG9mZnNldFBhcmVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSA8Ym9keT4gc2Nyb2xsYmFyIGFwcGVhcnMgb24gdGhlIGxlZnQgKGUuZy4gUlRMIHN5c3RlbXMpLiBVc2VcbiAgICAgIC8vIEZpcmVmb3ggd2l0aCBsYXlvdXQuc2Nyb2xsYmFyLnNpZGUgPSAzIGluIGFib3V0OmNvbmZpZyB0byB0ZXN0IHRoaXMuXG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IHggPSByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCAtIGh0bWxPZmZzZXQueDtcbiAgY29uc3QgeSA9IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueSAtIGh0bWxPZmZzZXQueTtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYyc7XG59XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgbGV0IHJhd09mZnNldFBhcmVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50O1xuXG4gIC8vIEZpcmVmb3ggcmV0dXJucyB0aGUgPGh0bWw+IGVsZW1lbnQgYXMgdGhlIG9mZnNldFBhcmVudCBpZiBpdCdzIG5vbi1zdGF0aWMsXG4gIC8vIHdoaWxlIENocm9tZSBhbmQgU2FmYXJpIHJldHVybiB0aGUgPGJvZHk+IGVsZW1lbnQuIFRoZSA8Ym9keT4gZWxlbWVudCBtdXN0XG4gIC8vIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29ycmVjdCBjYWxjdWxhdGlvbnMgZXZlbiBpZiB0aGUgPGh0bWw+IGVsZW1lbnQgaXNcbiAgLy8gbm9uLXN0YXRpYy5cbiAgaWYgKGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSA9PT0gcmF3T2Zmc2V0UGFyZW50KSB7XG4gICAgcmF3T2Zmc2V0UGFyZW50ID0gcmF3T2Zmc2V0UGFyZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICByZXR1cm4gcmF3T2Zmc2V0UGFyZW50O1xufVxuXG4vLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKGlzVG9wTGF5ZXIoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIGxldCBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgIHdoaWxlIChzdmdPZmZzZXRQYXJlbnQgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICBpZiAoaXNFbGVtZW50KHN2Z09mZnNldFBhcmVudCkgJiYgIWlzU3RhdGljUG9zaXRpb25lZChzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHJldHVybiBzdmdPZmZzZXRQYXJlbnQ7XG4gICAgICB9XG4gICAgICBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKHN2Z09mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiB3aW47XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCwgcG9seWZpbGwpO1xuICB9XG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgaXNMYXN0VHJhdmVyc2FibGVOb2RlKG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkgJiYgIWlzQ29udGFpbmluZ0Jsb2NrKG9mZnNldFBhcmVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbjtcbn1cblxuY29uc3QgZ2V0RWxlbWVudFJlY3RzID0gYXN5bmMgZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgZ2V0T2Zmc2V0UGFyZW50Rm4gPSB0aGlzLmdldE9mZnNldFBhcmVudCB8fCBnZXRPZmZzZXRQYXJlbnQ7XG4gIGNvbnN0IGdldERpbWVuc2lvbnNGbiA9IHRoaXMuZ2V0RGltZW5zaW9ucztcbiAgY29uc3QgZmxvYXRpbmdEaW1lbnNpb25zID0gYXdhaXQgZ2V0RGltZW5zaW9uc0ZuKGRhdGEuZmxvYXRpbmcpO1xuICByZXR1cm4ge1xuICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZGF0YS5yZWZlcmVuY2UsIGF3YWl0IGdldE9mZnNldFBhcmVudEZuKGRhdGEuZmxvYXRpbmcpLCBkYXRhLnN0cmF0ZWd5KSxcbiAgICBmbG9hdGluZzoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogZmxvYXRpbmdEaW1lbnNpb25zLndpZHRoLFxuICAgICAgaGVpZ2h0OiBmbG9hdGluZ0RpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gaXNSVEwoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5kaXJlY3Rpb24gPT09ICdydGwnO1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldEVsZW1lbnRSZWN0cyxcbiAgZ2V0Q2xpZW50UmVjdHMsXG4gIGdldERpbWVuc2lvbnMsXG4gIGdldFNjYWxlLFxuICBpc0VsZW1lbnQsXG4gIGlzUlRMXG59O1xuXG5mdW5jdGlvbiByZWN0c0FyZUVxdWFsKGEsIGIpIHtcbiAgcmV0dXJuIGEueCA9PT0gYi54ICYmIGEueSA9PT0gYi55ICYmIGEud2lkdGggPT09IGIud2lkdGggJiYgYS5oZWlnaHQgPT09IGIuaGVpZ2h0O1xufVxuXG4vLyBodHRwczovL3NhbXRob3IuYXUvMjAyMS9vYnNlcnZpbmctZG9tL1xuZnVuY3Rpb24gb2JzZXJ2ZU1vdmUoZWxlbWVudCwgb25Nb3ZlKSB7XG4gIGxldCBpbyA9IG51bGw7XG4gIGxldCB0aW1lb3V0SWQ7XG4gIGNvbnN0IHJvb3QgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgdmFyIF9pbztcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAoX2lvID0gaW8pID09IG51bGwgfHwgX2lvLmRpc2Nvbm5lY3QoKTtcbiAgICBpbyA9IG51bGw7XG4gIH1cbiAgZnVuY3Rpb24gcmVmcmVzaChza2lwLCB0aHJlc2hvbGQpIHtcbiAgICBpZiAoc2tpcCA9PT0gdm9pZCAwKSB7XG4gICAgICBza2lwID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgICAgdGhyZXNob2xkID0gMTtcbiAgICB9XG4gICAgY2xlYW51cCgpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qge1xuICAgICAgbGVmdCxcbiAgICAgIHRvcCxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgfSA9IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbjtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmF0aW8gPT09IDEgJiYgIXJlY3RzQXJlRXF1YWwoZWxlbWVudFJlY3RGb3JSb290TWFyZ2luLCBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSkge1xuICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgZXZlbiB0aG91Z2ggdGhlIHJhdGlvIGlzIHJlcG9ydGVkIGFzIDEsIHRoZVxuICAgICAgICAvLyBlbGVtZW50IGlzIG5vdCBhY3R1YWxseSBmdWxseSB3aXRoaW4gdGhlIEludGVyc2VjdGlvbk9ic2VydmVyJ3Mgcm9vdFxuICAgICAgICAvLyBhcmVhIGFueW1vcmUuIFRoaXMgY2FuIGhhcHBlbiB1bmRlciBwZXJmb3JtYW5jZSBjb25zdHJhaW50cy4gVGhpcyBtYXlcbiAgICAgICAgLy8gYmUgYSBidWcgaW4gdGhlIGJyb3dzZXIncyBJbnRlcnNlY3Rpb25PYnNlcnZlciBpbXBsZW1lbnRhdGlvbi4gVG9cbiAgICAgICAgLy8gd29yayBhcm91bmQgdGhpcywgd2UgY29tcGFyZSB0aGUgZWxlbWVudCdzIGJvdW5kaW5nIHJlY3Qgbm93IHdpdGhcbiAgICAgICAgLy8gd2hhdCBpdCB3YXMgYXQgdGhlIHRpbWUgd2UgY3JlYXRlZCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuIElmIHRoZXlcbiAgICAgICAgLy8gYXJlIG5vdCBlcXVhbCB0aGVuIHRoZSBlbGVtZW50IG1vdmVkLCBzbyB3ZSByZWZyZXNoLlxuICAgICAgICByZWZyZXNoKCk7XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAhcmVjdHNBcmVFcXVhbChwcmV2UmVmUmVjdCwgbmV4dFJlZlJlY3QpKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gICAgcHJldlJlZlJlY3QgPSBuZXh0UmVmUmVjdDtcbiAgICBmcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lTG9vcCk7XG4gIH1cbiAgdXBkYXRlKCk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgdmFyIF9yZXNpemVPYnNlcnZlcjI7XG4gICAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlKTtcbiAgICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gICAgfSk7XG4gICAgY2xlYW51cElvID09IG51bGwgfHwgY2xlYW51cElvKCk7XG4gICAgKF9yZXNpemVPYnNlcnZlcjIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTtcbiAgICByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5jb25zdCBkZXRlY3RPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93JDE7XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IG9mZnNldCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGF1dG9QbGFjZW1lbnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gc2hpZnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmbGlwJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IHNpemUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBoaWRlJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gYXJyb3ckMTtcblxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gaW5saW5lJDE7XG5cbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBsaW1pdFNoaWZ0JDE7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSAocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykgPT4ge1xuICAvLyBUaGlzIGNhY2hlcyB0aGUgZXhwZW5zaXZlIGBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnNgIGZ1bmN0aW9uIHNvIHRoYXRcbiAgLy8gbXVsdGlwbGUgbGlmZWN5Y2xlIHJlc2V0cyByZS11c2UgdGhlIHNhbWUgcmVzdWx0LiBJdCBvbmx5IGxpdmVzIGZvciBhXG4gIC8vIHNpbmdsZSBjYWxsLiBJZiBvdGhlciBmdW5jdGlvbnMgYmVjb21lIGV4cGVuc2l2ZSwgd2UgY2FuIGFkZCB0aGVtIGFzIHdlbGwuXG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0ge1xuICAgIHBsYXRmb3JtLFxuICAgIC4uLm9wdGlvbnNcbiAgfTtcbiAgY29uc3QgcGxhdGZvcm1XaXRoQ2FjaGUgPSB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucy5wbGF0Zm9ybSxcbiAgICBfYzogY2FjaGVcbiAgfTtcbiAgcmV0dXJuIGNvbXB1dGVQb3NpdGlvbiQxKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybVdpdGhDYWNoZVxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH07XG4iLCJpbXBvcnQgeyBhcnJvdyBhcyBhcnJvdyQxLCBjb21wdXRlUG9zaXRpb24gfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmV4cG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBpc05vZGUsIGdldE5vZGVOYW1lIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyB1bnJlZiwgY29tcHV0ZWQsIHJlZiwgc2hhbGxvd1JlZiwgd2F0Y2gsIGdldEN1cnJlbnRTY29wZSwgb25TY29wZURpc3Bvc2UsIHNoYWxsb3dSZWFkb25seSB9IGZyb20gJ3Z1ZS1kZW1pJztcblxuZnVuY3Rpb24gaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldCAhPSBudWxsICYmIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmICckZWwnIGluIHRhcmdldDtcbn1cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQodGFyZ2V0KSB7XG4gIGlmIChpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlKHRhcmdldCkpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGFyZ2V0LiRlbDtcbiAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnI2NvbW1lbnQnID8gbnVsbCA6IGVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gdG9WYWx1ZShzb3VyY2UpIHtcbiAgcmV0dXJuIHR5cGVvZiBzb3VyY2UgPT09ICdmdW5jdGlvbicgPyBzb3VyY2UoKSA6IHVucmVmKHNvdXJjZSk7XG59XG5cbi8qKlxuICogUG9zaXRpb25zIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc3VjaCB0aGF0IGl0IGlzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBhcnJvdyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmZ1bmN0aW9uIGFycm93KG9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXJyb3cnLFxuICAgIG9wdGlvbnMsXG4gICAgZm4oYXJncykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHVud3JhcEVsZW1lbnQodG9WYWx1ZShvcHRpb25zLmVsZW1lbnQpKTtcbiAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycm93JDEoe1xuICAgICAgICBlbGVtZW50LFxuICAgICAgICBwYWRkaW5nOiBvcHRpb25zLnBhZGRpbmdcbiAgICAgIH0pLmZuKGFyZ3MpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RFBSKGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgY29uc3Qgd2luID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgcmV0dXJuIHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG59XG5cbmZ1bmN0aW9uIHJvdW5kQnlEUFIoZWxlbWVudCwgdmFsdWUpIHtcbiAgY29uc3QgZHByID0gZ2V0RFBSKGVsZW1lbnQpO1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGRwcikgLyBkcHI7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBuZXh0IHRvIGEgcmVmZXJlbmNlIGVsZW1lbnQgd2hlbiBpdCBpcyBnaXZlbiBhIGNlcnRhaW4gQ1NTIHBvc2l0aW9uaW5nIHN0cmF0ZWd5LlxuICogQHBhcmFtIHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBmbG9hdGluZyBUaGUgZmxvYXRpbmcgdGVtcGxhdGUgcmVmLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGZsb2F0aW5nIG9wdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdnVlXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9IG9wdGlvbnMud2hpbGVFbGVtZW50c01vdW50ZWQ7XG4gIGNvbnN0IG9wZW5PcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlO1xuICAgIHJldHVybiAoX3RvVmFsdWUgPSB0b1ZhbHVlKG9wdGlvbnMub3BlbikpICE9IG51bGwgPyBfdG9WYWx1ZSA6IHRydWU7XG4gIH0pO1xuICBjb25zdCBtaWRkbGV3YXJlT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4gdG9WYWx1ZShvcHRpb25zLm1pZGRsZXdhcmUpKTtcbiAgY29uc3QgcGxhY2VtZW50T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTI7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTIgPSB0b1ZhbHVlKG9wdGlvbnMucGxhY2VtZW50KSkgIT0gbnVsbCA/IF90b1ZhbHVlMiA6ICdib3R0b20nO1xuICB9KTtcbiAgY29uc3Qgc3RyYXRlZ3lPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlMztcbiAgICByZXR1cm4gKF90b1ZhbHVlMyA9IHRvVmFsdWUob3B0aW9ucy5zdHJhdGVneSkpICE9IG51bGwgPyBfdG9WYWx1ZTMgOiAnYWJzb2x1dGUnO1xuICB9KTtcbiAgY29uc3QgdHJhbnNmb3JtT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTQ7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTQgPSB0b1ZhbHVlKG9wdGlvbnMudHJhbnNmb3JtKSkgIT0gbnVsbCA/IF90b1ZhbHVlNCA6IHRydWU7XG4gIH0pO1xuICBjb25zdCByZWZlcmVuY2VFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChyZWZlcmVuY2UudmFsdWUpKTtcbiAgY29uc3QgZmxvYXRpbmdFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChmbG9hdGluZy52YWx1ZSkpO1xuICBjb25zdCB4ID0gcmVmKDApO1xuICBjb25zdCB5ID0gcmVmKDApO1xuICBjb25zdCBzdHJhdGVneSA9IHJlZihzdHJhdGVneU9wdGlvbi52YWx1ZSk7XG4gIGNvbnN0IHBsYWNlbWVudCA9IHJlZihwbGFjZW1lbnRPcHRpb24udmFsdWUpO1xuICBjb25zdCBtaWRkbGV3YXJlRGF0YSA9IHNoYWxsb3dSZWYoe30pO1xuICBjb25zdCBpc1Bvc2l0aW9uZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBmbG9hdGluZ1N0eWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCdcbiAgICB9O1xuICAgIGlmICghZmxvYXRpbmdFbGVtZW50LnZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5pdGlhbFN0eWxlcztcbiAgICB9XG4gICAgY29uc3QgeFZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB4LnZhbHVlKTtcbiAgICBjb25zdCB5VmFsID0gcm91bmRCeURQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHkudmFsdWUpO1xuICAgIGlmICh0cmFuc2Zvcm1PcHRpb24udmFsdWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmluaXRpYWxTdHlsZXMsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIgKyB4VmFsICsgXCJweCwgXCIgKyB5VmFsICsgXCJweClcIixcbiAgICAgICAgLi4uKGdldERQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUpID49IDEuNSAmJiB7XG4gICAgICAgICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3kudmFsdWUsXG4gICAgICBsZWZ0OiB4VmFsICsgXCJweFwiLFxuICAgICAgdG9wOiB5VmFsICsgXCJweFwiXG4gICAgfTtcbiAgfSk7XG4gIGxldCB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXA7XG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSA9PSBudWxsIHx8IGZsb2F0aW5nRWxlbWVudC52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9wZW4gPSBvcGVuT3B0aW9uLnZhbHVlO1xuICAgIGNvbXB1dGVQb3NpdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHtcbiAgICAgIG1pZGRsZXdhcmU6IG1pZGRsZXdhcmVPcHRpb24udmFsdWUsXG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudE9wdGlvbi52YWx1ZSxcbiAgICAgIHN0cmF0ZWd5OiBzdHJhdGVneU9wdGlvbi52YWx1ZVxuICAgIH0pLnRoZW4ocG9zaXRpb24gPT4ge1xuICAgICAgeC52YWx1ZSA9IHBvc2l0aW9uLng7XG4gICAgICB5LnZhbHVlID0gcG9zaXRpb24ueTtcbiAgICAgIHN0cmF0ZWd5LnZhbHVlID0gcG9zaXRpb24uc3RyYXRlZ3k7XG4gICAgICBwbGFjZW1lbnQudmFsdWUgPSBwb3NpdGlvbi5wbGFjZW1lbnQ7XG4gICAgICBtaWRkbGV3YXJlRGF0YS52YWx1ZSA9IHBvc2l0aW9uLm1pZGRsZXdhcmVEYXRhO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgZmxvYXRpbmcgZWxlbWVudCdzIHBvc2l0aW9uIG1heSBiZSByZWNvbXB1dGVkIHdoaWxlIGl0J3MgY2xvc2VkXG4gICAgICAgKiBidXQgc3RpbGwgbW91bnRlZCAoc3VjaCBhcyB3aGVuIHRyYW5zaXRpb25pbmcgb3V0KS4gVG8gZW5zdXJlXG4gICAgICAgKiBgaXNQb3NpdGlvbmVkYCB3aWxsIGJlIGBmYWxzZWAgaW5pdGlhbGx5IG9uIHRoZSBuZXh0IG9wZW4sIGF2b2lkXG4gICAgICAgKiBzZXR0aW5nIGl0IHRvIGB0cnVlYCB3aGVuIGBvcGVuID09PSBmYWxzZWAgKG11c3QgYmUgc3BlY2lmaWVkKS5cbiAgICAgICAqL1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gb3BlbiAhPT0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBpZiAodHlwZW9mIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwKCk7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGF0dGFjaCgpIHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSAhPSBudWxsICYmIGZsb2F0aW5nRWxlbWVudC52YWx1ZSAhPSBudWxsKSB7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHVwZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGlmICghb3Blbk9wdGlvbi52YWx1ZSkge1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdhdGNoKFttaWRkbGV3YXJlT3B0aW9uLCBwbGFjZW1lbnRPcHRpb24sIHN0cmF0ZWd5T3B0aW9uLCBvcGVuT3B0aW9uXSwgdXBkYXRlLCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgd2F0Y2goW3JlZmVyZW5jZUVsZW1lbnQsIGZsb2F0aW5nRWxlbWVudF0sIGF0dGFjaCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKG9wZW5PcHRpb24sIHJlc2V0LCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgaWYgKGdldEN1cnJlbnRTY29wZSgpKSB7XG4gICAgb25TY29wZURpc3Bvc2UoY2xlYW51cCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiBzaGFsbG93UmVhZG9ubHkoeCksXG4gICAgeTogc2hhbGxvd1JlYWRvbmx5KHkpLFxuICAgIHN0cmF0ZWd5OiBzaGFsbG93UmVhZG9ubHkoc3RyYXRlZ3kpLFxuICAgIHBsYWNlbWVudDogc2hhbGxvd1JlYWRvbmx5KHBsYWNlbWVudCksXG4gICAgbWlkZGxld2FyZURhdGE6IHNoYWxsb3dSZWFkb25seShtaWRkbGV3YXJlRGF0YSksXG4gICAgaXNQb3NpdGlvbmVkOiBzaGFsbG93UmVhZG9ubHkoaXNQb3NpdGlvbmVkKSxcbiAgICBmbG9hdGluZ1N0eWxlcyxcbiAgICB1cGRhdGVcbiAgfTtcbn1cblxuZXhwb3J0IHsgYXJyb3csIHVzZUZsb2F0aW5nIH07XG4iLCJleHBvcnQgY29uc3QgaXNDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQsIGVsZW1lbnRzOiBIVE1MRWxlbWVudCB8IEhUTUxFbGVtZW50W10pOiBib29sZWFuID0+IHtcbiAgY29uc3QgdGFyZ2V0cyA9IEFycmF5LmlzQXJyYXkoZWxlbWVudHMpID8gZWxlbWVudHMgOiBbZWxlbWVudHNdO1xuICByZXR1cm4gIXRhcmdldHMuc29tZSgoZWwpID0+IGVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSk7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBwb3BvdmVyIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXBvcG92ZXItLWRvY3MpIGZvciBUaWRlUG9wb3ZlclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgb2Zmc2V0IGFzIG9mZnNldE1pZGRsZXdhcmUsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gJ0BmbG9hdGluZy11aS92dWUnO1xuICBpbXBvcnQgeyBjb21wdXRlZCwgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgaXNDbGlja091dHNpZGUgfSBmcm9tICdAL3V0aWxpdGllcy9ldmVudCc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgSFRNTCBub2RlIG92ZXIgd2hpY2ggdGhlIFBvcG92ZXIgd2lsbCBhcHBlYXIgKi9cbiAgICBhbmNob3JJZDogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgc3BhY2luZyBiZXR3ZWVuIFBvcG92ZXIgYW5kIGFuY2hvciBub2RlICovXG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb2Zmc2V0OiAxNixcbiAgfSk7XG5cbiAgY29uc3QgYW5jaG9yOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgZmxvYXRpbmc6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCByb290OiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgaXNIb3ZlcmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaXNUb2dnbGVkT3BlbiA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlzVG91Y2hEZXZpY2UgPSByZWYoZmFsc2UpO1xuICBjb25zdCBtaWRkbGV3YXJlID0gcmVmKFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXSk7XG5cbiAgY29uc3QgaXNTaG93UG9wb3ZlciA9IGNvbXB1dGVkKCgpID0+IGlzSG92ZXJlZC52YWx1ZSB8fCBpc1RvZ2dsZWRPcGVuLnZhbHVlKTtcblxuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyhhbmNob3IsIGZsb2F0aW5nLCB7XG4gICAgbWlkZGxld2FyZSxcbiAgICBzdHJhdGVneTogJ2ZpeGVkJyxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUgfHwgIWZsb2F0aW5nLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzQ2xpY2tPdXRzaWRlKGUsIFthbmNob3IudmFsdWUsIGZsb2F0aW5nLnZhbHVlXSkpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIgPSAoKSA9PiB7XG4gICAgaWYgKGlzVG91Y2hEZXZpY2UudmFsdWUpIHJldHVybjtcbiAgICBpc0hvdmVyZWQudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlID0gKCkgPT4ge1xuICAgIGlmIChpc1RvdWNoRGV2aWNlLnZhbHVlKSByZXR1cm47XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudFRvdWNoU3RhcnQgPSAoKSA9PiB7XG4gICAgaXNUb3VjaERldmljZS52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlzVG9nZ2xlZE9wZW4udmFsdWUpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhhbmRsZUFuY2hvckVsZW1lbnRUb3VjaFN0YXJ0LCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgaGFuZGxlQW5jaG9yRWxlbWVudFRvdWNoU3RhcnQpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93biA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRPcGVuTGlzdGVuZXJzVG9Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVBbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGFuY2hvci52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmFuY2hvcklkKTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBpc1RvZ2dsZWRPcGVuLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCgpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5hbmNob3JJZCxcbiAgICAoKSA9PiB7XG4gICAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICAgICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gICAgfVxuICApO1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBtaWRkbGV3YXJlLnZhbHVlID0gW2F1dG9QbGFjZW1lbnQoKSwgb2Zmc2V0TWlkZGxld2FyZSh7IG1haW5BeGlzOiBwcm9wcy5vZmZzZXQgfSksIHNoaWZ0KHsgcGFkZGluZzogMTYgfSldO1xuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgIHJvb3QudmFsdWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8VHJhbnNpdGlvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXBvcG92ZXInLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8yLFxuICAgICAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiZmxvYXRpbmdcIlxuICAgICAgICA6c3R5bGU9XCJ7IC4uLmZsb2F0aW5nU3R5bGVzIH1cIlxuICAgICAgICB2LXNob3c9XCJpc1Nob3dQb3BvdmVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvVHJhbnNpdGlvbj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXBvcG92ZXIge1xuICAgIG1heC13aWR0aDogMjU2cHg7XG4gIH1cbiAgLnYtZW50ZXItZnJvbSxcbiAgLnYtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgLnYtZW50ZXItYWN0aXZlLFxuICAudi1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuICAudi1lbnRlci10byxcbiAgLnYtbGVhdmUtZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcmF0aW5nIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBkaXNwbGF5aW5nIGFuZCBzZWxlY3RpbmcgYSByYXRpbmcuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVyYXRpbmctLWRvY3MpIGZvciBUaWRlUmF0aW5nXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgdGhlIHRleHQgZGlzcGxheWVkIGJlbG93IHRoZSB0aXRsZSAqL1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gICAgLyoqIE1heGltdW0gcmF0aW5nIHZhbHVlIC8gTnVtYmVyIG9mIHNlZ21lbnRzICovXG4gICAgbWF4UmF0aW5nPzogbnVtYmVyO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBjdXJyZW50IHJhdGluZyB2YWx1ZSAqL1xuICAgIHNob3dSYXRpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHRpdGxlIHRleHQgZGlzcGxheWVkIGFib3ZlIHRoZSByYXRpbmcgY29tcG9uZW50ICovXG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIG1heFJhdGluZzogMTAsXG4gICAgc2hvd1JhdGluZzogZmFsc2UsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgcmF0aW5nVmFsdWUgPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3Qgc2VnbWVudHMgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBwcm9wcy5tYXhSYXRpbmcgfSwgKF8sIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChzZWdtZW50OiBudW1iZXIpID0+IHtcbiAgICByYXRpbmdWYWx1ZS52YWx1ZSA9IHNlZ21lbnQ7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1yYXRpbmcnLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICA8c2VjdGlvbiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLkJPVFRPTS5IQUxGXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yXVwiPlxuICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzMsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMuc2hvd1JhdGluZ1wiXG4gICAgICA+XG4gICAgICAgIHt7IHJhdGluZ1ZhbHVlIH19L3t7IHByb3BzLm1heFJhdGluZyB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxzZWN0aW9uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzIsIENTUy5QQURESU5HLkJPVFRPTS5PTkUsIENTUy5PVkVSRkxPVy5YWS5ISURERU4sIENTUy5FTExJUFNJU11cIlxuICAgICAgdi1pZj1cInByb3BzLmRlc2NyaXB0aW9uXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5kZXNjcmlwdGlvbiB9fVxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIDpjbGFzcz1cIlsndGlkZS1yYXRpbmctYmFyJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRkxFWC5TSFJJTksuT05dXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1yYXRpbmctc2VnbWVudCcsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICAgIENTUy5GTEVYLlNIUklOSy5PTixcbiAgICAgICAgICBDU1MuRkxFWC5CQVNJUy5aRVJPLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5aRVJPLFxuICAgICAgICAgIHNlZ21lbnQgPT09IDEgJiYgWyd0aWRlLXJhdGluZy1zZWdtZW50LWZpcnN0J10sXG4gICAgICAgICAgc2VnbWVudCA9PT0gc2VnbWVudHMubGVuZ3RoICYmIFsndGlkZS1yYXRpbmctc2VnbWVudC1sYXN0J10sXG4gICAgICAgICAgc2VnbWVudCA8PSByYXRpbmdWYWx1ZSAmJiBbQ1NTLkJHLlNVUkZBQ0UuR1JBRElFTlRdLFxuICAgICAgICBdXCJcbiAgICAgICAgOmtleT1cInNlZ21lbnRcIlxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhzZWdtZW50KVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWZvcj1cInNlZ21lbnQgaW4gc2VnbWVudHNcIlxuICAgICAgLz5cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcmF0aW5nLWJhciB7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICB9XG5cbiAgLnRpZGUtcmF0aW5nLXNlZ21lbnQge1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigxMiUgMCwgMTAwJSAwLCA4OCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuXG4gIC50aWRlLXJhdGluZy1zZWdtZW50LWZpcnN0IHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA5OTk5cHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOTk5OXB4O1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDEwMCUgMCwgODglIDEwMCUsIDAgMTAwJSk7XG4gIH1cblxuICAudGlkZS1yYXRpbmctc2VnbWVudC1sYXN0IHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogOTk5OXB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA5OTk5cHg7XG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDEyJSAwLCAxMDAlIDAsIDEwMCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IExPR09fSEVJR0hUID0ge1xuICBMQVJHRTogMzIsXG4gIFNNQUxMOiAyNCxcbn07XG5cbmV4cG9ydCBjb25zdCBMT0dPX1dJRFRIX0xBUkdFOiBSZWNvcmQ8UmVhbG1LZXksIG51bWJlcj4gPSB7XG4gIEFFUk86IDE0NyxcbiAgQVRWOiAxNDIsXG4gIEJPQVRNQVJUOiAxMjgsXG4gIENZQ0xFOiAxNjksXG4gIEVRVUlQTUVOVDogMTIyLFxuICBQV0M6IDE0OCxcbiAgUlY6IDEyOSxcbiAgUlZUOiA1NSxcbiAgU05PVzogMTM2LFxuICBUUlVDSzogMTQ4LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IENTU19SRUFMTV9MT0dPX1NJWkUgPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG4iLCJpbXBvcnQgeyBSRUFMTSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5pbXBvcnQgdHlwZSB7IFJlYWxtLCBSZWFsbUtleSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhbG1LZXlGcm9tUmVhbG0gPSAocmVhbG06IFJlYWxtKTogUmVhbG1LZXkgPT4ge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoUkVBTE0pIGFzIFtSZWFsbUtleSwgUmVhbG1dW107XG5cbiAgY29uc3QgbWF0Y2ggPSBlbnRyaWVzLmZpbmQoKGVudHJ5KTogZW50cnkgaXMgW1JlYWxtS2V5LCBSZWFsbV0gPT4ge1xuICAgIHJldHVybiBlbnRyeVsxXSA9PT0gcmVhbG07XG4gIH0pO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1hcHBpbmcgZm9yICR7cmVhbG19IG5vdCBmb3VuZGApO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoWzBdO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcmVhbG0gbG9nbyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhIHJlYWxtJ3MgbG9nby5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXJlYWxtbG9nby0tZG9jcykgZm9yIFRpZGVSZWFsbUxvZ29cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgTE9HT19IRUlHSFQsIExPR09fV0lEVEhfTEFSR0UgfSBmcm9tICdAL3R5cGVzL1JlYWxtTG9nbyc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0UmVhbG1LZXlGcm9tUmVhbG0gfSBmcm9tICdAL3V0aWxpdGllcy9yZWFsbSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWFsbSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGV4dCBpbiB0aGUgbG9nbyAqL1xuICAgIG1hcmtPbmx5PzogYm9vbGVhbjtcblxuICAgIC8qKiBTZXRzIHRoZSByZWFsbSBmb3IgdGhpcyBsb2dvIGluc3RhbmNlICovXG4gICAgcmVhbG06IFJlYWxtO1xuICB9O1xuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG1hcmtPbmx5OiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgaW5uZXJTVkcgPSByZWY8Q29tcG9uZW50PigpO1xuXG4gIHR5cGUgQ3NzTGVuZ3RoUGl4ZWxzID0gYCR7bnVtYmVyfXB4YDtcbiAgdHlwZSBMb2dvU2l6ZSA9IHtcbiAgICBoZWlnaHQ6IENzc0xlbmd0aFBpeGVscztcbiAgICB3aWR0aDogQ3NzTGVuZ3RoUGl4ZWxzO1xuICB9O1xuXG4gIGNvbnN0IGxvZ29GdWxsID0gY29tcHV0ZWQ8TG9nb1NpemU+KCgpID0+ICh7XG4gICAgaGVpZ2h0OiBgJHtMT0dPX0hFSUdIVC5MQVJHRX1weGAsXG4gICAgd2lkdGg6IGAke0xPR09fV0lEVEhfTEFSR0VbZ2V0UmVhbG1LZXlGcm9tUmVhbG0ocHJvcHMucmVhbG0pXX1weGAsXG4gIH0pKTtcblxuICBjb25zdCBsb2dvU21hbGwgPSBjb21wdXRlZDxMb2dvU2l6ZT4oKCkgPT4ge1xuICAgIGNvbnN0IHNocmlua0ZhY3RvciA9IExPR09fSEVJR0hULlNNQUxMIC8gTE9HT19IRUlHSFQuTEFSR0U7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogYCR7TE9HT19IRUlHSFQuU01BTEx9cHhgLFxuICAgICAgd2lkdGg6IGAke01hdGgucm91bmQoTE9HT19XSURUSF9MQVJHRVtnZXRSZWFsbUtleUZyb21SZWFsbShwcm9wcy5yZWFsbSldICogc2hyaW5rRmFjdG9yKX1weGAsXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3QgbG9nb01hcms6IExvZ29TaXplID0ge1xuICAgIGhlaWdodDogJzMycHgnLFxuICAgIHdpZHRoOiAnMzJweCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gW3Byb3BzLm1hcmtPbmx5LCBwcm9wcy5yZWFsbV0sXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGVmaW5lQXN5bmNDb21wb25lbnQoKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMubWFya09ubHkpIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvYnJhbmRpbmcvbWFyay9tYXJrLSR7cHJvcHMucmVhbG19LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgICAgZWxzZSByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2JyYW5kaW5nL2xvZ28vbG9nby0ke3Byb3BzLnJlYWxtfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICB9KTtcbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1yZWFsbS1sb2dvJywgcHJvcHMubWFya09ubHkgPyAnbWFyaycgOiAnZnVsbCddXCJcbiAgICA6c3R5bGU9XCJ7XG4gICAgICAnLS1sb2dvLWhlaWdodC1mdWxsJzogbG9nb0Z1bGwuaGVpZ2h0LFxuICAgICAgJy0tbG9nby1oZWlnaHQtbWFyayc6IGxvZ29NYXJrLmhlaWdodCxcbiAgICAgICctLWxvZ28taGVpZ2h0LXNtYWxsJzogbG9nb1NtYWxsLmhlaWdodCxcbiAgICAgICctLWxvZ28td2lkdGgtZnVsbCc6IGxvZ29GdWxsLndpZHRoLFxuICAgICAgJy0tbG9nby13aWR0aC1tYXJrJzogbG9nb01hcmsud2lkdGgsXG4gICAgICAnLS1sb2dvLXdpZHRoLXNtYWxsJzogbG9nb1NtYWxsLndpZHRoLFxuICAgIH1cIlxuICA+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcmVhbG0tbG9nbyxcbiAgLnRpZGUtcmVhbG0tbG9nby5sYXJnZSB7XG4gICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtZnVsbCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgfVxuXG4gIC50aWRlLXJlYWxtLWxvZ28uc21hbGwge1xuICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLXNtYWxsKTtcbiAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgfVxuXG4gIC50aWRlLXJlYWxtLWxvZ28ubWFyayB7XG4gICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtbWFyayk7XG4gICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1tYXJrKTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLXJlYWxtLWxvZ28uc20tc21hbGwge1xuICAgICAgd2lkdGg6IHZhcigtLWxvZ28td2lkdGgtc21hbGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1zbWFsbCk7XG4gICAgfVxuXG4gICAgLnRpZGUtcmVhbG0tbG9nby5zbS1sYXJnZSB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1mdWxsKTtcbiAgICAgIGhlaWdodDogdmFyKC0tbG9nby1oZWlnaHQtZnVsbCk7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby5tZC1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLm1kLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby5sZy1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLmxnLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTkyMHB4KSB7XG4gICAgLnRpZGUtcmVhbG0tbG9nby54bC1zbWFsbCB7XG4gICAgICB3aWR0aDogdmFyKC0tbG9nby13aWR0aC1zbWFsbCk7XG4gICAgICBoZWlnaHQ6IHZhcigtLWxvZ28taGVpZ2h0LXNtYWxsKTtcbiAgICB9XG5cbiAgICAudGlkZS1yZWFsbS1sb2dvLnhsLWxhcmdlIHtcbiAgICAgIHdpZHRoOiB2YXIoLS1sb2dvLXdpZHRoLWZ1bGwpO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1sb2dvLWhlaWdodC1mdWxsKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IExpbmsgfSBmcm9tICdAL3R5cGVzL0xpbmsnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBsaW5rczogTGlua1tdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogJycsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0aWRlLXNlby1saW5rc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNlby1saW5rJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRk9OVC5ST0xFLkJPRFlfMl1cIlxuICAgICAgICA6a2V5PVwibGluay5sYWJlbFwiXG4gICAgICAgIHYtZm9yPVwibGluayBpbiBwcm9wcy5saW5rc1wiXG4gICAgICA+XG4gICAgICAgIDxJbnRlcm5hbEJhc2VMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdXCJcbiAgICAgICAgICA6aHJlZj1cImxpbmsudXJsXCJcbiAgICAgICAgICA6dGFyZ2V0PVwibGluay5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9JbnRlcm5hbEJhc2VMaW5rPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAvKiBUT0RPOiBSZWZhY3RvciB0byBhY2NlcHQgYnJlYWtwb2ludCBwcm9wIGluIG9yZGVyIHRvIGFjY29tcGxpc2ggdGhpcyB3aXRoIG5laXRoZXIgY3VzdG9tIGJyZWFrcG9pbnRzIG5vciBkZXBlbmRlbmN5IG9uIFZpZXdwb3J0U3RvcmUuICovXG4gIC50aWRlLXNlby1saW5rIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLXNlby1saW5rIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtc2VvLWxpbmsge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc2hlZXQgY29tcG9uZW50IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgY29udGVudCBpbiBhIG1vZGFsLWxpa2UgbWVudSBvdmVybGF5IG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBzY3JlZW4uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzaGVldC0tZG9jcykgZm9yIFRpZGVTaGVldFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCwgb25CZWZvcmVVbm1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENvbnRyb2xzIGRpc3BsYXkgb2YgdGhlIGJhY2sgYnV0dG9uLiAqL1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgZGlhbG9nRWxlbWVudDogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgICBzZXRTY3JvbGxMb2NrKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5jbG9zZSgpO1xuICAgIHNldFNjcm9sbExvY2soZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXl1cCA9ICgpID0+IHtcbiAgICBjbG9zZSgpO1xuICB9O1xuXG4gIHdhdGNoKGlzT3BlbiwgKCkgPT4ge1xuICAgIGlmICghZGlhbG9nRWxlbWVudC52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8ZGlhbG9nXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2hlZXQnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgICAgcmVmPVwiZGlhbG9nRWxlbWVudFwiXG4gICAgICBAY2FuY2VsLnByZXZlbnRcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAa2V5dXAuZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5dXBcIlxuICAgICAgY2xvc2VkYnk9XCJub25lXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1zaGVldC1ib2R5JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuVE9QLk9ORSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgICAgZGF0YS10ZXN0PVwidGlkZS1zaGVldC1iYWNrXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImNsb3NlXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdD1cInRpZGUtc2hlZXQtY2xvc2VcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxUaWRlRGl2aWRlciAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1zaGVldC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXNoZWV0IHtcbiAgICAtLXNoZWV0LXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTEpO1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAganVzdGlmeS1pdGVtczogcmlnaHQ7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQ6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWJvZHkge1xuICAgIG1heC13aWR0aDogbWluKGNhbGMoMTAwdncgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpLCAzMTFweCk7XG4gIH1cblxuICAudGlkZS1zaGVldC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXNoZWV0LXBhZGRpbmcteCkgdmFyKC0tdGlkZS1zYWZlLWZyKSB2YXIoLS1zaGVldC1wYWRkaW5nLXgpO1xuICAgIGNvbnRhaW46IGxheW91dDtcbiAgfVxuXG4gIDp3aGVyZSgudGlkZS1zaGVldC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxuXG4gICAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc3dpdGNoIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0b2dnbGluZyBhIGJvb2xlYW4gdmFsdWUuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzd2l0Y2gtLWRvY3MpIGZvciBUaWRlU3dpdGNoXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgY2xpY2thYmlsaXR5ICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXN3aXRjaCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgICAgIGlzQWN0aXZlID8gWydhY3RpdmUnLCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgZGlzYWJsZWQgJiYgW0NTUy5PUEFDSVRZLkRJU0FCTEVEXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJTd2l0Y2hcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1zd2l0Y2gtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBpc0FjdGl2ZSA/IFsnYWN0aXZlJywgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0gOiBbQ1NTLkJHLlNFQ09OREFSWV0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc3dpdGNoIHtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZTogMjRweDtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luOiB2YXIoLS10aWRlLXNwYWNpbmctMVxcLzQpO1xuICAgIC0tc3dpdGNoLWJvcmRlci13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgLS1zd2l0Y2gtd2lkdGg6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAqIDIgKyB2YXIoLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbikgKiA0KTtcbiAgICAtLXN3aXRjaC1oZWlnaHQ6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSArIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAqIDIpO1xuXG4gICAgd2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zd2l0Y2gtaGVpZ2h0KTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogdmFyKC0tc3dpdGNoLWluZGljYXRvci1tYXJnaW4pO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgYm9yZGVyLWNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvci5hY3RpdmUge1xuICAgIGxlZnQ6IGNhbGMoXG4gICAgICB2YXIoLS1zd2l0Y2gtd2lkdGgpIC0gdmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAtIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAtIHZhcigtLXN3aXRjaC1ib3JkZXItd2lkdGgpXG4gICAgKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdGFicyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXRhYnMtLWRvY3MpIGZvciBUaWRlVGFic1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVDYXJvdXNlbCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSc7XG4gIGltcG9ydCBUaWRlTGluayBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBTZXRzIGxhYmVscyBhbmQgY2FsbGJhY2sgZm9yIGVhY2ggdGFiICovXG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudFRhYiA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY3VycmVudFRhYi52YWx1ZSA9IGluZGV4O1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtdGFicycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5CT1JERVIuQk9UVE9NLlRXTywgQ1NTLkJPUkRFUi5DT0xPUi5MT1ddXCI+XG4gICAgPFRpZGVDYXJvdXNlbCA6aXMtZmxvYXRpbmc9XCJ0cnVlXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlguSEFMRl1cIlxuICAgICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGluZGV4ID09PSBjdXJyZW50VGFiID8gW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuQlJBTkRdIDogW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmVsZW1lbnQ9XCJFTEVNRU5ULkJVVFRPTlwiXG4gICAgICAgICAgOmxhYmVsPVwidGFiLmxhYmVsXCJcbiAgICAgICAgICA6c3VidGxlPVwidHJ1ZVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3JvdW5kZWQtYm9yZGVyJywgQ1NTLk1BUkdJTi5YLkhBTEYsIGluZGV4ID09PSBjdXJyZW50VGFiICYmIFtDU1MuQkcuUFJJTUFSWV1dXCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC9UaWRlQ2Fyb3VzZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnJvdW5kZWQtYm9yZGVyIHtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSAwIDA7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUsIHJlYWRvbmx5LCByZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFRpZGVUb2FzdCwgVGlkZVRvYXN0T21pdElkLCBUaWRlVG9hc3RlciB9IGZyb20gJ0AvdHlwZXMvVG9hc3QnO1xuXG5jb25zdCBUT0FTVEVSX0tFWSA9IFN5bWJvbCgndGlkZS10b2FzdGVyJyk7XG5cbmNvbnN0IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUyA9IHtcbiAgQUNUSU9OQUJMRTogMTAwMDAsXG4gIElORk9STUFUSU9OQUw6IDUwMDAsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZVRvYXN0ZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGluamVjdGVkID0gaW5qZWN0PFRpZGVUb2FzdGVyPihUT0FTVEVSX0tFWSk7XG4gIGlmIChpbmplY3RlZCkgcmV0dXJuIGluamVjdGVkO1xuXG4gIGNvbnN0IHRpbWVvdXRJZCA9IHJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuICBjb25zdCB0b2FzdHMgPSByZWY8VGlkZVRvYXN0W10+KFtdKTtcbiAgY29uc3QgaWQgPSByZWY8bnVtYmVyPigwKTtcblxuICBjb25zdCBhZGRUb2FzdCA9IChuZXdUb2FzdDogVGlkZVRvYXN0T21pdElkKSA9PiB7XG4gICAgaWQudmFsdWUrKztcbiAgICBjbGVhclRvYXN0cygpO1xuXG4gICAgdG9hc3RzLnZhbHVlLnB1c2goe1xuICAgICAgLi4ubmV3VG9hc3QsXG4gICAgICBpZDogYHRpZGUtdG9hc3QtJHtpZC52YWx1ZX1gLFxuICAgIH0gYXMgVGlkZVRvYXN0KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY2FuY2VsQXV0b0Rpc21pc3MoKTtcbiAgICAgIHN0YXJ0QXV0b0Rpc21pc3MoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xlYXJUb2FzdHMgPSAoKSA9PiB7XG4gICAgdG9hc3RzLnZhbHVlID0gW107XG4gIH07XG5cbiAgY29uc3QgY2FuY2VsQXV0b0Rpc21pc3MgPSAoKSA9PiB7XG4gICAgaWYgKHRpbWVvdXRJZC52YWx1ZSkgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgc3RhcnRBdXRvRGlzbWlzcyA9ICgpID0+IHtcbiAgICBpZiAoIXRvYXN0cy52YWx1ZS5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IGF1dG9EaXNtaXNzRHVyYXRpb24gPSB0b2FzdHMudmFsdWVbMF0uYWN0aW9uXG4gICAgICA/IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5BQ1RJT05BQkxFXG4gICAgICA6IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5JTkZPUk1BVElPTkFMO1xuICAgIHRpbWVvdXRJZC52YWx1ZSA9IHNldFRpbWVvdXQoY2xlYXJUb2FzdHMsIGF1dG9EaXNtaXNzRHVyYXRpb24pO1xuICB9O1xuXG4gIGNvbnN0IHRvYXN0ZXI6IFRpZGVUb2FzdGVyID0ge1xuICAgIGFkZFRvYXN0LFxuICAgIGNhbmNlbEF1dG9EaXNtaXNzLFxuICAgIGNsZWFyVG9hc3RzLFxuICAgIHN0YXJ0QXV0b0Rpc21pc3MsXG4gICAgdG9hc3RzOiByZWFkb25seSh0b2FzdHMpLFxuICB9O1xuXG4gIHByb3ZpZGUoVE9BU1RFUl9LRVksIHRvYXN0ZXIpO1xuXG4gIHJldHVybiB0b2FzdGVyO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdG9hc3RlciBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRldG9hc3Rlci0tZG9jcykgZm9yIFRpZGVUb2FzdGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBvbkJlZm9yZU1vdW50IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUFsZXJ0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlJztcbiAgaW1wb3J0IHsgdXNlVGlkZVRvYXN0ZXIgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVUb2FzdGVyJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgY29uc3QgeyB0b2FzdHMsIGNsZWFyVG9hc3RzLCBjYW5jZWxBdXRvRGlzbWlzcywgc3RhcnRBdXRvRGlzbWlzcyB9ID0gdXNlVGlkZVRvYXN0ZXIoKTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtdG9hc3RlcicsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkZJWEVELFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VHJhbnNpdGlvbkdyb3VwIG5hbWU9XCJwb3BcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLXRvYXN0LXdyYXAnLFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguU1RSRVRDSCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6a2V5PVwidG9hc3QuaWRcIlxuICAgICAgICAgIEBtb3VzZWVudGVyPVwiY2FuY2VsQXV0b0Rpc21pc3NcIlxuICAgICAgICAgIEBtb3VzZWxlYXZlPVwic3RhcnRBdXRvRGlzbWlzc1wiXG4gICAgICAgICAgdi1mb3I9XCJ0b2FzdCBpbiB0b2FzdHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVBbGVydFxuICAgICAgICAgICAgOmN0YS1sYWJlbD1cInRvYXN0LmFjdGlvbj8ubGFiZWxcIlxuICAgICAgICAgICAgOmhlYWRpbmc9XCJ0b2FzdC5oZWFkaW5nXCJcbiAgICAgICAgICAgIDpzdHlsZT1cInsgJy0tdGlkZS1tYXgtd2lkdGgnOiAnbm9uZScgfVwiXG4gICAgICAgICAgICBAY2xvc2U9XCJjbGVhclRvYXN0c1wiXG4gICAgICAgICAgICBAY3RhLWNsaWNrPVwidG9hc3Q/LmFjdGlvbj8uY2FsbGJhY2tcIlxuICAgICAgICAgICAgaXMtZGlzbWlzc2libGVcbiAgICAgICAgICAgIGlzLXRvYXN0XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdG9hc3QuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICA8L1RpZGVBbGVydD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1RyYW5zaXRpb25Hcm91cD5cbiAgICA8L2Rpdj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC5wb3AtZW50ZXItYWN0aXZlLFxuICAucG9wLWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCB0cmFuc2Zvcm0sIHRyYW5zbGF0ZTtcbiAgfVxuXG4gIC5wb3AtZW50ZXItZnJvbSB7XG4gICAgdHJhbnNsYXRlOiAxMDAlIDA7XG4gIH1cblxuICAucG9wLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHotaW5kZXg6IDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5wb3AtbGVhdmUtYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAudGlkZS10b2FzdC13cmFwIHtcbiAgICAgIHdpZHRoOiA0MDBweDtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iXSwibmFtZXMiOlsiT1JJRU5UQVRJT04iLCJDU1MiLCJ1dGlsaXRpZXMiLCJicmVha3BvaW50IiwidXRpbGl0eSIsIl9fZGVmYXVsdF9fIiwicHJvcHMiLCJfX3Byb3BzIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfaG9pc3RlZF8xIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ub3JtYWxpemVDbGFzcyIsIl91bnJlZiIsIlJFQUxNIiwiU0laRSIsIlNJWkVfQlVUVE9OIiwiZm9ybWF0TnVtYmVyIiwiaW5wdXQiLCJvdXRwdXQiLCJkaWdpdHMiLCJmb3JtYXRQYXNjYWxDYXNlIiwid29yZCIsImZvcm1hdFBob25lIiwiZm9ybWF0UHJpY2UiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJfY3JlYXRlQmxvY2siLCJfcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJJQ09OIiwiSUNPTl9SRUFMTSIsImlzRXhwYW5kZWQiLCJfdXNlTW9kZWwiLCJoYW5kbGVUb2dnbGVDbGljayIsIm5ld1ZhbHVlIiwiVGlkZURpdmlkZXIiLCJfY3JlYXRlVk5vZGUiLCJUaWRlSWNvbiIsIl9yZW5kZXJTbG90IiwiX2N0eCIsIkVMRU1FTlQiLCJFTEVNRU5UX0JST0FEIiwidGlkZUNvbmZpZ0RlZmF1bHRzIiwiQ09ORklHX0tFWSIsInByb3ZpZGVUaWRlQ29uZmlnIiwiY29uZmlnIiwiY29uZmlnV2l0aERlZmF1bHRzIiwicHJvdmlkZSIsInVzZVRpZGVDb25maWciLCJpbmplY3QiLCJsaW5rQ29tcG9uZW50IiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJ0eXBlQXR0cmlidXRlIiwiY29tcHV0ZWQiLCJyb290RWxlbWVudCIsIkludGVybmFsQmFzZUxpbmsiLCJfdG9EaXNwbGF5U3RyaW5nIiwiQUxFUlQiLCJlbWl0IiwiX19lbWl0Iiwic2xvdHMiLCJ1c2VTbG90cyIsImhhc0JvZHkiLCJub2RlcyIsIl9hIiwibm9kZSIsIkNvbW1lbnQiLCJpY29uVHlwZSIsIlRpZGVMaW5rIiwiVGlkZUJ1dHRvbkljb24iLCJCQURHRV9DT0xPUiIsIkJBREdFX0NPTE9SX0RFVEFJTFMiLCJCQURHRV9UUlVTVEVEIiwiX0ZyYWdtZW50IiwiY3J1bWIiLCJpbmRleCIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJfaG9pc3RlZF8yIiwiaXNUb3VjaGVkIiwiaXNTYXZlZCIsIl9jYWNoZSIsIiRldmVudCIsImN1cnJlbnRJbmRleCIsInVuaXF1ZUlkIiwidXNlSWQiLCJpbnB1dEZvcm1BdHRyaWJ1dGUiLCJpbnB1dE5hbWVBdHRyaWJ1dGUiLCJfcmVuZGVyTGlzdCIsInRhYiIsIlRZUEVfQ0FSRCIsImNhcm91c2VsUmVmIiwiY29udGFpbmVyUmVmIiwiY29udGVudFdpZHRoIiwiY3VycmVudFBhZ2VJbmRleCIsImRvdHNSZWYiLCJmcmFtZVdpZHRoIiwiaXNGaXJzdFNsaWRlIiwiaXNMYXN0U2xpZGUiLCJzaG93QnV0dG9ucyIsInNsaWRlT2JzZXJ2ZXIiLCJzbGlkZXMiLCJzbGlkZXNJblZpZXciLCJzbG90T2JzZXJ2ZXIiLCJ0b3VjaFN0YXJ0Iiwic2xpZGVzSW5WaWV3Q291bnQiLCJjdXJyZW50UGFnZSIsImRvdENvbnRhaW5lcldpZHRoIiwiZG90Q291bnRWaXNpYmxlIiwiZG90V2lkdGgiLCJkb3RHYXAiLCJ0b3RhbFBhZ2VzIiwicXVvdGllbnQiLCJzY3JvbGxUaW1lb3V0IiwiZ2V0RG90Q2xhc3MiLCJkb3RJbmRleCIsImNsYXNzTmFtZSIsImdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lciIsImVsZW1lbnQiLCJjb250YWluZXIiLCJjb250YWluZXJSZWN0IiwiY29udGFpbmVyUmlnaHQiLCJlbGVtZW50UmVjdCIsImhhbmRsZVRvdWNoRW5kIiwiZXZlbnQiLCJ0b3VjaEVuZCIsImRlbHRhWCIsImRlbHRhWSIsInNjcm9sbEJ5RGVsdGEiLCJoYW5kbGVUb3VjaFN0YXJ0IiwiaGFuZGxlV2hlZWwiLCJpc1NoaWZ0S2V5RG93biIsImlzV2hlZWwiLCJvZmZzZXQiLCJzY3JvbGxUb09mZnNldCIsIm1lYXN1cmVEb20iLCJzbGlkZSIsIm9ic2VydmVTbGlkZXMiLCJvcHRpb25zIiwiZW50cmllcyIsInNsaWRlc0FkZGVkVG9WaWV3IiwiZW50cnkiLCJzbGlkZUluZGV4IiwiYSIsImIiLCJjaGlsZCIsIm9ic2VydmVTbG90Iiwib2JzZXJ2ZXJDYWxsYmFjayIsImRlbHRhIiwic2hvd1ByZXZpb3VzUGFnZSIsInNob3dQcmV2aW91c1NsaWRlIiwic2hvd05leHRQYWdlIiwic2hvd05leHRTbGlkZSIsInRhcmdldCIsImlzU2Nyb2xsaW5nTGVmdCIsInVwZGF0ZURvdHMiLCJuZXh0U2xpZGUiLCJwcmV2aW91c1NsaWRlIiwiY2VudGVyRG90Iiwib25Nb3VudGVkIiwib25Vbm1vdW50ZWQiLCJfYiIsIl9ub3JtYWxpemVTdHlsZSIsIl8iLCJpc0FjdGl2ZSIsImhhbmRsZUNsaWNrIiwiX2hvaXN0ZWRfMyIsIl9ob2lzdGVkXzQiLCJfaG9pc3RlZF81IiwiRk9STV9LRVkiLCJ1c2VUaWRlRm9ybSIsImZvcmNlU2hvd0Vycm9ycyIsInVzZUZvcm1Db250ZXh0IiwicmV2ZWFsVmFsaWRhdGlvbkVycm9ycyIsImhhbmRsZVN1Ym1pdCIsImUiLCJPQkpFQ1RfRklUIiwicGljdHVyZSIsImltZyIsImltYWdlRGVmYXVsdCIsIm9iamVjdEZpdENsYXNzTmFtZSIsInNldEltYWdlRnJvbURlZmF1bHQiLCJjdXJyZW50U3JjIiwic291cmNlcyIsInNvdXJjZSIsIl9jIiwiVGlkZUltYWdlIiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsIlZBTElEQVRJT05fUkVTVUxUIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJtZXNzYWdlIiwidmFsdWUiLCJyZXN1bHQiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJyZXF1aXJlZCIsImlzRW1wdHlBbmRVbnJlcXVpcmVkIiwiaXNUb29Mb25nIiwiZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IiwiZXJyb3JGcm9tUHJvcHMiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGhWYWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsIm1vZGVsVmFsdWUiLCJmb3JtQ29udGV4dCIsImlzVmFsaWRhdGluZyIsImVycm9yUmVmIiwiZm9ybWF0dGVkTGFiZWwiLCJpc0NoZWNrZWQiLCJzaG93RXJyb3IiLCJoYXNFcnJvckZyb21Qcm9wIiwic3VwcG9ydGluZ1RleHRNZXNzYWdlIiwiZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0Iiwid2F0Y2hFZmZlY3QiLCJUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCIsImNoZWNrZWQiLCJvbGRWYWx1ZSIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIlZBTElEQVRPUiIsIkVSUk9SX0RJU1BMQVkiLCJoYXNGb2N1cyIsImlucHV0SWQiLCJzZWxlY3RFbGVtZW50IiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0Iiwib3B0Z3JvdXAiLCJvcHRpb24iLCJfaG9pc3RlZF82IiwiZ2V0RXJyb3JNZXNzYWdlIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImhhbmRsZUZpZWxkVmFsaWRhdGlvbiIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiaGFzRXJyb3IiLCJfX2V4cG9zZSIsIlRFWFRfSU5QVVRfVFlQRSIsIklOUFVUX01PREUiLCJnZXRUZXh0SW5wdXRNb2RlIiwidHlwZSIsImlucHV0bW9kZSIsImlucHV0RWxlbWVudCIsInNob3dQYXNzd29yZCIsImlucHV0TW9kZUF0dHJpYnV0ZSIsImlucHV0VHlwZSIsInNob3VsZFNob3dDbGVhckJ1dHRvbiIsInNob3VsZFNob3dQYXNzd29yZEJ1dHRvbiIsImhhbmRsZUNsZWFyIiwiaGFuZGxlRmllbGRDbGljayIsInByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duIiwiaGFzQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJ1cGRhdGVWYWx1ZSIsInRleHRhcmVhRWxlbWVudCIsInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duIiwiQlJFQUtQT0lOVCIsIk1FRElBIiwic2V0U2Nyb2xsTG9jayIsImlzTG9ja2VkIiwiYm9keSIsInNjcm9sbFkiLCJuZXh0VGljayIsInNhdmVkU2Nyb2xsWSIsIlRPUF9MQVlFUl9JRCIsImluaXRGYXV4VG9wTGF5ZXIiLCJ0b3BMYXllciIsIm1vZGFsQ29udGVudCIsIm1vZGFsRGlhbG9nIiwiaXNPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4iLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UiLCJzY3JvbGxDb250ZW50VG9Ub3AiLCJjbG9zZSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJoYW5kbGVFc2NhcGVLZXl1cCIsIm9uQmVmb3JlTW91bnQiLCJvbkJlZm9yZVVubW91bnQiLCJfVGVsZXBvcnQiLCIkc2xvdHMiLCJjbGFtcGVkIiwicmVzdWx0U3RhcnQiLCJyZXN1bHRFbmQiLCJoYW5kbGVQcmV2aW91c0NsaWNrIiwiaGFuZGxlTmV4dENsaWNrIiwic2lkZXMiLCJhbGlnbm1lbnRzIiwicGxhY2VtZW50cyIsImFjYyIsInNpZGUiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImZsb29yIiwiY3JlYXRlQ29vcmRzIiwidiIsIm9wcG9zaXRlU2lkZU1hcCIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwiY2xhbXAiLCJzdGFydCIsImVuZCIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlIiwicGxhY2VtZW50IiwiZ2V0QWxpZ25tZW50IiwiZ2V0T3Bwb3NpdGVBeGlzIiwiYXhpcyIsImdldEF4aXNMZW5ndGgiLCJnZXRTaWRlQXhpcyIsImdldEFsaWdubWVudEF4aXMiLCJnZXRBbGlnbm1lbnRTaWRlcyIsInJlY3RzIiwicnRsIiwiYWxpZ25tZW50IiwiYWxpZ25tZW50QXhpcyIsImxlbmd0aCIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiZ2V0UGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwic2lkZUF4aXMiLCJhbGlnbkxlbmd0aCIsImlzVmVydGljYWwiLCJjb21tb25YIiwiY29tbW9uWSIsImNvbW1vbkFsaWduIiwiY29vcmRzIiwiY29tcHV0ZVBvc2l0aW9uIiwic3RyYXRlZ3kiLCJtaWRkbGV3YXJlIiwicGxhdGZvcm0iLCJ2YWxpZE1pZGRsZXdhcmUiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsIm1pZGRsZXdhcmVEYXRhIiwicmVzZXRDb3VudCIsImkiLCJmbiIsIm5leHRYIiwibmV4dFkiLCJkYXRhIiwicmVzZXQiLCJkZXRlY3RPdmVyZmxvdyIsInN0YXRlIiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwiZWxlbWVudHMiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiY2xpcHBpbmdDbGllbnRSZWN0Iiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJlbGVtZW50Q2xpZW50UmVjdCIsImdldFBsYWNlbWVudExpc3QiLCJhdXRvQWxpZ25tZW50IiwiYWxsb3dlZFBsYWNlbWVudHMiLCJhdXRvUGxhY2VtZW50IiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QIiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QMiIsIl9wbGFjZW1lbnRzVGhhdEZpdE9uRSIsImNyb3NzQXhpcyIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsInBsYWNlbWVudHMkMSIsIm92ZXJmbG93IiwiY3VycmVudFBsYWNlbWVudCIsImFsaWdubWVudFNpZGVzIiwiY3VycmVudE92ZXJmbG93cyIsImFsbE92ZXJmbG93cyIsIm5leHRQbGFjZW1lbnQiLCJwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UiLCJkIiwicmVzZXRQbGFjZW1lbnQiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsIm1haW5BeGlzTXVsdGkiLCJjcm9zc0F4aXNNdWx0aSIsInJhd1ZhbHVlIiwibWFpbkF4aXMiLCJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJkaWZmQ29vcmRzIiwic2hpZnQiLCJjaGVja01haW5BeGlzIiwiY2hlY2tDcm9zc0F4aXMiLCJsaW1pdGVyIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWluU2lkZSIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwiaGFzV2luZG93IiwiZ2V0Tm9kZU5hbWUiLCJpc05vZGUiLCJnZXRXaW5kb3ciLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiaXNFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsImlzT3ZlcmZsb3dFbGVtZW50Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZGlzcGxheSIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImlzVG9wTGF5ZXIiLCJzZWxlY3RvciIsImlzQ29udGFpbmluZ0Jsb2NrIiwiZWxlbWVudE9yQ3NzIiwid2Via2l0IiwiaXNXZWJLaXQiLCJjc3MiLCJnZXRDb250YWluaW5nQmxvY2siLCJjdXJyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IiLCJwYXJlbnROb2RlIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJsaXN0IiwidHJhdmVyc2VJZnJhbWVzIiwiX25vZGUkb3duZXJEb2N1bWVudDIiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJ3aW4iLCJmcmFtZUVsZW1lbnQiLCJnZXRGcmFtZUVsZW1lbnQiLCJnZXRDc3NEaW1lbnNpb25zIiwiaGFzT2Zmc2V0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaG91bGRGYWxsYmFjayIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsImRvbUVsZW1lbnQiLCIkIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsInNob3VsZEFkZFZpc3VhbE9mZnNldHMiLCJpc0ZpeGVkIiwiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGUiLCJ2aXN1YWxPZmZzZXRzIiwib2Zmc2V0V2luIiwiY3VycmVudFdpbiIsImN1cnJlbnRJRnJhbWUiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImxlZnRTY3JvbGwiLCJnZXRIVE1MT2Zmc2V0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwiaWdub3JlU2Nyb2xsYmFyWCIsImh0bWxSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJvZmZzZXRzIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiaHRtbE9mZnNldCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiaHRtbCIsImdldFZpZXdwb3J0UmVjdCIsInZpc3VhbFZpZXdwb3J0IiwidmlzdWFsVmlld3BvcnRCYXNlZCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiY2FjaGUiLCJjYWNoZWRSZXN1bHQiLCJlbCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nUmVjdCIsImNsaXBwaW5nQW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldERpbWVuc2lvbnMiLCJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsImlzU3RhdGljUG9zaXRpb25lZCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsInJhd09mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsInN2Z09mZnNldFBhcmVudCIsImdldEVsZW1lbnRSZWN0cyIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZmxvYXRpbmdEaW1lbnNpb25zIiwiaXNSVEwiLCJyZWN0c0FyZUVxdWFsIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRvVmFsdWUiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwiaXNUb3VjaERldmljZSIsIm9mZnNldE1pZGRsZXdhcmUiLCJpc1Nob3dQb3BvdmVyIiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSIsImhhbmRsZUFuY2hvckVsZW1lbnRUb3VjaFN0YXJ0IiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIl9UcmFuc2l0aW9uIiwicmF0aW5nVmFsdWUiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJMT0dPX0hFSUdIVCIsIkxPR09fV0lEVEhfTEFSR0UiLCJDU1NfUkVBTE1fTE9HT19TSVpFIiwiZ2V0UmVhbG1LZXlGcm9tUmVhbG0iLCJyZWFsbSIsIm1hdGNoIiwibG9nb0Z1bGwiLCJsb2dvU21hbGwiLCJzaHJpbmtGYWN0b3IiLCJsb2dvTWFyayIsImxpbmsiLCJkaWFsb2dFbGVtZW50IiwiY3VycmVudFRhYiIsIlRpZGVDYXJvdXNlbCIsIlRPQVNURVJfS0VZIiwiQVVUT19ESVNNSVNTX0RVUkFUSU9OX01TIiwidXNlVGlkZVRvYXN0ZXIiLCJpbmplY3RlZCIsInRvYXN0cyIsImFkZFRvYXN0IiwibmV3VG9hc3QiLCJjbGVhclRvYXN0cyIsImNhbmNlbEF1dG9EaXNtaXNzIiwic3RhcnRBdXRvRGlzbWlzcyIsImF1dG9EaXNtaXNzRHVyYXRpb24iLCJ0b2FzdGVyIiwicmVhZG9ubHkiLCJfVHJhbnNpdGlvbkdyb3VwIiwidG9hc3QiLCJhcmdzIiwiVGlkZUFsZXJ0Il0sIm1hcHBpbmdzIjoiO0FBQU8sTUFBTUEsS0FBYztBQUFBLEVBQ3pCLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFDWixHQ0NhQyxJQUFNO0FBQUEsRUFDakIsZ0JBQWdCLENBQUNDLEdBQXFCQyxNQUM3QkQsRUFBVSxJQUFJLENBQUNFLE1BQVksR0FBR0QsQ0FBVSxJQUFJQyxDQUFPLEVBQUU7QUFBQSxFQUU5RCxPQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsTUFDUixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsR0FBRztBQUFBLE1BQ0QsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLElBQUE7QUFBQSxFQUNWO0FBQUEsRUFFRixPQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsRUFBQTtBQUFBLEVBRVQsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLElBQUk7QUFBQSxJQUNGLFFBQVE7QUFBQSxNQUNOLFNBQVM7QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxNQUFBO0FBQUEsTUFFWCxTQUFTO0FBQUEsUUFDUCxPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLElBQ1Y7QUFBQSxJQUVGLFNBQVM7QUFBQSxJQUNULE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxNQUNWLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxJQUFBO0FBQUEsSUFFWCxhQUFhO0FBQUEsTUFDWCxhQUFhO0FBQUEsTUFDYixhQUFhO0FBQUEsTUFDYixlQUFlO0FBQUEsTUFDZixjQUFjO0FBQUEsSUFBQTtBQUFBLEVBQ2hCO0FBQUEsRUFFRixRQUFRO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLE1BRVYsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsVUFBVTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLElBQUE7QUFBQSxJQUVYLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsUUFBUTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQUE7QUFBQSxJQUVQLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUFBO0FBQUEsSUFFUCxNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsSUFBQTtBQUFBLElBRVAsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQUE7QUFBQSxJQUVQLEtBQUs7QUFBQSxNQUNILE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUFBO0FBQUEsRUFDUDtBQUFBLEVBRUYsWUFBWTtBQUFBLElBQ1YsWUFBWTtBQUFBLElBQ1osYUFBYTtBQUFBLEVBQUE7QUFBQSxFQUVmLGNBQWM7QUFBQSxJQUNaLGNBQWM7QUFBQSxFQUFBO0FBQUEsRUFFaEIsWUFBWTtBQUFBLElBQ1YsS0FBSztBQUFBLElBQ0wsSUFBSTtBQUFBLEVBQUE7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Q0wsTUFBTTtBQUFBLEVBQUE7QUFBQSxFQUVSLE1BQU07QUFBQSxJQUNKLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLElBQUk7QUFBQSxFQUFBO0FBQUEsRUFFTixRQUFRO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFBQTtBQUFBLEVBRVosV0FBVztBQUFBLElBQ1QsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLGNBQWM7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUFBO0FBQUEsRUFFUCxRQUFRO0FBQUEsSUFDTixRQUFRO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsS0FBSztBQUFBLE1BQ0gsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLEVBQ1I7QUFBQSxFQUVGLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxFQUFBO0FBQUEsRUFFZCxTQUFTO0FBQUEsSUFDUCxVQUFVO0FBQUEsSUFDVixLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFBQTtBQUFBLEVBRU4sVUFBVTtBQUFBLElBQ1IsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLElBQUE7QUFBQSxJQUVWLElBQUk7QUFBQSxNQUNGLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUFBO0FBQUEsSUFFVixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFBQTtBQUFBLEVBQ1Y7QUFBQSxFQUVGLFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElB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QUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsb0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsb0NBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEscUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxnREFBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEscUJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsc0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxnREFBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEseUJBQUEsRUFBQSxDQUFBLEdBQUEsMkJBQUFMLENBQUEsUUFBQSxDQUFBLENBQ1I7QUFFRCxRQUFBSixFQUFTLFFBQVFVLEdBQVFILENBQVM7QUFBQSxNQUNwQztBQUFBLE1BQ0EsRUFBRSxXQUFXLEdBQUE7QUFBQSxJQUFLLG1CQUtwQnZCLEVBUU0sT0FBQTtBQUFBLE1BUkEsT0FBS0csRUFBQSxDQUFBLGFBQWdCTixFQUFNLE1BQU1PLEVBQUFaLENBQUEsRUFBSSxLQUFLLE9BQU8sR0FBRyxDQUFBO0FBQUEsSUFBQTtNQU1oRHdCLEVBQUEsU0FMUmpCLEVBQUEsR0FBQTRCLEVBTUVDLEdBRktaLEVBQUEsS0FBUSxHQUFBO0FBQUE7UUFIWixPQUFLYixFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxRQUFRLEtBQUssQ0FBQTtBQUFBLFFBQ3pCLGFBQVdNLEVBQUE7QUFBQSxRQUNaLE1BQUs7QUFBQSxNQUFBOzs7SUM1REUrQixJQUFPO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsZ0JBQWdCO0FBQUEsRUFDaEIsa0JBQWtCO0FBQUEsRUFDbEIsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2YsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AscUJBQXFCO0FBQUEsRUFDckIsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsaUJBQWlCO0FBQUEsRUFDakIsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsYUFBYTtBQUFBLEVBQ2IsT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsaUJBQWlCO0FBQUEsRUFDakIsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2Ysc0JBQXNCO0FBQUEsRUFDdEIsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1Asb0JBQW9CO0FBQUEsRUFDcEIsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsZ0JBQWdCO0FBQUEsRUFDaEIsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sZUFBZTtBQUFBLEVBQ2YsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsTUFBTTtBQUFBLEVBQ04sZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsS0FBSztBQUFBLEVBQ0wsV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsa0JBQWtCO0FBQUEsRUFDbEIsVUFBVTtBQUFBLEVBQ1YsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsTUFB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QyxDQUFDK0UsR0FBWSxLQUFLLEdBQUc7QUFBQSxJQUNuQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxJQUFJLEdBQUc7QUFBQSxJQUNsQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxNQUFNLEdBQUc7QUFBQSxJQUNwQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxNQUFNLEdBQUc7QUFBQSxJQUNwQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxHQUFHLEdBQUc7QUFBQSxJQUNqQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxNQUFNLEdBQUc7QUFBQSxJQUNwQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxJQUFJLEdBQUc7QUFBQSxJQUNsQixhQUFhL0UsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDK0UsR0FBWSxNQUFNLEdBQUc7QUFBQSxJQUNwQixhQUFh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WUFBWTtBQUFBLFVBQWNZLEVBQUFaLENBQUEsRUFBSSxZQUFZO0FBQUEsVUFBYVksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFBOztRQVVwTTRDLEVBNkJrQnltQixJQUFBLEVBN0JELE1BQUssU0FBSztBQUFBLHNCQWV2QixNQUF1QjtBQUFBLG9CQWR6QjdvQixFQTJCTTBFLEdBQUEsTUFBQWMsR0FiWXBGLEVBQUFnb0IsQ0FBQSxHQUFNLENBQWZVLE1BQUs7OzBCQWRkOW9CLEVBMkJNLE9BQUE7QUFBQSxnQkExQkgsT0FBS0csRUFBQTtBQUFBO2tCQUErQ0MsRUFBQVosQ0FBQSxFQUFJLGVBQWU7QUFBQSxrQkFBZ0JZLEVBQUFaLENBQUEsRUFBSSxTQUFTO0FBQUEsa0JBQXNCWSxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLGtCQUFpQlksRUFBQVosQ0FBQSxFQUFJLFlBQVk7QUFBQSxrQkFBbUJZLEVBQUFaLENBQUEsRUFBSSxZQUFZO0FBQUEsa0JBQWlCWSxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLO0FBQUEsa0JBQWlCWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLGdCQUFBO2dCQVV0USxLQUFLc3BCLEVBQU07QUFBQSxnQkFDWCxjQUFVN2pCLEVBQUEsQ0FBQSxNQUFBQSxFQUFBLENBQUE7QUFBQSwwQkFBRTdFLEVBQUFvb0IsQ0FBQSxLQUFBcG9CLEVBQUFvb0IsQ0FBQSxFQUFBLEdBQUFPLENBQUE7QUFBQSxnQkFDWixjQUFVOWpCLEVBQUEsQ0FBQSxNQUFBQSxFQUFBLENBQUE7QUFBQSwwQkFBRTdFLEVBQUFxb0IsQ0FBQSxLQUFBcm9CLEVBQUFxb0IsQ0FBQSxFQUFBLEdBQUFNLENBQUE7QUFBQSxjQUFBO2dCQUdiM21CLEVBVVk0bUIsSUFBQTtBQUFBLGtCQVRULGNBQVcva0IsSUFBQTZrQixFQUFNLFdBQU4sZ0JBQUE3a0IsRUFBYztBQUFBLGtCQUN6QixTQUFTNmtCLEVBQU07QUFBQSxrQkFDZixPQUFPLEVBQUEsb0JBQUEsT0FBQTtBQUFBLGtCQUNQLFNBQU8xb0IsRUFBQW1vQixDQUFBO0FBQUEsa0JBQ1AsYUFBV3RlLElBQUE2ZSxLQUFBLGdCQUFBQSxFQUFPLFdBQVAsZ0JBQUE3ZSxFQUFlO0FBQUEsa0JBQzNCLGtCQUFBO0FBQUEsa0JBQ0EsWUFBQTtBQUFBLGdCQUFBOzhCQUVBLE1BQXVCO0FBQUEsb0JBQXBCcEYsR0FBQXBCLEVBQUFxbEIsRUFBTSxXQUFXLEdBQUEsQ0FBQTtBQUFBLGtCQUFBOzs7Ozs7Ozs7Ozs7IiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzYxLDYyLDYzLDY0LDY1XX0=