monkey-front-core 0.0.576 → 0.0.578

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.
@@ -21,6 +21,8 @@ export class MonkeyEcxUtils {
21
21
  return 'RUT';
22
22
  if (country === 'mx')
23
23
  return 'RFC';
24
+ if (country === 'us')
25
+ return 'EIN';
24
26
  return doc.length <= 11 ? 'CPF' : 'CNPJ';
25
27
  }
26
28
  static getDocumentMask(type, country = '') {
@@ -66,6 +68,9 @@ export class MonkeyEcxUtils {
66
68
  formated = doc.replace(/^(\d{1,2})(\d{3})(\d{3})(\w{1})$/, '$1.$2.$3-$4');
67
69
  return `${formated}`;
68
70
  }
71
+ if (country === 'us') {
72
+ return doc;
73
+ }
69
74
  if (doc.length === 14) {
70
75
  formated = doc
71
76
  .replace(/^(\d{2})(\d)/, '$1.$2')
@@ -461,4 +466,4 @@ export function base64ToBuffer(base64) {
461
466
  }
462
467
  return bytes.buffer;
463
468
  }
464
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLDRCQUE0QjtBQUM1QixzQ0FBc0M7QUFDdEMsZ0NBQWdDO0FBQ2hDLG1DQUFtQztBQUNuQywyQkFBMkI7QUFDM0IsaUNBQWlDO0FBQ2pDLGdDQUFnQztBQUNoQywyQkFBMkI7QUFFM0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMscUNBQXFDO0FBQ3JDLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxFQUFPO1FBQ3RDLE9BQU8sRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBVyxFQUFFLE9BQWdCO1FBQ2xELElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEIsSUFBSSxPQUFPLEtBQUssSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ25DLElBQUksT0FBTyxLQUFLLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNuQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFZLEVBQUUsT0FBTyxHQUFHLEVBQUU7UUFDL0MsT0FBTztZQUNMLEVBQUUsRUFBRTtnQkFDRixHQUFHLEVBQUUsWUFBWSxDQUFDLEdBQUc7Z0JBQ3JCLElBQUksRUFBRSxZQUFZ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O1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07U0FDUCxDQUFDO1FBRUYsTUFBTSxVQUFVLEdBQUc7WUFDakIsQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsQ0FBQyxFQUFFLEVBQUU7WUFDTCxDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsQ0FBQyxFQUFFLEVBQUU7WUFDTCxDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsQ0FBQyxFQUFFLEVBQUU7WUFDTCxDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsQ0FBQyxFQUFFLEVBQUU7WUFDTCxDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsR0FBRyxFQUFFLEVBQUU7WUFDUCxDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsQ0FBQyxFQUFFLEVBQUU7WUFDTCxDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsQ0FB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QU8sQ0FBQyxFQUFFO1lBQ1YsWUFBWTtTQUNiO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFtQjtJQUNoRCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzVCLE1BQU0sSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3pDO0lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWM7SUFDM0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdkM7SUFDRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbW1hLWRhbmdsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdXNlbGVzcy1lc2NhcGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBsdXNwbHVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25kLWFzc2lnbiAqL1xuLyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZWRlY2xhcmUgKi9cbi8qIGVzbGludC1kaXNhYmxlIHZhcnMtb24tdG9wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12YXIgKi9cblxuaW1wb3J0IHsgZGF0YWRvZ0xvZ3MgfSBmcm9tICdAZGF0YWRvZy9icm93c2VyLWxvZ3MnO1xuaW1wb3J0IHsgQ291bnRyeU1hc2tzIH0gZnJvbSAnLi9zdGF0aWNzJztcblxuLyogZXNsaW50LWRpc2FibGUgYmxvY2stc2NvcGVkLXZhciAqL1xuZXhwb3J0IGNsYXNzIE1vbmtleUVjeFV0aWxzIHtcbiAgc3RhdGljIHBlcnNpc3ROdWxsRW1wdHlVbmRlZmluZWQodHA6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cCAhPT0gbnVsbCAmJiB0cCAhPT0gdW5kZWZpbmVkICYmIHRwICE9PSAnJztcbiAgfVxuXG4gIHN0YXRpYyBnZXREb2N1bWVudFR5cGUoZG9jOiBzdHJpbmcsIGNvdW50cnk/OiBzdHJpbmcpIHtcbiAgICBpZiAoIWRvYykgcmV0dXJuICcnO1xuICAgIGlmIChjb3VudHJ5ID09PSAnY2wnKSByZXR1cm4gJ1JVVCc7XG4gICAgaWYgKGNvdW50cnkgPT09ICdteCcpIHJldHVybiAnUkZDJztcbiAgICByZXR1cm4gZG9jLmxlbmd0aCA8PSAxMSA/ICdDUEYnIDogJ0NOUEonO1xuICB9XG5cbiAgc3RhdGljIGdldERvY3VtZW50TWFzayh0eXBlOiBzdHJpbmcsIGNvdW50cnkgPSAnJykge1xuICAgIHJldHVybiB7XG4gICAgICBCUjoge1xuICAgICAgICBDUEY6IENvdW50cnlNYXNrcy5DUEYsXG4gICAgICAgIENOUEo6IENvdW50cnlNYXNrcy5DTlBKLFxuICAgICAgICAnJzogYCR7Q291bnRyeU1hc2tzLkNQRn18fCR7Q291bnRyeU1hc2tzLkNOUEp9YFxuICAgICAgfSxcbiAgICAgIENMOiB7XG4gICAgICAgIENQRjogQ291bnRyeU1hc2tzLlJVVDEsXG4gICAgICAgIENOUEo6IENvdW50cnlNYXNrcy5SVVQyLFxuICAgICAgICAnJzogYCR7Q291bnRyeU1hc2tzLlJVVDF9fHwke0NvdW50cnlNYXNrcy5SVVQyfWBcbiAgICAgIH0sXG4gICAgICBNWDoge1xuICAgICAgICBDUEY6IENvdW50cnlNYXNrcy5SRkMxLFxuICAgICAgICBDTlBKOiBDb3VudHJ5TWFza3MuUkZDMixcbiAgICAgICAgJyc6IGAke0NvdW50cnlNYXNrcy5SRkMxfXx8JHtDb3VudHJ5TWFza3MuUkZDMn1gXG4gICAgICB9XG4gICAgfVtjb3VudHJ5LnRvVXBwZXJDYXNlKCldPy5bdHlwZV07XG4gIH1cblxuICBzdGF0aWMgZ2V0RG9jdW1lbnRQbGFjZWhvbGRlcih0eXBlOiBzdHJpbmcsIGNvdW50cnkgPSAnJykge1xuICAgIHJldHVybiB7XG4gICAgICBCUjoge1xuICAgICAgICBDUEY6ICcwMDAuMDAwLjAwMC1YWCcsXG4gICAgICAgIENOUEo6ICcwMC4wMDAuMDAwLzAwMDAtMDAnXG4gICAgICB9LFxuICAgICAgQ0w6IHtcbiAgICAgICAgQ1BGOiAnMDAwMDAwMC1BJyxcbiAgICAgICAgQ05QSjogJzAwMDAwMDAtQSdcbiAgICAgIH0sXG4gICAgICBNWDoge1xuICAgICAgICBDUEY6IENvdW50cnlNYXNrcy5SRkMxLFxuICAgICAgICBDTlBKOiBDb3VudHJ5TWFza3MuUkZDMlxuICAgICAgfVxuICAgIH1bY291bnRyeS50b1VwcGVyQ2FzZSgpXT8uW3R5cGVdO1xuICB9XG5cbiAgc3RhdGljIGZvcm1hdERvY3VtZW50V2l0aE1hc2soZG9jOiBzdHJpbmcsIHdpdGhUeXBlPzogYm9vbGVhbiwgY291bnRyeT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFkb2MpIHJldHVybiBkb2M7XG4gICAgbGV0IGZvcm1hdGVkOiBzdHJpbmcgPSAnJztcbiAgICBpZiAoY291bnRyeSA9PT0gJ2NsJykge1xuICAgICAgZm9ybWF0ZWQgPSBkb2MucmVwbGFjZSgvXihcXGR7MSwyfSkoXFxkezN9KShcXGR7M30pKFxcd3sxfSkkLywgJyQxLiQyLiQzLSQ0Jyk7XG4gICAgICByZXR1cm4gYCR7Zm9ybWF0ZWR9YDtcbiAgICB9XG4gICAgaWYgKGRvYy5sZW5ndGggPT09IDE0KSB7XG4gICAgICBmb3JtYXRlZCA9IGRvY1xuICAgICAgICAucmVwbGFjZSgvXihcXGR7Mn0pKFxcZCkvLCAnJDEuJDInKVxuICAgICAgICAucmVwbGFjZSgvXihcXGR7Mn0pXFwuKFxcZHszfSkoXFxkKS8sICckMS4kMi4kMycpXG4gICAgICAgIC5yZXBsYWNlKC9cXC4oXFxkezN9KShcXGQpLywgJy4kMS8kMicpXG4gICAgICAgIC5yZXBsYWNlKC8oXFxkezR9KShcXGQpLywgJyQxLSQyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1hdGVkID0gZG9jXG4gICAgICAgIC5yZXBsYWNlKC9eKFxcZHszfSkoXFxkKS8sICckMS4kMicpXG4gICAgICAgIC5yZXBsYWNlKC9eKFxcZHszfSlcXC4oXFxkezN9KShcXGQpLywgJyQxLiQyLiQzJylcbiAgICAgICAgLnJlcGxhY2UoL1xcLihcXGR7M30pKFxcZCkvLCAnLiQxLSQyJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3dpdGhUeXBlID8gYCR7dGhpcy5nZXREb2N1bWVudFR5cGUoZG9jKX06YCA6ICcnfSAke2Zvcm1hdGVkfWA7XG4gIH1cblxuICBzdGF0aWMgY3V0Rmlyc3RMYXN0TmFtZSh2YWx1ZTogc3RyaW5nLCB0cDogc3RyaW5nID0gJ2ZpcnN0Jykge1xuICAgIGNvbnN0IHNwbGl0ID0gdmFsdWU/LnRyaW0oKT8uc3BsaXQoJyAnKTtcblxuICAgIGlmICh0cCA9PT0gJ2ZpcnN0JykgcmV0dXJuIHNwbGl0WzBdO1xuICAgIHJldHVybiBzcGxpdD8uc3BsaWNlKDEsIHNwbGl0Lmxlbmd0aCk/LmpvaW4oJyAnKTtcbiAgfVxuXG4gIHN0YXRpYyBpc0NQRkNOUEpWYWxpZChkb2N1bWVudDogYW55KTogYm9vbGVhbiB7XG4gICAgZG9jdW1lbnQgPSBkb2N1bWVudC5yZXBsYWNlKC9bXlxcZF0vZywgJycpO1xuXG4gICAgY29uc3QgaGFuZGxlZCA9IGRvY3VtZW50LnJlcGxhY2UobmV3IFJlZ0V4cChkb2N1bWVudC5jaGFyQXQoMCksICdnJyksICcnKTtcbiAgICBpZiAoIWhhbmRsZWQpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChkb2N1bWVudC5sZW5ndGggPT09IDExKSB7XG4gICAgICBsZXQgYmFzZSA9IFsxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMF07XG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IDA7IGkgPCA5OyBuICs9IGRvY3VtZW50W2ldICogYmFzZVtpKytdKSA7XG4gICAgICBpZiAoZG9jdW1lbnRbOV0gIT0gKChuICU9IDExKSA8PSAxID8gMCA6IDExIC0gbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgYmFzZSA9IFsxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDBdO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSAwOyBpIDw9IDk7IG4gKz0gZG9jdW1lbnRbaV0gKiBiYXNlW2krK10pIDtcbiAgICAgIGlmIChkb2N1bWVudFsxMF0gIT0gKChuICU9IDExKSA8PSAxID8gMCA6IDExIC0gbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChkb2N1bWVudC5sZW5ndGggPT09IDE0IHx8IC8wezE0fS8udGVzdChkb2N1bWVudCkpIHtcbiAgICAgIGNvbnN0IGJhc2UgPSBbNiwgNSwgNCwgMywgMiwgOSwgOCwgNywgNiwgNSwgNCwgMywgMl07XG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IDA7IGkgPCAxMjsgbiArPSBkb2N1bWVudFtpXSAqIGJhc2VbKytpXSkgO1xuICAgICAgaWYgKGRvY3VtZW50WzEyXSAhPSAoKG4gJT0gMTEpIDwgMiA/IDAgOiAxMSAtIG4pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSAwOyBpIDw9IDEyOyBuICs9IGRvY3VtZW50W2ldICogYmFzZVtpKytdKSA7XG4gICAgICBpZiAoZG9jdW1lbnRbMTNdICE9ICgobiAlPSAxMSkgPCAyID8gMCA6IDExIC0gbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkUlVUKGRvY3VtZW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWRvY3VtZW50IHx8IGRvY3VtZW50LnRyaW0oKS5sZW5ndGggPCAzKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZG9jdW1lbnRIYW5kbGVkID0gZG9jdW1lbnQucmVwbGFjZSgvW14wLTlrS10vZywgJycpO1xuXG4gICAgaWYgKGRvY3VtZW50SGFuZGxlZC5sZW5ndGggPCAzKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBjYWxjRHYgPSAocnV0OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSBgJHtydXR9YDtcbiAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgbGV0IG11bHQgPSAyO1xuXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpbmRleCA9IG11bHQgKiBOdW1iZXIodmFsdWUuY2hhckF0KHZhbHVlLmxlbmd0aCAtIGkpKTtcblxuICAgICAgICBzdW0gKz0gaW5kZXg7XG5cbiAgICAgICAgaWYgKG11bHQgPCA3KSB7XG4gICAgICAgICAgbXVsdCArPSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG11bHQgPSAyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGR2RXNwZXJhZG8gPSAxMSAtIChzdW0gJSAxMSk7XG4gICAgICBpZiAoZHZFc3BlcmFkbyA9PT0gMTApIHJldHVybiAnSyc7XG4gICAgICBpZiAoZHZFc3BlcmFkbyA9PT0gMTEpIHJldHVybiAnMCc7XG4gICAgICByZXR1cm4gYCR7ZHZFc3BlcmFkb31gO1xuICAgIH07XG5cbiAgICBjb25zdCBudW0gPSBkb2N1bWVudEhhbmRsZWQuc2xpY2UoMCwgLTEpO1xuICAgIGNvbnN0IGRndiA9IGRvY3VtZW50SGFuZGxlZC5zbGljZSgtMSkudG9VcHBlckNhc2UoKTtcblxuICAgIGNvbnN0IGR2Q2FsYyA9IGNhbGNEdihudW0pO1xuICAgIHJldHVybiBkdkNhbGMgPT09IGRndjtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZFJGQyhkb2N1bWVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgUkZDX1JFR0VYUCA9IC9eKFtBLVrDkVxceDI2XXszLDR9KShbMC05XXs2fSkoW0EtWjAtOV17M30pJC87XG4gICAgY29uc3QgU1BFQ0lBTF9DQVNFUyA9IHtcbiAgICAgIFhFWFgwMTAxMDEwMDA6ICdmb3JlaWduJyxcbiAgICAgIFhBWFgwMTAxMDEwMDA6ICdnZW5lcmljJ1xuICAgIH07XG4gICAgY29uc3QgRk9SQklEREVOX1dPUkRTID0gW1xuICAgICAgJ0JVRUknLFxuICAgICAgJ0JVRVknLFxuICAgICAgJ0NBQ0EnLFxuICAgICAgJ0NBQ08nLFxuICAgICAgJ0NBR0EnLFxuICAgICAgJ0NBR08nLFxuICAgICAgJ0NBS0EnLFxuICAgICAgJ0NBS08nLFxuICAgICAgJ0NPR0UnLFxuICAgICAgJ0NPSkEnLFxuICAgICAgJ0NPSkUnLFxuICAgICAgJ0NPSkknLFxuICAgICAgJ0NPSk8nLFxuICAgICAgJ0NVTE8nLFxuICAgICAgJ0ZFVE8nLFxuICAgICAgJ0dVRVknLFxuICAgICAgJ0pPVE8nLFxuICAgICAgJ0tBQ0EnLFxuICAgICAgJ0tBQ08nLFxuICAgICAgJ0tBR0EnLFxuICAgICAgJ0tBR08nLFxuICAgICAgJ0tPR0UnLFxuICAgICAgJ0tPSk8nLFxuICAgICAgJ0tBS0EnLFxuICAgICAgJ0tVTE8nLFxuICAgICAgJ01BTUUnLFxuICAgICAgJ01BTU8nLFxuICAgICAgJ01FQVInLFxuICAgICAgJ01FQVMnLFxuICAgICAgJ01FT04nLFxuICAgICAgJ01JT04nLFxuICAgICAgJ01PQ08nLFxuICAgICAgJ01VTEEnLFxuICAgICAgJ1BFREEnLFxuICAgICAgJ1BFRE8nLFxuICAgICAgJ1BFTkUnLFxuICAgICAgJ1BVVEEnLFxuICAgICAgJ1BVVE8nLFxuICAgICAgJ1FVTE8nLFxuICAgICAgJ1JBVEEnLFxuICAgICAgJ1JVSU4nXG4gICAgXTtcblxuICAgIGNvbnN0IFZBTFVFU19NQVAgPSB7XG4gICAgICAwOiAwLFxuICAgICAgMTogMSxcbiAgICAgIDI6IDIsXG4gICAgICAzOiAzLFxuICAgICAgNDogNCxcbiAgICAgIDU6IDUsXG4gICAgICA2OiA2LFxuICAgICAgNzogNyxcbiAgICAgIDg6IDgsXG4gICAgICA5OiA5LFxuICAgICAgQTogMTAsXG4gICAgICBCOiAxMSxcbiAgICAgIEM6IDEyLFxuICAgICAgRDogMTMsXG4gICAgICBFOiAxNCxcbiAgICAgIEY6IDE1LFxuICAgICAgRzogMTYsXG4gICAgICBIOiAxNyxcbiAgICAgIEk6IDE4LFxuICAgICAgSjogMTksXG4gICAgICBLOiAyMCxcbiAgICAgIEw6IDIxLFxuICAgICAgTTogMjIsXG4gICAgICBOOiAyMyxcbiAgICAgICcmJzogMjQsXG4gICAgICBPOiAyNSxcbiAgICAgIFA6IDI2LFxuICAgICAgUTogMjcsXG4gICAgICBSOiAyOCxcbiAgICAgIFM6IDI5LFxuICAgICAgVDogMzAsXG4gICAgICBVOiAzMSxcbiAgICAgIFY6IDMyLFxuICAgICAgVzogMzMsXG4gICAgICBYOiAzNCxcbiAgICAgIFk6IDM1LFxuICAgICAgWjogMzYsXG4gICAgICAnICc6IDM3LFxuICAgICAgw5E6IDM4XG4gICAgfTtcblxuICAgIGNvbnN0IGdldFNjb3JlID0gKGRvYzogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gZG9jLnNwbGl0KCcnKS5yZXZlcnNlKCkucmVkdWNlKChzdW0sIGNoYXIsIGkpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBpICsgMjtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBWQUxVRVNfTUFQW2NoYXJdIHx8IDA7XG4gICAgICAgIHJldHVybiBzdW0gKyB2YWx1ZSAqIGluZGV4O1xuICAgICAgfSwgMCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHBhcnNlSW5wdXQgPSAoZG9jOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBTdHJpbmcoZG9jKVxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC50b1VwcGVyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXjAtOUEtWsORXFx4MjZdL2csICcnKTtcbiAgICB9O1xuXG4gICAgY29uc3QgdmFsaWRhdGVEYXRlID0gKGRvYzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBkYXRlU3RyID0gZG9jLnNsaWNlKDAsIC0zKS5zbGljZSgtNik7XG4gICAgICBjb25zdCB5ZWFyID0gZGF0ZVN0ci5zbGljZSgwLCAyKTtcbiAgICAgIGNvbnN0IG1vbnRoID0gZGF0ZVN0ci5zbGljZSgyLCA0KTtcbiAgICAgIGNvbnN0IGRheSA9IGRhdGVTdHIuc2xpY2UoNCwgNik7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoYDIwJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHNcbiAgICAgIHJldHVybiAhaXNOYU4oZGF0ZS5nZXRUaW1lKCkpO1xuICAgIH07XG5cbiAgICBjb25zdCB2YWxpZGF0ZVZlcmlmaWNhdGlvbkRpZ2l0ID0gKGRvYzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBkaWdpdCA9IGRvYy5zbGljZSgtMSk7XG4gICAgICBjb25zdCByZmMgPSBkb2MubGVuZ3RoID09PSAxMiA/IGAgJHtkb2N9YCA6IGRvYztcbiAgICAgIGNvbnN0IGJhc2UgPSByZmMuc2xpY2UoMCwgLTEpO1xuICAgICAgY29uc3Qgc2NvcmUgPSBnZXRTY29yZShiYXNlKTtcbiAgICAgIGNvbnN0IG1vZCA9ICgxMTAwMCAtIHNjb3JlKSAlIDExO1xuICAgICAgaWYgKG1vZCA9PT0gMTEpIHJldHVybiBkaWdpdCA9PT0gJzAnO1xuICAgICAgaWYgKG1vZCA9PT0gMTApIHJldHVybiBkaWdpdCA9PT0gJ0EnO1xuICAgICAgcmV0dXJuIFN0cmluZyhtb2QpID09PSBkaWdpdDtcbiAgICB9O1xuXG4gICAgY29uc3QgaXNTcGVjaWFsQ2FzZSA9IChkb2M6IHN0cmluZykgPT4geyByZXR1cm4gZG9jIGluIFNQRUNJQUxfQ0FTRVM7IH07XG5cbiAgICBjb25zdCBoYXNGb3JiaWRkZW5Xb3JkcyA9IChkb2M6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcHJlZml4ID0gKGRvYyB8fCAnJykuc2xpY2UoMCwgNCk7XG4gICAgICByZXR1cm4gRk9SQklEREVOX1dPUkRTLmluY2x1ZGVzKHByZWZpeCk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbnB1dCA9IHBhcnNlSW5wdXQoZG9jdW1lbnQpO1xuXG4gICAgICBpZiAoaXNTcGVjaWFsQ2FzZShpbnB1dCkpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGhhc1ZhbGlkRm9ybWF0ID0gUkZDX1JFR0VYUC50ZXN0KGlucHV0KTtcbiAgICAgIGlmICghaGFzVmFsaWRGb3JtYXQpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGhhc1ZhbGlkRGF0ZSA9IHZhbGlkYXRlRGF0ZShpbnB1dCk7XG4gICAgICBpZiAoIWhhc1ZhbGlkRGF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgaGFzVmFsaWREaWdpdCA9IHZhbGlkYXRlVmVyaWZpY2F0aW9uRGlnaXQoaW5wdXQpO1xuICAgICAgaWYgKCFoYXNWYWxpZERpZ2l0KSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoaGFzRm9yYmlkZGVuV29yZHMoaW5wdXQpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG5vdCB0byBkb1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBpc1ZhbGlkVXJsKHR4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVnZXggPSAvKGh0dHBzPzpcXC9cXC8oPzpbYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT9cXC4pK1thLXowLTldW2EtejAtOS1dezAsNjF9W2EtejAtOV0pKDo/XFxkKilcXC8/KFthLXpfXFxcXC8wLTlcXC0jLl0qKVxcPz8oW2Etel9cXFxcLzAtOVxcLSM9Jl0qKS9nO1xuICAgIHJldHVybiByZWdleC50ZXN0KHR4dCk7XG4gIH1cblxuICBzdGF0aWMgaXNWYWxpZFppcENvZGUoemlwQ29kZTogc3RyaW5nLCBjb3VudHJ5Pzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGVuZ3RoID0ge1xuICAgICAgYnI6IDgsXG4gICAgICBjbDogNyxcbiAgICAgIG14OiA1XG4gICAgfVtjb3VudHJ5IHx8ICdiciddO1xuXG4gICAgcmV0dXJuIGAke3RoaXMuaGFuZGxlT25seU51bWJlcnMoemlwQ29kZSl9YC5sZW5ndGggPT09IGxlbmd0aDtcbiAgfVxuXG4gIHN0YXRpYyBpc1ZhbGlkRW1haWwoZW1haWw6IHN0cmluZykge1xuICAgIHJldHVybiAvXltcXHctLl0rQChbXFx3LV0rXFwuKStbXFx3LV17MSw2NH0kLy50ZXN0KGVtYWlsIHx8ICcnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRSYW5kb21TdHJpbmcobGVuOiBudW1iZXIsIGNoYXJTZXQ/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNoYXJTZXQgPSBjaGFyU2V0IHx8ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG5cbiAgICBjb25zdCByYW5kb21TdHJpbmc6IHN0cmluZyA9IG5ldyBBcnJheShsZW4pXG4gICAgICAuZmlsbCgnMScpXG4gICAgICAubWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGNoYXJTZXQ/LmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyU2V0Py5sZW5ndGgpKTtcbiAgICAgIH0pXG4gICAgICAuam9pbignJyk7XG4gICAgcmV0dXJuIHJhbmRvbVN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBoYW5kbGVPbmx5TnVtYmVycyh2YWx1ZTogYW55KSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCgvW14wLTldL2cpLCAnJyk7XG4gIH1cblxuICBzdGF0aWMgaGFuZGxlT25seUFscGhhTnVtZXJpYyh2YWx1ZTogYW55KSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoL1teMC05QS1aYS16XS8sICdnJyksICcnKTtcbiAgfVxuXG4gIHN0YXRpYyBjYXBpdGFsaXplKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYCR7dmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHt2YWx1ZS5zbGljZSgxKX1gO1xuICB9XG5cbiAgc3RhdGljIGZvcm1hdFppcENvZGUoemlwQ29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXppcENvZGUpIHJldHVybiB6aXBDb2RlO1xuICAgIGNvbnN0IGZvcm1hdGVkOiBzdHJpbmcgPSB6aXBDb2RlXG4gICAgICAucmVwbGFjZSgvXihcXGR7NX0pKFxcZCkvLCAnJDEtJDInKVxuICAgICAgLnJlcGxhY2UoL1xcLihcXGR7M30pKFxcZCkvLCAnLiQxLSQyJyk7XG5cbiAgICByZXR1cm4gYCR7Zm9ybWF0ZWR9YDtcbiAgfVxuXG4gIHN0YXRpYyBmb3JtYXRGaWxlU2l6ZShzaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gICAgbGV0IGwgPSAwO1xuICAgIHdoaWxlIChzaXplID49IDEwMjQgJiYgKytsKSB7XG4gICAgICBzaXplIC89IDEwMjQ7XG4gICAgfVxuICAgIHJldHVybiBgJHtzaXplLnRvRml4ZWQoc2l6ZSA8IDEwICYmIGwgPiAwID8gMSA6IDApfSAke3VuaXRzW2xdfWA7XG4gIH1cblxuICBzdGF0aWMgc3VmZmx1ZShkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBmb3IgKGxldCBpID0gZGF0YS5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogaSk7XG4gICAgICBjb25zdCB0ZW1wID0gZGF0YVtpXTtcbiAgICAgIGRhdGFbaV0gPSBkYXRhW2pdO1xuICAgICAgZGF0YVtqXSA9IHRlbXA7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgc3RhdGljIGhhbmRsZUJsb2JGaWxlKHRoZUJsb2I6IGFueSwgZmlsZU5hbWU6IHN0cmluZywgZmlsZVR5cGU6IHN0cmluZykge1xuICAgIGZ1bmN0aW9uIGJsb2JUb0ZpbGUodGhlQmxvYjogYW55LCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICBjb25zdCBiID0gdGhlQmxvYjtcbiAgICAgIGIubGFzdE1vZGlmaWVkRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICBiLm5hbWUgPSBmaWxlTmFtZTtcbiAgICAgIHJldHVybiBiO1xuICAgIH1cblxuICAgIGxldCBmaWxlOiBhbnk7XG4gICAgaWYgKCEobmF2aWdhdG9yIGFzIGFueSkubXNTYXZlQmxvYikge1xuICAgICAgZmlsZSA9IG5ldyBGaWxlKFt0aGVCbG9iXSwgZmlsZU5hbWUsIHtcbiAgICAgICAgdHlwZTogZmlsZVR5cGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZSA9IG5ldyBCbG9iKFt0aGVCbG9iXSwge1xuICAgICAgICB0eXBlOiBmaWxlVHlwZSxcbiAgICAgIH0pO1xuICAgICAgZmlsZSA9IGJsb2JUb0ZpbGUoZmlsZSwgZmlsZU5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIHN0YXRpYyB0cnVuY2F0ZSh0ZXh0OiBzdHJpbmcsIG1heExlbmd0aDogbnVtYmVyID0gMjUpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1pZENoYXIgPSAnLi4uJztcbiAgICBpZiAoIXRleHQpIHJldHVybiBtaWRDaGFyO1xuICAgIGlmICh0ZXh0ICYmIHRleHQubGVuZ3RoIDw9IG1heExlbmd0aCkgcmV0dXJuIHRleHQ7XG5cbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5jZWlsKG1heExlbmd0aCAvIDIpO1xuICAgIGNvbnN0IHJpZ2h0ID0gdGV4dC5sZW5ndGggLSBsZWZ0ICsgMTtcblxuICAgIHJldHVybiBgJHt0ZXh0LnN1YnN0cigwLCBsZWZ0KX0gJHttaWRDaGFyfSAke3RleHQuc3Vic3RyaW5nKHJpZ2h0KX1gO1xuICB9XG5cbiAgc3RhdGljIGlzTG9jYWxob3N0KCkge1xuICAgIGNvbnN0IHsgaHJlZiB9ID0gd2luZG93Py5sb2NhdGlvbjtcbiAgICBpZiAoIWhyZWYpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gaHJlZj8uc2VhcmNoKCdsb2NhbGhvc3QnKSA+PSAwO1xuICB9XG5cbiAgc3RhdGljIGlzU2FtZU9yaWdpbihmcm9udGVuZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW5pdGlhbFBhdGg6IHN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gICAgcmV0dXJuIChpbml0aWFsUGF0aCB8fCAnJykgPT09IGZyb250ZW5kO1xuICB9XG5cbiAgc3RhdGljIHJlcGxhY2VWYXJpYWJsZXMoZGF0YTogc3RyaW5nLCBvYmo6IGFueSkge1xuICAgIGxldCBoYW5kbGVkID0gZGF0YTtcbiAgICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaGFuZGxlZCA9IGhhbmRsZWQucmVwbGFjZShuZXcgUmVnRXhwKGB7JHtrZXl9fWAsICdnJyksIGAke3ZhbHVlfWApO1xuICAgIH0pO1xuICAgIHJldHVybiBoYW5kbGVkO1xuICB9XG5cbiAgc3RhdGljIHRyaW1WYWx1ZXNUb1NhdmUob2JqOiBhbnksIGZpZWxkczogc3RyaW5nW10pIHtcbiAgICBsZXQgcmV0ID0gb2JqO1xuICAgIGNvbnN0IGdyb3VwZWQgPSBmaWVsZHMuam9pbignIycpO1xuICAgIE9iamVjdC5lbnRyaWVzKG9iaikubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmIChncm91cGVkLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgcmV0ID0ge1xuICAgICAgICAgIC4uLnJldCxcbiAgICAgICAgICBba2V5XTogYCR7dmFsdWV9YC50cmltKClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNb25rZXlFY3hMb2dzRXJyb3JUeXBlcyA9ICdvaycgfFxuICAnZGVidWcnIHxcbiAgJ2luZm8nIHxcbiAgJ25vdGljZScgfFxuICAnd2FybicgfFxuICAnZXJyb3InIHxcbiAgJ2NyaXRpY2FsJyB8XG4gICdhbGVydCcgfFxuICAnZW1lcmcnO1xuXG5leHBvcnQgdHlwZSBNb25rZXlFY3hMb2dQYXJhbXMgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgY29udGV4dD86IGFueTtcbiAgZXJyb3I/OiBFcnJvcjtcbiAgdHlwZT86IE1vbmtleUVjeExvZ3NFcnJvclR5cGVzO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ua2V5RWN4TG9ncyB7XG4gIHN0YXRpYyBsb2cocGFyYW1zOiBNb25rZXlFY3hMb2dQYXJhbXMpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyB0eXBlLCBtZXNzYWdlLCBjb250ZXh0LCBlcnJvciB9ID0gcGFyYW1zO1xuICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyW3R5cGUgfHwgJ2Vycm9yJ10obWVzc2FnZSwgY29udGV4dCwgZXJyb3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG5vdCB0byBkb1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVmZmVyVG9CYXNlNjQoYnVmZmVyOiBBcnJheUJ1ZmZlcik6IHN0cmluZyB7XG4gIGxldCBiaW5hcnkgPSAnJztcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICBjb25zdCBsZW4gPSBieXRlcy5ieXRlTGVuZ3RoO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xuICB9XG4gIHJldHVybiB3aW5kb3cuYnRvYShiaW5hcnkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFzZTY0VG9CdWZmZXIoYmFzZTY0OiBzdHJpbmcpOiBBcnJheUJ1ZmZlciB7XG4gIGNvbnN0IGJpbmFyeVN0cmluZyA9IHdpbmRvdy5hdG9iKGJhc2U2NCk7XG4gIGNvbnN0IGxlbiA9IGJpbmFyeVN0cmluZy5sZW5ndGg7XG4gIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGJ5dGVzW2ldID0gYmluYXJ5U3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gIH1cbiAgcmV0dXJuIGJ5dGVzLmJ1ZmZlcjtcbn1cbiJdfQ==
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLDRCQUE0QjtBQUM1QixzQ0FBc0M7QUFDdEMsZ0NBQWdDO0FBQ2hDLG1DQUFtQztBQUNuQywyQkFBMkI7QUFDM0IsaUNBQWlDO0FBQ2pDLGdDQUFnQztBQUNoQywyQkFBMkI7QUFFM0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMscUNBQXFDO0FBQ3JDLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxFQUFPO1FBQ3RDLE9BQU8sRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBVyxFQUFFLE9BQWdCO1FBQ2xELElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEIsSUFBSSxPQUFPLEtBQUssSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ25DLElBQUksT0FBTyxLQUFLLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNuQyxJQUFJLE9BQU8sS0FBSyxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDbkMsT0FBTyxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBWSxFQUFFLE9BQU8sR0FBRyxFQUFFO1FBQy9DLE9BQU87WUFDTCxFQUFFLEVBQUU7Z0JBQ0Ys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QU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtZQUNOLE1BQU07U0FDUCxDQUFDO1FBRUYsTUFBTSxVQUFVLEdBQUc7WUFDakIsQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsQ0FBQyxFQUFFLEVBQUU7WUFDTCxDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsQ0FBQyxFQUFFLEVBQUU7WUFDTCxDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsQ0FBQyxFQUFFLEVBQUU7WUFDTCxDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsQ0FBQyxFQUFFLEVBQUU7WUFDTCxDQUFDLEVBQUUsRUFBRTtZQUNMLENBQUMsRUFBRSxFQUFFO1lBQ0wsR0FBRyxFQUFFLEVBQUU7WUFDUCxD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bW1hLWRhbmdsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdXNlbGVzcy1lc2NhcGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBsdXNwbHVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25kLWFzc2lnbiAqL1xuLyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZWRlY2xhcmUgKi9cbi8qIGVzbGludC1kaXNhYmxlIHZhcnMtb24tdG9wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12YXIgKi9cblxuaW1wb3J0IHsgZGF0YWRvZ0xvZ3MgfSBmcm9tICdAZGF0YWRvZy9icm93c2VyLWxvZ3MnO1xuaW1wb3J0IHsgQ291bnRyeU1hc2tzIH0gZnJvbSAnLi9zdGF0aWNzJztcblxuLyogZXNsaW50LWRpc2FibGUgYmxvY2stc2NvcGVkLXZhciAqL1xuZXhwb3J0IGNsYXNzIE1vbmtleUVjeFV0aWxzIHtcbiAgc3RhdGljIHBlcnNpc3ROdWxsRW1wdHlVbmRlZmluZWQodHA6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cCAhPT0gbnVsbCAmJiB0cCAhPT0gdW5kZWZpbmVkICYmIHRwICE9PSAnJztcbiAgfVxuXG4gIHN0YXRpYyBnZXREb2N1bWVudFR5cGUoZG9jOiBzdHJpbmcsIGNvdW50cnk/OiBzdHJpbmcpIHtcbiAgICBpZiAoIWRvYykgcmV0dXJuICcnO1xuICAgIGlmIChjb3VudHJ5ID09PSAnY2wnKSByZXR1cm4gJ1JVVCc7XG4gICAgaWYgKGNvdW50cnkgPT09ICdteCcpIHJldHVybiAnUkZDJztcbiAgICBpZiAoY291bnRyeSA9PT0gJ3VzJykgcmV0dXJuICdFSU4nO1xuICAgIHJldHVybiBkb2MubGVuZ3RoIDw9IDExID8gJ0NQRicgOiAnQ05QSic7XG4gIH1cblxuICBzdGF0aWMgZ2V0RG9jdW1lbnRNYXNrKHR5cGU6IHN0cmluZywgY291bnRyeSA9ICcnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEJSOiB7XG4gICAgICAgIENQRjogQ291bnRyeU1hc2tzLkNQRixcbiAgICAgICAgQ05QSjogQ291bnRyeU1hc2tzLkNOUEosXG4gICAgICAgICcnOiBgJHtDb3VudHJ5TWFza3MuQ1BGfXx8JHtDb3VudHJ5TWFza3MuQ05QSn1gXG4gICAgICB9LFxuICAgICAgQ0w6IHtcbiAgICAgICAgQ1BGOiBDb3VudHJ5TWFza3MuUlVUMSxcbiAgICAgICAgQ05QSjogQ291bnRyeU1hc2tzLlJVVDIsXG4gICAgICAgICcnOiBgJHtDb3VudHJ5TWFza3MuUlVUMX18fCR7Q291bnRyeU1hc2tzLlJVVDJ9YFxuICAgICAgfSxcbiAgICAgIE1YOiB7XG4gICAgICAgIENQRjogQ291bnRyeU1hc2tzLlJGQzEsXG4gICAgICAgIENOUEo6IENvdW50cnlNYXNrcy5SRkMyLFxuICAgICAgICAnJzogYCR7Q291bnRyeU1hc2tzLlJGQzF9fHwke0NvdW50cnlNYXNrcy5SRkMyfWBcbiAgICAgIH1cbiAgICB9W2NvdW50cnkudG9VcHBlckNhc2UoKV0/Llt0eXBlXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXREb2N1bWVudFBsYWNlaG9sZGVyKHR5cGU6IHN0cmluZywgY291bnRyeSA9ICcnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEJSOiB7XG4gICAgICAgIENQRjogJzAwMC4wMDAuMDAwLVhYJyxcbiAgICAgICAgQ05QSjogJzAwLjAwMC4wMDAvMDAwMC0wMCdcbiAgICAgIH0sXG4gICAgICBDTDoge1xuICAgICAgICBDUEY6ICcwMDAwMDAwLUEnLFxuICAgICAgICBDTlBKOiAnMDAwMDAwMC1BJ1xuICAgICAgfSxcbiAgICAgIE1YOiB7XG4gICAgICAgIENQRjogQ291bnRyeU1hc2tzLlJGQzEsXG4gICAgICAgIENOUEo6IENvdW50cnlNYXNrcy5SRkMyXG4gICAgICB9XG4gICAgfVtjb3VudHJ5LnRvVXBwZXJDYXNlKCldPy5bdHlwZV07XG4gIH1cblxuICBzdGF0aWMgZm9ybWF0RG9jdW1lbnRXaXRoTWFzayhkb2M6IHN0cmluZywgd2l0aFR5cGU/OiBib29sZWFuLCBjb3VudHJ5Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWRvYykgcmV0dXJuIGRvYztcbiAgICBsZXQgZm9ybWF0ZWQ6IHN0cmluZyA9ICcnO1xuICAgIGlmIChjb3VudHJ5ID09PSAnY2wnKSB7XG4gICAgICBmb3JtYXRlZCA9IGRvYy5yZXBsYWNlKC9eKFxcZHsxLDJ9KShcXGR7M30pKFxcZHszfSkoXFx3ezF9KSQvLCAnJDEuJDIuJDMtJDQnKTtcbiAgICAgIHJldHVybiBgJHtmb3JtYXRlZH1gO1xuICAgIH1cbiAgICBpZiAoY291bnRyeSA9PT0gJ3VzJykge1xuICAgICAgcmV0dXJuIGRvYztcbiAgICB9XG4gICAgaWYgKGRvYy5sZW5ndGggPT09IDE0KSB7XG4gICAgICBmb3JtYXRlZCA9IGRvY1xuICAgICAgICAucmVwbGFjZSgvXihcXGR7Mn0pKFxcZCkvLCAnJDEuJDInKVxuICAgICAgICAucmVwbGFjZSgvXihcXGR7Mn0pXFwuKFxcZHszfSkoXFxkKS8sICckMS4kMi4kMycpXG4gICAgICAgIC5yZXBsYWNlKC9cXC4oXFxkezN9KShcXGQpLywgJy4kMS8kMicpXG4gICAgICAgIC5yZXBsYWNlKC8oXFxkezR9KShcXGQpLywgJyQxLSQyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1hdGVkID0gZG9jXG4gICAgICAgIC5yZXBsYWNlKC9eKFxcZHszfSkoXFxkKS8sICckMS4kMicpXG4gICAgICAgIC5yZXBsYWNlKC9eKFxcZHszfSlcXC4oXFxkezN9KShcXGQpLywgJyQxLiQyLiQzJylcbiAgICAgICAgLnJlcGxhY2UoL1xcLihcXGR7M30pKFxcZCkvLCAnLiQxLSQyJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3dpdGhUeXBlID8gYCR7dGhpcy5nZXREb2N1bWVudFR5cGUoZG9jKX06YCA6ICcnfSAke2Zvcm1hdGVkfWA7XG4gIH1cblxuICBzdGF0aWMgY3V0Rmlyc3RMYXN0TmFtZSh2YWx1ZTogc3RyaW5nLCB0cDogc3RyaW5nID0gJ2ZpcnN0Jykge1xuICAgIGNvbnN0IHNwbGl0ID0gdmFsdWU/LnRyaW0oKT8uc3BsaXQoJyAnKTtcblxuICAgIGlmICh0cCA9PT0gJ2ZpcnN0JykgcmV0dXJuIHNwbGl0WzBdO1xuICAgIHJldHVybiBzcGxpdD8uc3BsaWNlKDEsIHNwbGl0Lmxlbmd0aCk/LmpvaW4oJyAnKTtcbiAgfVxuXG4gIHN0YXRpYyBpc0NQRkNOUEpWYWxpZChkb2N1bWVudDogYW55KTogYm9vbGVhbiB7XG4gICAgZG9jdW1lbnQgPSBkb2N1bWVudC5yZXBsYWNlKC9bXlxcZF0vZywgJycpO1xuXG4gICAgY29uc3QgaGFuZGxlZCA9IGRvY3VtZW50LnJlcGxhY2UobmV3IFJlZ0V4cChkb2N1bWVudC5jaGFyQXQoMCksICdnJyksICcnKTtcbiAgICBpZiAoIWhhbmRsZWQpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChkb2N1bWVudC5sZW5ndGggPT09IDExKSB7XG4gICAgICBsZXQgYmFzZSA9IFsxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMF07XG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IDA7IGkgPCA5OyBuICs9IGRvY3VtZW50W2ldICogYmFzZVtpKytdKSA7XG4gICAgICBpZiAoZG9jdW1lbnRbOV0gIT0gKChuICU9IDExKSA8PSAxID8gMCA6IDExIC0gbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgYmFzZSA9IFsxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDBdO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSAwOyBpIDw9IDk7IG4gKz0gZG9jdW1lbnRbaV0gKiBiYXNlW2krK10pIDtcbiAgICAgIGlmIChkb2N1bWVudFsxMF0gIT0gKChuICU9IDExKSA8PSAxID8gMCA6IDExIC0gbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChkb2N1bWVudC5sZW5ndGggPT09IDE0IHx8IC8wezE0fS8udGVzdChkb2N1bWVudCkpIHtcbiAgICAgIGNvbnN0IGJhc2UgPSBbNiwgNSwgNCwgMywgMiwgOSwgOCwgNywgNiwgNSwgNCwgMywgMl07XG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IDA7IGkgPCAxMjsgbiArPSBkb2N1bWVudFtpXSAqIGJhc2VbKytpXSkgO1xuICAgICAgaWYgKGRvY3VtZW50WzEyXSAhPSAoKG4gJT0gMTEpIDwgMiA/IDAgOiAxMSAtIG4pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSAwOyBpIDw9IDEyOyBuICs9IGRvY3VtZW50W2ldICogYmFzZVtpKytdKSA7XG4gICAgICBpZiAoZG9jdW1lbnRbMTNdICE9ICgobiAlPSAxMSkgPCAyID8gMCA6IDExIC0gbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkUlVUKGRvY3VtZW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWRvY3VtZW50IHx8IGRvY3VtZW50LnRyaW0oKS5sZW5ndGggPCAzKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZG9jdW1lbnRIYW5kbGVkID0gZG9jdW1lbnQucmVwbGFjZSgvW14wLTlrS10vZywgJycpO1xuXG4gICAgaWYgKGRvY3VtZW50SGFuZGxlZC5sZW5ndGggPCAzKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBjYWxjRHYgPSAocnV0OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSBgJHtydXR9YDtcbiAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgbGV0IG11bHQgPSAyO1xuXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpbmRleCA9IG11bHQgKiBOdW1iZXIodmFsdWUuY2hhckF0KHZhbHVlLmxlbmd0aCAtIGkpKTtcblxuICAgICAgICBzdW0gKz0gaW5kZXg7XG5cbiAgICAgICAgaWYgKG11bHQgPCA3KSB7XG4gICAgICAgICAgbXVsdCArPSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG11bHQgPSAyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGR2RXNwZXJhZG8gPSAxMSAtIChzdW0gJSAxMSk7XG4gICAgICBpZiAoZHZFc3BlcmFkbyA9PT0gMTApIHJldHVybiAnSyc7XG4gICAgICBpZiAoZHZFc3BlcmFkbyA9PT0gMTEpIHJldHVybiAnMCc7XG4gICAgICByZXR1cm4gYCR7ZHZFc3BlcmFkb31gO1xuICAgIH07XG5cbiAgICBjb25zdCBudW0gPSBkb2N1bWVudEhhbmRsZWQuc2xpY2UoMCwgLTEpO1xuICAgIGNvbnN0IGRndiA9IGRvY3VtZW50SGFuZGxlZC5zbGljZSgtMSkudG9VcHBlckNhc2UoKTtcblxuICAgIGNvbnN0IGR2Q2FsYyA9IGNhbGNEdihudW0pO1xuICAgIHJldHVybiBkdkNhbGMgPT09IGRndjtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZFJGQyhkb2N1bWVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgUkZDX1JFR0VYUCA9IC9eKFtBLVrDkVxceDI2XXszLDR9KShbMC05XXs2fSkoW0EtWjAtOV17M30pJC87XG4gICAgY29uc3QgU1BFQ0lBTF9DQVNFUyA9IHtcbiAgICAgIFhFWFgwMTAxMDEwMDA6ICdmb3JlaWduJyxcbiAgICAgIFhBWFgwMTAxMDEwMDA6ICdnZW5lcmljJ1xuICAgIH07XG4gICAgY29uc3QgRk9SQklEREVOX1dPUkRTID0gW1xuICAgICAgJ0JVRUknLFxuICAgICAgJ0JVRVknLFxuICAgICAgJ0NBQ0EnLFxuICAgICAgJ0NBQ08nLFxuICAgICAgJ0NBR0EnLFxuICAgICAgJ0NBR08nLFxuICAgICAgJ0NBS0EnLFxuICAgICAgJ0NBS08nLFxuICAgICAgJ0NPR0UnLFxuICAgICAgJ0NPSkEnLFxuICAgICAgJ0NPSkUnLFxuICAgICAgJ0NPSkknLFxuICAgICAgJ0NPSk8nLFxuICAgICAgJ0NVTE8nLFxuICAgICAgJ0ZFVE8nLFxuICAgICAgJ0dVRVknLFxuICAgICAgJ0pPVE8nLFxuICAgICAgJ0tBQ0EnLFxuICAgICAgJ0tBQ08nLFxuICAgICAgJ0tBR0EnLFxuICAgICAgJ0tBR08nLFxuICAgICAgJ0tPR0UnLFxuICAgICAgJ0tPSk8nLFxuICAgICAgJ0tBS0EnLFxuICAgICAgJ0tVTE8nLFxuICAgICAgJ01BTUUnLFxuICAgICAgJ01BTU8nLFxuICAgICAgJ01FQVInLFxuICAgICAgJ01FQVMnLFxuICAgICAgJ01FT04nLFxuICAgICAgJ01JT04nLFxuICAgICAgJ01PQ08nLFxuICAgICAgJ01VTEEnLFxuICAgICAgJ1BFREEnLFxuICAgICAgJ1BFRE8nLFxuICAgICAgJ1BFTkUnLFxuICAgICAgJ1BVVEEnLFxuICAgICAgJ1BVVE8nLFxuICAgICAgJ1FVTE8nLFxuICAgICAgJ1JBVEEnLFxuICAgICAgJ1JVSU4nXG4gICAgXTtcblxuICAgIGNvbnN0IFZBTFVFU19NQVAgPSB7XG4gICAgICAwOiAwLFxuICAgICAgMTogMSxcbiAgICAgIDI6IDIsXG4gICAgICAzOiAzLFxuICAgICAgNDogNCxcbiAgICAgIDU6IDUsXG4gICAgICA2OiA2LFxuICAgICAgNzogNyxcbiAgICAgIDg6IDgsXG4gICAgICA5OiA5LFxuICAgICAgQTogMTAsXG4gICAgICBCOiAxMSxcbiAgICAgIEM6IDEyLFxuICAgICAgRDogMTMsXG4gICAgICBFOiAxNCxcbiAgICAgIEY6IDE1LFxuICAgICAgRzogMTYsXG4gICAgICBIOiAxNyxcbiAgICAgIEk6IDE4LFxuICAgICAgSjogMTksXG4gICAgICBLOiAyMCxcbiAgICAgIEw6IDIxLFxuICAgICAgTTogMjIsXG4gICAgICBOOiAyMyxcbiAgICAgICcmJzogMjQsXG4gICAgICBPOiAyNSxcbiAgICAgIFA6IDI2LFxuICAgICAgUTogMjcsXG4gICAgICBSOiAyOCxcbiAgICAgIFM6IDI5LFxuICAgICAgVDogMzAsXG4gICAgICBVOiAzMSxcbiAgICAgIFY6IDMyLFxuICAgICAgVzogMzMsXG4gICAgICBYOiAzNCxcbiAgICAgIFk6IDM1LFxuICAgICAgWjogMzYsXG4gICAgICAnICc6IDM3LFxuICAgICAgw5E6IDM4XG4gICAgfTtcblxuICAgIGNvbnN0IGdldFNjb3JlID0gKGRvYzogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gZG9jLnNwbGl0KCcnKS5yZXZlcnNlKCkucmVkdWNlKChzdW0sIGNoYXIsIGkpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBpICsgMjtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBWQUxVRVNfTUFQW2NoYXJdIHx8IDA7XG4gICAgICAgIHJldHVybiBzdW0gKyB2YWx1ZSAqIGluZGV4O1xuICAgICAgfSwgMCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHBhcnNlSW5wdXQgPSAoZG9jOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBTdHJpbmcoZG9jKVxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC50b1VwcGVyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXjAtOUEtWsORXFx4MjZdL2csICcnKTtcbiAgICB9O1xuXG4gICAgY29uc3QgdmFsaWRhdGVEYXRlID0gKGRvYzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBkYXRlU3RyID0gZG9jLnNsaWNlKDAsIC0zKS5zbGljZSgtNik7XG4gICAgICBjb25zdCB5ZWFyID0gZGF0ZVN0ci5zbGljZSgwLCAyKTtcbiAgICAgIGNvbnN0IG1vbnRoID0gZGF0ZVN0ci5zbGljZSgyLCA0KTtcbiAgICAgIGNvbnN0IGRheSA9IGRhdGVTdHIuc2xpY2UoNCwgNik7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoYDIwJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHNcbiAgICAgIHJldHVybiAhaXNOYU4oZGF0ZS5nZXRUaW1lKCkpO1xuICAgIH07XG5cbiAgICBjb25zdCB2YWxpZGF0ZVZlcmlmaWNhdGlvbkRpZ2l0ID0gKGRvYzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBkaWdpdCA9IGRvYy5zbGljZSgtMSk7XG4gICAgICBjb25zdCByZmMgPSBkb2MubGVuZ3RoID09PSAxMiA/IGAgJHtkb2N9YCA6IGRvYztcbiAgICAgIGNvbnN0IGJhc2UgPSByZmMuc2xpY2UoMCwgLTEpO1xuICAgICAgY29uc3Qgc2NvcmUgPSBnZXRTY29yZShiYXNlKTtcbiAgICAgIGNvbnN0IG1vZCA9ICgxMTAwMCAtIHNjb3JlKSAlIDExO1xuICAgICAgaWYgKG1vZCA9PT0gMTEpIHJldHVybiBkaWdpdCA9PT0gJzAnO1xuICAgICAgaWYgKG1vZCA9PT0gMTApIHJldHVybiBkaWdpdCA9PT0gJ0EnO1xuICAgICAgcmV0dXJuIFN0cmluZyhtb2QpID09PSBkaWdpdDtcbiAgICB9O1xuXG4gICAgY29uc3QgaXNTcGVjaWFsQ2FzZSA9IChkb2M6IHN0cmluZykgPT4geyByZXR1cm4gZG9jIGluIFNQRUNJQUxfQ0FTRVM7IH07XG5cbiAgICBjb25zdCBoYXNGb3JiaWRkZW5Xb3JkcyA9IChkb2M6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcHJlZml4ID0gKGRvYyB8fCAnJykuc2xpY2UoMCwgNCk7XG4gICAgICByZXR1cm4gRk9SQklEREVOX1dPUkRTLmluY2x1ZGVzKHByZWZpeCk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbnB1dCA9IHBhcnNlSW5wdXQoZG9jdW1lbnQpO1xuXG4gICAgICBpZiAoaXNTcGVjaWFsQ2FzZShpbnB1dCkpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGhhc1ZhbGlkRm9ybWF0ID0gUkZDX1JFR0VYUC50ZXN0KGlucHV0KTtcbiAgICAgIGlmICghaGFzVmFsaWRGb3JtYXQpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGhhc1ZhbGlkRGF0ZSA9IHZhbGlkYXRlRGF0ZShpbnB1dCk7XG4gICAgICBpZiAoIWhhc1ZhbGlkRGF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgaGFzVmFsaWREaWdpdCA9IHZhbGlkYXRlVmVyaWZpY2F0aW9uRGlnaXQoaW5wdXQpO1xuICAgICAgaWYgKCFoYXNWYWxpZERpZ2l0KSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoaGFzRm9yYmlkZGVuV29yZHMoaW5wdXQpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG5vdCB0byBkb1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBpc1ZhbGlkVXJsKHR4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVnZXggPSAvKGh0dHBzPzpcXC9cXC8oPzpbYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT9cXC4pK1thLXowLTldW2EtejAtOS1dezAsNjF9W2EtejAtOV0pKDo/XFxkKilcXC8/KFthLXpfXFxcXC8wLTlcXC0jLl0qKVxcPz8oW2Etel9cXFxcLzAtOVxcLSM9Jl0qKS9nO1xuICAgIHJldHVybiByZWdleC50ZXN0KHR4dCk7XG4gIH1cblxuICBzdGF0aWMgaXNWYWxpZFppcENvZGUoemlwQ29kZTogc3RyaW5nLCBjb3VudHJ5Pzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGVuZ3RoID0ge1xuICAgICAgYnI6IDgsXG4gICAgICBjbDogNyxcbiAgICAgIG14OiA1XG4gICAgfVtjb3VudHJ5IHx8ICdiciddO1xuXG4gICAgcmV0dXJuIGAke3RoaXMuaGFuZGxlT25seU51bWJlcnMoemlwQ29kZSl9YC5sZW5ndGggPT09IGxlbmd0aDtcbiAgfVxuXG4gIHN0YXRpYyBpc1ZhbGlkRW1haWwoZW1haWw6IHN0cmluZykge1xuICAgIHJldHVybiAvXltcXHctLl0rQChbXFx3LV0rXFwuKStbXFx3LV17MSw2NH0kLy50ZXN0KGVtYWlsIHx8ICcnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRSYW5kb21TdHJpbmcobGVuOiBudW1iZXIsIGNoYXJTZXQ/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNoYXJTZXQgPSBjaGFyU2V0IHx8ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG5cbiAgICBjb25zdCByYW5kb21TdHJpbmc6IHN0cmluZyA9IG5ldyBBcnJheShsZW4pXG4gICAgICAuZmlsbCgnMScpXG4gICAgICAubWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGNoYXJTZXQ/LmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyU2V0Py5sZW5ndGgpKTtcbiAgICAgIH0pXG4gICAgICAuam9pbignJyk7XG4gICAgcmV0dXJuIHJhbmRvbVN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBoYW5kbGVPbmx5TnVtYmVycyh2YWx1ZTogYW55KSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCgvW14wLTldL2cpLCAnJyk7XG4gIH1cblxuICBzdGF0aWMgaGFuZGxlT25seUFscGhhTnVtZXJpYyh2YWx1ZTogYW55KSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoL1teMC05QS1aYS16XS8sICdnJyksICcnKTtcbiAgfVxuXG4gIHN0YXRpYyBjYXBpdGFsaXplKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYCR7dmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHt2YWx1ZS5zbGljZSgxKX1gO1xuICB9XG5cbiAgc3RhdGljIGZvcm1hdFppcENvZGUoemlwQ29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXppcENvZGUpIHJldHVybiB6aXBDb2RlO1xuICAgIGNvbnN0IGZvcm1hdGVkOiBzdHJpbmcgPSB6aXBDb2RlXG4gICAgICAucmVwbGFjZSgvXihcXGR7NX0pKFxcZCkvLCAnJDEtJDInKVxuICAgICAgLnJlcGxhY2UoL1xcLihcXGR7M30pKFxcZCkvLCAnLiQxLSQyJyk7XG5cbiAgICByZXR1cm4gYCR7Zm9ybWF0ZWR9YDtcbiAgfVxuXG4gIHN0YXRpYyBmb3JtYXRGaWxlU2l6ZShzaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gICAgbGV0IGwgPSAwO1xuICAgIHdoaWxlIChzaXplID49IDEwMjQgJiYgKytsKSB7XG4gICAgICBzaXplIC89IDEwMjQ7XG4gICAgfVxuICAgIHJldHVybiBgJHtzaXplLnRvRml4ZWQoc2l6ZSA8IDEwICYmIGwgPiAwID8gMSA6IDApfSAke3VuaXRzW2xdfWA7XG4gIH1cblxuICBzdGF0aWMgc3VmZmx1ZShkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBmb3IgKGxldCBpID0gZGF0YS5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogaSk7XG4gICAgICBjb25zdCB0ZW1wID0gZGF0YVtpXTtcbiAgICAgIGRhdGFbaV0gPSBkYXRhW2pdO1xuICAgICAgZGF0YVtqXSA9IHRlbXA7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgc3RhdGljIGhhbmRsZUJsb2JGaWxlKHRoZUJsb2I6IGFueSwgZmlsZU5hbWU6IHN0cmluZywgZmlsZVR5cGU6IHN0cmluZykge1xuICAgIGZ1bmN0aW9uIGJsb2JUb0ZpbGUodGhlQmxvYjogYW55LCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICBjb25zdCBiID0gdGhlQmxvYjtcbiAgICAgIGIubGFzdE1vZGlmaWVkRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICBiLm5hbWUgPSBmaWxlTmFtZTtcbiAgICAgIHJldHVybiBiO1xuICAgIH1cblxuICAgIGxldCBmaWxlOiBhbnk7XG4gICAgaWYgKCEobmF2aWdhdG9yIGFzIGFueSkubXNTYXZlQmxvYikge1xuICAgICAgZmlsZSA9IG5ldyBGaWxlKFt0aGVCbG9iXSwgZmlsZU5hbWUsIHtcbiAgICAgICAgdHlwZTogZmlsZVR5cGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZSA9IG5ldyBCbG9iKFt0aGVCbG9iXSwge1xuICAgICAgICB0eXBlOiBmaWxlVHlwZSxcbiAgICAgIH0pO1xuICAgICAgZmlsZSA9IGJsb2JUb0ZpbGUoZmlsZSwgZmlsZU5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIHN0YXRpYyB0cnVuY2F0ZSh0ZXh0OiBzdHJpbmcsIG1heExlbmd0aDogbnVtYmVyID0gMjUpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1pZENoYXIgPSAnLi4uJztcbiAgICBpZiAoIXRleHQpIHJldHVybiBtaWRDaGFyO1xuICAgIGlmICh0ZXh0ICYmIHRleHQubGVuZ3RoIDw9IG1heExlbmd0aCkgcmV0dXJuIHRleHQ7XG5cbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5jZWlsKG1heExlbmd0aCAvIDIpO1xuICAgIGNvbnN0IHJpZ2h0ID0gdGV4dC5sZW5ndGggLSBsZWZ0ICsgMTtcblxuICAgIHJldHVybiBgJHt0ZXh0LnN1YnN0cigwLCBsZWZ0KX0gJHttaWRDaGFyfSAke3RleHQuc3Vic3RyaW5nKHJpZ2h0KX1gO1xuICB9XG5cbiAgc3RhdGljIGlzTG9jYWxob3N0KCkge1xuICAgIGNvbnN0IHsgaHJlZiB9ID0gd2luZG93Py5sb2NhdGlvbjtcbiAgICBpZiAoIWhyZWYpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gaHJlZj8uc2VhcmNoKCdsb2NhbGhvc3QnKSA+PSAwO1xuICB9XG5cbiAgc3RhdGljIGlzU2FtZU9yaWdpbihmcm9udGVuZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW5pdGlhbFBhdGg6IHN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gICAgcmV0dXJuIChpbml0aWFsUGF0aCB8fCAnJykgPT09IGZyb250ZW5kO1xuICB9XG5cbiAgc3RhdGljIHJlcGxhY2VWYXJpYWJsZXMoZGF0YTogc3RyaW5nLCBvYmo6IGFueSkge1xuICAgIGxldCBoYW5kbGVkID0gZGF0YTtcbiAgICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaGFuZGxlZCA9IGhhbmRsZWQucmVwbGFjZShuZXcgUmVnRXhwKGB7JHtrZXl9fWAsICdnJyksIGAke3ZhbHVlfWApO1xuICAgIH0pO1xuICAgIHJldHVybiBoYW5kbGVkO1xuICB9XG5cbiAgc3RhdGljIHRyaW1WYWx1ZXNUb1NhdmUob2JqOiBhbnksIGZpZWxkczogc3RyaW5nW10pIHtcbiAgICBsZXQgcmV0ID0gb2JqO1xuICAgIGNvbnN0IGdyb3VwZWQgPSBmaWVsZHMuam9pbignIycpO1xuICAgIE9iamVjdC5lbnRyaWVzKG9iaikubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmIChncm91cGVkLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgcmV0ID0ge1xuICAgICAgICAgIC4uLnJldCxcbiAgICAgICAgICBba2V5XTogYCR7dmFsdWV9YC50cmltKClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNb25rZXlFY3hMb2dzRXJyb3JUeXBlcyA9ICdvaycgfFxuICAnZGVidWcnIHxcbiAgJ2luZm8nIHxcbiAgJ25vdGljZScgfFxuICAnd2FybicgfFxuICAnZXJyb3InIHxcbiAgJ2NyaXRpY2FsJyB8XG4gICdhbGVydCcgfFxuICAnZW1lcmcnO1xuXG5leHBvcnQgdHlwZSBNb25rZXlFY3hMb2dQYXJhbXMgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgY29udGV4dD86IGFueTtcbiAgZXJyb3I/OiBFcnJvcjtcbiAgdHlwZT86IE1vbmtleUVjeExvZ3NFcnJvclR5cGVzO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ua2V5RWN4TG9ncyB7XG4gIHN0YXRpYyBsb2cocGFyYW1zOiBNb25rZXlFY3hMb2dQYXJhbXMpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyB0eXBlLCBtZXNzYWdlLCBjb250ZXh0LCBlcnJvciB9ID0gcGFyYW1zO1xuICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyW3R5cGUgfHwgJ2Vycm9yJ10obWVzc2FnZSwgY29udGV4dCwgZXJyb3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIG5vdCB0byBkb1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVmZmVyVG9CYXNlNjQoYnVmZmVyOiBBcnJheUJ1ZmZlcik6IHN0cmluZyB7XG4gIGxldCBiaW5hcnkgPSAnJztcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICBjb25zdCBsZW4gPSBieXRlcy5ieXRlTGVuZ3RoO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xuICB9XG4gIHJldHVybiB3aW5kb3cuYnRvYShiaW5hcnkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFzZTY0VG9CdWZmZXIoYmFzZTY0OiBzdHJpbmcpOiBBcnJheUJ1ZmZlciB7XG4gIGNvbnN0IGJpbmFyeVN0cmluZyA9IHdpbmRvdy5hdG9iKGJhc2U2NCk7XG4gIGNvbnN0IGxlbiA9IGJpbmFyeVN0cmluZy5sZW5ndGg7XG4gIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGJ5dGVzW2ldID0gYmluYXJ5U3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gIH1cbiAgcmV0dXJuIGJ5dGVzLmJ1ZmZlcjtcbn1cbiJdfQ==
@@ -238,7 +238,7 @@ export function validateFullName(control) {
238
238
  const fullName = value.split(/\s+/);
239
239
  const hasShortPart = fullName.some(part => part.length < 2);
240
240
  if (fullName.length < 2 || hasShortPart) {
241
- return { fullNameIncompleted: true };
241
+ return { fullName: true };
242
242
  }
243
243
  return null;
244
244
  }
@@ -313,4 +313,4 @@ export class Validators {
313
313
  return validateFullName(control);
314
314
  }
315
315
  }
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxNQUFNLEdBQVEsT0FBTyxDQUFDO0FBRTVCLE1BQU0sWUFBWSxHQUFHLGtDQUFrQyxDQUFDO0FBRXhELFNBQVMsaUJBQWlCLENBQUMsS0FBVTtJQUNuQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBd0I7SUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25FLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxJQUFJLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN0QixPQUFPO1FBQ0wsS0FBSyxFQUFFLElBQUk7S0FDWixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUF3QjtJQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbkUsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFD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QixDQUFDLElBQVk7UUFDekMsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7WUFDM0QsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUF3QjtRQUM5QyxPQUFPLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE1vbmtleUVjeFV0aWxzIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IG1vbWVudDogYW55ID0gbW9tZW50XztcblxuY29uc3QgRU1BSUxfUkVHRVhQID0gL15bXFx3LS5dK0AoW1xcdy1dK1xcLikrW1xcdy1dezEsNjR9JC87XG5cbmZ1bmN0aW9uIGlzRW1wdHlJbnB1dFZhbHVlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgdmFsdWUubGVuZ3RoID09PSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW1haWxWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgdGVzdCA9IEVNQUlMX1JFR0VYUC50ZXN0KGNvbnRyb2wudmFsdWUpO1xuICBpZiAodGVzdCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiB7XG4gICAgZW1haWw6IHRydWVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVSYW5nZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGRhdGVzID0gY29udHJvbD8ucGFyZW50Py5nZXQoJ2RhdGVzJyk/LnZhbHVlO1xuICBpZiAoXG4gICAgZGF0ZXMgJiZcbiAgICAoIU1vbmtleUVjeFV0aWxzLnBlcnNpc3ROdWxsRW1wdHlVbmRlZmluZWQoZGF0ZXM/LnN0YXJ0RGF0ZSkgfHxcbiAgICAgICFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGRhdGVzPy5lbmREYXRlKSlcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGVSYW5nZTogdHJ1ZVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgdHlwZTogc3RyaW5nKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlICE9PSBgI01PTktFWSR7dHlwZX1gLnRvVXBwZXJDYXNlKCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW52YWxpZFVubG9ja1JlZ2lzdGVyOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVN0YXJ0RW5kVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgeyBwYXJlbnQgfSA9IGNvbnRyb2w7XG5cbiAgY29uc3QgdmFsdWVTdGFydCA9IHBhcmVudD8uZ2V0KCdkYXRlU3RhcnQnKT8udmFsdWU7XG4gIGNvbnN0IHZhbHVlRW5kID0gcGFyZW50Py5nZXQoJ2RhdGVFbmQnKT8udmFsdWU7XG4gIGxldCBkYXRlU3RhcnQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgbGV0IGRhdGVFbmQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgaWYgKHZhbHVlU3RhcnQpIHtcbiAgICBkYXRlU3RhcnQgPSBuZXcgRGF0ZSh2YWx1ZVN0YXJ0KTtcbiAgfVxuICBpZiAodmFsdWVFbmQpIHtcbiAgICBkYXRlRW5kID0gbmV3IERhdGUodmFsdWVFbmQpO1xuICB9XG5cbiAgaWYgKCFkYXRlRW5kIHx8ICFkYXRlU3RhcnQpIHJldHVybiBudWxsO1xuICBpZiAoZGF0ZVN0YXJ0ID4gZGF0ZUVuZCkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRlU3RhcnRNdXN0QmVMZXNzVGhhbkFuZDogdHJ1ZVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHJldHVybiBudWxsO1xuXG4gIGlmICghTW9ua2V5RWN4VXRpbHMuaXNWYWxpZFVybChjb250cm9sLnZhbHVlKSkge1xuICAgIHJldHVybiB7XG4gICAgICB1cmw6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXNzd29yZENvbmZpcm1WYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCB7IHBhcmVudCB9ID0gY29udHJvbDtcbiAgY29uc3QgcGFzc3dvcmQgPSBwYXJlbnQ/LmdldCgncGFzc3dvcmQnKT8udmFsdWU7XG4gIGNvbnN0IHBhc3N3b3JkQ29uZmlybSA9IHBhcmVudD8uZ2V0KCdwYXNzd29yZENvbmZpcm0nKT8udmFsdWU7XG4gIGlmICghcGFzc3dvcmQgfHwgIXBhc3N3b3JkQ29uZmlybSkgcmV0dXJuIG51bGw7XG4gIGlmIChwYXNzd29yZCA9PT0gcGFzc3dvcmRDb25maXJtKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4ge1xuICAgIHBhc3N3b3Jkc05vdE1hdGNoaW5nOiB0cnVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cnVlVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkgcmV0dXJuIG51bGw7XG4gIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUgIT09IGZhbHNlKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4ge1xuICAgIGludmFsaWRUcnVlOiB0cnVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21ib1ZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlICE9PSAnMCcpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiB7XG4gICAgaW52YWxpZENvbWJvOiB0cnVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB6aXBDb2RlVmFsaWRhdG9yKFxuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gIGNvdW50cnk/OiBzdHJpbmdcbik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG4gIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUpIHtcbiAgICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzVmFsaWRaaXBDb2RlKGNvbnRyb2wudmFsdWUsIGNvdW50cnkpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnZhbGlkWmlwQ29kZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvY3VtZW50VmFsaWRhdG9yKFxuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gIGNvdW50cnk6IHN0cmluZ1xuKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgY291bnRyeSA9IGAke2NvdW50cnl9YC50b1VwcGVyQ2FzZSgpO1xuICBpZiAoY291bnRyeSA9PT0gJ0JSJykge1xuICAgIGlmICghTW9ua2V5RWN4VXRpbHMuaXNDUEZDTlBKVmFsaWQoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGludmFsaWRDcGZDbnBqOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgfSBlbHNlIGlmIChjb3VudHJ5ID09PSAnQ0wnKSB7XG4gICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkUlVUKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnZhbGlkQ3BmQ25wajogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoY291bnRyeSA9PT0gJ01YJykge1xuICAgIGlmICghTW9ua2V5RWN4VXRpbHMuaXNWYWxpZFJGQyhjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW52YWxpZENwZkNucGo6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5ZZWFyc1ZhbGlkYXRvcihcbiAgcGFyYW06IG51bWJlcixcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sXG4pOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGRhdGUgPSBtb21lbnQuZGVmYXVsdChjb250cm9sLnZhbHVlKTtcbiAgY29uc3QgZGlmID0gbW9tZW50LmRlZmF1bHQoKS5kaWZmKGRhdGUsICd5ZWFycycpO1xuXG4gIGlmIChkaWYgPCBwYXJhbSkge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZhbGlkTWluWWVhcnM6IHtcbiAgICAgICAgeWVhcjogcGFyYW1cbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGRhdGVGb3JtYXQgPSAnTU0tREQtWVlZWSc7XG4gIGlmIChcbiAgICAhbW9tZW50XG4gICAgICAuZGVmYXVsdChcbiAgICAgICAgbW9tZW50LmRlZmF1bHQoY29udHJvbC52YWx1ZSkuZm9ybWF0KGRhdGVGb3JtYXQpLFxuICAgICAgICBbJ0REL01NL1lZWVknLCAnTU0tREQtWVlZWScsICdZWVlZLU1NLUREJ10sXG4gICAgICAgIHRydWVcbiAgICAgIClcbiAgICAgIC5pc1ZhbGlkKClcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludmFsaWREYXRlOiB0cnVlXG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlR3JlYXRlclRoYW5aZXJvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG5cbiAgaWYgKGNvbnRyb2wgJiYgYCR7Y29udHJvbD8udmFsdWV9YCA9PT0gJzAnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludmFsaWRWYWx1ZUdyZWF0ZXJUaGFuWmVybzogdHJ1ZVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZFdpdGhUcmltVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkgcmV0dXJuIG51bGw7XG5cbiAgaWYgKGNvbnRyb2wgJiYgIWAke2NvbnRyb2w/LnZhbHVlfWAudHJpbSgpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVudEZyb21aZXJvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgaGFuZGxlZCA9IGAke2NvbnRyb2w/LnZhbHVlfWAudHJpbSgpLnJlcGxhY2UoLzAvZywgJycpO1xuICBpZiAoY29udHJvbCAmJiAhaGFuZGxlZCkge1xuICAgIHJldHVybiB7XG4gICAgICBkaWZmZXJlbnRGcm9tWmVybzogdHJ1ZVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvY3VtZW50VmFsaWRhdG9yQnlUeXBlKFxuICB0eXBlOiBzdHJpbmcsXG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxuKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBoYW5kbGUgPSBNb25rZXlFY3hVdGlscy5oYW5kbGVPbmx5TnVtYmVycyhjb250cm9sLnZhbHVlKTtcbiAgbGV0IHZhbGlkID0gZmFsc2U7XG4gIGlmICh0eXBlID09PSAnQ1BGJyB8fCB0eXBlID09PSAnQ05QSicpIHtcbiAgICBpZiAoKHR5cGUgPT09ICdDTlBKJyAmJiBgJHtoYW5kbGV9YC5sZW5ndGggIT09IDE0KSB8fFxuICAgICAgKHR5cGUgPT09ICdDUEYnICYmIGAke2hhbmRsZX1gLmxlbmd0aCAhPT0gMTEpKSB7XG4gICAgICB2YWxpZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWxpZCA9IE1vbmtleUVjeFV0aWxzLmlzQ1BGQ05QSlZhbGlkKGNvbnRyb2wudmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSAnUlVUJykge1xuICAgIHZhbGlkID0gTW9ua2V5RWN4VXRpbHMuaXNWYWxpZFJVVChjb250cm9sLnZhbHVlKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnUkZDJykge1xuICAgIHZhbGlkID0gTW9ua2V5RWN4VXRpbHMuaXNWYWxpZFJGQyhjb250cm9sLnZhbHVlKTtcbiAgfVxuXG4gIGlmICghdmFsaWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgW2BpbnZhbGlkJHtNb25rZXlFY3hVdGlscy5jYXBpdGFsaXplKHR5cGUudG9Mb3dlckNhc2UoKSl9YF06IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZ1bGxOYW1lKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlPy50cmltKCk7XG4gIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGZ1bGxOYW1lID0gdmFsdWUuc3BsaXQoL1xccysvKTtcbiAgY29uc3QgaGFzU2hvcnRQYXJ0ID0gZnVsbE5hbWUuc29tZShwYXJ0ID0+IHBhcnQubGVuZ3RoIDwgMik7XG5cbiAgaWYgKGZ1bGxOYW1lLmxlbmd0aCA8IDIgfHwgaGFzU2hvcnRQYXJ0KSB7XG4gICAgcmV0dXJuIHsgZnVsbE5hbWVJbmNvbXBsZXRlZDogdHJ1ZSB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JzIHtcbiAgc3RhdGljIGVtYWlsKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZW1haWxWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgZGF0ZVJhbmdlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZGF0ZVJhbmdlVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIHVubG9ja1Nwb25zb3JSZWdpc3Rlcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlZ2lzdGVyVmFsaWRhdG9yKGNvbnRyb2wsICdzcG9uc29yJyk7XG4gIH1cblxuICBzdGF0aWMgdW5sb2NrQnV5ZXJSZWdpc3Rlcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlZ2lzdGVyVmFsaWRhdG9yKGNvbnRyb2wsICdidXllcicpO1xuICB9XG5cbiAgc3RhdGljIGRhdGVTdGFydEVuZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRhdGVTdGFydEVuZFZhbGlkYXRvcihjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyB1cmwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB1cmxWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgcGFzc3dvcmRDb25maXJtKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gcGFzc3dvcmRDb25maXJtVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIHRydWUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB0cnVlVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIGNvbWJvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gY29tYm9WYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgemlwQ29kZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHppcENvZGVWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgemlwQ29kZUJ5Q291bnRyeShjb3VudHJ5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIHJldHVybiB6aXBDb2RlVmFsaWRhdG9yKGNvbnRyb2wsIGNvdW50cnkpO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZG9jdW1lbnRCUihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRvY3VtZW50VmFsaWRhdG9yKGNvbnRyb2wsICdCUicpO1xuICB9XG5cbiAgc3RhdGljIGRvY3VtZW50Q0woY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBkb2N1bWVudFZhbGlkYXRvcihjb250cm9sLCAnQ0wnKTtcbiAgfVxuXG4gIHN0YXRpYyBkb2N1bWVudE1YKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZG9jdW1lbnRWYWxpZGF0b3IoY29udHJvbCwgJ01YJyk7XG4gIH1cblxuICBzdGF0aWMgZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRhdGVWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgbWluWWVhcnMocGFyYW06IG51bWJlcik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIHJldHVybiBtaW5ZZWFyc1ZhbGlkYXRvcihwYXJhbSwgY29udHJvbCk7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBncmVhdGVyVGhhblplcm8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB2YWx1ZUdyZWF0ZXJUaGFuWmVybyhjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyByZXF1aXJlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlcXVpcmVkV2l0aFRyaW1WYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgZGlmZmVyZW50RnJvbVplcm8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBkaWZmZXJlbnRGcm9tWmVybyhjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyBkb2N1bWVudFZhbGlkYXRvckJ5VHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIHJldHVybiBkb2N1bWVudFZhbGlkYXRvckJ5VHlwZSh0eXBlLCBjb250cm9sKTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIHZhbGlkYXRlRnVsbE5hbWUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB2YWxpZGF0ZUZ1bGxOYW1lKGNvbnRyb2wpO1xuICB9XG59XG4iXX0=
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxNQUFNLEdBQVEsT0FBTyxDQUFDO0FBRTVCLE1BQU0sWUFBWSxHQUFHLGtDQUFrQyxDQUFDO0FBRXhELFNBQVMsaUJBQWlCLENBQUMsS0FBVTtJQUNuQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBd0I7SUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25FLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxJQUFJLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN0QixPQUFPO1FBQ0wsS0FBSyxFQUFFLElBQUk7S0FDWixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUF3QjtJQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbkUsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFD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Q0FBQyxJQUFZO1FBQ3pDLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBQzNELE9BQU8sdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBd0I7UUFDOUMsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb25rZXlFY3hVdGlscyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBtb21lbnQ6IGFueSA9IG1vbWVudF87XG5cbmNvbnN0IEVNQUlMX1JFR0VYUCA9IC9eW1xcdy0uXStAKFtcXHctXStcXC4pK1tcXHctXXsxLDY0fSQvO1xuXG5mdW5jdGlvbiBpc0VtcHR5SW5wdXRWYWx1ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlLmxlbmd0aCA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHRlc3QgPSBFTUFJTF9SRUdFWFAudGVzdChjb250cm9sLnZhbHVlKTtcbiAgaWYgKHRlc3QpIHJldHVybiBudWxsO1xuICByZXR1cm4ge1xuICAgIGVtYWlsOiB0cnVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlUmFuZ2VWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkYXRlcyA9IGNvbnRyb2w/LnBhcmVudD8uZ2V0KCdkYXRlcycpPy52YWx1ZTtcbiAgaWYgKFxuICAgIGRhdGVzICYmXG4gICAgKCFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGRhdGVzPy5zdGFydERhdGUpIHx8XG4gICAgICAhTW9ua2V5RWN4VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChkYXRlcz8uZW5kRGF0ZSkpXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRlUmFuZ2U6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHR5cGU6IHN0cmluZyk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSAhPT0gYCNNT05LRVkke3R5cGV9YC50b1VwcGVyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludmFsaWRVbmxvY2tSZWdpc3RlcjogdHJ1ZVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVTdGFydEVuZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsgcGFyZW50IH0gPSBjb250cm9sO1xuXG4gIGNvbnN0IHZhbHVlU3RhcnQgPSBwYXJlbnQ/LmdldCgnZGF0ZVN0YXJ0Jyk/LnZhbHVlO1xuICBjb25zdCB2YWx1ZUVuZCA9IHBhcmVudD8uZ2V0KCdkYXRlRW5kJyk/LnZhbHVlO1xuICBsZXQgZGF0ZVN0YXJ0OiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIGxldCBkYXRlRW5kOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIGlmICh2YWx1ZVN0YXJ0KSB7XG4gICAgZGF0ZVN0YXJ0ID0gbmV3IERhdGUodmFsdWVTdGFydCk7XG4gIH1cbiAgaWYgKHZhbHVlRW5kKSB7XG4gICAgZGF0ZUVuZCA9IG5ldyBEYXRlKHZhbHVlRW5kKTtcbiAgfVxuXG4gIGlmICghZGF0ZUVuZCB8fCAhZGF0ZVN0YXJ0KSByZXR1cm4gbnVsbDtcbiAgaWYgKGRhdGVTdGFydCA+IGRhdGVFbmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0ZVN0YXJ0TXVzdEJlTGVzc1RoYW5BbmQ6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cmxWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzVmFsaWRVcmwoY29udHJvbC52YWx1ZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXJsOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFzc3dvcmRDb25maXJtVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBwYXJlbnQgfSA9IGNvbnRyb2w7XG4gIGNvbnN0IHBhc3N3b3JkID0gcGFyZW50Py5nZXQoJ3Bhc3N3b3JkJyk/LnZhbHVlO1xuICBjb25zdCBwYXNzd29yZENvbmZpcm0gPSBwYXJlbnQ/LmdldCgncGFzc3dvcmRDb25maXJtJyk/LnZhbHVlO1xuICBpZiAoIXBhc3N3b3JkIHx8ICFwYXNzd29yZENvbmZpcm0pIHJldHVybiBudWxsO1xuICBpZiAocGFzc3dvcmQgPT09IHBhc3N3b3JkQ29uZmlybSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICBwYXNzd29yZHNOb3RNYXRjaGluZzogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ1ZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlICE9PSBmYWxzZSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICBpbnZhbGlkVHJ1ZTogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYm9WYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcbiAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSAhPT0gJzAnKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4ge1xuICAgIGludmFsaWRDb21ibzogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gemlwQ29kZVZhbGlkYXRvcihcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICBjb3VudHJ5Pzogc3RyaW5nXG4pOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHJldHVybiBudWxsO1xuICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlKSB7XG4gICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkWmlwQ29kZShjb250cm9sLnZhbHVlLCBjb3VudHJ5KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW52YWxpZFppcENvZGU6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2N1bWVudFZhbGlkYXRvcihcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICBjb3VudHJ5OiBzdHJpbmdcbik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG4gIGNvdW50cnkgPSBgJHtjb3VudHJ5fWAudG9VcHBlckNhc2UoKTtcbiAgaWYgKGNvdW50cnkgPT09ICdCUicpIHtcbiAgICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzQ1BGQ05QSlZhbGlkKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnZhbGlkQ3BmQ25wajogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoY291bnRyeSA9PT0gJ0NMJykge1xuICAgIGlmICghTW9ua2V5RWN4VXRpbHMuaXNWYWxpZFJVVChjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW52YWxpZENwZkNucGo6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKGNvdW50cnkgPT09ICdNWCcpIHtcbiAgICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzVmFsaWRSRkMoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGludmFsaWRDcGZDbnBqOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluWWVhcnNWYWxpZGF0b3IoXG4gIHBhcmFtOiBudW1iZXIsXG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxuKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBkYXRlID0gbW9tZW50LmRlZmF1bHQoY29udHJvbC52YWx1ZSk7XG4gIGNvbnN0IGRpZiA9IG1vbWVudC5kZWZhdWx0KCkuZGlmZihkYXRlLCAneWVhcnMnKTtcblxuICBpZiAoZGlmIDwgcGFyYW0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW52YWxpZE1pblllYXJzOiB7XG4gICAgICAgIHllYXI6IHBhcmFtXG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBkYXRlRm9ybWF0ID0gJ01NLURELVlZWVknO1xuICBpZiAoXG4gICAgIW1vbWVudFxuICAgICAgLmRlZmF1bHQoXG4gICAgICAgIG1vbWVudC5kZWZhdWx0KGNvbnRyb2wudmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KSxcbiAgICAgICAgWydERC9NTS9ZWVlZJywgJ01NLURELVlZWVknLCAnWVlZWS1NTS1ERCddLFxuICAgICAgICB0cnVlXG4gICAgICApXG4gICAgICAuaXNWYWxpZCgpXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZhbGlkRGF0ZTogdHJ1ZVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUdyZWF0ZXJUaGFuWmVybyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHJldHVybiBudWxsO1xuXG4gIGlmIChjb250cm9sICYmIGAke2NvbnRyb2w/LnZhbHVlfWAgPT09ICcwJykge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZhbGlkVmFsdWVHcmVhdGVyVGhhblplcm86IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWRXaXRoVHJpbVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuXG4gIGlmIChjb250cm9sICYmICFgJHtjb250cm9sPy52YWx1ZX1gLnRyaW0oKSkge1xuICAgIHJldHVybiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbnRGcm9tWmVybyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGhhbmRsZWQgPSBgJHtjb250cm9sPy52YWx1ZX1gLnRyaW0oKS5yZXBsYWNlKC8wL2csICcnKTtcbiAgaWYgKGNvbnRyb2wgJiYgIWhhbmRsZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlmZmVyZW50RnJvbVplcm86IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2N1bWVudFZhbGlkYXRvckJ5VHlwZShcbiAgdHlwZTogc3RyaW5nLFxuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcbik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgaGFuZGxlID0gTW9ua2V5RWN4VXRpbHMuaGFuZGxlT25seU51bWJlcnMoY29udHJvbC52YWx1ZSk7XG4gIGxldCB2YWxpZCA9IGZhbHNlO1xuICBpZiAodHlwZSA9PT0gJ0NQRicgfHwgdHlwZSA9PT0gJ0NOUEonKSB7XG4gICAgaWYgKCh0eXBlID09PSAnQ05QSicgJiYgYCR7aGFuZGxlfWAubGVuZ3RoICE9PSAxNCkgfHxcbiAgICAgICh0eXBlID09PSAnQ1BGJyAmJiBgJHtoYW5kbGV9YC5sZW5ndGggIT09IDExKSkge1xuICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWQgPSBNb25rZXlFY3hVdGlscy5pc0NQRkNOUEpWYWxpZChjb250cm9sLnZhbHVlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1JVVCcpIHtcbiAgICB2YWxpZCA9IE1vbmtleUVjeFV0aWxzLmlzVmFsaWRSVVQoY29udHJvbC52YWx1ZSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1JGQycpIHtcbiAgICB2YWxpZCA9IE1vbmtleUVjeFV0aWxzLmlzVmFsaWRSRkMoY29udHJvbC52YWx1ZSk7XG4gIH1cblxuICBpZiAoIXZhbGlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtgaW52YWxpZCR7TW9ua2V5RWN4VXRpbHMuY2FwaXRhbGl6ZSh0eXBlLnRvTG93ZXJDYXNlKCkpfWBdOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGdWxsTmFtZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZT8udHJpbSgpO1xuICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBmdWxsTmFtZSA9IHZhbHVlLnNwbGl0KC9cXHMrLyk7XG4gIGNvbnN0IGhhc1Nob3J0UGFydCA9IGZ1bGxOYW1lLnNvbWUocGFydCA9PiBwYXJ0Lmxlbmd0aCA8IDIpO1xuXG4gIGlmIChmdWxsTmFtZS5sZW5ndGggPCAyIHx8IGhhc1Nob3J0UGFydCkge1xuICAgIHJldHVybiB7IGZ1bGxOYW1lOiB0cnVlIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIFZhbGlkYXRvcnMge1xuICBzdGF0aWMgZW1haWwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBlbWFpbFZhbGlkYXRvcihjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyBkYXRlUmFuZ2UoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBkYXRlUmFuZ2VWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgdW5sb2NrU3BvbnNvclJlZ2lzdGVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gcmVnaXN0ZXJWYWxpZGF0b3IoY29udHJvbCwgJ3Nwb25zb3InKTtcbiAgfVxuXG4gIHN0YXRpYyB1bmxvY2tCdXllclJlZ2lzdGVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gcmVnaXN0ZXJWYWxpZGF0b3IoY29udHJvbCwgJ2J1eWVyJyk7XG4gIH1cblxuICBzdGF0aWMgZGF0ZVN0YXJ0RW5kKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZGF0ZVN0YXJ0RW5kVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIHVybChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHVybFZhbGlkYXRvcihjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyBwYXNzd29yZENvbmZpcm0oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBwYXNzd29yZENvbmZpcm1WYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgdHJ1ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRydWVWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgY29tYm8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBjb21ib1ZhbGlkYXRvcihjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyB6aXBDb2RlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gemlwQ29kZVZhbGlkYXRvcihjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyB6aXBDb2RlQnlDb3VudHJ5KGNvdW50cnk6IHN0cmluZykge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgcmV0dXJuIHppcENvZGVWYWxpZGF0b3IoY29udHJvbCwgY291bnRyeSk7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBkb2N1bWVudEJSKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZG9jdW1lbnRWYWxpZGF0b3IoY29udHJvbCwgJ0JSJyk7XG4gIH1cblxuICBzdGF0aWMgZG9jdW1lbnRDTChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRvY3VtZW50VmFsaWRhdG9yKGNvbnRyb2wsICdDTCcpO1xuICB9XG5cbiAgc3RhdGljIGRvY3VtZW50TVgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBkb2N1bWVudFZhbGlkYXRvcihjb250cm9sLCAnTVgnKTtcbiAgfVxuXG4gIHN0YXRpYyBkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZGF0ZVZhbGlkYXRvcihjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyBtaW5ZZWFycyhwYXJhbTogbnVtYmVyKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgcmV0dXJuIG1pblllYXJzVmFsaWRhdG9yKHBhcmFtLCBjb250cm9sKTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdyZWF0ZXJUaGFuWmVybyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHZhbHVlR3JlYXRlclRoYW5aZXJvKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIHJlcXVpcmVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gcmVxdWlyZWRXaXRoVHJpbVZhbGlkYXRvcihjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyBkaWZmZXJlbnRGcm9tWmVybyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRpZmZlcmVudEZyb21aZXJvKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIGRvY3VtZW50VmFsaWRhdG9yQnlUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgcmV0dXJuIGRvY3VtZW50VmFsaWRhdG9yQnlUeXBlKHR5cGUsIGNvbnRyb2wpO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgdmFsaWRhdGVGdWxsTmFtZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHZhbGlkYXRlRnVsbE5hbWUoY29udHJvbCk7XG4gIH1cbn1cbiJdfQ==
@@ -158,6 +158,8 @@ class MonkeyEcxUtils {
158
158
  return 'RUT';
159
159
  if (country === 'mx')
160
160
  return 'RFC';
161
+ if (country === 'us')
162
+ return 'EIN';
161
163
  return doc.length <= 11 ? 'CPF' : 'CNPJ';
162
164
  }
163
165
  static getDocumentMask(type, country = '') {
@@ -205,6 +207,9 @@ class MonkeyEcxUtils {
205
207
  formated = doc.replace(/^(\d{1,2})(\d{3})(\d{3})(\w{1})$/, '$1.$2.$3-$4');
206
208
  return `${formated}`;
207
209
  }
210
+ if (country === 'us') {
211
+ return doc;
212
+ }
208
213
  if (doc.length === 14) {
209
214
  formated = doc
210
215
  .replace(/^(\d{2})(\d)/, '$1.$2')
@@ -1579,7 +1584,7 @@ function validateFullName(control) {
1579
1584
  const fullName = value.split(/\s+/);
1580
1585
  const hasShortPart = fullName.some(part => part.length < 2);
1581
1586
  if (fullName.length < 2 || hasShortPart) {
1582
- return { fullNameIncompleted: true };
1587
+ return { fullName: true };
1583
1588
  }
1584
1589
  return null;
1585
1590
  }