ps-toolkit-ui 1.19.67 → 1.19.69

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.
@@ -1,6 +1,7 @@
1
1
  import { InputError, InputType, PermissionAccessTypeEnum, PermissionInputActionEnum, PermissionInputTypeEnum, PermissionTypeEnum } from './enum.class';
2
2
  import * as moment from 'jalali-moment';
3
3
  import * as $ from 'jquery';
4
+ import * as _ from 'lodash';
4
5
  import { PermissionClass } from './permission.class';
5
6
  // @dynamic
6
7
  export class HelperClass {
@@ -537,6 +538,7 @@ export class HelperClass {
537
538
  return fileIcons[k] ? fileIcons[k] : fileIcons.file;
538
539
  }
539
540
  static groupBy(data, iteratee) {
541
+ return _.groupBy(data, iteratee);
540
542
  }
541
543
  static getTablePermissions(l = true, i = true, u = true, d = true) {
542
544
  const p = new PermissionClass();
@@ -622,4 +624,4 @@ export class HelperClass {
622
624
  return formData;
623
625
  }
624
626
  }
625
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IkQ6L1BzVG9vbGtpdC9VSS9wcm9qZWN0cy9wcy10b29sa2l0LXVpL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jbGFzc2VzL2hlbHBlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCx3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbkIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELFdBQVc7QUFDWCxNQUFNLE9BQU8sV0FBVztJQUN0QixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQWU7UUFDN0IsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDckMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3RDO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxPQUFPLEVBQUU7WUFDM0MsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3JDO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDMUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ3JEO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDN0MsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ3hEO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDN0MsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ3hEO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDN0MsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ3hEO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDN0MsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ3hEO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxPQUFPLEVBQUU7WUFDM0MsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3JDO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDekMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ25DO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDekMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5QjthQUFNLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzVDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25EO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDekMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ25DO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDNUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3RDO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDOUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRTthQUFNLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsVUFBVSxFQUFFO1lBQzlDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUN6RDthQUFNLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQzFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQztRQUNELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakYsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDM0IsT0FBTyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFDO1lBQ0wsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDMUIsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdEM7UUFDRCxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ1YsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksS0FBSyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSTtRQUMxQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRXRCLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN0QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFDO1lBQ3hDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQzFCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUM7WUFDWCxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ1A7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQVk7UUFDaEMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoSCxPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU0sSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1RSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJO1FBQ3pCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztRQUNyQixPQUFPLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQzFCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0RTtRQUVELE9BQU8sUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRztRQUNuQixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUM7WUFDeEIsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7U0FDbEI7UUFDRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN0QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDdkMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0QixPQUFPLE1BQU0sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxJQUFJO1FBQzFELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLFVBQVUsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3ZJLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUMzQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFHO1lBQ2hDLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQztTQUMzRTtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxHQUFHLEdBQUc7UUFDdEMsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxFQUFFO1lBQ1IsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzVELE9BQU8sR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdDO1FBQ0QsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFJLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFDdkUsQ0FBQztJQUNELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxJQUFJO1FBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7UUFDMUIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBQztnQkFDekIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM5QjtZQUNELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUM7Z0JBQzFCLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM3QztTQUNGO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1FBQ3JCLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUN2QixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JJLENBQUM7SUFDRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDcEMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUM3QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUNWO1lBQ0UsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDO2dCQUNSLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QixDQUFDLEVBQUUsQ0FBQzthQUNMO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUM7Z0JBQ2pCLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBQztvQkFDWCxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNmO2dCQUNELENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ2pDO1lBQ0QsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ3RHLENBQUM7SUFDRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN0QyxPQUFPLHVCQUF1QixDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDcEUsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFNO1FBQ1gsT0FBTyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNELE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBaUIsQ0FBQyxFQUFFLE9BQWUsT0FBTztRQUM1RCxPQUFPLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUNELE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSTtRQUNqQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUM7WUFDWixPQUFPLE1BQU0sRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsT0FBTyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDdkMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQ1o7WUFDRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNuQjtRQUNELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQ1Y7WUFDRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUM7Z0JBQ1IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLENBQUMsRUFBRSxDQUFDO2FBQ0w7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBQztnQkFDakIsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFDO29CQUNYLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2Y7Z0JBQ0QsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDakM7WUFDRCxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0IsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8seUJBQXlCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDdEcsQ0FBQztJQUNELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFVO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QixPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBQ0QsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDM0MsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNYLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMzQixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ25CLElBQUksR0FBRyxJQUFJLENBQUMsRUFDWjtZQUNFLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzNCLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDaEI7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUM3RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN2RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLElBQUksSUFBSSxHQUFHLENBQUMsRUFBQztZQUNYLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsRUFBRSxDQUFDO1NBQ0w7UUFDRCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBQztZQUNyQixDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbkMsQ0FBQyxFQUFFLENBQUM7U0FDTDtRQUNELElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQ25CLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzNDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLENBQUMsRUFBRSxDQUFDO1NBQ0w7UUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBQztZQUNwQixDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RELENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsRUFBRSxDQUFDO1NBQ0w7UUFDRCxJQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBQztZQUN0QixDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDckMsQ0FBQyxFQUFFLENBQUM7U0FDTDtRQUNELENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDL0UsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFVLEVBQUUsU0FBaUIsZUFBZSxFQUFFLFNBQWlCLElBQUk7UUFDaEYsSUFBSTtZQUNGLElBQUksRUFBRSxLQUFLLElBQUksRUFBQztnQkFDZCxPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtnQkFDOUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzFEO1lBQ0QsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7U0FDOUM7UUFBQSxPQUFPLENBQUMsRUFBRTtZQUNULE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFPO1FBQ3BCLElBQUk7WUFDRixJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUM7Z0JBQ2QsT0FBTyxFQUFFLENBQUM7YUFDWDtZQUNELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztZQUM5QixPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDdkY7UUFBQSxPQUFPLENBQUMsRUFBRTtZQUNULE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFVLEVBQUUsU0FBaUIscUJBQXFCO1FBQ25FLElBQUksRUFBRSxLQUFLLElBQUksRUFBQztZQUNkLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQU0sRUFBRSxFQUFPO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFpQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxjQUFjLEVBQUUsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEksQ0FBQztJQUNELE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUM5QixNQUFNLE1BQU0sR0FBRyxDQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQzdEO1lBQ0UsUUFBUSxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUM7U0FDM0I7UUFDRCxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDekMscUJBQXFCLEVBQUUsQ0FBQztZQUN4QixxQkFBcUIsRUFBRSxDQUFDO1NBQ3pCLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsQixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNqQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDL0MsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDL0IsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekIsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDM0IsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDbkMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDN0IsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBR0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUN4QixJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFDO1lBQ2YsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdEI7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBQztZQUNmLE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixDQUFDLEVBQUUsQ0FBQztTQUNMO1FBQ0QsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUNoQixNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLENBQUMsRUFBRSxDQUFDO1NBQ0w7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUM7WUFDdkIsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDLEVBQUUsQ0FBQztTQUNMO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFDO1lBQ3hCLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsQ0FBQyxFQUFFLENBQUM7U0FDTDtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBQztZQUMxQixNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsTUFBTSxJQUFJLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFJLENBQUk7UUFDbEIsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFDO1lBQ1osT0FBTztTQUNSO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSyxDQUFDLENBQUMsV0FBeUIsRUFBRSxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUk7UUFDaEMsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQywyQkFBMkI7UUFDM0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLEdBQUcsaUNBQWlDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcscUNBQXFDLEdBQUcsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLENBQUM7UUFDaEwsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDYixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7SUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUk7UUFDeEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbEQsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBQztZQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU07UUFDL0IsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN4RjtRQUVELElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRTtZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQU87UUFDOUIsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1NBQUU7UUFDNUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ25GLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFBRSxHQUFHLElBQUk7UUFDaEMsRUFBRSxHQUFHLEVBQUUsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUM7WUFDWixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUMsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRWhELElBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFHO2dCQUNqQixJQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUUsS0FBSyxnQkFBZ0IsRUFBRztvQkFDeEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBRSxLQUFLLENBQUUsQ0FBQztpQkFDM0I7cUJBQU07b0JBQ0wsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBRSxDQUFDO2lCQUN0QzthQUNGO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDckI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSTtRQUN6QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNmLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFlO1FBQ3JDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcscUJBQXFCLENBQUM7UUFDMUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDdkIsSUFBSTtnQkFDRixhQUFhO2dCQUNiLE1BQU0sQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDekM7WUFBQyxPQUFPLENBQUMsRUFBRTthQUNYO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsSUFBSTtZQUNGLGFBQWE7WUFDYixNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUU7b0JBQy9CLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNqRCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQ1Q7Z0JBQ0QsSUFBSSxHQUFHLENBQUMscUJBQXFCLEtBQUssSUFBSSxFQUFDO29CQUNyQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzlCO1lBQ0gsQ0FBQyxDQUFDO1NBQ0g7UUFBQyxPQUFPLENBQUMsRUFBRTtTQUNYO0lBQ0gsQ0FBQztJQUNELE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUc7UUFDMUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBRSxHQUFHLEdBQUcsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHO1FBQ2pCLElBQUksR0FBRyxJQUFJLElBQUksRUFBQztZQUNkLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLFlBQVksR0FBRyxDQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFFLENBQUM7UUFDdkMsTUFBTSxhQUFhLEdBQUcsQ0FBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBRSxDQUFDO1FBQ3hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQzFCO1lBQ0UsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRTthQUNsQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2QixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUM7WUFDbEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQztZQUNqQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ2QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEIsTUFBTSxTQUFTLEdBQUc7WUFDaEIsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsbUJBQW1CO1lBQzdFLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsa0JBQWtCO1lBQ2pELEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLGlCQUFpQjtZQUMzRSxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLHdCQUF3QjtZQUM3RCxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxhQUFhO1lBQ3JFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsb0JBQW9CO1NBQ3JELENBQUM7UUFDRixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDdEQsQ0FBQztJQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVE7SUFDN0IsQ0FBQztJQUNELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSTtRQUMvRCxNQUFNLENBQUMsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDdEMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDeEIsT0FBTyxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFDekMsT0FBTyxDQUFDLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUM7UUFDbkQsT0FBTyxDQUFDLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQyxJQUFJLENBQUM7UUFDckQsT0FBTyxDQUFDLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7UUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUMxQixPQUFPLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUN6QyxPQUFPLENBQUMsV0FBVyxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQztRQUN0RCxPQUFPLENBQUMsU0FBUyxHQUFHLHVCQUF1QixDQUFDLE1BQU0sQ0FBQztRQUNuRCxPQUFPLENBQUMsVUFBVSxHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQztRQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxXQUFXLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxTQUFTLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDO1FBQ2pELE9BQU8sQ0FBQyxVQUFVLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDdEMsT0FBTyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDMUIsT0FBTyxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFDekMsT0FBTyxDQUFDLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQyxJQUFJLENBQUM7UUFDckQsT0FBTyxDQUFDLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7UUFDakQsT0FBTyxDQUFDLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUM7UUFDckQsT0FBTyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUM7UUFDOUIsT0FBTyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDeEIsQ0FBQyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEVBQUU7WUFDTCxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksQ0FBQyxFQUFFO1lBQ0wsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsRUFBRTtZQUNMLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxDQUFDLEVBQUU7WUFDTCxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxFQUFFLFNBQVMsR0FBRyxFQUFFO1FBQ25FLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzlCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDekQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUV4QixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7b0JBQ2xCLHdDQUF3QztvQkFDeEMsT0FBTztpQkFDUjtxQkFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQzdELDZDQUE2QztvQkFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2lCQUMvQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQy9CLDRDQUE0QztvQkFDNUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTt3QkFDNUIsTUFBTSxRQUFRLEdBQUcsR0FBRyxPQUFPLElBQUksS0FBSyxHQUFHLENBQUM7d0JBQ3hDLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTs0QkFDakIsd0NBQXdDOzRCQUN4QyxPQUFPO3lCQUNSOzZCQUFNLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFOzRCQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7eUJBQy9DOzZCQUFNOzRCQUNMLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO3lCQUNqQztvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCx5QkFBeUI7b0JBQ3pCLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUNqQztZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIElucHV0RXJyb3IsXHJcbiAgSW5wdXRUeXBlLCBNZXRob2QsXHJcbiAgUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLFxyXG4gIFBlcm1pc3Npb25JbnB1dEFjdGlvbkVudW0sXHJcbiAgUGVybWlzc2lvbklucHV0VHlwZUVudW0sXHJcbiAgUGVybWlzc2lvblR5cGVFbnVtXHJcbn0gZnJvbSAnLi9lbnVtLmNsYXNzJztcclxuaW1wb3J0IHtJbnB1dENsYXNzfSBmcm9tICcuL2Zvcm0uY2xhc3MnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnamFsYWxpLW1vbWVudCc7XHJcbmltcG9ydCAqIGFzICQgZnJvbSAnanF1ZXJ5JztcclxuaW1wb3J0IHtQZXJtaXNzaW9uQ2xhc3N9IGZyb20gJy4vcGVybWlzc2lvbi5jbGFzcyc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgSGVscGVyQ2xhc3Mge1xyXG4gIHN0YXRpYyBnZXRMYWJlbChpbnA6IElucHV0Q2xhc3MpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbiA9IGlucC5sYWJlbCAhPSBudWxsID8gaW5wLmxhYmVsIDogaW5wLm5hbWU7XHJcbiAgICBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLlJlcXVpcmVkKSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9yUmVxdWlyZWQnLCBuKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLkludmFsaWQpIHtcclxuICAgICAgcmV0dXJuIGlucC5sKCdGb3JtRXJyb3JJbnZhbGlkJywgbik7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5MZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGlucC5sKCdGb3JtRXJyb3JMZW5ndGgnLCBbbiwgaW5wLm1pbkxlbmd0aF0pO1xyXG4gICAgfSBlbHNlIGlmIChpbnAuZXJyb3IgPT09IElucHV0RXJyb3IuTWluTGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9yTWluTGVuZ3RoJywgW24sIGlucC5taW5MZW5ndGhdKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLk1heExlbmd0aCkge1xyXG4gICAgICByZXR1cm4gaW5wLmwoJ0Zvcm1FcnJvck1heExlbmd0aCcsIFtuLCBpbnAubWF4TGVuZ3RoXSk7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5NaW5BbW91bnQpIHtcclxuICAgICAgcmV0dXJuIGlucC5sKCdGb3JtRXJyb3JNaW5BbW91bnQnLCBbbiwgaW5wLm1pbkxlbmd0aF0pO1xyXG4gICAgfSBlbHNlIGlmIChpbnAuZXJyb3IgPT09IElucHV0RXJyb3IuTWF4QW1vdW50KSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9yTWF4QW1vdW50JywgW24sIGlucC5tYXhMZW5ndGhdKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLkV4cGlyZWQpIHtcclxuICAgICAgcmV0dXJuIGlucC5sKCdGb3JtRXJyb3JFeHBpcmVkJywgbik7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5Xcm9uZykge1xyXG4gICAgICByZXR1cm4gaW5wLmwoJ0Zvcm1FcnJvcldyb25nJywgbik7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5FcnJvcikge1xyXG4gICAgICByZXR1cm4gaW5wLmwoJ0Zvcm1FcnJvcicsIG4pO1xyXG4gICAgfSBlbHNlIGlmIChpbnAuZXJyb3IgPT09IElucHV0RXJyb3IuTm90TWF0Y2gpIHtcclxuICAgICAgcmV0dXJuIGlucC5sKCdGb3JtRXJyb3JOb3RNYXRjaCcsIGlucC5tYXRjaC5uYW1lKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLkV4aXN0KSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9yRXhpc3QnLCBuKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLk5vdEV4aXN0KSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9yTm90RXhpc3QnLCBuKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLk5vdEFsbG93ZWQpIHtcclxuICAgICAgcmV0dXJuIGlucC5sKCdGb3JtRXJyb3JOb3RBbGxvd2VkJywgW24sIGlucC5hbGxvd2VkLmpvaW4oJywgJyldKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLk1heENvbnRlbnQpIHtcclxuICAgICAgcmV0dXJuIGlucC5sKCdGb3JtRXJyb3JNYXhDb250ZW50JywgW24sIGlucC5tYXhMZW5ndGhdKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLlVwbG9hZCkge1xyXG4gICAgICByZXR1cm4gaW5wLmwoJ0Zvcm1FcnJvclVwbG9hZCcsIG4pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGVzYyA9IGlucC5kZXNjcmlwdGlvbiAhPT0gbnVsbCA/ICcgKCcgKyBpbnAubChpbnAuZGVzY3JpcHRpb24pICsgJyknIDogJyc7XHJcbiAgICByZXR1cm4gaW5wLmwobikgKyBkZXNjO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIG5hdGlvbmFsQ29kZU51bVZhbGlkKGMpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBIZWxwZXJDbGFzcy5uYXRpb25hbENvZGVWYWxpZChjKSB8fCBIZWxwZXJDbGFzcy5uYXRpb25hbE51bVZhbGlkKGMpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGVjb25vbWljTnVtVmFsaWQoYyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFjKXtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGMubGVuZ3RoID09PSAxMSB8fCAoYy5sZW5ndGggPT09IDE0ICYmIEhlbHBlckNsYXNzLm5hdGlvbmFsQ29kZVZhbGlkKGMuc3Vic3RyKDAsIDEwKSkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIG5hdGlvbmFsQ29kZVZhbGlkKGMpOiBib29sZWFuIHtcclxuICAgIGlmICghUmVnRXhwKC9eXFxkezEwfSQvKS50ZXN0KGMpIHx8IFJlZ0V4cCgvXiguKVxcMSskLykudGVzdChjKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjaGVjayA9IHBhcnNlSW50KGNbOV0sIDEwKTtcclxuICAgIGxldCBzdW0gPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA5OyArK2kpIHtcclxuICAgICAgc3VtICs9IHBhcnNlSW50KGNbaV0sIDEwKSAqICgxMCAtIGkpO1xyXG4gICAgfVxyXG4gICAgc3VtICU9IDExO1xyXG4gICAgcmV0dXJuIChzdW0gPCAyICYmIGNoZWNrID09PSBzdW0pIHx8IChzdW0gPj0gMiAmJiBjaGVjayArIHN1bSA9PT0gMTEpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIG5hdGlvbmFsTnVtVmFsaWQoY29kZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgbCA9IGNvZGUubGVuZ3RoO1xyXG5cclxuICAgIGlmIChsIDwgMTEgfHwgcGFyc2VJbnQoY29kZSwgMTApID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGFyc2VJbnQoY29kZS5zdWJzdHIoMywgNiksIDEwKSA9PT0gMCl7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGMgPSBwYXJzZUludChjb2RlLnN1YnN0cigxMCwgMSksIDEwKTtcclxuICAgIGNvbnN0IGQgPSBwYXJzZUludChjb2RlLnN1YnN0cig5LCAxKSwgMTApICsgMjtcclxuICAgIGNvbnN0IHogPSBbMjksIDI3LCAyMywgMTksIDE3XTtcclxuICAgIGxldCBzID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKyl7XHJcbiAgICAgIHMgKz0gKGQgKyBwYXJzZUludChjb2RlLnN1YnN0cihpLCAxKSwgMTApKSAqIHpbaSAlIDVdO1xyXG4gICAgfVxyXG4gICAgcyA9IHMgJSAxMTtcclxuICAgIGlmIChzID09PSAxMCl7XHJcbiAgICAgIHMgPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGMgPT09IHM7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcGxhcXVlVmFsaWQocCwgdDogSW5wdXRUeXBlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodCA9PT0gSW5wdXRUeXBlLlBsYXF1ZSAmJiAhUmVnRXhwKC9eWzAtOV17Mn1fW9in2KjZvtiq2KvYrNqG2K3Yrtiv2LDYsdiy2pjYs9i02LXYtti32LjYudi62YHZgtqp2q/ZhNmF2YbZiNmH24xdX1swLTldezN9X1swLTldezJ9JC8pLnRlc3QocCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICh0ID09PSBJbnB1dFR5cGUuUGxhcXVlTSAmJiAhUmVnRXhwKC9eWzAtOV17M31fWzAtOV17NX0kLykudGVzdChwKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc283MDY0TW9kOTdfMTAoaWJhbik6IG51bWJlcntcclxuICAgIGxldCByZW1haW5kZXIgPSBpYmFuO1xyXG4gICAgd2hpbGUgKHJlbWFpbmRlci5sZW5ndGggPiAyKXtcclxuICAgICAgY29uc3QgYmxvY2sgPSByZW1haW5kZXIuc2xpY2UoMCwgOSk7XHJcbiAgICAgIHJlbWFpbmRlciA9IHBhcnNlSW50KGJsb2NrLCAxMCkgJSA5NyArIHJlbWFpbmRlci5zbGljZShibG9jay5sZW5ndGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYXJzZUludChyZW1haW5kZXIsIDEwKSAlIDk3O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHNoZWJhVmFsaWQoc3RyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gL0lSWzAtOV17MjR9LztcclxuICAgIGlmICghc3RyLnN0YXJ0c1dpdGgoJ0lSJykpe1xyXG4gICAgICBzdHIgPSAnSVInICsgc3RyO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0ci5sZW5ndGggIT09IDI2KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXBhdHRlcm4udGVzdChzdHIpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbmV3U3RyID0gc3RyLnN1YnN0cig0KTtcclxuICAgIGNvbnN0IGQxID0gc3RyLmNoYXJDb2RlQXQoMCkgLSA2NSArIDEwO1xyXG4gICAgY29uc3QgZDIgPSBzdHIuY2hhckNvZGVBdCgxKSAtIDY1ICsgMTA7XHJcbiAgICBuZXdTdHIgKz0gZDEudG9TdHJpbmcoKSArIGQyLnRvU3RyaW5nKCkgKyBzdHIuc3Vic3RyKDIsIDIpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmlzbzcwNjRNb2Q5N18xMChuZXdTdHIpID09PSAxO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBvc3RhbENvZGVWYWxpZChjKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gUmVnRXhwKC9eXFxiKD8hKFxcZClcXDF7M30pWzEzLTldezV9WzAtOV17NX1cXGIkLykudGVzdChjKTtcclxuICB9XHJcbiAgc3RhdGljIHJhbmRvbShsZW5ndGgsIHVwcGVyID0gdHJ1ZSwgbG93ZXIgPSB0cnVlLCBudW0gPSB0cnVlKTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHQgPSAnJztcclxuICAgIGNvbnN0IGNoYXJhY3RlcnMgPSBgJHt1cHBlciA/ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgOiAnJ30ke2xvd2VyID8gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyA6ICcnfSR7bnVtID8gJzEyMzQ1Njc4OScgOiAnJ31gO1xyXG4gICAgY29uc3QgY2hhcmFjdGVyc0xlbmd0aCA9IGNoYXJhY3RlcnMubGVuZ3RoO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApIHtcclxuICAgICAgcmVzdWx0ICs9IGNoYXJhY3RlcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJhY3RlcnNMZW5ndGgpKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG4gIHN0YXRpYyBzZXRDb29raWUobmFtZSwgdmFsdWUsIGRheXMgPSAzNjUpOiB2b2lkIHtcclxuICAgIGxldCBleHBpcmVzID0gJyc7XHJcbiAgICBpZiAoZGF5cykge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpICsgKGRheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwKSk7XHJcbiAgICAgIGV4cGlyZXMgPSAnOyBleHBpcmVzPScgKyBkYXRlLnRvVVRDU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBkb2N1bWVudC5jb29raWUgPSBuYW1lICsgJz0nICsgKHZhbHVlIHx8ICcnKSAgKyBleHBpcmVzICsgJzsgcGF0aD0vJztcclxuICB9XHJcbiAgc3RhdGljIGdldENvb2tpZShuYW1lLCBkZWYgPSBudWxsKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG5hbWVFUSA9IG5hbWUgKyAnPSc7XHJcbiAgICBjb25zdCBjYSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpO1xyXG4gICAgZm9yIChsZXQgYyBvZiBjYSkge1xyXG4gICAgICB3aGlsZSAoYy5jaGFyQXQoMCkgPT09ICcgJyl7XHJcbiAgICAgICAgYyA9IGMuc3Vic3RyaW5nKDEsIGMubGVuZ3RoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYy5pbmRleE9mKG5hbWVFUSkgPT09IDApe1xyXG4gICAgICAgIHJldHVybiBjLnN1YnN0cmluZyhuYW1lRVEubGVuZ3RoLCBjLmxlbmd0aCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkZWY7XHJcbiAgfVxyXG4gIHN0YXRpYyBlcmFzZUNvb2tpZShuYW1lKTogdm9pZCB7XHJcbiAgICBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKVxyXG4gICAgICAuZm9yRWFjaCgoYykgPT4geyBkb2N1bWVudC5jb29raWUgPSBjLnJlcGxhY2UoL14gKy8sICcnKS5yZXBsYWNlKC89LiovLCAnPTtleHBpcmVzPScgKyBuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKCkgKyAnO3BhdGg9LycpOyB9KTtcclxuICB9XHJcbiAgc3RhdGljIGdldERhdGVEaWYobCwgZHQ6IHN0cmluZywgYyA9IDIpOiBzdHJpbmd7XHJcbiAgICBjb25zdCBkID0gcGFyc2VJbnQoZHQuc3Vic3RyaW5nKDYsIGR0Lmxlbmd0aCAtIDIpLCAxMCk7XHJcbiAgICBjb25zdCBub3cgPSBtb21lbnQubm93KCk7XHJcbiAgICBjb25zdCBkaWYgPSAobm93IC0gZCkgLyAxMDAwO1xyXG4gICAgY29uc3QgaCA9IE1hdGguZmxvb3IoZGlmIC8gMzYwMCk7XHJcbiAgICBjb25zdCBtID0gTWF0aC5mbG9vcihkaWYgJSAzNjAwIC8gNjApO1xyXG4gICAgaWYgKGggPCAyNClcclxuICAgIHtcclxuICAgICAgbGV0IHIgPSAnJztcclxuICAgICAgaWYgKGggPiAwKXtcclxuICAgICAgICByICs9IGwoJ0hvdXJQJywgaC50b1N0cmluZygpKTtcclxuICAgICAgICBjLS07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG0gPiAwICYmIGMgPiAwKXtcclxuICAgICAgICBpZiAociAhPT0gJycpe1xyXG4gICAgICAgICAgciArPSBsKCdBbmQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgciArPSBsKCdNaW51dGVQJywgbS50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgICByICs9IHIgIT09ICcnID8gJycgOiBsKCdBRmV3Jyk7XHJcbiAgICAgIHIgKz0gJyAnICsgbCgnQWdvJyk7XHJcbiAgICAgIHJldHVybiByO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cImx0ciBkLWliXCI+JyArIG1vbWVudChkKS5sb2NhbGUoJ2ZhJykuZm9ybWF0KCdqWVlZWS9qTU0vakREIEhIOm1tJykgKyAnPC9zcGFuPic7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXRSb3dFbnVtKGwsIGUsIGR0KTogc3RyaW5ne1xyXG4gICAgY29uc3QgdiA9IGUuZmluZCh4ID0+IHguVmFsdWUgPT09IGR0KTtcclxuICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJzdGF0dXMgJHt2LkNsYXNzfVwiPmAgKyBsKHYuTmFtZSkgKyAnPC9zcGFuPic7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXROb3coKTogYW55e1xyXG4gICAgcmV0dXJuIG1vbWVudC5ub3coKTtcclxuICB9XHJcbiAgc3RhdGljIGdldElucHV0RGF0ZShhbW91bnQ6IG51bWJlciA9IDAsIHVuaXQ6IHN0cmluZyA9ICdtb250aCcpOiBhbnl7XHJcbiAgICByZXR1cm4gSGVscGVyQ2xhc3MuZ2V0TW9tZW50KCkuYWRkKGFtb3VudCwgdW5pdCkubG9jYWxlKCdlbicpLmZvcm1hdCgnWVlZWS9NTS9ERCcpO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0TW9tZW50KGkgPSBudWxsLCBmID0gbnVsbCk6IGFueXtcclxuICAgIGlmIChpID09IG51bGwpe1xyXG4gICAgICByZXR1cm4gbW9tZW50KCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbW9tZW50KGksIGYpO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0RGF0ZVJlbWFpbihsLCBkdDogc3RyaW5nLCBjID0gMik6IHN0cmluZ3tcclxuICAgIGNvbnN0IGQgPSBwYXJzZUludChkdC5zdWJzdHJpbmcoNiwgZHQubGVuZ3RoIC0gMiksIDEwKTtcclxuICAgIGNvbnN0IG5vdyA9IG1vbWVudC5ub3coKTtcclxuICAgIGNvbnN0IGRpZiA9IChkIC0gbm93KSAvIDEwMDA7XHJcbiAgICBpZiAoZGlmIDw9IDApXHJcbiAgICB7XHJcbiAgICAgIHJldHVybiBsKCdFbmRlZCcpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaCA9IE1hdGguZmxvb3IoZGlmIC8gMzYwMCk7XHJcbiAgICBjb25zdCBtID0gTWF0aC5mbG9vcihkaWYgJSAzNjAwIC8gNjApO1xyXG4gICAgaWYgKGggPCAyNClcclxuICAgIHtcclxuICAgICAgbGV0IHIgPSAnJztcclxuICAgICAgaWYgKGggPiAwKXtcclxuICAgICAgICByICs9IGwoJ0hvdXJQJywgaC50b1N0cmluZygpKTtcclxuICAgICAgICBjLS07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG0gPiAwICYmIGMgPiAwKXtcclxuICAgICAgICBpZiAociAhPT0gJycpe1xyXG4gICAgICAgICAgciArPSBsKCdBbmQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgciArPSBsKCdNaW51dGVQJywgbS50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgICByICs9IHIgIT09ICcnID8gJycgOiBsKCdBRmV3Jyk7XHJcbiAgICAgIHIgKz0gJyAnICsgbCgnTGF0ZXInKTtcclxuICAgICAgcmV0dXJuIHI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwibHRyIGQtaWJcIj4nICsgbW9tZW50KGQpLmxvY2FsZSgnZmEnKS5mb3JtYXQoJ2pZWVlZL2pNTS9qREQgSEg6bW0nKSArICc8L3NwYW4+JztcclxuICB9XHJcbiAgc3RhdGljIGdldERhdGVSZW1haW5TZWMoZHQ6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBjb25zdCBkID0gcGFyc2VJbnQoZHQuc3Vic3RyaW5nKDYsIGR0Lmxlbmd0aCAtIDIpLCAxMCk7XHJcbiAgICBjb25zdCBub3cgPSBtb21lbnQubm93KCk7XHJcbiAgICByZXR1cm4gKGQgLSBub3cpIC8gMTAwMDtcclxuICB9XHJcbiAgc3RhdGljIGdldERhdGVSZW1haW5GdWxsKGwsIGR0OiBzdHJpbmcsIGMgPSAyKTogc3RyaW5ne1xyXG4gICAgY29uc3QgZCA9IHBhcnNlSW50KGR0LnN1YnN0cmluZyg2LCBkdC5sZW5ndGggLSAyKSwgMTApO1xyXG4gICAgY29uc3Qgbm93ID0gbW9tZW50Lm5vdygpO1xyXG4gICAgbGV0IHIgPSAnJztcclxuICAgIGxldCBkaWYgPSAoZCAtIG5vdykgLyAxMDAwO1xyXG4gICAgY29uc3QgZiA9IGRpZiA8PSAwO1xyXG4gICAgaWYgKGRpZiA8PSAwKVxyXG4gICAge1xyXG4gICAgICByICs9IGwoJ0ZpbmlzaGVkJykgKyAnIC0gJztcclxuICAgICAgZGlmID0gZGlmICogLTE7XHJcbiAgICB9XHJcbiAgICBjb25zdCB5ZWFyID0gTWF0aC5mbG9vcihkaWYgLyAzMTUzNjAwMCk7XHJcbiAgICBjb25zdCBtb250aCA9IE1hdGguZmxvb3IoKGRpZiAlIDMxNTM2MDAwKSAvIDI2MjgwMDApO1xyXG4gICAgY29uc3QgZGF5ID0gTWF0aC5mbG9vcigoKGRpZiAlIDMxNTM2MDAwKSAlIDI2MjgwMDApIC8gODY0MDApO1xyXG4gICAgY29uc3QgaG91ciA9IE1hdGguZmxvb3IoKCgoZGlmICUgMzE1MzYwMDApICUgMjYyODAwMCkgJSA4NjQwMCkgLyAzNjAwKTtcclxuICAgIGNvbnN0IG1pbnV0ZSA9IE1hdGguZmxvb3IoKCgoKGRpZiAlIDMxNTM2MDAwKSAlIDI2MjgwMDApICUgODY0MDApICUgMzYwMCkgLyA2MCk7XHJcbiAgICBpZiAoeWVhciA+IDApe1xyXG4gICAgICByICs9IGwoJ1llYXJQJywgeWVhci50b1N0cmluZygpKTtcclxuICAgICAgYy0tO1xyXG4gICAgfVxyXG4gICAgaWYgKG1vbnRoID4gMCAmJiBjID4gMCl7XHJcbiAgICAgIHIgKz0geWVhciA+IDAgPyBsKCdBbmQnKSA6ICcnO1xyXG4gICAgICByICs9IGwoJ01vbnRoUCcsIG1vbnRoLnRvU3RyaW5nKCkpO1xyXG4gICAgICBjLS07XHJcbiAgICB9XHJcbiAgICBpZiAoZGF5ID4gMCAmJiBjID4gMCl7XHJcbiAgICAgIHIgKz0geWVhciA+IDAgfHwgbW9udGggPiAwID8gbCgnQW5kJykgOiAnJztcclxuICAgICAgciArPSBsKCdEYXlQJywgZGF5LnRvU3RyaW5nKCkpO1xyXG4gICAgICBjLS07XHJcbiAgICB9XHJcbiAgICBpZiAoaG91ciA+IDAgJiYgYyA+IDApe1xyXG4gICAgICByICs9IHllYXIgPiAwIHx8IG1vbnRoID4gMCB8fCBkYXkgPiAwID8gbCgnQW5kJykgOiAnJztcclxuICAgICAgciArPSBsKCdIb3VyUCcsIGhvdXIudG9TdHJpbmcoKSk7XHJcbiAgICAgIGMtLTtcclxuICAgIH1cclxuICAgIGlmIChtaW51dGUgPiAwICYmIGMgPiAwKXtcclxuICAgICAgciArPSB5ZWFyID4gMCB8fCBtb250aCA+IDAgfHwgZGF5ID4gMCB8fCBob3VyID4gMCA/IGwoJ0FuZCcpIDogJyc7XHJcbiAgICAgIHIgKz0gbCgnTWludXRlUCcsIG1pbnV0ZS50b1N0cmluZygpKTtcclxuICAgICAgYy0tO1xyXG4gICAgfVxyXG4gICAgciArPSAociAhPT0gJycgPyAnJyA6IGwoJ0xlc3NUaGFuTWludXRlJykpICsgJyAnICsgKGYgPyBsKCdBZ28nKSA6IGwoJ0xhdGVyJykpO1xyXG4gICAgcmV0dXJuIHI7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXREYXRlKGR0OiBzdHJpbmcsIGZvcm1hdDogc3RyaW5nID0gJ2pZWVlZL2pNTS9qREQnLCBsb2NhbGU6IHN0cmluZyA9ICdmYScpOiBzdHJpbmd7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoZHQgPT09IG51bGwpe1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG4gICAgICBsZXQgbTtcclxuICAgICAgaWYgKHR5cGVvZiBkdCA9PT0gJ3N0cmluZycgJiYgZHQubGVuZ3RoID09PSAxMCkge1xyXG4gICAgICAgIG0gPSBtb21lbnQoZHQsICdZWVlZL01NL0REJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbSA9IG1vbWVudChwYXJzZUludChkdC5zdWJzdHJpbmcoNiwgZHQubGVuZ3RoIC0gMiksIDEwKSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG0ubG9jYWxlKGxvY2FsZSkuZm9ybWF0KGZvcm1hdCArICd6Jyk7XHJcbiAgICB9Y2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIGR0O1xyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgZ2V0VGltZShkdDogYW55KTogc3RyaW5ne1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGR0ID09PSBudWxsKXtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbSA9IGR0LlRvdGFsU2Vjb25kcyA+PSAwID8gMSA6IC0xO1xyXG4gICAgICBjb25zdCBob3VycyA9ICgoZHQuRGF5cyAqIG0pICogMjQpICsgKGR0LkhvdXJzICogbSk7XHJcbiAgICAgIGNvbnN0IG1pbnV0ZSA9IGR0Lk1pbnV0ZXMgKiBtO1xyXG4gICAgICByZXR1cm4gYCR7KGhvdXJzID4gOSA/IGhvdXJzIDogYDAke2hvdXJzfWApfTokeyhtaW51dGUgPiA5ID8gbWludXRlIDogYDAke21pbnV0ZX1gKX1gO1xyXG4gICAgfWNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBkdDtcclxuICAgIH1cclxuICB9XHJcbiAgc3RhdGljIGdldERhdGVUaW1lKGR0OiBzdHJpbmcsIGZvcm1hdDogc3RyaW5nID0gJ2pZWVlZL2pNTS9qREQgSEg6bW0nKTogc3RyaW5ne1xyXG4gICAgaWYgKGR0ID09PSBudWxsKXtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZCA9IHBhcnNlSW50KGR0LnN1YnN0cmluZyg2LCBkdC5sZW5ndGggLSAyKSwgMTApO1xyXG4gICAgcmV0dXJuIG1vbWVudChkKS5sb2NhbGUoJ2ZhJykuZm9ybWF0KGZvcm1hdCk7XHJcbiAgfVxyXG4gIHN0YXRpYyB0b1ByaWNlKGw6IGFueSwgY3Y6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gIWlzTmFOKHBhcnNlRmxvYXQoY3YpKSA/ICc8c3BhbiBjbGFzcz1cImx0ciBkLWliIG0tbC01LXBcIj4nICsgcGFyc2VGbG9hdChjdikudG9Mb2NhbGVTdHJpbmcoKSArICc8L3NwYW4+JyArIGwoJ1JpYWwnKSA6IGwoY3YpO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0RmlsZVNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzdWZmaXggPSBbICdCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJ107XHJcbiAgICBsZXQgZGJsU0J5dGUgPSBieXRlcztcclxuICAgIGxldCBpID0gMDtcclxuICAgIGZvciAoOyBpIDwgc3VmZml4Lmxlbmd0aCAmJiBieXRlcyA+PSAxMDI0OyBpKyssIGJ5dGVzIC89IDEwMjQpXHJcbiAgICB7XHJcbiAgICAgIGRibFNCeXRlID0gYnl0ZXMgLyAxMDI0LjA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7ZGJsU0J5dGUudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywge1xyXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAsXHJcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMSxcclxuICAgIH0pfSAke3N1ZmZpeFtpXX1gO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0UERhdGUobCwgcyk6IHN0cmluZ3tcclxuICAgIHJldHVybiBzLnJlcGxhY2UoL0hvdXIvZywgbCgnSG91cicpKVxyXG4gICAgICAucmVwbGFjZSgvTGVzc1RoYW5NaW51dGUvZywgbCgnTGVzc1RoYW5NaW51dGUnKSlcclxuICAgICAgLnJlcGxhY2UoL01pbnV0ZS9nLCBsKCdNaW51dGUnKSlcclxuICAgICAgLnJlcGxhY2UoL0FuZC9nLCBsKCdBbmQnKSlcclxuICAgICAgLnJlcGxhY2UoL0FGZXcvZywgbCgnQUZldycpKVxyXG4gICAgICAucmVwbGFjZSgvRmluaXNoZWQvZywgbCgnRmluaXNoZWQnKSlcclxuICAgICAgLnJlcGxhY2UoL0RheS9nLCBsKCdEYXknKSlcclxuICAgICAgLnJlcGxhY2UoL0xhdGVyL2csIGwoJ0xhdGVyJykpXHJcbiAgICAgIC5yZXBsYWNlKC9BZ28vZywgbCgnQWdvJykpO1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBHZXRSZW1haW5EYXRlKGwsIHRzKTogc3RyaW5nIHtcclxuICAgIGlmICh0cy5UaWtzIDw9IDApe1xyXG4gICAgICByZXR1cm4gbCgnRmluaXNoZWQnKTtcclxuICAgIH1cclxuICAgIGxldCBjID0gMDtcclxuICAgIGxldCByZXN1bHQgPSAnJztcclxuICAgIGlmICh0cy5ZZWFycyA+IDApe1xyXG4gICAgICByZXN1bHQgKz0gbCgnWWVhclAnLCB0cy5ZZWFycyk7XHJcbiAgICAgIGMrKztcclxuICAgIH1cclxuICAgIGlmICh0cy5Nb250aHMgPiAwKXtcclxuICAgICAgcmVzdWx0ICs9IGMgPiAwID8gbCgnQW5kJykgOiAnJztcclxuICAgICAgcmVzdWx0ICs9IGwoJ01vbnRoUCcsIHRzLk1vbnRocyk7XHJcbiAgICAgIGMrKztcclxuICAgIH1cclxuICAgIGlmIChjIDwgMiAmJiB0cy5EYXlzID4gMCl7XHJcbiAgICAgIHJlc3VsdCArPSBjID4gMCA/IGwoJ0FuZCcpIDogJyc7XHJcbiAgICAgIHJlc3VsdCArPSBsKCdEYXlQJywgdHMuRGF5cyk7XHJcbiAgICAgIGMrKztcclxuICAgIH1cclxuICAgIGlmIChjIDwgMiAmJiB0cy5Ib3VycyA+IDApe1xyXG4gICAgICByZXN1bHQgKz0gYyA+IDAgPyBsKCdBbmQnKSA6ICcnO1xyXG4gICAgICByZXN1bHQgKz0gbCgnSG91clAnLCB0cy5Ib3Vycyk7XHJcbiAgICAgIGMrKztcclxuICAgIH1cclxuICAgIGlmIChjIDwgMiAmJiB0cy5NaW51dGVzID4gMCl7XHJcbiAgICAgIHJlc3VsdCArPSBjID4gMCA/IGwoJ0FuZCcpIDogJyc7XHJcbiAgICAgIHJlc3VsdCArPSBsKCdNaW51dGVQJywgdHMuTWludXRlcyk7XHJcbiAgICB9XHJcbiAgICByZXN1bHQgKz0gcmVzdWx0ICE9PSAnJyA/ICcgJyArIGwoJ0xhdGVyJykgOiBsKCdMZXNzVGhhbk1pbnV0ZScpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjbG9uZTxUPih2OiBUKTogVCB7XHJcbiAgICBpZiAodiA9PSBudWxsKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29weSA9IG5ldyAodi5jb25zdHJ1Y3RvciBhcyB7IG5ldygpIH0pKCk7XHJcbiAgICBPYmplY3QuYXNzaWduKGNvcHksIHYpO1xyXG4gICAgcmV0dXJuIGNvcHk7XHJcbiAgfVxyXG4gIHN0YXRpYyBjbG9uZUpzb24oaW5wKTogYW55IHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGlucCkpO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0TmFtZShuKTogc3RyaW5ne1xyXG4gICAgcmV0dXJuIG4ucmVwbGFjZSgv2qkvZywgJ9mDJykucmVwbGFjZSgv24wvZywgJ9mKJykucmVwbGFjZSgv2KIvZywgJ9iiJyk7XHJcbiAgfVxyXG4gIHN0YXRpYyBhZGROb3RpZmljYXRpb24obSwgZSA9IHRydWUpOiB2b2lke1xyXG4gICAgY29uc3QgaWQgPSBIZWxwZXJDbGFzcy5yYW5kb20oMjApO1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXHJcbiAgICAkKCcjTm90aWZpY2F0aW9ucycpLmFwcGVuZCgnPGRpdiBpZD1cIicgKyBpZCArICdcIiBjbGFzcz1cImNvblwiPjxkaXYgY2xhc3M9XCJpdGVtICcgKyAoZSA/ICdlcnJvcicgOiAnc3VjY2VzcycpICsgJ1wiPjxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPjxkaXY+JyArIG0gKyAnPC9kaXY+PC9kaXY+PC9kaXY+Jyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZCA9ICQoJyMnICsgaWQpO1xyXG4gICAgICBkLmZhZGVPdXQoMzAwLCAoKSA9PiB7XHJcbiAgICAgICAgZC5yZW1vdmUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9LCAyMDAwMCk7XHJcbiAgfVxyXG4gIHN0YXRpYyBjaGVja0NhcnREaWdpdChjb2RlKTogYm9vbGVhbntcclxuICAgIGNvbnN0IGwgPSBjb2RlLmxlbmd0aDtcclxuICAgIGlmIChsIDwgMTYgfHwgcGFyc2VJbnQoY29kZS5zdWJzdHIoMSwgMTApLCAxMCkgPT09IDAgfHxcclxuICAgICAgcGFyc2VJbnQoY29kZS5zdWJzdHIoMTAsIDYpLCAxMCkgPT09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbGV0IHMgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKXtcclxuICAgICAgY29uc3QgayA9IGkgJSAyID09PSAwID8gMiA6IDE7XHJcbiAgICAgIGNvbnN0IGQgPSBwYXJzZUludChjb2RlLnN1YnN0cihpLCAxKSwgMTApICogaztcclxuICAgICAgcyArPSBkID4gOSA/IGQgLSA5IDogZDtcclxuICAgIH1cclxuICAgIHJldHVybiBzICUgMTAgPT09IDA7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RGF0YShrZXksIHN0YXRlLCBwYXJlbnQpOiBhbnkge1xyXG4gICAgY29uc3QgZGF0YSA9IFtdO1xyXG4gICAgaWYgKHBhcmVudCAmJiBwYXJlbnQuc25hcHNob3QuZGF0YSAmJiBwYXJlbnQuc25hcHNob3QuZGF0YVtrZXldKSB7XHJcbiAgICAgIGRhdGEucHVzaChwYXJlbnQuc25hcHNob3QuZGF0YVtrZXldLnJlcGxhY2UoJ3t9JywgcGFyZW50LnNuYXBzaG90LnBhcmFtTWFwLnBhcmFtcy5pZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0ZSAmJiBwYXJlbnQpIHtcclxuICAgICAgZGF0YS5wdXNoKC4uLnRoaXMuZ2V0RGF0YShrZXksIHN0YXRlLCBzdGF0ZS5maXJzdENoaWxkKHBhcmVudCkpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldENvbG9yQnlCZ0NvbG9yKGJnQ29sb3IpOiBzdHJpbmd7XHJcbiAgICBpZiAoIWJnQ29sb3IpIHsgcmV0dXJuICcnOyB9XHJcbiAgICByZXR1cm4gKHBhcnNlSW50KGJnQ29sb3IucmVwbGFjZSgnIycsICcnKSwgMTYpID4gMHhmZmZmZmYgLyAyKSA/ICcjMDAwJyA6ICcjZmZmJztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBxdWVyeVN0cmluZ1RvSlNPTihxcyA9IG51bGwpOiBhbnkge1xyXG4gICAgcXMgPSBxcyB8fCBsb2NhdGlvbi5zZWFyY2guc2xpY2UoMSk7XHJcbiAgICBpZiAocXMgPT09ICcnKXtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFpcnMgPSBxcy5zcGxpdCgnJicpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0ge307XHJcbiAgICBwYWlycy5mb3JFYWNoKChwKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhaXIgPSBwLnNwbGl0KCc9Jyk7XHJcbiAgICAgIGNvbnN0IGtleSA9IHBhaXJbMF0ucmVwbGFjZSgnJTVCJTVEJywgJycpO1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChwYWlyWzFdIHx8ICcnKTtcclxuXHJcbiAgICAgIGlmICggcmVzdWx0W2tleV0gKSB7XHJcbiAgICAgICAgaWYgKCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoIHJlc3VsdFtrZXldICkgPT09ICdbb2JqZWN0IEFycmF5XScgKSB7XHJcbiAgICAgICAgICByZXN1bHRba2V5XS5wdXNoKCB2YWx1ZSApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXN1bHRba2V5XSA9IFsgcmVzdWx0W2tleV0sIHZhbHVlIF07XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzdWx0KSk7XHJcbiAgfVxyXG4gIHN0YXRpYyBjb3B5VG9DbGlwYm9hcmQodGV4dCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgaW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHRleHQpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dCk7XHJcbiAgICBpbnB1dC5zZWxlY3QoKTtcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlucHV0KTtcclxuICB9XHJcbiAgc3RhdGljIHNldEJhcmNvZGVSZWFkZXIoaW5wOiBJbnB1dENsYXNzKTogdm9pZCB7XHJcbiAgICBpbnAuYnV0dG9uID0gJ2JsdWUnO1xyXG4gICAgY29uc3QgZm4gPSBpbnAuaWQgKyAnU2V0QmFyY29kZVNjYW5WYWx1ZSc7XHJcbiAgICBpbnAub25DbGlja0J1dHRvbiA9ICgpID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgd2luZG93LkpTSW50ZXJmYWNlLnN0YXJ0QmFyY29kZVNjYW4oZm4pO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHdpbmRvd1tmbl0gPSAocykgPT4ge1xyXG4gICAgICAgIGlmIChpbnAudHlwZSA9PT0gSW5wdXRUeXBlLlRleHQpIHtcclxuICAgICAgICAgIGlucC5zZXRWYWx1ZShzLCBmYWxzZSk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgJCgnIycgKyBpbnAuaWQgKyAnVGV4dElucHV0IC5jb250cm9sJykuY2xpY2soKTtcclxuICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbnAub25CYXJjb2RlUmVhZGVyQ2hhbmdlICE9PSBudWxsKXtcclxuICAgICAgICAgIGlucC5vbkJhcmNvZGVSZWFkZXJDaGFuZ2Uocyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgZ2V0UmFuZG9tSW50KG1pbiwgbWF4KTogbnVtYmVye1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pICkgKyBtaW47XHJcbiAgfVxyXG4gIHN0YXRpYyBmaXhDaGFycyhzdHIpOiBzdHJpbmd7XHJcbiAgICBpZiAoc3RyID09IG51bGwpe1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGFyYWJpY0xldHRlciA9IFsgJ9mKJywgJ9mDJywgJ9ipJyBdO1xyXG4gICAgY29uc3QgcGVyc2lhbkxldHRlciA9IFsgJ9uMJywgJ9qpJywgJ9mHJyBdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspXHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChhcmFiaWNMZXR0ZXJbaV0sICdnJyk7XHJcbiAgICAgIHN0ciA9IHN0ci50b1N0cmluZygpLnJlcGxhY2UocmUsIHBlcnNpYW5MZXR0ZXJbaV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0ci50b1N0cmluZygpXHJcbiAgICAgIC5yZXBsYWNlKC9b27At27ldL2csIGQgPT4gJ9uw27Hbstuz27Tbtdu227fbuNu5Jy5pbmRleE9mKGQpKVxyXG4gICAgICAucmVwbGFjZSgvW9mgLdmpXS9nLCBkID0+ICfZoNmh2aLZo9mk2aXZptmn2ajZqScuaW5kZXhPZihkKSk7XHJcbiAgfVxyXG4gIHN0YXRpYyBUb1JlYWRhYmxlUGxhcXVlKHApOiBzdHJpbmd7XHJcbiAgICBjb25zdCB0biA9IHAuc3BsaXQoJ18nKTtcclxuICAgIGlmICh0bi5sZW5ndGggPT09IDQpe1xyXG4gICAgICB0blsxXSArPSAnJmxybTsnO1xyXG4gICAgICB0blsyXSArPSAnIHwnO1xyXG4gICAgICByZXR1cm4gdG4uam9pbignICcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRuLmpvaW4oJyAnKTtcclxuICB9XHJcbiAgc3RhdGljIGdldEZpbGVJY29uKGYpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZmlsZUljb25zID0ge1xyXG4gICAgICBqcGVnOiAnZmFkIGZhLWZpbGUtaW1hZ2UnLCBqcGc6ICdmYWQgZmEtZmlsZS1pbWFnZScsIHBuZzogJ2ZhZCBmYS1maWxlLWltYWdlJyxcclxuICAgICAgZG9jOiAnZmFkIGZhLWZpbGUtd29yZCcsIGRvY3g6ICdmYWQgZmEtZmlsZS13b3JkJyxcclxuICAgICAgeGxzOiAnZmFkIGZhLWZpbGUtZXhjZWwnLCB4bHN4OiAnZmFkIGZhLWZpbGUtZXhjZWwnLCBjc3Y6ICdmYWQgZmEtZmlsZS1jc3YnLFxyXG4gICAgICBwcHQ6ICdmYWQgZmEtZmlsZS1wb3dlcnBvaW50JywgcHB0eDogJ2ZhZCBmYS1maWxlLXBvd2VycG9pbnQnLFxyXG4gICAgICB0eHQ6ICdmYWQgZmEtZmlsZS1saW5lcycsIHBkZjogJ2ZhZCBmYS1maWxlLXBkZicsIGZpbGU6ICdmYWQgZmEtZmlsZScsXHJcbiAgICAgIHppcDogJ2ZhZCBmYS1maWxlLXppcHBlcicsIHJhcjogJ2ZhZCBmYS1maWxlLXppcHBlcidcclxuICAgIH07XHJcbiAgICBjb25zdCBrID0gZi5zcGxpdCgnLicpLmF0KC0xKTtcclxuICAgIHJldHVybiBmaWxlSWNvbnNba10gPyBmaWxlSWNvbnNba10gOiBmaWxlSWNvbnMuZmlsZTtcclxuICB9XHJcbiAgc3RhdGljIGdyb3VwQnkoZGF0YSwgaXRlcmF0ZWUpOiBhbnl7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXRUYWJsZVBlcm1pc3Npb25zKGwgPSB0cnVlLCBpID0gdHJ1ZSwgdSA9IHRydWUsIGQgPSB0cnVlKTogUGVybWlzc2lvbkNsYXNzIHtcclxuICAgIGNvbnN0IHAgPSBuZXcgUGVybWlzc2lvbkNsYXNzKCk7XHJcbiAgICBwLlR5cGUgPSBQZXJtaXNzaW9uVHlwZUVudW0uRm9ybTtcclxuICAgIGNvbnN0IGxBY2Nlc3MgPSBuZXcgUGVybWlzc2lvbkNsYXNzKCk7XHJcbiAgICBsQWNjZXNzLkFjdGlvbiA9ICdMaXN0JztcclxuICAgIGxBY2Nlc3MuVHlwZSA9IFBlcm1pc3Npb25UeXBlRW51bS5BY2Nlc3M7XHJcbiAgICBsQWNjZXNzLkFjY2Vzc1R5cGUgPSBQZXJtaXNzaW9uQWNjZXNzVHlwZUVudW0uTGlzdDtcclxuICAgIGxBY2Nlc3MuSW5wdXRBY3Rpb24gPSBQZXJtaXNzaW9uSW5wdXRBY3Rpb25FbnVtLk5vbmU7XHJcbiAgICBsQWNjZXNzLklucHV0VHlwZSA9IFBlcm1pc3Npb25JbnB1dFR5cGVFbnVtLkljb247XHJcbiAgICBjb25zdCBpQWNjZXNzID0gbmV3IFBlcm1pc3Npb25DbGFzcygpO1xyXG4gICAgaUFjY2Vzcy5BY3Rpb24gPSAnSW5zZXJ0JztcclxuICAgIGlBY2Nlc3MuVHlwZSA9IFBlcm1pc3Npb25UeXBlRW51bS5BY2Nlc3M7XHJcbiAgICBpQWNjZXNzLklucHV0QWN0aW9uID0gUGVybWlzc2lvbklucHV0QWN0aW9uRW51bS5Nb2RhbDtcclxuICAgIGlBY2Nlc3MuSW5wdXRUeXBlID0gUGVybWlzc2lvbklucHV0VHlwZUVudW0uQnV0dG9uO1xyXG4gICAgaUFjY2Vzcy5BY2Nlc3NUeXBlID0gUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLkluc2VydDtcclxuICAgIGNvbnN0IHVBY2Nlc3MgPSBuZXcgUGVybWlzc2lvbkNsYXNzKCk7XHJcbiAgICB1QWNjZXNzLkFjdGlvbiA9ICdVcGRhdGUnO1xyXG4gICAgdUFjY2Vzcy5UeXBlID0gUGVybWlzc2lvblR5cGVFbnVtLk9wdGlvbjtcclxuICAgIHVBY2Nlc3MuSW5wdXRBY3Rpb24gPSBQZXJtaXNzaW9uSW5wdXRBY3Rpb25FbnVtLk5vbmU7XHJcbiAgICB1QWNjZXNzLklucHV0VHlwZSA9IFBlcm1pc3Npb25JbnB1dFR5cGVFbnVtLkljb247XHJcbiAgICB1QWNjZXNzLkFjY2Vzc1R5cGUgPSBQZXJtaXNzaW9uQWNjZXNzVHlwZUVudW0uVXBkYXRlO1xyXG4gICAgdUFjY2Vzcy5JY29uID0gJ2ZhZCBmYS1wZW4nO1xyXG4gICAgdUFjY2Vzcy5OYW1lID0gJ1VwZGF0ZSc7XHJcbiAgICBjb25zdCBkQWNjZXNzID0gbmV3IFBlcm1pc3Npb25DbGFzcygpO1xyXG4gICAgZEFjY2Vzcy5BY3Rpb24gPSAnRGVsZXRlJztcclxuICAgIGRBY2Nlc3MuVHlwZSA9IFBlcm1pc3Npb25UeXBlRW51bS5PcHRpb247XHJcbiAgICBkQWNjZXNzLklucHV0QWN0aW9uID0gUGVybWlzc2lvbklucHV0QWN0aW9uRW51bS5Ob25lO1xyXG4gICAgZEFjY2Vzcy5JbnB1dFR5cGUgPSBQZXJtaXNzaW9uSW5wdXRUeXBlRW51bS5JY29uO1xyXG4gICAgZEFjY2Vzcy5BY2Nlc3NUeXBlID0gUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLkRlbGV0ZTtcclxuICAgIGRBY2Nlc3MuSWNvbiA9ICdmYWQgZmEtdHJhc2gnO1xyXG4gICAgZEFjY2Vzcy5OYW1lID0gJ0RlbGV0ZSc7XHJcbiAgICBwLkFjY2Vzc2VzID0gW107XHJcbiAgICBpZiAobCkge1xyXG4gICAgICBwLkFjY2Vzc2VzLnB1c2gobEFjY2Vzcyk7XHJcbiAgICB9XHJcbiAgICBpZiAoaSkge1xyXG4gICAgICBwLkFjY2Vzc2VzLnB1c2goaUFjY2Vzcyk7XHJcbiAgICB9XHJcbiAgICBpZiAodSkge1xyXG4gICAgICBwLkFjY2Vzc2VzLnB1c2godUFjY2Vzcyk7XHJcbiAgICB9XHJcbiAgICBpZiAoZCkge1xyXG4gICAgICBwLkFjY2Vzc2VzLnB1c2goZEFjY2Vzcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcDtcclxuICB9XHJcbiAgc3RhdGljIGpzb25Ub0Zvcm1EYXRhKGpzb24sIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCksIHBhcmVudEtleSA9ICcnKTogRm9ybURhdGEge1xyXG4gICAgaWYgKHR5cGVvZiBqc29uID09PSAnb2JqZWN0JyAmJiBqc29uICE9PSBudWxsKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGpzb24pLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBjb25zdCBmdWxsS2V5ID0gcGFyZW50S2V5ID8gYCR7cGFyZW50S2V5fVske2tleX1dYCA6IGtleTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGpzb25ba2V5XTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgICAvLyDYp9qv2LEg2YXZgtiv2KfYsSBudWxsINin2LPYqtiMINii2YYg2LHYpyDZhtin2K/bjNiv2Ycg2Kjar9uM2LFcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAvLyDYp9qv2LEg2KLYqNis2qnYqiDYp9iz2KrYjCDYqNmHINi12YjYsdiqINio2KfYstqv2LTYqtuMINmB2LHYp9iu2YjYp9mG24wg2qnZhlxyXG4gICAgICAgICAgdGhpcy5qc29uVG9Gb3JtRGF0YSh2YWx1ZSwgZm9ybURhdGEsIGZ1bGxLZXkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgIC8vINin2q/YsSDYotix2KfbjNmHINin2LPYqtiMINmH2LEg2LnYttmIINix2Kcg2KzYr9in2q/Yp9mG2Ycg2KfYttin2YHZhyDaqdmGXHJcbiAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBhcnJheUtleSA9IGAke2Z1bGxLZXl9WyR7aW5kZXh9XWA7XHJcbiAgICAgICAgICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgLy8g2Kfar9ixINmF2YLYr9in2LEgbnVsbCDYp9iz2KrYjCDYotmGINix2Kcg2YbYp9iv24zYr9mHINio2q/bjNixXHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgIHRoaXMuanNvblRvRm9ybURhdGEoaXRlbSwgZm9ybURhdGEsIGFycmF5S2V5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYXJyYXlLZXksIGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8g2YXZgtiv2KfYsSDYs9in2K/ZhyDYsdinINin2LbYp9mB2Ycg2qnZhlxyXG4gICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZ1bGxLZXksIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcm1EYXRhO1xyXG4gIH1cclxufVxyXG4iXX0=
627
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IkQ6L1BzVG9vbGtpdC9VSS9wcm9qZWN0cy9wcy10b29sa2l0LXVpL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jbGFzc2VzL2hlbHBlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCx3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbkIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELFdBQVc7QUFDWCxNQUFNLE9BQU8sV0FBVztJQUN0QixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQWU7UUFDN0IsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDckMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3RDO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxPQUFPLEVBQUU7WUFDM0MsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3JDO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDMUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlC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dGhvZCxcclxuICBQZXJtaXNzaW9uQWNjZXNzVHlwZUVudW0sXHJcbiAgUGVybWlzc2lvbklucHV0QWN0aW9uRW51bSxcclxuICBQZXJtaXNzaW9uSW5wdXRUeXBlRW51bSxcclxuICBQZXJtaXNzaW9uVHlwZUVudW1cclxufSBmcm9tICcuL2VudW0uY2xhc3MnO1xyXG5pbXBvcnQge0lucHV0Q2xhc3N9IGZyb20gJy4vZm9ybS5jbGFzcyc7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdqYWxhbGktbW9tZW50JztcclxuaW1wb3J0ICogYXMgJCBmcm9tICdqcXVlcnknO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7UGVybWlzc2lvbkNsYXNzfSBmcm9tICcuL3Blcm1pc3Npb24uY2xhc3MnO1xyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEhlbHBlckNsYXNzIHtcclxuICBzdGF0aWMgZ2V0TGFiZWwoaW5wOiBJbnB1dENsYXNzKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG4gPSBpbnAubGFiZWwgIT0gbnVsbCA/IGlucC5sYWJlbCA6IGlucC5uYW1lO1xyXG4gICAgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5SZXF1aXJlZCkge1xyXG4gICAgICByZXR1cm4gaW5wLmwoJ0Zvcm1FcnJvclJlcXVpcmVkJywgbik7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5JbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9ySW52YWxpZCcsIG4pO1xyXG4gICAgfSBlbHNlIGlmIChpbnAuZXJyb3IgPT09IElucHV0RXJyb3IuTGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9yTGVuZ3RoJywgW24sIGlucC5taW5MZW5ndGhdKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLk1pbkxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gaW5wLmwoJ0Zvcm1FcnJvck1pbkxlbmd0aCcsIFtuLCBpbnAubWluTGVuZ3RoXSk7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5NYXhMZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGlucC5sKCdGb3JtRXJyb3JNYXhMZW5ndGgnLCBbbiwgaW5wLm1heExlbmd0aF0pO1xyXG4gICAgfSBlbHNlIGlmIChpbnAuZXJyb3IgPT09IElucHV0RXJyb3IuTWluQW1vdW50KSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9yTWluQW1vdW50JywgW24sIGlucC5taW5MZW5ndGhdKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLk1heEFtb3VudCkge1xyXG4gICAgICByZXR1cm4gaW5wLmwoJ0Zvcm1FcnJvck1heEFtb3VudCcsIFtuLCBpbnAubWF4TGVuZ3RoXSk7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5FeHBpcmVkKSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9yRXhwaXJlZCcsIG4pO1xyXG4gICAgfSBlbHNlIGlmIChpbnAuZXJyb3IgPT09IElucHV0RXJyb3IuV3JvbmcpIHtcclxuICAgICAgcmV0dXJuIGlucC5sKCdGb3JtRXJyb3JXcm9uZycsIG4pO1xyXG4gICAgfSBlbHNlIGlmIChpbnAuZXJyb3IgPT09IElucHV0RXJyb3IuRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIGlucC5sKCdGb3JtRXJyb3InLCBuKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wLmVycm9yID09PSBJbnB1dEVycm9yLk5vdE1hdGNoKSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9yTm90TWF0Y2gnLCBpbnAubWF0Y2gubmFtZSk7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5FeGlzdCkge1xyXG4gICAgICByZXR1cm4gaW5wLmwoJ0Zvcm1FcnJvckV4aXN0Jywgbik7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5Ob3RFeGlzdCkge1xyXG4gICAgICByZXR1cm4gaW5wLmwoJ0Zvcm1FcnJvck5vdEV4aXN0Jywgbik7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5Ob3RBbGxvd2VkKSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9yTm90QWxsb3dlZCcsIFtuLCBpbnAuYWxsb3dlZC5qb2luKCcsICcpXSk7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5NYXhDb250ZW50KSB7XHJcbiAgICAgIHJldHVybiBpbnAubCgnRm9ybUVycm9yTWF4Q29udGVudCcsIFtuLCBpbnAubWF4TGVuZ3RoXSk7XHJcbiAgICB9IGVsc2UgaWYgKGlucC5lcnJvciA9PT0gSW5wdXRFcnJvci5VcGxvYWQpIHtcclxuICAgICAgcmV0dXJuIGlucC5sKCdGb3JtRXJyb3JVcGxvYWQnLCBuKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGRlc2MgPSBpbnAuZGVzY3JpcHRpb24gIT09IG51bGwgPyAnICgnICsgaW5wLmwoaW5wLmRlc2NyaXB0aW9uKSArICcpJyA6ICcnO1xyXG4gICAgcmV0dXJuIGlucC5sKG4pICsgZGVzYztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBuYXRpb25hbENvZGVOdW1WYWxpZChjKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gSGVscGVyQ2xhc3MubmF0aW9uYWxDb2RlVmFsaWQoYykgfHwgSGVscGVyQ2xhc3MubmF0aW9uYWxOdW1WYWxpZChjKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBlY29ub21pY051bVZhbGlkKGMpOiBib29sZWFuIHtcclxuICAgIGlmICghYyl7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBjLmxlbmd0aCA9PT0gMTEgfHwgKGMubGVuZ3RoID09PSAxNCAmJiBIZWxwZXJDbGFzcy5uYXRpb25hbENvZGVWYWxpZChjLnN1YnN0cigwLCAxMCkpKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBuYXRpb25hbENvZGVWYWxpZChjKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIVJlZ0V4cCgvXlxcZHsxMH0kLykudGVzdChjKSB8fCBSZWdFeHAoL14oLilcXDErJC8pLnRlc3QoYykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY2hlY2sgPSBwYXJzZUludChjWzldLCAxMCk7XHJcbiAgICBsZXQgc3VtID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgOTsgKytpKSB7XHJcbiAgICAgIHN1bSArPSBwYXJzZUludChjW2ldLCAxMCkgKiAoMTAgLSBpKTtcclxuICAgIH1cclxuICAgIHN1bSAlPSAxMTtcclxuICAgIHJldHVybiAoc3VtIDwgMiAmJiBjaGVjayA9PT0gc3VtKSB8fCAoc3VtID49IDIgJiYgY2hlY2sgKyBzdW0gPT09IDExKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBuYXRpb25hbE51bVZhbGlkKGNvZGUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGwgPSBjb2RlLmxlbmd0aDtcclxuXHJcbiAgICBpZiAobCA8IDExIHx8IHBhcnNlSW50KGNvZGUsIDEwKSA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBhcnNlSW50KGNvZGUuc3Vic3RyKDMsIDYpLCAxMCkgPT09IDApe1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjID0gcGFyc2VJbnQoY29kZS5zdWJzdHIoMTAsIDEpLCAxMCk7XHJcbiAgICBjb25zdCBkID0gcGFyc2VJbnQoY29kZS5zdWJzdHIoOSwgMSksIDEwKSArIDI7XHJcbiAgICBjb25zdCB6ID0gWzI5LCAyNywgMjMsIDE5LCAxN107XHJcbiAgICBsZXQgcyA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspe1xyXG4gICAgICBzICs9IChkICsgcGFyc2VJbnQoY29kZS5zdWJzdHIoaSwgMSksIDEwKSkgKiB6W2kgJSA1XTtcclxuICAgIH1cclxuICAgIHMgPSBzICUgMTE7XHJcbiAgICBpZiAocyA9PT0gMTApe1xyXG4gICAgICBzID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiBjID09PSBzO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBsYXF1ZVZhbGlkKHAsIHQ6IElucHV0VHlwZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHQgPT09IElucHV0VHlwZS5QbGFxdWUgJiYgIVJlZ0V4cCgvXlswLTldezJ9X1vYp9io2b7Yqtir2Kzahtit2K7Yr9iw2LHYstqY2LPYtNi12LbYt9i42LnYutmB2YLaqdqv2YTZhdmG2YjZh9uMXV9bMC05XXszfV9bMC05XXsyfSQvKS50ZXN0KHApKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAodCA9PT0gSW5wdXRUeXBlLlBsYXF1ZU0gJiYgIVJlZ0V4cCgvXlswLTldezN9X1swLTldezV9JC8pLnRlc3QocCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNvNzA2NE1vZDk3XzEwKGliYW4pOiBudW1iZXJ7XHJcbiAgICBsZXQgcmVtYWluZGVyID0gaWJhbjtcclxuICAgIHdoaWxlIChyZW1haW5kZXIubGVuZ3RoID4gMil7XHJcbiAgICAgIGNvbnN0IGJsb2NrID0gcmVtYWluZGVyLnNsaWNlKDAsIDkpO1xyXG4gICAgICByZW1haW5kZXIgPSBwYXJzZUludChibG9jaywgMTApICUgOTcgKyByZW1haW5kZXIuc2xpY2UoYmxvY2subGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFyc2VJbnQocmVtYWluZGVyLCAxMCkgJSA5NztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBzaGViYVZhbGlkKHN0cik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC9JUlswLTldezI0fS87XHJcbiAgICBpZiAoIXN0ci5zdGFydHNXaXRoKCdJUicpKXtcclxuICAgICAgc3RyID0gJ0lSJyArIHN0cjtcclxuICAgIH1cclxuICAgIGlmIChzdHIubGVuZ3RoICE9PSAyNikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFwYXR0ZXJuLnRlc3Qoc3RyKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG5ld1N0ciA9IHN0ci5zdWJzdHIoNCk7XHJcbiAgICBjb25zdCBkMSA9IHN0ci5jaGFyQ29kZUF0KDApIC0gNjUgKyAxMDtcclxuICAgIGNvbnN0IGQyID0gc3RyLmNoYXJDb2RlQXQoMSkgLSA2NSArIDEwO1xyXG4gICAgbmV3U3RyICs9IGQxLnRvU3RyaW5nKCkgKyBkMi50b1N0cmluZygpICsgc3RyLnN1YnN0cigyLCAyKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5pc283MDY0TW9kOTdfMTAobmV3U3RyKSA9PT0gMTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBwb3N0YWxDb2RlVmFsaWQoYyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFJlZ0V4cCgvXlxcYig/IShcXGQpXFwxezN9KVsxMy05XXs1fVswLTldezV9XFxiJC8pLnRlc3QoYyk7XHJcbiAgfVxyXG4gIHN0YXRpYyByYW5kb20obGVuZ3RoLCB1cHBlciA9IHRydWUsIGxvd2VyID0gdHJ1ZSwgbnVtID0gdHJ1ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0ID0gJyc7XHJcbiAgICBjb25zdCBjaGFyYWN0ZXJzID0gYCR7dXBwZXIgPyAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonIDogJyd9JHtsb3dlciA/ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgOiAnJ30ke251bSA/ICcxMjM0NTY3ODknIDogJyd9YDtcclxuICAgIGNvbnN0IGNoYXJhY3RlcnNMZW5ndGggPSBjaGFyYWN0ZXJzLmxlbmd0aDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysgKSB7XHJcbiAgICAgIHJlc3VsdCArPSBjaGFyYWN0ZXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzTGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBzdGF0aWMgc2V0Q29va2llKG5hbWUsIHZhbHVlLCBkYXlzID0gMzY1KTogdm9pZCB7XHJcbiAgICBsZXQgZXhwaXJlcyA9ICcnO1xyXG4gICAgaWYgKGRheXMpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIChkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCkpO1xyXG4gICAgICBleHBpcmVzID0gJzsgZXhwaXJlcz0nICsgZGF0ZS50b1VUQ1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICc9JyArICh2YWx1ZSB8fCAnJykgICsgZXhwaXJlcyArICc7IHBhdGg9Lyc7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXRDb29raWUobmFtZSwgZGVmID0gbnVsbCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBuYW1lRVEgPSBuYW1lICsgJz0nO1xyXG4gICAgY29uc3QgY2EgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTtcclxuICAgIGZvciAobGV0IGMgb2YgY2EpIHtcclxuICAgICAgd2hpbGUgKGMuY2hhckF0KDApID09PSAnICcpe1xyXG4gICAgICAgIGMgPSBjLnN1YnN0cmluZygxLCBjLmxlbmd0aCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGMuaW5kZXhPZihuYW1lRVEpID09PSAwKXtcclxuICAgICAgICByZXR1cm4gYy5zdWJzdHJpbmcobmFtZUVRLmxlbmd0aCwgYy5sZW5ndGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVmO1xyXG4gIH1cclxuICBzdGF0aWMgZXJhc2VDb29raWUobmFtZSk6IHZvaWQge1xyXG4gICAgZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JylcclxuICAgICAgLmZvckVhY2goKGMpID0+IHsgZG9jdW1lbnQuY29va2llID0gYy5yZXBsYWNlKC9eICsvLCAnJykucmVwbGFjZSgvPS4qLywgJz07ZXhwaXJlcz0nICsgbmV3IERhdGUoKS50b1VUQ1N0cmluZygpICsgJztwYXRoPS8nKTsgfSk7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXREYXRlRGlmKGwsIGR0OiBzdHJpbmcsIGMgPSAyKTogc3RyaW5ne1xyXG4gICAgY29uc3QgZCA9IHBhcnNlSW50KGR0LnN1YnN0cmluZyg2LCBkdC5sZW5ndGggLSAyKSwgMTApO1xyXG4gICAgY29uc3Qgbm93ID0gbW9tZW50Lm5vdygpO1xyXG4gICAgY29uc3QgZGlmID0gKG5vdyAtIGQpIC8gMTAwMDtcclxuICAgIGNvbnN0IGggPSBNYXRoLmZsb29yKGRpZiAvIDM2MDApO1xyXG4gICAgY29uc3QgbSA9IE1hdGguZmxvb3IoZGlmICUgMzYwMCAvIDYwKTtcclxuICAgIGlmIChoIDwgMjQpXHJcbiAgICB7XHJcbiAgICAgIGxldCByID0gJyc7XHJcbiAgICAgIGlmIChoID4gMCl7XHJcbiAgICAgICAgciArPSBsKCdIb3VyUCcsIGgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgYy0tO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChtID4gMCAmJiBjID4gMCl7XHJcbiAgICAgICAgaWYgKHIgIT09ICcnKXtcclxuICAgICAgICAgIHIgKz0gbCgnQW5kJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHIgKz0gbCgnTWludXRlUCcsIG0udG9TdHJpbmcoKSk7XHJcbiAgICAgIH1cclxuICAgICAgciArPSByICE9PSAnJyA/ICcnIDogbCgnQUZldycpO1xyXG4gICAgICByICs9ICcgJyArIGwoJ0FnbycpO1xyXG4gICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuICAgIHJldHVybiAnPHNwYW4gY2xhc3M9XCJsdHIgZC1pYlwiPicgKyBtb21lbnQoZCkubG9jYWxlKCdmYScpLmZvcm1hdCgnallZWVkvak1NL2pERCBISDptbScpICsgJzwvc3Bhbj4nO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0Um93RW51bShsLCBlLCBkdCk6IHN0cmluZ3tcclxuICAgIGNvbnN0IHYgPSBlLmZpbmQoeCA9PiB4LlZhbHVlID09PSBkdCk7XHJcbiAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwic3RhdHVzICR7di5DbGFzc31cIj5gICsgbCh2Lk5hbWUpICsgJzwvc3Bhbj4nO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0Tm93KCk6IGFueXtcclxuICAgIHJldHVybiBtb21lbnQubm93KCk7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXRJbnB1dERhdGUoYW1vdW50OiBudW1iZXIgPSAwLCB1bml0OiBzdHJpbmcgPSAnbW9udGgnKTogYW55e1xyXG4gICAgcmV0dXJuIEhlbHBlckNsYXNzLmdldE1vbWVudCgpLmFkZChhbW91bnQsIHVuaXQpLmxvY2FsZSgnZW4nKS5mb3JtYXQoJ1lZWVkvTU0vREQnKTtcclxuICB9XHJcbiAgc3RhdGljIGdldE1vbWVudChpID0gbnVsbCwgZiA9IG51bGwpOiBhbnl7XHJcbiAgICBpZiAoaSA9PSBudWxsKXtcclxuICAgICAgcmV0dXJuIG1vbWVudCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1vbWVudChpLCBmKTtcclxuICB9XHJcbiAgc3RhdGljIGdldERhdGVSZW1haW4obCwgZHQ6IHN0cmluZywgYyA9IDIpOiBzdHJpbmd7XHJcbiAgICBjb25zdCBkID0gcGFyc2VJbnQoZHQuc3Vic3RyaW5nKDYsIGR0Lmxlbmd0aCAtIDIpLCAxMCk7XHJcbiAgICBjb25zdCBub3cgPSBtb21lbnQubm93KCk7XHJcbiAgICBjb25zdCBkaWYgPSAoZCAtIG5vdykgLyAxMDAwO1xyXG4gICAgaWYgKGRpZiA8PSAwKVxyXG4gICAge1xyXG4gICAgICByZXR1cm4gbCgnRW5kZWQnKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGggPSBNYXRoLmZsb29yKGRpZiAvIDM2MDApO1xyXG4gICAgY29uc3QgbSA9IE1hdGguZmxvb3IoZGlmICUgMzYwMCAvIDYwKTtcclxuICAgIGlmIChoIDwgMjQpXHJcbiAgICB7XHJcbiAgICAgIGxldCByID0gJyc7XHJcbiAgICAgIGlmIChoID4gMCl7XHJcbiAgICAgICAgciArPSBsKCdIb3VyUCcsIGgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgYy0tO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChtID4gMCAmJiBjID4gMCl7XHJcbiAgICAgICAgaWYgKHIgIT09ICcnKXtcclxuICAgICAgICAgIHIgKz0gbCgnQW5kJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHIgKz0gbCgnTWludXRlUCcsIG0udG9TdHJpbmcoKSk7XHJcbiAgICAgIH1cclxuICAgICAgciArPSByICE9PSAnJyA/ICcnIDogbCgnQUZldycpO1xyXG4gICAgICByICs9ICcgJyArIGwoJ0xhdGVyJyk7XHJcbiAgICAgIHJldHVybiByO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cImx0ciBkLWliXCI+JyArIG1vbWVudChkKS5sb2NhbGUoJ2ZhJykuZm9ybWF0KCdqWVlZWS9qTU0vakREIEhIOm1tJykgKyAnPC9zcGFuPic7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXREYXRlUmVtYWluU2VjKGR0OiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgY29uc3QgZCA9IHBhcnNlSW50KGR0LnN1YnN0cmluZyg2LCBkdC5sZW5ndGggLSAyKSwgMTApO1xyXG4gICAgY29uc3Qgbm93ID0gbW9tZW50Lm5vdygpO1xyXG4gICAgcmV0dXJuIChkIC0gbm93KSAvIDEwMDA7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXREYXRlUmVtYWluRnVsbChsLCBkdDogc3RyaW5nLCBjID0gMik6IHN0cmluZ3tcclxuICAgIGNvbnN0IGQgPSBwYXJzZUludChkdC5zdWJzdHJpbmcoNiwgZHQubGVuZ3RoIC0gMiksIDEwKTtcclxuICAgIGNvbnN0IG5vdyA9IG1vbWVudC5ub3coKTtcclxuICAgIGxldCByID0gJyc7XHJcbiAgICBsZXQgZGlmID0gKGQgLSBub3cpIC8gMTAwMDtcclxuICAgIGNvbnN0IGYgPSBkaWYgPD0gMDtcclxuICAgIGlmIChkaWYgPD0gMClcclxuICAgIHtcclxuICAgICAgciArPSBsKCdGaW5pc2hlZCcpICsgJyAtICc7XHJcbiAgICAgIGRpZiA9IGRpZiAqIC0xO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeWVhciA9IE1hdGguZmxvb3IoZGlmIC8gMzE1MzYwMDApO1xyXG4gICAgY29uc3QgbW9udGggPSBNYXRoLmZsb29yKChkaWYgJSAzMTUzNjAwMCkgLyAyNjI4MDAwKTtcclxuICAgIGNvbnN0IGRheSA9IE1hdGguZmxvb3IoKChkaWYgJSAzMTUzNjAwMCkgJSAyNjI4MDAwKSAvIDg2NDAwKTtcclxuICAgIGNvbnN0IGhvdXIgPSBNYXRoLmZsb29yKCgoKGRpZiAlIDMxNTM2MDAwKSAlIDI2MjgwMDApICUgODY0MDApIC8gMzYwMCk7XHJcbiAgICBjb25zdCBtaW51dGUgPSBNYXRoLmZsb29yKCgoKChkaWYgJSAzMTUzNjAwMCkgJSAyNjI4MDAwKSAlIDg2NDAwKSAlIDM2MDApIC8gNjApO1xyXG4gICAgaWYgKHllYXIgPiAwKXtcclxuICAgICAgciArPSBsKCdZZWFyUCcsIHllYXIudG9TdHJpbmcoKSk7XHJcbiAgICAgIGMtLTtcclxuICAgIH1cclxuICAgIGlmIChtb250aCA+IDAgJiYgYyA+IDApe1xyXG4gICAgICByICs9IHllYXIgPiAwID8gbCgnQW5kJykgOiAnJztcclxuICAgICAgciArPSBsKCdNb250aFAnLCBtb250aC50b1N0cmluZygpKTtcclxuICAgICAgYy0tO1xyXG4gICAgfVxyXG4gICAgaWYgKGRheSA+IDAgJiYgYyA+IDApe1xyXG4gICAgICByICs9IHllYXIgPiAwIHx8IG1vbnRoID4gMCA/IGwoJ0FuZCcpIDogJyc7XHJcbiAgICAgIHIgKz0gbCgnRGF5UCcsIGRheS50b1N0cmluZygpKTtcclxuICAgICAgYy0tO1xyXG4gICAgfVxyXG4gICAgaWYgKGhvdXIgPiAwICYmIGMgPiAwKXtcclxuICAgICAgciArPSB5ZWFyID4gMCB8fCBtb250aCA+IDAgfHwgZGF5ID4gMCA/IGwoJ0FuZCcpIDogJyc7XHJcbiAgICAgIHIgKz0gbCgnSG91clAnLCBob3VyLnRvU3RyaW5nKCkpO1xyXG4gICAgICBjLS07XHJcbiAgICB9XHJcbiAgICBpZiAobWludXRlID4gMCAmJiBjID4gMCl7XHJcbiAgICAgIHIgKz0geWVhciA+IDAgfHwgbW9udGggPiAwIHx8IGRheSA+IDAgfHwgaG91ciA+IDAgPyBsKCdBbmQnKSA6ICcnO1xyXG4gICAgICByICs9IGwoJ01pbnV0ZVAnLCBtaW51dGUudG9TdHJpbmcoKSk7XHJcbiAgICAgIGMtLTtcclxuICAgIH1cclxuICAgIHIgKz0gKHIgIT09ICcnID8gJycgOiBsKCdMZXNzVGhhbk1pbnV0ZScpKSArICcgJyArIChmID8gbCgnQWdvJykgOiBsKCdMYXRlcicpKTtcclxuICAgIHJldHVybiByO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0RGF0ZShkdDogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZyA9ICdqWVlZWS9qTU0vakREJywgbG9jYWxlOiBzdHJpbmcgPSAnZmEnKTogc3RyaW5ne1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGR0ID09PSBudWxsKXtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG07XHJcbiAgICAgIGlmICh0eXBlb2YgZHQgPT09ICdzdHJpbmcnICYmIGR0Lmxlbmd0aCA9PT0gMTApIHtcclxuICAgICAgICBtID0gbW9tZW50KGR0LCAnWVlZWS9NTS9ERCcpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG0gPSBtb21lbnQocGFyc2VJbnQoZHQuc3Vic3RyaW5nKDYsIGR0Lmxlbmd0aCAtIDIpLCAxMCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBtLmxvY2FsZShsb2NhbGUpLmZvcm1hdChmb3JtYXQgKyAneicpO1xyXG4gICAgfWNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBkdDtcclxuICAgIH1cclxuICB9XHJcbiAgc3RhdGljIGdldFRpbWUoZHQ6IGFueSk6IHN0cmluZ3tcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChkdCA9PT0gbnVsbCl7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG0gPSBkdC5Ub3RhbFNlY29uZHMgPj0gMCA/IDEgOiAtMTtcclxuICAgICAgY29uc3QgaG91cnMgPSAoKGR0LkRheXMgKiBtKSAqIDI0KSArIChkdC5Ib3VycyAqIG0pO1xyXG4gICAgICBjb25zdCBtaW51dGUgPSBkdC5NaW51dGVzICogbTtcclxuICAgICAgcmV0dXJuIGAkeyhob3VycyA+IDkgPyBob3VycyA6IGAwJHtob3Vyc31gKX06JHsobWludXRlID4gOSA/IG1pbnV0ZSA6IGAwJHttaW51dGV9YCl9YDtcclxuICAgIH1jYXRjaCAoZSkge1xyXG4gICAgICByZXR1cm4gZHQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXREYXRlVGltZShkdDogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZyA9ICdqWVlZWS9qTU0vakREIEhIOm1tJyk6IHN0cmluZ3tcclxuICAgIGlmIChkdCA9PT0gbnVsbCl7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGNvbnN0IGQgPSBwYXJzZUludChkdC5zdWJzdHJpbmcoNiwgZHQubGVuZ3RoIC0gMiksIDEwKTtcclxuICAgIHJldHVybiBtb21lbnQoZCkubG9jYWxlKCdmYScpLmZvcm1hdChmb3JtYXQpO1xyXG4gIH1cclxuICBzdGF0aWMgdG9QcmljZShsOiBhbnksIGN2OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICFpc05hTihwYXJzZUZsb2F0KGN2KSkgPyAnPHNwYW4gY2xhc3M9XCJsdHIgZC1pYiBtLWwtNS1wXCI+JyArIHBhcnNlRmxvYXQoY3YpLnRvTG9jYWxlU3RyaW5nKCkgKyAnPC9zcGFuPicgKyBsKCdSaWFsJykgOiBsKGN2KTtcclxuICB9XHJcbiAgc3RhdGljIGdldEZpbGVTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3VmZml4ID0gWyAnQicsICdLQicsICdNQicsICdHQicsICdUQiddO1xyXG4gICAgbGV0IGRibFNCeXRlID0gYnl0ZXM7XHJcbiAgICBsZXQgaSA9IDA7XHJcbiAgICBmb3IgKDsgaSA8IHN1ZmZpeC5sZW5ndGggJiYgYnl0ZXMgPj0gMTAyNDsgaSsrLCBieXRlcyAvPSAxMDI0KVxyXG4gICAge1xyXG4gICAgICBkYmxTQnl0ZSA9IGJ5dGVzIC8gMTAyNC4wO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke2RibFNCeXRlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLFxyXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDEsXHJcbiAgICB9KX0gJHtzdWZmaXhbaV19YDtcclxuICB9XHJcbiAgc3RhdGljIGdldFBEYXRlKGwsIHMpOiBzdHJpbmd7XHJcbiAgICByZXR1cm4gcy5yZXBsYWNlKC9Ib3VyL2csIGwoJ0hvdXInKSlcclxuICAgICAgLnJlcGxhY2UoL0xlc3NUaGFuTWludXRlL2csIGwoJ0xlc3NUaGFuTWludXRlJykpXHJcbiAgICAgIC5yZXBsYWNlKC9NaW51dGUvZywgbCgnTWludXRlJykpXHJcbiAgICAgIC5yZXBsYWNlKC9BbmQvZywgbCgnQW5kJykpXHJcbiAgICAgIC5yZXBsYWNlKC9BRmV3L2csIGwoJ0FGZXcnKSlcclxuICAgICAgLnJlcGxhY2UoL0ZpbmlzaGVkL2csIGwoJ0ZpbmlzaGVkJykpXHJcbiAgICAgIC5yZXBsYWNlKC9EYXkvZywgbCgnRGF5JykpXHJcbiAgICAgIC5yZXBsYWNlKC9MYXRlci9nLCBsKCdMYXRlcicpKVxyXG4gICAgICAucmVwbGFjZSgvQWdvL2csIGwoJ0FnbycpKTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgR2V0UmVtYWluRGF0ZShsLCB0cyk6IHN0cmluZyB7XHJcbiAgICBpZiAodHMuVGlrcyA8PSAwKXtcclxuICAgICAgcmV0dXJuIGwoJ0ZpbmlzaGVkJyk7XHJcbiAgICB9XHJcbiAgICBsZXQgYyA9IDA7XHJcbiAgICBsZXQgcmVzdWx0ID0gJyc7XHJcbiAgICBpZiAodHMuWWVhcnMgPiAwKXtcclxuICAgICAgcmVzdWx0ICs9IGwoJ1llYXJQJywgdHMuWWVhcnMpO1xyXG4gICAgICBjKys7XHJcbiAgICB9XHJcbiAgICBpZiAodHMuTW9udGhzID4gMCl7XHJcbiAgICAgIHJlc3VsdCArPSBjID4gMCA/IGwoJ0FuZCcpIDogJyc7XHJcbiAgICAgIHJlc3VsdCArPSBsKCdNb250aFAnLCB0cy5Nb250aHMpO1xyXG4gICAgICBjKys7XHJcbiAgICB9XHJcbiAgICBpZiAoYyA8IDIgJiYgdHMuRGF5cyA+IDApe1xyXG4gICAgICByZXN1bHQgKz0gYyA+IDAgPyBsKCdBbmQnKSA6ICcnO1xyXG4gICAgICByZXN1bHQgKz0gbCgnRGF5UCcsIHRzLkRheXMpO1xyXG4gICAgICBjKys7XHJcbiAgICB9XHJcbiAgICBpZiAoYyA8IDIgJiYgdHMuSG91cnMgPiAwKXtcclxuICAgICAgcmVzdWx0ICs9IGMgPiAwID8gbCgnQW5kJykgOiAnJztcclxuICAgICAgcmVzdWx0ICs9IGwoJ0hvdXJQJywgdHMuSG91cnMpO1xyXG4gICAgICBjKys7XHJcbiAgICB9XHJcbiAgICBpZiAoYyA8IDIgJiYgdHMuTWludXRlcyA+IDApe1xyXG4gICAgICByZXN1bHQgKz0gYyA+IDAgPyBsKCdBbmQnKSA6ICcnO1xyXG4gICAgICByZXN1bHQgKz0gbCgnTWludXRlUCcsIHRzLk1pbnV0ZXMpO1xyXG4gICAgfVxyXG4gICAgcmVzdWx0ICs9IHJlc3VsdCAhPT0gJycgPyAnICcgKyBsKCdMYXRlcicpIDogbCgnTGVzc1RoYW5NaW51dGUnKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY2xvbmU8VD4odjogVCk6IFQge1xyXG4gICAgaWYgKHYgPT0gbnVsbCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvcHkgPSBuZXcgKHYuY29uc3RydWN0b3IgYXMgeyBuZXcoKSB9KSgpO1xyXG4gICAgT2JqZWN0LmFzc2lnbihjb3B5LCB2KTtcclxuICAgIHJldHVybiBjb3B5O1xyXG4gIH1cclxuICBzdGF0aWMgY2xvbmVKc29uKGlucCk6IGFueSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpbnApKTtcclxuICB9XHJcbiAgc3RhdGljIGdldE5hbWUobik6IHN0cmluZ3tcclxuICAgIHJldHVybiBuLnJlcGxhY2UoL9qpL2csICfZgycpLnJlcGxhY2UoL9uML2csICfZiicpLnJlcGxhY2UoL9iiL2csICfYoicpO1xyXG4gIH1cclxuICBzdGF0aWMgYWRkTm90aWZpY2F0aW9uKG0sIGUgPSB0cnVlKTogdm9pZHtcclxuICAgIGNvbnN0IGlkID0gSGVscGVyQ2xhc3MucmFuZG9tKDIwKTtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxyXG4gICAgJCgnI05vdGlmaWNhdGlvbnMnKS5hcHBlbmQoJzxkaXYgaWQ9XCInICsgaWQgKyAnXCIgY2xhc3M9XCJjb25cIj48ZGl2IGNsYXNzPVwiaXRlbSAnICsgKGUgPyAnZXJyb3InIDogJ3N1Y2Nlc3MnKSArICdcIj48aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvaT48ZGl2PicgKyBtICsgJzwvZGl2PjwvZGl2PjwvZGl2PicpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGQgPSAkKCcjJyArIGlkKTtcclxuICAgICAgZC5mYWRlT3V0KDMwMCwgKCkgPT4ge1xyXG4gICAgICAgIGQucmVtb3ZlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgMjAwMDApO1xyXG4gIH1cclxuICBzdGF0aWMgY2hlY2tDYXJ0RGlnaXQoY29kZSk6IGJvb2xlYW57XHJcbiAgICBjb25zdCBsID0gY29kZS5sZW5ndGg7XHJcbiAgICBpZiAobCA8IDE2IHx8IHBhcnNlSW50KGNvZGUuc3Vic3RyKDEsIDEwKSwgMTApID09PSAwIHx8XHJcbiAgICAgIHBhcnNlSW50KGNvZGUuc3Vic3RyKDEwLCA2KSwgMTApID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGxldCBzID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7IGkrKyl7XHJcbiAgICAgIGNvbnN0IGsgPSBpICUgMiA9PT0gMCA/IDIgOiAxO1xyXG4gICAgICBjb25zdCBkID0gcGFyc2VJbnQoY29kZS5zdWJzdHIoaSwgMSksIDEwKSAqIGs7XHJcbiAgICAgIHMgKz0gZCA+IDkgPyBkIC0gOSA6IGQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcyAlIDEwID09PSAwO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldERhdGEoa2V5LCBzdGF0ZSwgcGFyZW50KTogYW55IHtcclxuICAgIGNvbnN0IGRhdGEgPSBbXTtcclxuICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LnNuYXBzaG90LmRhdGEgJiYgcGFyZW50LnNuYXBzaG90LmRhdGFba2V5XSkge1xyXG4gICAgICBkYXRhLnB1c2gocGFyZW50LnNuYXBzaG90LmRhdGFba2V5XS5yZXBsYWNlKCd7fScsIHBhcmVudC5zbmFwc2hvdC5wYXJhbU1hcC5wYXJhbXMuaWQpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RhdGUgJiYgcGFyZW50KSB7XHJcbiAgICAgIGRhdGEucHVzaCguLi50aGlzLmdldERhdGEoa2V5LCBzdGF0ZSwgc3RhdGUuZmlyc3RDaGlsZChwYXJlbnQpKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRDb2xvckJ5QmdDb2xvcihiZ0NvbG9yKTogc3RyaW5ne1xyXG4gICAgaWYgKCFiZ0NvbG9yKSB7IHJldHVybiAnJzsgfVxyXG4gICAgcmV0dXJuIChwYXJzZUludChiZ0NvbG9yLnJlcGxhY2UoJyMnLCAnJyksIDE2KSA+IDB4ZmZmZmZmIC8gMikgPyAnIzAwMCcgOiAnI2ZmZic7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcXVlcnlTdHJpbmdUb0pTT04ocXMgPSBudWxsKTogYW55IHtcclxuICAgIHFzID0gcXMgfHwgbG9jYXRpb24uc2VhcmNoLnNsaWNlKDEpO1xyXG4gICAgaWYgKHFzID09PSAnJyl7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IHBhaXJzID0gcXMuc3BsaXQoJyYnKTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xyXG4gICAgcGFpcnMuZm9yRWFjaCgocCkgPT4ge1xyXG4gICAgICBjb25zdCBwYWlyID0gcC5zcGxpdCgnPScpO1xyXG4gICAgICBjb25zdCBrZXkgPSBwYWlyWzBdLnJlcGxhY2UoJyU1QiU1RCcsICcnKTtcclxuICAgICAgY29uc3QgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQocGFpclsxXSB8fCAnJyk7XHJcblxyXG4gICAgICBpZiAoIHJlc3VsdFtrZXldICkge1xyXG4gICAgICAgIGlmICggT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKCByZXN1bHRba2V5XSApID09PSAnW29iamVjdCBBcnJheV0nICkge1xyXG4gICAgICAgICAgcmVzdWx0W2tleV0ucHVzaCggdmFsdWUgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBbIHJlc3VsdFtrZXldLCB2YWx1ZSBdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpO1xyXG4gIH1cclxuICBzdGF0aWMgY29weVRvQ2xpcGJvYXJkKHRleHQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICAgIGlucHV0LnNldEF0dHJpYnV0ZSgndmFsdWUnLCB0ZXh0KTtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpO1xyXG4gICAgaW5wdXQuc2VsZWN0KCk7XHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpbnB1dCk7XHJcbiAgfVxyXG4gIHN0YXRpYyBzZXRCYXJjb2RlUmVhZGVyKGlucDogSW5wdXRDbGFzcyk6IHZvaWQge1xyXG4gICAgaW5wLmJ1dHRvbiA9ICdibHVlJztcclxuICAgIGNvbnN0IGZuID0gaW5wLmlkICsgJ1NldEJhcmNvZGVTY2FuVmFsdWUnO1xyXG4gICAgaW5wLm9uQ2xpY2tCdXR0b24gPSAoKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHdpbmRvdy5KU0ludGVyZmFjZS5zdGFydEJhcmNvZGVTY2FuKGZuKTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB3aW5kb3dbZm5dID0gKHMpID0+IHtcclxuICAgICAgICBpZiAoaW5wLnR5cGUgPT09IElucHV0VHlwZS5UZXh0KSB7XHJcbiAgICAgICAgICBpbnAuc2V0VmFsdWUocywgZmFsc2UpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICQoJyMnICsgaW5wLmlkICsgJ1RleHRJbnB1dCAuY29udHJvbCcpLmNsaWNrKCk7XHJcbiAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW5wLm9uQmFyY29kZVJlYWRlckNoYW5nZSAhPT0gbnVsbCl7XHJcbiAgICAgICAgICBpbnAub25CYXJjb2RlUmVhZGVyQ2hhbmdlKHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgIH1cclxuICB9XHJcbiAgc3RhdGljIGdldFJhbmRvbUludChtaW4sIG1heCk6IG51bWJlcntcclxuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSApICsgbWluO1xyXG4gIH1cclxuICBzdGF0aWMgZml4Q2hhcnMoc3RyKTogc3RyaW5ne1xyXG4gICAgaWYgKHN0ciA9PSBudWxsKXtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBhcmFiaWNMZXR0ZXIgPSBbICfZiicsICfZgycsICfYqScgXTtcclxuICAgIGNvbnN0IHBlcnNpYW5MZXR0ZXIgPSBbICfbjCcsICfaqScsICfZhycgXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKVxyXG4gICAge1xyXG4gICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYXJhYmljTGV0dGVyW2ldLCAnZycpO1xyXG4gICAgICBzdHIgPSBzdHIudG9TdHJpbmcoKS5yZXBsYWNlKHJlLCBwZXJzaWFuTGV0dGVyW2ldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHIudG9TdHJpbmcoKVxyXG4gICAgICAucmVwbGFjZSgvW9uwLdu5XS9nLCBkID0+ICfbsNux27Lbs9u027Xbttu327jbuScuaW5kZXhPZihkKSlcclxuICAgICAgLnJlcGxhY2UoL1vZoC3ZqV0vZywgZCA9PiAn2aDZodmi2aPZpNml2abZp9mo2aknLmluZGV4T2YoZCkpO1xyXG4gIH1cclxuICBzdGF0aWMgVG9SZWFkYWJsZVBsYXF1ZShwKTogc3RyaW5ne1xyXG4gICAgY29uc3QgdG4gPSBwLnNwbGl0KCdfJyk7XHJcbiAgICBpZiAodG4ubGVuZ3RoID09PSA0KXtcclxuICAgICAgdG5bMV0gKz0gJyZscm07JztcclxuICAgICAgdG5bMl0gKz0gJyB8JztcclxuICAgICAgcmV0dXJuIHRuLmpvaW4oJyAnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0bi5qb2luKCcgJyk7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXRGaWxlSWNvbihmKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZpbGVJY29ucyA9IHtcclxuICAgICAganBlZzogJ2ZhZCBmYS1maWxlLWltYWdlJywganBnOiAnZmFkIGZhLWZpbGUtaW1hZ2UnLCBwbmc6ICdmYWQgZmEtZmlsZS1pbWFnZScsXHJcbiAgICAgIGRvYzogJ2ZhZCBmYS1maWxlLXdvcmQnLCBkb2N4OiAnZmFkIGZhLWZpbGUtd29yZCcsXHJcbiAgICAgIHhsczogJ2ZhZCBmYS1maWxlLWV4Y2VsJywgeGxzeDogJ2ZhZCBmYS1maWxlLWV4Y2VsJywgY3N2OiAnZmFkIGZhLWZpbGUtY3N2JyxcclxuICAgICAgcHB0OiAnZmFkIGZhLWZpbGUtcG93ZXJwb2ludCcsIHBwdHg6ICdmYWQgZmEtZmlsZS1wb3dlcnBvaW50JyxcclxuICAgICAgdHh0OiAnZmFkIGZhLWZpbGUtbGluZXMnLCBwZGY6ICdmYWQgZmEtZmlsZS1wZGYnLCBmaWxlOiAnZmFkIGZhLWZpbGUnLFxyXG4gICAgICB6aXA6ICdmYWQgZmEtZmlsZS16aXBwZXInLCByYXI6ICdmYWQgZmEtZmlsZS16aXBwZXInXHJcbiAgICB9O1xyXG4gICAgY29uc3QgayA9IGYuc3BsaXQoJy4nKS5hdCgtMSk7XHJcbiAgICByZXR1cm4gZmlsZUljb25zW2tdID8gZmlsZUljb25zW2tdIDogZmlsZUljb25zLmZpbGU7XHJcbiAgfVxyXG4gIHN0YXRpYyBncm91cEJ5KGRhdGEsIGl0ZXJhdGVlKTogYW55e1xyXG4gICAgcmV0dXJuIF8uZ3JvdXBCeShkYXRhLCBpdGVyYXRlZSk7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXRUYWJsZVBlcm1pc3Npb25zKGwgPSB0cnVlLCBpID0gdHJ1ZSwgdSA9IHRydWUsIGQgPSB0cnVlKTogUGVybWlzc2lvbkNsYXNzIHtcclxuICAgIGNvbnN0IHAgPSBuZXcgUGVybWlzc2lvbkNsYXNzKCk7XHJcbiAgICBwLlR5cGUgPSBQZXJtaXNzaW9uVHlwZUVudW0uRm9ybTtcclxuICAgIGNvbnN0IGxBY2Nlc3MgPSBuZXcgUGVybWlzc2lvbkNsYXNzKCk7XHJcbiAgICBsQWNjZXNzLkFjdGlvbiA9ICdMaXN0JztcclxuICAgIGxBY2Nlc3MuVHlwZSA9IFBlcm1pc3Npb25UeXBlRW51bS5BY2Nlc3M7XHJcbiAgICBsQWNjZXNzLkFjY2Vzc1R5cGUgPSBQZXJtaXNzaW9uQWNjZXNzVHlwZUVudW0uTGlzdDtcclxuICAgIGxBY2Nlc3MuSW5wdXRBY3Rpb24gPSBQZXJtaXNzaW9uSW5wdXRBY3Rpb25FbnVtLk5vbmU7XHJcbiAgICBsQWNjZXNzLklucHV0VHlwZSA9IFBlcm1pc3Npb25JbnB1dFR5cGVFbnVtLkljb247XHJcbiAgICBjb25zdCBpQWNjZXNzID0gbmV3IFBlcm1pc3Npb25DbGFzcygpO1xyXG4gICAgaUFjY2Vzcy5BY3Rpb24gPSAnSW5zZXJ0JztcclxuICAgIGlBY2Nlc3MuVHlwZSA9IFBlcm1pc3Npb25UeXBlRW51bS5BY2Nlc3M7XHJcbiAgICBpQWNjZXNzLklucHV0QWN0aW9uID0gUGVybWlzc2lvbklucHV0QWN0aW9uRW51bS5Nb2RhbDtcclxuICAgIGlBY2Nlc3MuSW5wdXRUeXBlID0gUGVybWlzc2lvbklucHV0VHlwZUVudW0uQnV0dG9uO1xyXG4gICAgaUFjY2Vzcy5BY2Nlc3NUeXBlID0gUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLkluc2VydDtcclxuICAgIGNvbnN0IHVBY2Nlc3MgPSBuZXcgUGVybWlzc2lvbkNsYXNzKCk7XHJcbiAgICB1QWNjZXNzLkFjdGlvbiA9ICdVcGRhdGUnO1xyXG4gICAgdUFjY2Vzcy5UeXBlID0gUGVybWlzc2lvblR5cGVFbnVtLk9wdGlvbjtcclxuICAgIHVBY2Nlc3MuSW5wdXRBY3Rpb24gPSBQZXJtaXNzaW9uSW5wdXRBY3Rpb25FbnVtLk5vbmU7XHJcbiAgICB1QWNjZXNzLklucHV0VHlwZSA9IFBlcm1pc3Npb25JbnB1dFR5cGVFbnVtLkljb247XHJcbiAgICB1QWNjZXNzLkFjY2Vzc1R5cGUgPSBQZXJtaXNzaW9uQWNjZXNzVHlwZUVudW0uVXBkYXRlO1xyXG4gICAgdUFjY2Vzcy5JY29uID0gJ2ZhZCBmYS1wZW4nO1xyXG4gICAgdUFjY2Vzcy5OYW1lID0gJ1VwZGF0ZSc7XHJcbiAgICBjb25zdCBkQWNjZXNzID0gbmV3IFBlcm1pc3Npb25DbGFzcygpO1xyXG4gICAgZEFjY2Vzcy5BY3Rpb24gPSAnRGVsZXRlJztcclxuICAgIGRBY2Nlc3MuVHlwZSA9IFBlcm1pc3Npb25UeXBlRW51bS5PcHRpb247XHJcbiAgICBkQWNjZXNzLklucHV0QWN0aW9uID0gUGVybWlzc2lvbklucHV0QWN0aW9uRW51bS5Ob25lO1xyXG4gICAgZEFjY2Vzcy5JbnB1dFR5cGUgPSBQZXJtaXNzaW9uSW5wdXRUeXBlRW51bS5JY29uO1xyXG4gICAgZEFjY2Vzcy5BY2Nlc3NUeXBlID0gUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLkRlbGV0ZTtcclxuICAgIGRBY2Nlc3MuSWNvbiA9ICdmYWQgZmEtdHJhc2gnO1xyXG4gICAgZEFjY2Vzcy5OYW1lID0gJ0RlbGV0ZSc7XHJcbiAgICBwLkFjY2Vzc2VzID0gW107XHJcbiAgICBpZiAobCkge1xyXG4gICAgICBwLkFjY2Vzc2VzLnB1c2gobEFjY2Vzcyk7XHJcbiAgICB9XHJcbiAgICBpZiAoaSkge1xyXG4gICAgICBwLkFjY2Vzc2VzLnB1c2goaUFjY2Vzcyk7XHJcbiAgICB9XHJcbiAgICBpZiAodSkge1xyXG4gICAgICBwLkFjY2Vzc2VzLnB1c2godUFjY2Vzcyk7XHJcbiAgICB9XHJcbiAgICBpZiAoZCkge1xyXG4gICAgICBwLkFjY2Vzc2VzLnB1c2goZEFjY2Vzcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcDtcclxuICB9XHJcbiAgc3RhdGljIGpzb25Ub0Zvcm1EYXRhKGpzb24sIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCksIHBhcmVudEtleSA9ICcnKTogRm9ybURhdGEge1xyXG4gICAgaWYgKHR5cGVvZiBqc29uID09PSAnb2JqZWN0JyAmJiBqc29uICE9PSBudWxsKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGpzb24pLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBjb25zdCBmdWxsS2V5ID0gcGFyZW50S2V5ID8gYCR7cGFyZW50S2V5fVske2tleX1dYCA6IGtleTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGpzb25ba2V5XTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgICAvLyDYp9qv2LEg2YXZgtiv2KfYsSBudWxsINin2LPYqtiMINii2YYg2LHYpyDZhtin2K/bjNiv2Ycg2Kjar9uM2LFcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAvLyDYp9qv2LEg2KLYqNis2qnYqiDYp9iz2KrYjCDYqNmHINi12YjYsdiqINio2KfYstqv2LTYqtuMINmB2LHYp9iu2YjYp9mG24wg2qnZhlxyXG4gICAgICAgICAgdGhpcy5qc29uVG9Gb3JtRGF0YSh2YWx1ZSwgZm9ybURhdGEsIGZ1bGxLZXkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgIC8vINin2q/YsSDYotix2KfbjNmHINin2LPYqtiMINmH2LEg2LnYttmIINix2Kcg2KzYr9in2q/Yp9mG2Ycg2KfYttin2YHZhyDaqdmGXHJcbiAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBhcnJheUtleSA9IGAke2Z1bGxLZXl9WyR7aW5kZXh9XWA7XHJcbiAgICAgICAgICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgLy8g2Kfar9ixINmF2YLYr9in2LEgbnVsbCDYp9iz2KrYjCDYotmGINix2Kcg2YbYp9iv24zYr9mHINio2q/bjNixXHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgIHRoaXMuanNvblRvRm9ybURhdGEoaXRlbSwgZm9ybURhdGEsIGFycmF5S2V5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYXJyYXlLZXksIGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8g2YXZgtiv2KfYsSDYs9in2K/ZhyDYsdinINin2LbYp9mB2Ycg2qnZhlxyXG4gICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZ1bGxLZXksIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcm1EYXRhO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,11 +1,35 @@
1
+ import * as _ from 'lodash';
2
+ import { strings as publicStrings } from './string.class';
1
3
  // @dynamic
2
4
  export class LangClass {
3
5
  constructor(d, strings) {
6
+ this.lang = _.merge(publicStrings[d], strings[d]);
4
7
  }
5
8
  get(area, c, k, v = null) {
6
9
  if (k != null && (/^-?\d+$/.test(k) || /^\d+\.\d+$/.test(k))) {
7
10
  return k;
8
11
  }
12
+ let cv = _.get(this.lang, area ? `${area}.${c}.${k}` : `${c}.${k}`);
13
+ if (!cv) {
14
+ cv = _.get(this.lang, `Public.${c}.${k}`);
15
+ }
16
+ if (!cv) {
17
+ cv = _.get(this.lang, `Public.${k}`);
18
+ }
19
+ if (!cv) {
20
+ return k;
21
+ }
22
+ if (v !== null) {
23
+ if (v.constructor === Array) {
24
+ v.forEach((x) => {
25
+ cv = cv.replace('{}', this.get(area, c, x, null));
26
+ });
27
+ }
28
+ else {
29
+ cv = cv.replace('{}', this.get(area, c, v, null));
30
+ }
31
+ }
32
+ return cv;
9
33
  }
10
34
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZy5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJEOi9Qc1Rvb2xraXQvVUkvcHJvamVjdHMvcHMtdG9vbGtpdC11aS9zcmMvIiwic291cmNlcyI6WyJsaWIvY2xhc3Nlcy9sYW5nLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLFdBQVc7QUFDWCxNQUFNLE9BQU8sU0FBUztJQUVwQixZQUFZLENBQVMsRUFBRSxPQUFXO0lBQ2xDLENBQUM7SUFDRCxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUk7UUFDdEIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUM7WUFDM0QsT0FBTyxDQUFDLENBQUM7U0FDVjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c3RyaW5ncyBhcyBwdWJsaWNTdHJpbmdzfSBmcm9tICcuL3N0cmluZy5jbGFzcyc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgTGFuZ0NsYXNzIHtcclxuICBsYW5nOiB7fTtcclxuICBjb25zdHJ1Y3RvcihkOiBzdHJpbmcsIHN0cmluZ3M6IHt9KSB7XHJcbiAgfVxyXG4gIGdldChhcmVhLCBjLCBrLCB2ID0gbnVsbCk6IHN0cmluZyB7XHJcbiAgICBpZiAoayAhPSBudWxsICYmICgvXi0/XFxkKyQvLnRlc3QoaykgfHwgL15cXGQrXFwuXFxkKyQvLnRlc3QoaykpKXtcclxuICAgICAgcmV0dXJuIGs7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZy5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJEOi9Qc1Rvb2xraXQvVUkvcHJvamVjdHMvcHMtdG9vbGtpdC11aS9zcmMvIiwic291cmNlcyI6WyJsaWIvY2xhc3Nlcy9sYW5nLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyxPQUFPLElBQUksYUFBYSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsV0FBVztBQUNYLE1BQU0sT0FBTyxTQUFTO0lBRXBCLFlBQVksQ0FBUyxFQUFFLE9BQVc7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJO1FBQ3RCLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDO1lBQzNELE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLEVBQUUsRUFBQztZQUNOLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksQ0FBQyxFQUFFLEVBQUM7WUFDTixFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxFQUFFLEVBQUM7WUFDTixPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2QsSUFBSSxDQUFDLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRTtnQkFDM0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNkLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3BELENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNuRDtTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7c3RyaW5ncyBhcyBwdWJsaWNTdHJpbmdzfSBmcm9tICcuL3N0cmluZy5jbGFzcyc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgTGFuZ0NsYXNzIHtcclxuICBsYW5nOiB7fTtcclxuICBjb25zdHJ1Y3RvcihkOiBzdHJpbmcsIHN0cmluZ3M6IHt9KSB7XHJcbiAgICB0aGlzLmxhbmcgPSBfLm1lcmdlKHB1YmxpY1N0cmluZ3NbZF0sIHN0cmluZ3NbZF0pO1xyXG4gIH1cclxuICBnZXQoYXJlYSwgYywgaywgdiA9IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKGsgIT0gbnVsbCAmJiAoL14tP1xcZCskLy50ZXN0KGspIHx8IC9eXFxkK1xcLlxcZCskLy50ZXN0KGspKSl7XHJcbiAgICAgIHJldHVybiBrO1xyXG4gICAgfVxyXG4gICAgbGV0IGN2ID0gXy5nZXQodGhpcy5sYW5nLCBhcmVhID8gYCR7YXJlYX0uJHtjfS4ke2t9YCA6IGAke2N9LiR7a31gKTtcclxuICAgIGlmICghY3Ype1xyXG4gICAgICBjdiA9IF8uZ2V0KHRoaXMubGFuZywgYFB1YmxpYy4ke2N9LiR7a31gKTtcclxuICAgIH1cclxuICAgIGlmICghY3Ype1xyXG4gICAgICBjdiA9IF8uZ2V0KHRoaXMubGFuZywgYFB1YmxpYy4ke2t9YCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWN2KXtcclxuICAgICAgcmV0dXJuIGs7XHJcbiAgICB9XHJcbiAgICBpZiAodiAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAodi5jb25zdHJ1Y3RvciA9PT0gQXJyYXkpIHtcclxuICAgICAgICB2LmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICAgIGN2ID0gY3YucmVwbGFjZSgne30nLCB0aGlzLmdldChhcmVhLCBjLCB4LCBudWxsKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY3YgPSBjdi5yZXBsYWNlKCd7fScsIHRoaXMuZ2V0KGFyZWEsIGMsIHYsIG51bGwpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGN2O1xyXG4gIH1cclxufVxyXG4iXX0=