@discordeno/rest 19.0.0-next.e2d86ea → 19.0.0-next.e33b44e

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.
Files changed (51) hide show
  1. package/dist/cjs/index.cjs +25 -0
  2. package/dist/cjs/invalidBucket.cjs +87 -0
  3. package/dist/cjs/manager.cjs +1395 -0
  4. package/dist/cjs/queue.cjs +167 -0
  5. package/dist/cjs/routes.cjs +581 -0
  6. package/dist/cjs/types.cjs +6 -0
  7. package/dist/cjs/typings/routes.cjs +6 -0
  8. package/dist/esm/index.js +8 -0
  9. package/dist/esm/invalidBucket.js +83 -0
  10. package/dist/esm/manager.js +1353 -0
  11. package/dist/esm/queue.js +157 -0
  12. package/dist/esm/routes.js +571 -0
  13. package/dist/esm/types.js +3 -0
  14. package/dist/esm/typings/routes.js +3 -0
  15. package/dist/tsconfig.tsbuildinfo +1 -0
  16. package/dist/types/index.d.ts.map +1 -0
  17. package/dist/{invalidBucket.d.ts → types/invalidBucket.d.ts} +5 -0
  18. package/dist/types/invalidBucket.d.ts.map +1 -0
  19. package/dist/types/manager.d.ts.map +1 -0
  20. package/dist/{queue.d.ts → types/queue.d.ts} +5 -0
  21. package/dist/types/queue.d.ts.map +1 -0
  22. package/dist/types/routes.d.ts.map +1 -0
  23. package/dist/{types.d.ts → types/types.d.ts} +435 -108
  24. package/dist/types/types.d.ts.map +1 -0
  25. package/dist/{typings → types/typings}/routes.d.ts +46 -5
  26. package/dist/types/typings/routes.d.ts.map +1 -0
  27. package/package.json +29 -23
  28. package/dist/index.d.ts.map +0 -1
  29. package/dist/index.js +0 -8
  30. package/dist/index.js.map +0 -1
  31. package/dist/invalidBucket.d.ts.map +0 -1
  32. package/dist/invalidBucket.js +0 -82
  33. package/dist/invalidBucket.js.map +0 -1
  34. package/dist/manager.d.ts.map +0 -1
  35. package/dist/manager.js +0 -1112
  36. package/dist/manager.js.map +0 -1
  37. package/dist/queue.d.ts.map +0 -1
  38. package/dist/queue.js +0 -153
  39. package/dist/queue.js.map +0 -1
  40. package/dist/routes.d.ts.map +0 -1
  41. package/dist/routes.js +0 -487
  42. package/dist/routes.js.map +0 -1
  43. package/dist/types.d.ts.map +0 -1
  44. package/dist/types.js +0 -3
  45. package/dist/types.js.map +0 -1
  46. package/dist/typings/routes.d.ts.map +0 -1
  47. package/dist/typings/routes.js +0 -3
  48. package/dist/typings/routes.js.map +0 -1
  49. /package/dist/{index.d.ts → types/index.d.ts} +0 -0
  50. /package/dist/{manager.d.ts → types/manager.d.ts} +0 -0
  51. /package/dist/{routes.d.ts → types/routes.d.ts} +0 -0
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEFkZERtUmVjaXBpZW50T3B0aW9ucyxcbiAgQWRkR3VpbGRNZW1iZXJPcHRpb25zLFxuICBBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyxcbiAgQXRMZWFzdE9uZSxcbiAgQmVnaW5HdWlsZFBydW5lLFxuICBCaWdTdHJpbmcsXG4gIENhbWVsaXplLFxuICBDYW1lbGl6ZWREaXNjb3JkQWNjZXNzVG9rZW5SZXNwb25zZSxcbiAgQ2FtZWxpemVkRGlzY29yZEFjdGl2ZVRocmVhZHMsXG4gIENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbixcbiAgQ2FtZWxpemVkRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgQ2FtZWxpemVkRGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24sXG4gIENhbWVsaXplZERpc2NvcmRBcmNoaXZlZFRocmVhZHMsXG4gIENhbWVsaXplZERpc2NvcmRBdWRpdExvZyxcbiAgQ2FtZWxpemVkRGlzY29yZEF1dG9Nb2RlcmF0aW9uUnVsZSxcbiAgQ2FtZWxpemVkRGlzY29yZEJhbixcbiAgQ2FtZWxpemVkRGlzY29yZENoYW5uZWwsXG4gIENhbWVsaXplZERpc2NvcmRDb25uZWN0aW9uLFxuICBDYW1lbGl6ZWREaXNjb3JkQ3VycmVudEF1dGhvcml6YXRpb24sXG4gIENhbWVsaXplZERpc2NvcmRFbW9qaSxcbiAgQ2FtZWxpemVkRGlzY29yZEVudGl0bGVtZW50LFxuICBDYW1lbGl6ZWREaXNjb3JkRm9sbG93ZWRDaGFubmVsLFxuICBDYW1lbGl6ZWREaXNjb3JkR2V0QW5zd2VyVm90ZXNSZXNwb25zZSxcbiAgQ2FtZWxpemVkRGlzY29yZEdldEdhdGV3YXlCb3QsXG4gIENhbWVsaXplZERpc2NvcmRHdWlsZCxcbiAgQ2FtZWxpemVkRGlzY29yZEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsXG4gIENhbWVsaXplZERpc2NvcmRHdWlsZE9uYm9hcmRpbmcsXG4gIENhbWVsaXplZERpc2NvcmRHdWlsZFByZXZpZXcsXG4gIENhbWVsaXplZERpc2NvcmRHdWlsZFdpZGdldCxcbiAgQ2FtZWxpemVkRGlzY29yZEd1aWxkV2lkZ2V0U2V0dGluZ3MsXG4gIENhbWVsaXplZERpc2NvcmRJbnRlZ3JhdGlvbixcbiAgQ2FtZWxpemVkRGlzY29yZEludml0ZSxcbiAgQ2FtZWxpemVkRGlzY29yZEludml0ZU1ldGFkYXRhLFxuICBDYW1lbGl6ZWREaXNjb3JkTWVtYmVyLFxuICBDYW1lbGl6ZWREaXNjb3JkTWVtYmVyV2l0aFVzZXIsXG4gIENhbWVsaXplZERpc2NvcmRNZXNzYWdlLFxuICBDYW1lbGl6ZWREaXNjb3JkTW9kaWZ5R3VpbGRXZWxjb21lU2NyZWVuLFxuICBDYW1lbGl6ZWREaXNjb3JkUGFydGlhbEd1aWxkLFxuICBDYW1lbGl6ZWREaXNjb3JkUHJ1bmVkQ291bnQsXG4gIENhbWVsaXplZERpc2NvcmRSb2xlLFxuICBDYW1lbGl6ZWREaXNjb3JkU2NoZWR1bGVkRXZlbnQsXG4gIENhbWVsaXplZERpc2NvcmRTa3UsXG4gIENhbWVsaXplZERpc2NvcmRTdGFnZUluc3RhbmNlLFxuICBDYW1lbGl6ZWREaXNjb3JkU3RpY2tlcixcbiAgQ2FtZWxpemVkRGlzY29yZFN0aWNrZXJQYWNrLFxuICBDYW1lbGl6ZWREaXNjb3JkVGVtcGxhdGUsXG4gIENhbWVsaXplZERpc2NvcmRUaHJlYWRNZW1iZXIsXG4gIENhbWVsaXplZERpc2NvcmRUb2tlbkV4Y2hhbmdlLFxuICBDYW1lbGl6ZWREaXNjb3JkVG9rZW5SZXZvY2F0aW9uLFxuICBDYW1lbGl6ZWREaXNjb3JkVXNlcixcbiAgQ2FtZWxpemVkRGlzY29yZFZhbml0eVVybCxcbiAgQ2FtZWxpemVkRGlzY29yZFZvaWNlUmVnaW9uLFxuICBDYW1lbGl6ZWREaXNjb3JkV2ViaG9vayxcbiAgQ2FtZWxpemVkRGlzY29yZFdlbGNvbWVTY3JlZW4sXG4gIC8vIFR5cGUgaXMgcmVxdWlyZWQgZm9yIHR5cGVkb2NcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBDaGFubmVsVHlwZXMsXG4gIENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlQXV0b01vZGVyYXRpb25SdWxlT3B0aW9ucyxcbiAgQ3JlYXRlQ2hhbm5lbEludml0ZSxcbiAgQ3JlYXRlRW50aXRsZW1lbnQsXG4gIENyZWF0ZUZvcnVtUG9zdFdpdGhNZXNzYWdlLFxuICBDcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBDcmVhdGVHdWlsZCxcbiAgQ3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBDcmVhdGVHdWlsZEJhbixcbiAgQ3JlYXRlR3VpbGRCdWxrQmFuLFxuICBDcmVhdGVHdWlsZENoYW5uZWwsXG4gIENyZWF0ZUd1aWxkRW1vamksXG4gIENyZWF0ZUd1aWxkRnJvbVRlbXBsYXRlLFxuICBDcmVhdGVHdWlsZFJvbGUsXG4gIENyZWF0ZUd1aWxkU3RpY2tlck9wdGlvbnMsXG4gIENyZWF0ZU1lc3NhZ2VPcHRpb25zLFxuICBDcmVhdGVTY2hlZHVsZWRFdmVudCxcbiAgQ3JlYXRlU3RhZ2VJbnN0YW5jZSxcbiAgQ3JlYXRlVGVtcGxhdGUsXG4gIERlbGV0ZVdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgRGlzY29yZEJ1bGtCYW4sXG4gIEVkaXRBcHBsaWNhdGlvbixcbiAgRWRpdEF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnMsXG4gIEVkaXRCb3RNZW1iZXJPcHRpb25zLFxuICBFZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXNPcHRpb25zLFxuICBFZGl0R3VpbGRPbmJvYXJkaW5nLFxuICBFZGl0R3VpbGRSb2xlLFxuICBFZGl0R3VpbGRTdGlja2VyT3B0aW9ucyxcbiAgRWRpdE1lc3NhZ2UsXG4gIEVkaXRPd25Wb2ljZVN0YXRlLFxuICBFZGl0U2NoZWR1bGVkRXZlbnQsXG4gIEVkaXRVc2VyVm9pY2VTdGF0ZSxcbiAgRXhlY3V0ZVdlYmhvb2ssXG4gIEZpbGVDb250ZW50LFxuICBHZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uT3B0aW9ucyxcbiAgR2V0QmFucyxcbiAgR2V0RW50aXRsZW1lbnRzLFxuICBHZXRHcm91cERtT3B0aW9ucyxcbiAgR2V0R3VpbGRBdWRpdExvZyxcbiAgR2V0R3VpbGRQcnVuZUNvdW50UXVlcnksXG4gIEdldEludml0ZSxcbiAgR2V0TWVzc2FnZXNPcHRpb25zLFxuICBHZXRQb2xsQW5zd2VyVm90ZXMsXG4gIEdldFJlYWN0aW9ucyxcbiAgR2V0U2NoZWR1bGVkRXZlbnRVc2VycyxcbiAgR2V0U2NoZWR1bGVkRXZlbnRzLFxuICBHZXRVc2VyR3VpbGRzLFxuICBHZXRXZWJob29rTWVzc2FnZU9wdGlvbnMsXG4gIC8vIFR5cGUgaXMgcmVxdWlyZWQgZm9yIHR5cGVkb2NcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBHdWlsZEZlYXR1cmVzLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSxcbiAgSW50ZXJhY3Rpb25SZXNwb25zZSxcbiAgTGlzdEFyY2hpdmVkVGhyZWFkcyxcbiAgTGlzdEd1aWxkTWVtYmVycyxcbiAgTWZhTGV2ZWxzLFxuICBNb2RpZnlDaGFubmVsLFxuICBNb2RpZnlHdWlsZCxcbiAgTW9kaWZ5R3VpbGRDaGFubmVsUG9zaXRpb25zLFxuICBNb2RpZnlHdWlsZEVtb2ppLFxuICBNb2RpZnlHdWlsZE1lbWJlcixcbiAgTW9kaWZ5R3VpbGRUZW1wbGF0ZSxcbiAgTW9kaWZ5Um9sZVBvc2l0aW9ucyxcbiAgTW9kaWZ5V2ViaG9vayxcbiAgLy8gVHlwZSBpcyByZXF1aXJlZCBmb3IgdHlwZWRvY1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIFNjaGVkdWxlZEV2ZW50RW50aXR5VHlwZSxcbiAgLy8gVHlwZSBpcyByZXF1aXJlZCBmb3IgdHlwZWRvY1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIFNjaGVkdWxlZEV2ZW50U3RhdHVzLFxuICBTZWFyY2hNZW1iZXJzLFxuICBTdGFydFRocmVhZFdpdGhNZXNzYWdlLFxuICBTdGFydFRocmVhZFdpdGhvdXRNZXNzYWdlLFxuICBVcHNlcnRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBVcHNlcnRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBsb2dnZXIgfSBmcm9tICdAZGlzY29yZGVuby91dGlscydcbmltcG9ydCB0eXBlIHsgSW52YWxpZFJlcXVlc3RCdWNrZXQgfSBmcm9tICcuL2ludmFsaWRCdWNrZXQuanMnXG5pbXBvcnQgdHlwZSB7IFF1ZXVlIH0gZnJvbSAnLi9xdWV1ZS5qcydcbmltcG9ydCB0eXBlIHsgUmVzdFJvdXRlcyB9IGZyb20gJy4vdHlwaW5ncy9yb3V0ZXMuanMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUmVzdE1hbmFnZXJPcHRpb25zIHtcbiAgLyoqIFRoZSBib3QgdG9rZW4gd2hpY2ggd2lsbCBiZSB1c2VkIHRvIG1ha2UgcmVxdWVzdHMuICovXG4gIHRva2VuOiBzdHJpbmdcbiAgLyoqXG4gICAqIEZvciBvbGQgYm90cyB0aGF0IGhhdmUgYSBkaWZmZXJlbnQgYm90IGlkIGFuZCBhcHBsaWNhdGlvbiBpZC5cbiAgICogQGRlZmF1bHQgYm90IGlkIGZyb20gdG9rZW5cbiAgICovXG4gIGFwcGxpY2F0aW9uSWQ/OiBCaWdTdHJpbmdcbiAgLyoqIENvbmZpZ3VyYXRpb24gd2hlbiB1c2luZyBhIHByb3h5LiAqL1xuICBwcm94eT86IHtcbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSB1cmwgdG8gY29ubmVjdCB0by4gSWYgeW91IGNyZWF0ZSBhIHByb3h5IHJlc3QsIHRoYXQgdXJsIHdvdWxkIGdvIGhlcmUuXG4gICAgICogSVQgU0hPVUxEIE5PVCBFTkQgV0lUSCBBIC9cbiAgICAgKiBAZGVmYXVsdCBodHRwczovL2Rpc2NvcmQuY29tL2FwaVxuICAgICAqL1xuICAgIGJhc2VVcmw6IHN0cmluZ1xuICAgIC8qKiBUaGUgYXV0aG9yaXphdGlvbiBoZWFkZXIgdmFsdWUgdG8gYXR0YWNoIHdoZW4gc2VuZGluZyByZXF1ZXN0cyB0byB0aGUgcHJveHkuICovXG4gICAgYXV0aG9yaXphdGlvbjogc3RyaW5nXG4gICAgLyoqXG4gICAgICogVGhlIGF1dGhvcml6YXRpb24gaGVhZGVyIG5hbWUgdG8gdXNlIHdoZW4gc2VuZGluZyByZXF1ZXN0cyB0byB0aGUgcHJveHlcbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogSWYgdGhlIGBhdXRob3JpemF0aW9uYCBoZWFkZXIgaXMgdXNlZCBpdCB3aWxsIG92ZXJyaWRlIGFueSBhdXRob3JpemF0aW9uIHRoYXQgaXMgZ2l2ZW4gZXZlbiBpZlxuICAgICAqIHRoZSByZXF1ZXN0cyB1c2VzIE9BdXRoMiBCZWFyZXIgdG9rZW5zIC8gQmFzaWMgdG9rZW5zXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcImF1dGhvcml6YXRpb25cIiAvLyBGb3IgY29tcGF0aWJpbGl0eSBwdXJwb3Nlc1xuICAgICAqL1xuICAgIGF1dGhvcml6YXRpb25IZWFkZXI/OiBzdHJpbmdcbiAgfVxuICAvKipcbiAgICogVGhlIGFwaSB2ZXJzaW9ucyB3aGljaCBjYW4gYmUgdXNlZCB0byBtYWtlIHJlcXVlc3RzLlxuICAgKiBAZGVmYXVsdCAxMFxuICAgKi9cbiAgdmVyc2lvbj86IEFwaVZlcnNpb25zXG4gIC8qKlxuICAgKiBUaGUgbG9nZ2VyIHRoYXQgdGhlIHJlc3QgbWFuYWdlciB3aWxsIHVzZVxuICAgKiBAZGVmYXVsdCBsb2dnZXIgLy8gVGhlIGxvZ2dlciBleHBvcnRlZCBieSBgQGRpc2NvcmRlbm8vdXRpbHNgXG4gICAqL1xuICBsb2dnZXI/OiBQaWNrPHR5cGVvZiBsb2dnZXIsICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InIHwgJ2ZhdGFsJz5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXN0TWFuYWdlciB7XG4gIC8qKiBUaGUgYm90IHRva2VuIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBtYWtlIHJlcXVlc3RzLiAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKiBUaGUgYXBwbGljYXRpb24gaWQuIE5vcm1hbGx5IHRoaXMgaXMgbm90IHJlcXVpcmVkIGZvciByZWNlbnQgYm90cyBidXQgb2xkIGJvdCdzIGFwcGxpY2F0aW9uIGlkIGlzIHNvbWV0aW1lcyBkaWZmZXJlbnQgZnJvbSB0aGUgYm90IGlkIHNvIGl0IGlzIHJlcXVpcmVkIGZvciB0aG9zZSBib3RzLiAqL1xuICBhcHBsaWNhdGlvbklkOiBiaWdpbnRcbiAgLyoqIFRoZSBhcGkgdmVyc2lvbiB0byB1c2Ugd2hlbiBtYWtpbmcgcmVxdWVzdHMuIE9ubHkgdGhlIGxhdGVzdCBzdXBwb3J0ZWQgdmVyc2lvbiB3aWxsIGJlIHRlc3RlZC4gKi9cbiAgdmVyc2lvbjogQXBpVmVyc2lvbnNcbiAgLyoqXG4gICAqIFRoZSBiYXNlIHVybCB0byBjb25uZWN0IHRvLiBJZiB5b3UgY3JlYXRlIGEgcHJveHkgcmVzdCwgdGhhdCB1cmwgd291bGQgZ28gaGVyZS5cbiAgICogSVQgU0hPVUxEIE5PVCBFTkQgV0lUSCBBIC9cbiAgICogQGRlZmF1bHQgaHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGlcbiAgICovXG4gIGJhc2VVcmw6IHN0cmluZ1xuICAvKipcbiAgICogYHRydWVgIGlmIHRoZSBgYmFzZVVybGAgZG9lcyBub3Qgc3RhcnQgd2l0aCBgaHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGlgLlxuICAgKlxuICAgKiBNb3N0bHkgdXNlZCBvbmx5IGZvciBpbnRlcm4gZnVuY3Rpb25zLlxuICAgKi9cbiAgaXNQcm94aWVkOiBib29sZWFuXG4gIC8qKiBUaGUgYXV0aG9yaXphdGlvbiBoZWFkZXIgdmFsdWUgdG8gYXR0YWNoIHdoZW4gc2VuZGluZyByZXF1ZXN0cyB0byB0aGUgcHJveHkuICovXG4gIGF1dGhvcml6YXRpb24/OiBzdHJpbmdcbiAgLyoqIFRoZSBhdXRob3JpemF0aW9uIGhlYWRlciBuYW1lIHRvIGF0dGFjaCB3aGVuIHNlbmRpbmcgcmVxdWVzdHMgdG8gdGhlIHByb3h5ICovXG4gIGF1dGhvcml6YXRpb25IZWFkZXI6IHN0cmluZ1xuICAvKiogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWVzIGEgcmVxdWVzdCBzaG91bGQgYmUgcmV0cmllZC4gRGVmYXVsdHMgdG8gSW5maW5pdHkgKi9cbiAgbWF4UmV0cnlDb3VudDogbnVtYmVyXG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgbWFuYWdlciBpcyByYXRlIGxpbWl0ZWQgZ2xvYmFsbHkgYWNyb3NzIGFsbCByZXF1ZXN0cy4gRGVmYXVsdHMgdG8gZmFsc2UuICovXG4gIGdsb2JhbGx5UmF0ZUxpbWl0ZWQ6IGJvb2xlYW5cbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRoZSByYXRlIGxpbWl0ZWQgcGF0aHMgYXJlIGJlaW5nIHByb2Nlc3NlZCB0byBhbGxvdyByZXF1ZXN0cyB0byBiZSBtYWRlIG9uY2UgdGltZSBpcyB1cC4gRGVmYXVsdHMgdG8gZmFsc2UuICovXG4gIHByb2Nlc3NpbmdSYXRlTGltaXRlZFBhdGhzOiBib29sZWFuXG4gIC8qKiBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgZGVsZXRpbmcgdGhpcyBxdWV1ZSBpZiBpdCBpcyBlbXB0eS4gRGVmYXVsdHMgdG8gNjAwMDAob25lIG1pbnV0ZSkuICovXG4gIGRlbGV0ZVF1ZXVlRGVsYXk6IG51bWJlclxuICAvKiogVGhlIHF1ZXVlcyB0aGF0IGhvbGQgYWxsIHRoZSByZXF1ZXN0cyB0byBiZSBwcm9jZXNzZWQuICovXG4gIHF1ZXVlczogTWFwPHN0cmluZywgUXVldWU+XG4gIC8qKiBUaGUgcGF0aHMgdGhhdCBhcmUgY3VycmVudGx5IHJhdGUgbGltaXRlZC4gKi9cbiAgcmF0ZUxpbWl0ZWRQYXRoczogTWFwPHN0cmluZywgUmVzdFJhdGVMaW1pdGVkUGF0aD5cbiAgLyoqIFRoZSBidWNrZXQgZm9yIGhhbmRsaW5nIGFueSBpbnZhbGlkIHJlcXVlc3RzLiAgKi9cbiAgaW52YWxpZEJ1Y2tldDogSW52YWxpZFJlcXVlc3RCdWNrZXRcbiAgLyoqIFRoZSByb3V0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGlzIG1hbmFnZXIuICovXG4gIHJvdXRlczogUmVzdFJvdXRlc1xuICAvKiogVGhlIGxvZ2dlciB0byB1c2UgZm9yIHRoZSByZXN0IG1hbmFnZXIgKi9cbiAgbG9nZ2VyOiBQaWNrPHR5cGVvZiBsb2dnZXIsICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InIHwgJ2ZhdGFsJz5cbiAgLyoqIEFsbG93cyB0aGUgdXNlciB0byBpbmplY3QgY3VzdG9tIGhlYWRlcnMgdGhhdCB3aWxsIGJlIHNlbnQgd2l0aCBldmVyeSByZXF1ZXN0LiAqL1xuICBjcmVhdGVCYXNlSGVhZGVyczogKCkgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogV2hldGhlciBvciBub3QgdGhlIHJlc3QgbWFuYWdlciBzaG91bGQga2VlcCBvYmplY3RzIGluIHJhdyBzbmFrZSBjYXNlIGZyb20gZGlzY29yZC4gKi9cbiAgcHJlZmVyU25ha2VDYXNlOiAoZW5hYmxlZDogYm9vbGVhbikgPT4gUmVzdE1hbmFnZXJcbiAgLyoqIENoZWNrIHRoZSByYXRlIGxpbWl0cyBmb3IgYSB1cmwgb3IgYSBidWNrZXQuICovXG4gIGNoZWNrUmF0ZUxpbWl0czogKHVybDogc3RyaW5nLCBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikgPT4gbnVtYmVyIHwgZmFsc2VcbiAgLyoqIFJlc2hhcGVzIGFuZCBtb2RpZmllcyB0aGUgb2JqIGFzIG5lZWRlZCB0byBtYWtlIGl0IHJlYWR5IGZvciBkaXNjb3JkcyBhcGkuICovXG4gIGNoYW5nZVRvRGlzY29yZEZvcm1hdDogKG9iajogYW55KSA9PiBhbnlcbiAgLyoqIENyZWF0ZXMgdGhlIHJlcXVlc3QgYm9keSBhbmQgaGVhZGVycyB0aGF0IGFyZSBuZWNlc3NhcnkgdG8gc2VuZCBhIHJlcXVlc3QuIFdpbGwgaGFuZGxlIGRpZmZlcmVudCB0eXBlcyBvZiBtZXRob2RzIGFuZCBldmVyeXRoaW5nIG5lY2Vzc2FyeSBmb3IgZGlzY29yZC4gKi9cbiAgY3JlYXRlUmVxdWVzdEJvZHk6IChtZXRob2Q6IFJlcXVlc3RNZXRob2RzLCBvcHRpb25zPzogQ3JlYXRlUmVxdWVzdEJvZHlPcHRpb25zKSA9PiBSZXF1ZXN0Qm9keVxuICAvKiogVGhpcyB3aWxsIGNyZWF0ZSBhIGluZmluaXRlIGxvb3AgcnVubmluZyBpbiAxIHNlY29uZHMgdXNpbmcgdGFpbCByZWN1cnNpb24gdG8ga2VlcCByYXRlIGxpbWl0cyBjbGVhbi4gV2hlbiBhIHJhdGUgbGltaXQgcmVzZXRzLCB0aGlzIHdpbGwgcmVtb3ZlIGl0IHNvIHRoZSBxdWV1ZSBjYW4gcHJvY2VlZC4gKi9cbiAgcHJvY2Vzc1JhdGVMaW1pdGVkUGF0aHM6ICgpID0+IHZvaWRcbiAgLyoqXG4gICAqIFByb2Nlc3NlcyB0aGUgcmF0ZSBsaW1pdCBoZWFkZXJzIGFuZCBkZXRlcm1pbmVzIGlmIGl0IG5lZWRzIHRvIGJlIHJhdGUgbGltaXRlZCBhbmQgcmV0dXJucyB0aGUgYnVja2V0IGlkIGlmIGF2YWlsYWJsZVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGUgYXV0aGVudGljYXRpb25IZWFkZXIgc2hvdWxkIGJlIGRlZmluZWQgT05MWSBpZiB0aGUgcmVxdWVzdCB3YXMgZG9uZSB1c2luZyBhIE9BdXRoMiBBY2Nlc3MgVG9rZW4sIGluIG90aGVyIGNhc2VzIGl0IHNob3VsZCBiZSBwYXNzZWQgYXMgYW4gZW1wdHkgc3RyaW5nXG4gICAqL1xuICBwcm9jZXNzSGVhZGVyczogKHVybDogc3RyaW5nLCBoZWFkZXJzOiBIZWFkZXJzLCBhdXRoZW50aWNhdGlvbkhlYWRlcj86IHN0cmluZykgPT4gc3RyaW5nIHwgdW5kZWZpbmVkXG4gIC8qKiBTZW5kcyBhIHJlcXVlc3QgdG8gdGhlIGFwaS4gKi9cbiAgc2VuZFJlcXVlc3Q6IChvcHRpb25zOiBTZW5kUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFNwbGl0IGEgdXJsIHRvIHNlcGFyYXRlIHJhdGUgbGltaXQgYnVja2V0cyBiYXNlZCBvbiBtYWpvci9taW5vciBwYXJhbWV0ZXJzLiAqL1xuICBzaW1wbGlmeVVybDogKHVybDogc3RyaW5nLCBtZXRob2Q6IFJlcXVlc3RNZXRob2RzKSA9PiBzdHJpbmdcbiAgLyoqIE1ha2UgYSByZXF1ZXN0IHRvIGJlIHNlbnQgdG8gdGhlIGFwaS4gKi9cbiAgbWFrZVJlcXVlc3Q6IDxUID0gdW5rbm93bj4obWV0aG9kOiBSZXF1ZXN0TWV0aG9kcywgdXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBNYWtlUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8VD5cbiAgLyoqIFRha2VzIGEgcmVxdWVzdCBhbmQgcHJvY2Vzc2VzIGl0IGludG8gYSBxdWV1ZS4gKi9cbiAgcHJvY2Vzc1JlcXVlc3Q6IChyZXF1ZXN0OiBTZW5kUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIE1ha2UgYSBnZXQgcmVxdWVzdCB0byB0aGUgYXBpICovXG4gIGdldDogPFQgPSB2b2lkPih1cmw6IHN0cmluZywgb3B0aW9ucz86IE9taXQ8TWFrZVJlcXVlc3RPcHRpb25zLCAnYm9keSc+KSA9PiBQcm9taXNlPENhbWVsaXplPFQ+PlxuICAvKiogTWFrZSBhIHBvc3QgcmVxdWVzdCB0byB0aGUgYXBpLiAqL1xuICBwb3N0OiA8VCA9IHZvaWQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogTWFrZVJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPENhbWVsaXplPFQ+PlxuICAvKiogTWFrZSBhIHB1dCByZXF1ZXN0IHRvIHRoZSBhcGkuICovXG4gIHB1dDogPFQgPSB2b2lkPih1cmw6IHN0cmluZywgb3B0aW9ucz86IE1ha2VSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxUPj5cbiAgLyoqIE1ha2UgYSBkZWxldGUgcmVxdWVzdCB0byB0aGUgYXBpLiAqL1xuICBkZWxldGU6ICh1cmw6IHN0cmluZywgb3B0aW9ucz86IE9taXQ8TWFrZVJlcXVlc3RPcHRpb25zLCAnYm9keSc+KSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBNYWtlIGEgcGF0Y2ggcmVxdWVzdCB0byB0aGUgYXBpLiAqL1xuICBwYXRjaDogPFQgPSB2b2lkPih1cmw6IHN0cmluZywgb3B0aW9ucz86IE1ha2VSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxUPj5cbiAgLyoqXG4gICAqIEFkZHMgYSByZWFjdGlvbiB0byBhIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgdG8gYWRkIGEgcmVhY3Rpb24gdG8gaXMgaW4uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gYWRkIGEgcmVhY3Rpb24gdG8uXG4gICAqIEBwYXJhbSByZWFjdGlvbiAtIFRoZSByZWFjdGlvbiB0byBhZGQgdG8gdGhlIG1lc3NhZ2UuXG4gICAqIEByZXR1cm5zXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIElmIG5vYm9keSBlbHNlIGhhcyByZWFjdGVkIHRvIHRoZSBtZXNzYWdlOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgQUREX1JFQUNUSU9OU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBSZWFjdGlvbiBBZGRfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2NyZWF0ZS1yZWFjdGlvbn1cbiAgICovXG4gIGFkZFJlYWN0aW9uOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBBZGRzIG11bHRpcGxlIGEgcmVhY3Rpb24gdG8gYSBtZXNzYWdlLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGBhZGRSZWFjdGlvbigpYCBoZWxwZXIgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgdG8gYWRkIHJlYWN0aW9ucyB0byBpcyBpbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBhZGQgdGhlIHJlYWN0aW9ucyB0by5cbiAgICogQHBhcmFtIHJlYWN0aW9ucyAtIFRoZSByZWFjdGlvbnMgdG8gYWRkIHRvIHRoZSBtZXNzYWdlLlxuICAgKiBAcGFyYW0gb3JkZXJlZCAtIFdoZXRoZXIgdGhlIHJlYWN0aW9ucyBtdXN0IGJlIGFkZGVkIGluIG9yZGVyIG9yIG5vdC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogSWYgbm9ib2R5IGVsc2UgaGFzIHJlYWN0ZWQgdG8gdGhlIG1lc3NhZ2U6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBBRERfUkVBQ1RJT05TYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFJlYWN0aW9uIEFkZF8gZ2F0ZXdheSBldmVudCBmb3IgZXZlcnkgcmVhY3Rpb24gYWRkZWQuXG4gICAqL1xuICBhZGRSZWFjdGlvbnM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uczogc3RyaW5nW10sIG9yZGVyZWQ/OiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBBZGRzIGEgcm9sZSB0byBhIG1lbWJlci5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRoZSBtZW1iZXIgdG8gYWRkIHRoZSByb2xlIHRvIGlzIGluLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIHVzZXIgSUQgb2YgdGhlIG1lbWJlciB0byBhZGQgdGhlIHJvbGUgdG8uXG4gICAqIEBwYXJhbSByb2xlSWQgLSBUaGUgSUQgb2YgdGhlIHJvbGUgdG8gYWRkIHRvIHRoZSBtZW1iZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfUk9MRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIE1lbWJlciBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNhZGQtZ3VpbGQtbWVtYmVyLXJvbGV9XG4gICAqL1xuICBhZGRSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQWRkcyBhIG1lbWJlciB0byBhIHRocmVhZC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgdGhyZWFkIHRvIGFkZCB0aGUgbWVtYmVyIHRvLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIHVzZXIgSUQgb2YgdGhlIG1lbWJlciB0byBhZGQgdG8gdGhlIHRocmVhZC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGFiaWxpdHkgdG8gc2VuZCBtZXNzYWdlcyBpbiB0aGUgdGhyZWFkLlxuICAgKiBSZXF1aXJlcyB0aGUgdGhyZWFkIG5vdCBiZSBhcmNoaXZlZC5cbiAgICpcbiAgICogRmlyZXMgYSBfVGhyZWFkIE1lbWJlcnMgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNhZGQtdGhyZWFkLW1lbWJlcn1cbiAgICovXG4gIGFkZFRocmVhZE1lbWJlcjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQWRkcyBhIHJlY2lwaWVudCB0byBhIGdyb3VwIERNLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBncm91cCBkbSB0byBhZGQgdGhlIHVzZXIgdG8uXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgdXNlciBJRCBvZiB0aGUgdXNlciB0byBhZGQgdG8gdGhlIGdyb3VwIGRtLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBhZGRpbmcgdGhlIHVzZXJcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgYW4gT0F1dGgyIGFjY2VzcyB0b2tlbiB3aXRoIHRoZSBgZ2RtLmpvaW5gIHNjb3BlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2dyb3VwLWRtLWFkZC1yZWNpcGllbnR9XG4gICAqL1xuICBhZGREbVJlY2lwaWVudDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQWRkRG1SZWNpcGllbnRPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBBZGRzIGEgbWVtYmVyIHRvIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSB0aHJlYWQgdG8gYWRkIHRoZSBtZW1iZXIgdG8uXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgdXNlciBJRCBvZiB0aGUgbWVtYmVyIHRvIGFkZCB0byB0aGUgdGhyZWFkLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgYWRkIG9mIGEgZ3VpbGQgbWVtYmVyXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBib3QgdG8gYmUgaW4gdGhlIHNwZWNpZmllZCBzZXJ2ZXJcbiAgICogUmVxdWlyZXMgYW4gT0F1dGgyIGFjY2VzcyB0b2tlbiB3aXRoIHRoZSBgZ3VpbGRzLmpvaW5gIHNjb3BlXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIE1lbWJlciBBZGRfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNhZGQtZ3VpbGQtbWVtYmVyfVxuICAgKi9cbiAgYWRkR3VpbGRNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBBZGRHdWlsZE1lbWJlck9wdGlvbnMpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXV0b21vZCBydWxlIGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBjcmVhdGUgdGhlIHJ1bGUgaW4uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgcnVsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEF1dG9Nb2RlcmF0aW9uUnVsZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhbiBfQXV0byBNb2RlcmF0aW9uIFJ1bGUgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvYXV0by1tb2RlcmF0aW9uI2NyZWF0ZS1hdXRvLW1vZGVyYXRpb24tcnVsZX1cbiAgICovXG4gIGNyZWF0ZUF1dG9tb2RSdWxlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVBdXRvTW9kZXJhdGlvblJ1bGVPcHRpb25zLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEF1dG9Nb2RlcmF0aW9uUnVsZT5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjaGFubmVsIHdpdGhpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gY3JlYXRlIHRoZSBjaGFubmVsIHdpdGhpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBjaGFubmVsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQ2hhbm5lbH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0NIQU5ORUxTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBJZiBzZXR0aW5nIHBlcm1pc3Npb24gb3ZlcndyaXRlcywgb25seSB0aGUgcGVybWlzc2lvbnMgdGhlIGJvdCB1c2VyIGhhcyBpbiB0aGUgZ3VpbGQgY2FuIGJlIGFsbG93ZWQgb3IgZGVuaWVkLlxuICAgKlxuICAgKiBTZXR0aW5nIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uIGlzIG9ubHkgcG9zc2libGUgZm9yIGd1aWxkIGFkbWluaXN0cmF0b3JzLlxuICAgKlxuICAgKiBGaXJlcyBhIF9DaGFubmVsIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2NyZWF0ZS1ndWlsZC1jaGFubmVsfVxuICAgKi9cbiAgY3JlYXRlQ2hhbm5lbDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRDaGFubmVsLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZENoYW5uZWw+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVtb2ppIGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCBpbiB3aGljaCB0byBjcmVhdGUgdGhlIGVtb2ppLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIGVtb2ppLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkRW1vaml9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRW1vamlzIGhhdmUgYSBtYXhpbXVtIGZpbGUgc2l6ZSBvZiAyNTYga2lsb2JpdHMuIEF0dGVtcHRpbmcgdG8gdXBsb2FkIGEgbGFyZ2VyIGVtb2ppIHdpbGwgY2F1c2UgdGhlIHJvdXRlIHRvIHJldHVybiA0MDAgQmFkIFJlcXVlc3QuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIEVtb2ppcyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9lbW9qaSNjcmVhdGUtZ3VpbGQtZW1vaml9XG4gICAqL1xuICBjcmVhdGVFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRFbW9qaSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRFbW9qaT5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgdGhyZWFkIGluIGEgZm9ydW0gY2hhbm5lbCBvciBtZWRpYSBjaGFubmVsLCBhbmQgc2VuZHMgYSBtZXNzYWdlIHdpdGhpbiB0aGUgY3JlYXRlZCB0aHJlYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGZvcnVtIGNoYW5uZWwgdG8gY3JlYXRlIHRoZSB0aHJlYWQgd2l0aGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIHRocmVhZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZENoYW5uZWx9IHdpdGggYSBuZXN0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRDaGFubmVsfSBvYmplY3QuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQ1JFQVRFX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9UaHJlYWQgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjc3RhcnQtdGhyZWFkLWluLWZvcnVtLW9yLW1lZGlhLWNoYW5uZWx9XG4gICAqL1xuICBjcmVhdGVGb3J1bVRocmVhZDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVGb3J1bVBvc3RXaXRoTWVzc2FnZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRDaGFubmVsPlxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBhcHBsaWNhdGlvbiBjb21tYW5kIGFjY2Vzc2libGUgZ2xvYmFsbHk7IGFjcm9zcyBkaWZmZXJlbnQgZ3VpbGRzIGFuZCBjaGFubmVscy5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBjcmVhdGUuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgZW5kcG9pbnRcbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmR9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiDimqDvuI8gQ3JlYXRpbmcgYSBjb21tYW5kIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhbiBleGlzdGluZyBjb21tYW5kIGZvciB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgb3ZlcndyaXRlIHRoZSBvbGQgY29tbWFuZC5cbiAgICog4pqg77iPIEdsb2JhbCBjb21tYW5kcyBvbmNlIGNyZWF0ZWQgYXJlIGNhY2hlZCBmb3IgcGVyaW9kcyBvZiBfX2FuIGhvdXJfXywgc28gY2hhbmdlcyBtYWRlIHRvIGV4aXN0aW5nIGNvbW1hbmRzIHdpbGwgdGFrZSBhbiBob3VyIHRvIHN1cmZhY2UuXG4gICAqIOKaoO+4jyBZb3UgY2FuIG9ubHkgY3JlYXRlIHVwIHRvIDIwMCBfbmV3XyBjb21tYW5kcyBkYWlseS5cbiAgICpcbiAgICogV2hlbiB1c2luZyB0aGUgYmVhcmVyIHRva2VuIHRoZSB0b2tlbiBuZWVkcyB0aGUgYGFwcGxpY2F0aW9ucy5jb21tYW5kcy51cGRhdGVgIHNjb3BlIGFuZCBtdXN0IGJlIGEgYENsaWVudCBncmFudGAgdG9rZW4uXG4gICAqICBZb3Ugd2lsbCBiZSBhYmxlIHRvIHVwZGF0ZSBvbmx5IHlvdXIgb3duIGFwcGxpY2F0aW9uIGNvbW1hbmRzXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9hcHBsaWNhdGlvbi1jb21tYW5kcyNjcmVhdGUtZ2xvYmFsLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IChcbiAgICBjb21tYW5kOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gICAgb3B0aW9ucz86IENyZWF0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkQXBwbGljYXRpb25Db21tYW5kPlxuICAvKipcbiAgICogQ3JlYXRlcyBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIGd1aWxkLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEd1aWxkfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICog4pqg77iPIFRoaXMgcm91dGUgY2FuIG9ubHkgYmUgdXNlZCBieSBib3RzIGluIF9fZmV3ZXIgdGhhbiAxMCBndWlsZHNfXy5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjY3JlYXRlLWd1aWxkfVxuICAgKi9cbiAgY3JlYXRlR3VpbGQ6IChvcHRpb25zOiBDcmVhdGVHdWlsZCkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkR3VpbGQ+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFwcGxpY2F0aW9uIGNvbW1hbmQgb25seSBhY2Nlc3NpYmxlIGluIGEgc3BlY2lmaWMgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gY3JlYXRlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBlbmRwb2ludFxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIOKaoO+4jyBDcmVhdGluZyBhIGNvbW1hbmQgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGFuIGV4aXN0aW5nIGNvbW1hbmQgZm9yIHlvdXIgYXBwbGljYXRpb24gd2lsbCBvdmVyd3JpdGUgdGhlIG9sZCBjb21tYW5kLlxuICAgKiDimqDvuI8gWW91IGNhbiBvbmx5IGNyZWF0ZSB1cCB0byAyMDAgX25ld18gY29tbWFuZHMgZGFpbHkuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgdGhlIGJlYXJlciB0b2tlbiB0aGUgdG9rZW4gbmVlZHMgdGhlIGBhcHBsaWNhdGlvbnMuY29tbWFuZHMudXBkYXRlYCBzY29wZSBhbmQgbXVzdCBiZSBhIGBDbGllbnQgZ3JhbnRgIHRva2VuLlxuICAgKiAgWW91IHdpbGwgYmUgYWJsZSB0byB1cGRhdGUgb25seSB5b3VyIG93biBhcHBsaWNhdGlvbiBjb21tYW5kc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjY3JlYXRlLWd1aWxkLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKFxuICAgIGNvbW1hbmQ6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IENyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZ3VpbGQgZnJvbSBhIHRlbXBsYXRlLlxuICAgKlxuICAgKiBAcGFyYW0gdGVtcGxhdGVDb2RlIC0gVGhlIGNvZGUgb2YgdGhlIHRlbXBsYXRlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIGd1aWxkLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEd1aWxkfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICog4pqg77iPIFRoaXMgcm91dGUgY2FuIG9ubHkgYmUgdXNlZCBieSBib3RzIGluIF9fZmV3ZXIgdGhhbiAxMCBndWlsZHNfXy5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtdGVtcGxhdGUjY3JlYXRlLWd1aWxkLWZyb20tZ3VpbGQtdGVtcGxhdGV9XG4gICAqL1xuICBjcmVhdGVHdWlsZEZyb21UZW1wbGF0ZTogKHRlbXBsYXRlQ29kZTogc3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZEZyb21UZW1wbGF0ZSkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkR3VpbGQ+XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc3RpY2tlciBmb3IgdGhlIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm4gQSB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFN0aWNrZXJ9XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQ1JFQVRFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKiBGaXJlcyBhIEd1aWxkIFN0aWNrZXJzIFVwZGF0ZSBHYXRld2F5IGV2ZW50LlxuICAgKiBFdmVyeSBndWlsZHMgaGFzIGZpdmUgZnJlZSBzdGlja2VyIHNsb3RzIGJ5IGRlZmF1bHQsIGFuZCBlYWNoIEJvb3N0IGxldmVsIHdpbGwgZ3JhbnQgYWNjZXNzIHRvIG1vcmUgc2xvdHMuXG4gICAqIExvdHRpZSBzdGlja2VycyBjYW4gb25seSBiZSB1cGxvYWRlZCBvbiBndWlsZHMgdGhhdCBoYXZlIGVpdGhlciB0aGUgYFZFUklGSUVEYCBhbmQvb3IgdGhlIGBQQVJUTkVSRURgIGd1aWxkIGZlYXR1cmUuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9zdGlja2VyI2NyZWF0ZS1ndWlsZC1zdGlja2VyfVxuICAgKi9cbiAgY3JlYXRlR3VpbGRTdGlja2VyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZFN0aWNrZXJPcHRpb25zLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFN0aWNrZXI+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGVtcGxhdGUgZnJvbSBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gY3JlYXRlIHRoZSB0ZW1wbGF0ZSBmcm9tLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIHRlbXBsYXRlLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFRlbXBsYXRlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkLXRlbXBsYXRlI2NyZWF0ZS1ndWlsZC10ZW1wbGF0ZX1cbiAgICovXG4gIGNyZWF0ZUd1aWxkVGVtcGxhdGU6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZVRlbXBsYXRlKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRUZW1wbGF0ZT5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW52aXRlIHRvIGEgY2hhbm5lbCBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIGNyZWF0ZSB0aGUgaW52aXRlIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIGludml0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEludml0ZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQ1JFQVRFX0lOU1RBTlRfSU5WSVRFYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhbiBfSW52aXRlIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHByaXZhdGVSZW1hcmtzXG4gICAqIFRoZSByZXF1ZXN0IGJvZHkgaXMgbm90IG9wdGlvbmFsLCBhbmQgYW4gZW1wdHkgSlNPTiBvYmplY3QgbXVzdCBiZSBzZW50IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhbnkgZmllbGRzIGFyZSBiZWluZyB0cmFuc21pdHRlZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjY3JlYXRlLWNoYW5uZWwtaW52aXRlfVxuICAgKi9cbiAgY3JlYXRlSW52aXRlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBDcmVhdGVDaGFubmVsSW52aXRlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEludml0ZT5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByb2xlIGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBjcmVhdGUgdGhlIHJvbGUgaW4uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgcm9sZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFJvbGV9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9ST0xFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgUm9sZSBDcmVhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNjcmVhdGUtZ3VpbGQtcm9sZX1cbiAgICovXG4gIGNyZWF0ZVJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkUm9sZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRSb2xlPlxuICAvKipcbiAgICogQ3JlYXRlcyBhIHNjaGVkdWxlZCBldmVudCBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gY3JlYXRlIHRoZSBzY2hlZHVsZWQgZXZlbnQgaW4uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgc2NoZWR1bGVkIGV2ZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkU2NoZWR1bGVkRXZlbnR9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9FVkVOVFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEEgZ3VpbGQgY2FuIG9ubHkgaGF2ZSBhIG1heGltdW0gb2YgMTAwIGV2ZW50cyB3aXRoIGEgc3RhdHVzIG9mIHtAbGluayBTY2hlZHVsZWRFdmVudFN0YXR1c30uQWN0aXZlIG9yIHtAbGluayBTY2hlZHVsZWRFdmVudFN0YXR1c30uU2NoZWR1bGVkIChpbmNsdXNpdmUpLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBTY2hlZHVsZWQgRXZlbnQgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtc2NoZWR1bGVkLWV2ZW50I2NyZWF0ZS1ndWlsZC1zY2hlZHVsZWQtZXZlbnR9XG4gICAqL1xuICBjcmVhdGVTY2hlZHVsZWRFdmVudDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlU2NoZWR1bGVkRXZlbnQsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkU2NoZWR1bGVkRXZlbnQ+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc3RhZ2UgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGEgc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBzdGFnZSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFN0YWdlSW5zdGFuY2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgdXNlciB0byBiZSBhIG1vZGVyYXRvciBvZiB0aGUgc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogRmlyZXMgYSBfU3RhZ2UgSW5zdGFuY2UgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvc3RhZ2UtaW5zdGFuY2UjY3JlYXRlLXN0YWdlLWluc3RhbmNlfVxuICAgKi9cbiAgY3JlYXRlU3RhZ2VJbnN0YW5jZTogKG9wdGlvbnM6IENyZWF0ZVN0YWdlSW5zdGFuY2UsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkU3RhZ2VJbnN0YW5jZT5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB3ZWJob29rLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIGNyZWF0ZSB0aGUgd2ViaG9vayBpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSB3ZWJob29rLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkV2ViaG9va30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiDimqDvuI8gVGhlIHdlYmhvb2sgbmFtZSBtdXN0IG5vdCBjb250YWluIHRoZSBzdWJzdHJpbmdzICdjbHlkZScsIG9yICdkaXNjb3JkJyAoY2FzZS1pbnNlbnNpdGl2ZSkuXG4gICAqXG4gICAqIEZpcmVzIGEgX1dlYmhvb2tzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjY3JlYXRlLXdlYmhvb2t9XG4gICAqL1xuICBjcmVhdGVXZWJob29rOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZVdlYmhvb2ssIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkV2ViaG9vaz5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gYXV0b21vZCBydWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZGVsZXRlIHRoZSBydWxlIGZyb20uXG4gICAqIEBwYXJhbSBydWxlSWQgLSBUaGUgSUQgb2YgdGhlIGF1dG9tb2QgcnVsZSB0byBkZWxldGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGFuIF9BdXRvIE1vZGVyYXRpb24gUnVsZSBEZWxldGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9hdXRvLW1vZGVyYXRpb24jZGVsZXRlLWF1dG8tbW9kZXJhdGlvbi1ydWxlfVxuICAgKi9cbiAgZGVsZXRlQXV0b21vZFJ1bGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJ1bGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSBjaGFubmVsIGZyb20gd2l0aGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZGVsZXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIG5vdGhpbmdcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRm9yIGNvbW11bml0eSBndWlsZHMsIHRoZSBfUnVsZXNfLCBfR3VpZGVsaW5lc18gYW5kIF9Db21tdW5pdHkgVXBkYXRlXyBjaGFubmVscyBjYW5ub3QgYmUgZGVsZXRlZC5cbiAgICpcbiAgICogSWYgdGhlIGNoYW5uZWwgaXMgYSB0aHJlYWQ6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBNQU5BR0VfVEhSRUFEU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogLSBGaXJlcyBhIF9UaHJlYWQgRGVsZXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBPdGhlcndpc2U6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBNQU5BR0VfQ0hBTk5FTFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIC0g4pqg77iPIERlbGV0aW5nIGEgY2F0ZWdvcnkgY2hhbm5lbCBkb2VzIG5vdCBkZWxldGUgaXRzIGNoaWxkIGNoYW5uZWxzLlxuICAgKiAgIEluc3RlYWQsIHRoZXkgd2lsbCBoYXZlIHRoZWlyIGBwYXJlbnRfaWRgIHByb3BlcnR5IHJlbW92ZWQsIGFuZCBhIGBDaGFubmVsIFVwZGF0ZWAgZ2F0ZXdheSBldmVudCB3aWxsIGZpcmUgZm9yIGVhY2ggb2YgdGhlbS5cbiAgICpcbiAgICogLSBGaXJlcyBhIF9DaGFubmVsIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZGVsZXRlY2xvc2UtY2hhbm5lbH1cbiAgICovXG4gIGRlbGV0ZUNoYW5uZWw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgcGVybWlzc2lvbiBvdmVycmlkZSBmb3IgYSB1c2VyIG9yIHJvbGUgaW4gYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIGRlbGV0ZSB0aGUgcGVybWlzc2lvbiBvdmVycmlkZSBvZi5cbiAgICogQHBhcmFtIG92ZXJ3cml0ZUlkIC0gVGhlIElEIG9mIHRoZSBwZXJtaXNzaW9uIG92ZXJyaWRlIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9ST0xFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfQ2hhbm5lbCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2RlbGV0ZS1jaGFubmVsLXBlcm1pc3Npb259XG4gICAqL1xuICBkZWxldGVDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG92ZXJ3cml0ZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhbiBlbW9qaSBmcm9tIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCBmcm9tIHdoaWNoIHRvIGRlbGV0ZSB0aGUgZW1vamkuXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBJRCBvZiB0aGUgZW1vamkgdG8gZGVsZXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZvciBlbW9qaXMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLCByZXF1aXJlcyBlaXRoZXIgdGhlIGBDUkVBVEVfR1VJTERfRVhQUkVTU0lPTlNgIG9yIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqIEZvciBvdGhlciBlbW9qaXMsIHJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBFbW9qaXMgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZW1vamkjZGVsZXRlLWd1aWxkLWVtb2ppfVxuICAgKi9cbiAgZGVsZXRlRW1vamk6IChndWlsZElkOiBCaWdTdHJpbmcsIGlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIGZvbGxvdy11cCBtZXNzYWdlIHRvIGFuIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgaW50ZXJhY3Rpb24gdG9rZW4gdG8gdXNlLCBwcm92aWRlZCBpbiB0aGUgb3JpZ2luYWwgaW50ZXJhY3Rpb24uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZGVsZXRlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVbmxpa2UgYGRlbGV0ZU1lc3NhZ2UoKWAsIHRoaXMgZW5kcG9pbnQgYWxsb3dzIHRoZSBib3QgdXNlciB0byBhY3Qgd2l0aG91dCBuZWVkaW5nIHRvIHNlZSB0aGUgY2hhbm5lbCB0aGUgbWVzc2FnZSBpcyBpbi5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBEZWxldGVfIGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvcmVjZWl2aW5nLWFuZC1yZXNwb25kaW5nI2RlbGV0ZS1mb2xsb3d1cC1tZXNzYWdlfVxuICAgKi9cbiAgZGVsZXRlRm9sbG93dXBNZXNzYWdlOiAodG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gYXBwbGljYXRpb24gY29tbWFuZCByZWdpc3RlcmVkIGdsb2JhbGx5LlxuICAgKlxuICAgKiBAcGFyYW0gY29tbWFuZElkIC0gVGhlIElEIG9mIHRoZSBjb21tYW5kIHRvIGRlbGV0ZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2RlbGV0ZS1nbG9iYWwtYXBwbGljYXRpb24tY29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBkZWxldGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSBib3QgdXNlciBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgZ3VpbGQuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2RlbGV0ZS1ndWlsZH1cbiAgICovXG4gIGRlbGV0ZUd1aWxkOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGFwcGxpY2F0aW9uIGNvbW1hbmQgcmVnaXN0ZXJlZCBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZGVsZXRlIHRoZSBjb21tYW5kIGZyb20uXG4gICAqIEBwYXJhbSBjb21tYW5kSWQgLSBUaGUgSUQgb2YgdGhlIGNvbW1hbmQgdG8gZGVsZXRlIGZyb20gdGhlIGd1aWxkLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjZGVsZXRlLWd1aWxkLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIG5ldyBzdGlja2VyIGZvciB0aGUgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybiBBIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkU3RpY2tlcn1cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRm9yIHN0aWNrZXJzIGNyZWF0ZWQgYnkgdGhlIGN1cnJlbnQgdXNlciwgcmVxdWlyZXMgZWl0aGVyIHRoZSBgQ1JFQVRFX0dVSUxEX0VYUFJFU1NJT05TYCBvciBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKiBGb3Igb3RoZXIgc3RpY2tlcnMsIHJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKiBGaXJlcyBhIEd1aWxkIFN0aWNrZXJzIFVwZGF0ZSBHYXRld2F5IGV2ZW50LlxuICAgKiBFdmVyeSBndWlsZHMgaGFzIGZpdmUgZnJlZSBzdGlja2VyIHNsb3RzIGJ5IGRlZmF1bHQsIGFuZCBlYWNoIEJvb3N0IGxldmVsIHdpbGwgZ3JhbnQgYWNjZXNzIHRvIG1vcmUgc2xvdHMuXG4gICAqIExvdHRpZSBzdGlja2VycyBjYW4gb25seSBiZSB1cGxvYWRlZCBvbiBndWlsZHMgdGhhdCBoYXZlIGVpdGhlciB0aGUgYFZFUklGSUVEYCBhbmQvb3IgdGhlIGBQQVJUTkVSRURgIGd1aWxkIGZlYXR1cmUuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9zdGlja2VyI2RlbGV0ZS1ndWlsZC1zdGlja2VyfVxuICAgKi9cbiAgZGVsZXRlR3VpbGRTdGlja2VyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBzdGlja2VySWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgdGVtcGxhdGUgZnJvbSBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZGVsZXRlIHRoZSB0ZW1wbGF0ZSBmcm9tLlxuICAgKiBAcGFyYW0gdGVtcGxhdGVDb2RlIC0gVGhlIGNvZGUgb2YgdGhlIHRlbXBsYXRlIHRvIGRlbGV0ZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkLXRlbXBsYXRlI2RlbGV0ZS1ndWlsZC10ZW1wbGF0ZX1cbiAgICovXG4gIGRlbGV0ZUd1aWxkVGVtcGxhdGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHRlbXBsYXRlQ29kZTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGludGVncmF0aW9uIGF0dGFjaGVkIHRvIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCBmcm9tIHdoaWNoIHRvIGRlbGV0ZSB0aGUgaW50ZWdyYXRpb24uXG4gICAqIEBwYXJhbSBpbnRlZ3JhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBpbnRlZ3JhdGlvbiB0byBkZWxldGUgZnJvbSB0aGUgZ3VpbGQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIERlbGV0ZXMgYWxsIHdlYmhvb2tzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW50ZWdyYXRpb24sIGFuZCBraWNrcyB0aGUgYXNzb2NpYXRlZCBib3QgaWYgdGhlcmUgaXMgb25lLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBJbnRlZ3JhdGlvbnMgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKiBGaXJlcyBhIF9JbnRlZ3JhdGlvbiBEZWxldGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNkZWxldGUtZ3VpbGQtaW50ZWdyYXRpb259XG4gICAqL1xuICBkZWxldGVJbnRlZ3JhdGlvbjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgaW50ZWdyYXRpb25JZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaW52aXRlIHRvIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGludml0ZUNvZGUgLSBUaGUgaW52aXRlIGNvZGUgb2YgdGhlIGludml0ZSB0byBkZWxldGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfQ0hBTk5FTFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGFuIF9JbnZpdGUgRGVsZXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNkZWxldGUtY2hhbm5lbC1pbnZpdGV9XG4gICAqL1xuICBkZWxldGVJbnZpdGU6IChpbnZpdGVDb2RlOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIG1lc3NhZ2UgZnJvbSBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZGVsZXRlIHRoZSBtZXNzYWdlIGZyb20uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZGVsZXRlIGZyb20gdGhlIGNoYW5uZWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSWYgbm90IGRlbGV0aW5nIG93biBtZXNzYWdlOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZGVsZXRlLW1lc3NhZ2V9XG4gICAqL1xuICBkZWxldGVNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgbXVsdGlwbGUgbWVzc2FnZXMgZnJvbSBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZGVsZXRlIHRoZSBtZXNzYWdlcyBmcm9tLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkcyAtIFRoZSBJRHMgb2YgdGhlIG1lc3NhZ2VzIHRvIGRlbGV0ZSBmcm9tIHRoZSBjaGFubmVsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiDimqDvuI8gTWVzc2FnZXMgb2xkZXIgdGhhbiAyIHdlZWtzIG9sZCBjYW5ub3QgYmUgZGVsZXRlZC5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBEZWxldGUgQnVsa18gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjYnVsay1kZWxldGUtbWVzc2FnZXN9XG4gICAqL1xuICBkZWxldGVNZXNzYWdlczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWRzOiBCaWdTdHJpbmdbXSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIHRoZSBpbml0aWFsIG1lc3NhZ2UgcmVzcG9uc2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVW5saWtlIGBkZWxldGVNZXNzYWdlKClgLCB0aGlzIGVuZHBvaW50IGFsbG93cyB0aGUgYm90IHVzZXIgdG8gYWN0IHdpdGhvdXQgbmVlZGluZyB0byBzZWUgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgaXMgaW4uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgRGVsZXRlXyBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL3JlY2VpdmluZy1hbmQtcmVzcG9uZGluZyNkZWxldGUtb3JpZ2luYWwtaW50ZXJhY3Rpb24tcmVzcG9uc2V9XG4gICAqL1xuICBkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6ICh0b2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgcmVhY3Rpb24gYWRkZWQgYnkgdGhlIGJvdCB1c2VyIGZyb20gYSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZSB0aGUgcmVhY3Rpb24gZnJvbSBpcyBpbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkZWxldGUgdGhlIHJlYWN0aW9uIGZyb20uXG4gICAqIEBwYXJhbSByZWFjdGlvbiAtIFRoZSByZWFjdGlvbiB0byBkZWxldGUgZnJvbSB0aGUgbWVzc2FnZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBSZWFjdGlvbiBSZW1vdmVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2RlbGV0ZS1vd24tcmVhY3Rpb259XG4gICAqL1xuICBkZWxldGVPd25SZWFjdGlvbjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhbGwgcmVhY3Rpb25zIGZvciBhbGwgZW1vamlzIGZyb20gYSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZSB0aGUgcmVhY3Rpb25zIGZyb20gaXMgaW4uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZGVsZXRlIHRoZSByZWFjdGlvbnMgZnJvbS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgUmVhY3Rpb24gUmVtb3ZlIEFsbF8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZGVsZXRlLWFsbC1yZWFjdGlvbnN9XG4gICAqL1xuICBkZWxldGVSZWFjdGlvbnNBbGw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIHJlYWN0aW9ucyBmb3IgYW4gZW1vamkgZnJvbSBhIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgdG8gZGVsZXRlIHRoZSByZWFjdGlvbnMgZnJvbSBpcyBpbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkZWxldGUgdGhlIHJlYWN0aW9ucyBmcm9tLlxuICAgKiBAcGFyYW0gcmVhY3Rpb24gLSBUaGUgcmVhY3Rpb24gdG8gcmVtb3ZlIGZyb20gdGhlIG1lc3NhZ2UuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFJlYWN0aW9uIFJlbW92ZSBFbW9qaV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZGVsZXRlLWFsbC1yZWFjdGlvbnMtZm9yLWVtb2ppfVxuICAgKi9cbiAgZGVsZXRlUmVhY3Rpb25zRW1vamk6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSByb2xlIGZyb20gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGRlbGV0ZSB0aGUgcm9sZSBmcm9tLlxuICAgKiBAcGFyYW0gcm9sZUlkIC0gVGhlIElEIG9mIHRoZSByb2xlIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9ST0xFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgUm9sZSBEZWxldGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNkZWxldGUtZ3VpbGQtcm9sZX1cbiAgICovXG4gIGRlbGV0ZVJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSBzY2hlZHVsZWQgZXZlbnQgZnJvbSBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZGVsZXRlIHRoZSBzY2hlZHVsZWQgZXZlbnQgZnJvbS5cbiAgICogQHBhcmFtIGV2ZW50SWQgLSBUaGUgSUQgb2YgdGhlIHNjaGVkdWxlZCBldmVudCB0byBkZWxldGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0VWRU5UU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgU2NoZWR1bGVkIEV2ZW50IERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkLXNjaGVkdWxlZC1ldmVudCNkZWxldGUtZ3VpbGQtc2NoZWR1bGVkLWV2ZW50fVxuICAgKi9cbiAgZGVsZXRlU2NoZWR1bGVkRXZlbnQ6IChndWlsZElkOiBCaWdTdHJpbmcsIGV2ZW50SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyB0aGUgc3RhZ2UgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGEgc3RhZ2UgY2hhbm5lbCwgaWYgb25lIGV4aXN0cy5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgc3RhZ2UgY2hhbm5lbCB0aGUgc3RhZ2UgaW5zdGFuY2UgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSB1c2VyIHRvIGJlIGEgbW9kZXJhdG9yIG9mIHRoZSBzdGFnZSBjaGFubmVsLlxuICAgKlxuICAgKiBGaXJlcyBhIF9TdGFnZSBJbnN0YW5jZSBEZWxldGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9zdGFnZS1pbnN0YW5jZSNkZWxldGUtc3RhZ2UtaW5zdGFuY2V9XG4gICAqL1xuICBkZWxldGVTdGFnZUluc3RhbmNlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIHVzZXIncyByZWFjdGlvbiBmcm9tIGEgbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0aGUgbWVzc2FnZSB0byBkZWxldGUgdGhlIHJlYWN0aW9uIGZyb20gaXMgaW4uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZGVsZXRlIHRoZSByZWFjdGlvbiBmcm9tLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHdob3NlIHJlYWN0aW9uIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIHJlYWN0aW9uIC0gVGhlIHJlYWN0aW9uIHRvIGRlbGV0ZSBmcm9tIHRoZSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9NRVNTQUdFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBSZWFjdGlvbiBSZW1vdmVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2RlbGV0ZS11c2VyLXJlYWN0aW9ufVxuICAgKi9cbiAgZGVsZXRlVXNlclJlYWN0aW9uOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcmVhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIHdlYmhvb2suXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJob29rSWQgLSBUaGUgSUQgb2YgdGhlIHdlYmhvb2sgdG8gZGVsZXRlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9XRUJIT09LU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfV2ViaG9va3MgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvd2ViaG9vayNkZWxldGUtd2ViaG9va31cbiAgICovXG4gIGRlbGV0ZVdlYmhvb2s6ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgd2ViaG9vayBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGRlbGV0ZSB0aGUgbWVzc2FnZSBiZWxvbmdpbmcgdG8uXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSB3ZWJob29rIHRva2VuLCB1c2VkIHRvIG1hbmFnZSB0aGUgd2ViaG9vay5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkZWxldGUuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkZWxldGlvbiBvZiB0aGUgbWVzc2FnZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBEZWxldGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2RlbGV0ZS13ZWJob29rfVxuICAgKi9cbiAgZGVsZXRlV2ViaG9va01lc3NhZ2U6ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBEZWxldGVXZWJob29rTWVzc2FnZU9wdGlvbnMpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSB3ZWJob29rIG1lc3NhZ2UgdXNpbmcgdGhlIHdlYmhvb2sgdG9rZW4sIHRoZXJlYnkgYnlwYXNzaW5nIHRoZSBuZWVkIGZvciBhdXRoZW50aWNhdGlvbiArIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGRlbGV0ZSB0aGUgbWVzc2FnZSBiZWxvbmdpbmcgdG8uXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSB3ZWJob29rIHRva2VuLCB1c2VkIHRvIGRlbGV0ZSB0aGUgd2ViaG9vay5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBEZWxldGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2RlbGV0ZS13ZWJob29rLXdpdGgtdG9rZW59XG4gICAqL1xuICBkZWxldGVXZWJob29rV2l0aFRva2VuOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBwZXJtaXNzaW9ucyBmb3IgYSBndWlsZCBhcHBsaWNhdGlvbiBjb21tYW5kLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIGNvbW1hbmQgaXMgcmVnaXN0ZXJlZCBpbi5cbiAgICogQHBhcmFtIGNvbW1hbmRJZCAtIFRoZSBJRCBvZiB0aGUgY29tbWFuZCB0byBlZGl0IHRoZSBwZXJtaXNzaW9ucyBvZi5cbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gVGhlIGJlYXJlciB0b2tlbiB0byB1c2UgdG8gbWFrZSB0aGUgcmVxdWVzdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIGNvbW1hbmQgcGVybWlzc2lvbnMuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhlIGJlYXJlciB0b2tlbiByZXF1aXJlcyB0aGUgYGFwcGxpY2F0aW9ucy5jb21tYW5kcy5wZXJtaXNzaW9ucy51cGRhdGVgIHNjb3BlIHRvIGJlIGVuYWJsZWQsIGFuZCB0byBoYXZlIGFjY2VzcyB0byB0aGUgZ3VpbGQgd2hvc2UgSUQgaGFzIGJlZW4gcHJvdmlkZWQgaW4gdGhlIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9hcHBsaWNhdGlvbi1jb21tYW5kcyNlZGl0LWFwcGxpY2F0aW9uLWNvbW1hbmQtcGVybWlzc2lvbnN9XG4gICAqL1xuICBlZGl0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgY29tbWFuZElkOiBCaWdTdHJpbmcsXG4gICAgYmVhcmVyVG9rZW46IHN0cmluZyxcbiAgICBvcHRpb25zOiBBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc1tdLFxuICApID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM+XG4gIC8qKlxuICAgKiBFZGl0cyBhbiBhdXRvbW9kIHJ1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBlZGl0IHRoZSBydWxlIGluLlxuICAgKiBAcGFyYW0gcnVsZUlkIC0gVGhlIElEIG9mIHRoZSBydWxlIHRvIGVkaXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBydWxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGV9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYW4gX0F1dG8gTW9kZXJhdGlvbiBSdWxlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2F1dG8tbW9kZXJhdGlvbiNtb2RpZnktYXV0by1tb2RlcmF0aW9uLXJ1bGV9XG4gICAqL1xuICBlZGl0QXV0b21vZFJ1bGU6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgcnVsZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogUGFydGlhbDxFZGl0QXV0b01vZGVyYXRpb25SdWxlT3B0aW9ucz4sXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEF1dG9Nb2RlcmF0aW9uUnVsZT5cbiAgLyoqXG4gICAqIE1vZGlmaWVzIHRoZSBib3QncyB1c2VybmFtZSBvciBhdmF0YXIuXG4gICAqIE5PVEU6IHVzZXJuYW1lOiBpZiBjaGFuZ2VkIG1heSBjYXVzZSB0aGUgYm90J3MgZGlzY3JpbWluYXRvciB0byBiZSByYW5kb21pemVkLlxuICAgKi9cbiAgZWRpdEJvdFByb2ZpbGU6IChvcHRpb25zOiB7IHVzZXJuYW1lPzogc3RyaW5nOyBib3RBdmF0YXJVUkw/OiBzdHJpbmcgfCBudWxsIH0pID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFVzZXI+XG4gIC8qKlxuICAgKiBFZGl0cyBhIGNoYW5uZWwncyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgY2hhbm5lbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQ2hhbm5lbH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIGVkaXRpbmcgYSBjaGFubmVsIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3JvdXBEbTpcbiAgICogLSBGaXJlcyBhIF9DaGFubmVsIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogSWYgZWRpdGluZyBhIHRocmVhZCBjaGFubmVsOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1RIUkVBRFNgIHBlcm1pc3Npb24gX191bmxlc3NfXyBpZiBzZXR0aW5nIHRoZSBgYXJjaGl2ZWRgIHByb3BlcnR5IHRvIGBmYWxzZWAgd2hlbiB0aGUgYGxvY2tlZGAgcHJvcGVydHkgaXMgYWxzbyBgZmFsc2VgLCBpbiB3aGljaCBjYXNlIG9ubHkgdGhlIGBTRU5EX01FU1NBR0VTYCBwZXJtaXNzaW9uIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiAtIEZpcmVzIGEgX1RocmVhZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIElmIGVkaXRpbmcgYSBndWlsZCBjaGFubmVsOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0NIQU5ORUxTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiAtIElmIG1vZGlmeWluZyBwZXJtaXNzaW9uIG92ZXJyaWRlczpcbiAgICogICAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiAgIC0gT25seSBwZXJtaXNzaW9ucyB0aGUgYm90IHVzZXIgaGFzIGluIHRoZSBndWlsZCBvciBwYXJlbnQgY2hhbm5lbCBjYW4gYmUgYWxsb3dlZC9kZW5pZWQgX191bmxlc3NfXyB0aGUgYm90IHVzZXIgaGFzIGEgYE1BTkFHRV9ST0xFU2AgcGVybWlzc2lvbiBvdmVycmlkZSBpbiB0aGUgY2hhbm5lbC5cbiAgICpcbiAgICogLSBJZiBtb2RpZnlpbmcgYSBjaGFubmVsIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRDYXRlZ29yeTpcbiAgICogICAgIC0gRmlyZXMgYSBfQ2hhbm5lbCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQgZm9yIGVhY2ggY2hpbGQgY2hhbm5lbCBpbXBhY3RlZCBpbiB0aGlzIGNoYW5nZS5cbiAgICogLSBPdGhlcndpc2U6XG4gICAqICAgICAtIEZpcmVzIGEgX0NoYW5uZWwgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKi9cbiAgZWRpdENoYW5uZWw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5Q2hhbm5lbCwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRDaGFubmVsPlxuICAvKipcbiAgICogRWRpdHMgdGhlIHBlcm1pc3Npb24gb3ZlcnJpZGVzIGZvciBhIHVzZXIgb3Igcm9sZSBpbiBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZWRpdCB0aGUgcGVybWlzc2lvbiBvdmVycmlkZXMgb2YuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBlcm1pc3Npb24gb3ZlcnJpZGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfUk9MRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIE9ubHkgcGVybWlzc2lvbnMgdGhlIGJvdCB1c2VyIGhhcyBpbiB0aGUgZ3VpbGQgb3IgcGFyZW50IGNoYW5uZWwgY2FuIGJlIGFsbG93ZWQvZGVuaWVkIF9fdW5sZXNzX18gdGhlIGJvdCB1c2VyIGhhcyBhIGBNQU5BR0VfUk9MRVNgIHBlcm1pc3Npb24gb3ZlcnJpZGUgaW4gdGhlIGNoYW5uZWwuXG4gICAqXG4gICAqIEZpcmVzIGEgX0NoYW5uZWwgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNlZGl0LWNoYW5uZWwtcGVybWlzc2lvbnN9XG4gICAqL1xuICBlZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzT3B0aW9ucywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgcG9zaXRpb25zIG9mIGEgc2V0IG9mIGNoYW5uZWxzIGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCBpbiB3aGljaCB0byBlZGl0IHRoZSBwb3NpdGlvbnMgb2YgdGhlIGNoYW5uZWxzLlxuICAgKiBAcGFyYW0gY2hhbm5lbFBvc2l0aW9ucyAtIEEgc2V0IG9mIG9iamVjdHMgZGVmaW5pbmcgdGhlIHVwZGF0ZWQgcG9zaXRpb25zIG9mIHRoZSBjaGFubmVscy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfQ0hBTk5FTFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0NoYW5uZWwgVXBkYXRlXyBnYXRld2F5IGV2ZW50IGZvciBldmVyeSBjaGFubmVsIGltcGFjdGVkIGluIHRoaXMgY2hhbmdlLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbW9kaWZ5LWd1aWxkLWNoYW5uZWwtcG9zaXRpb25zfVxuICAgKi9cbiAgZWRpdENoYW5uZWxQb3NpdGlvbnM6IChndWlsZElkOiBCaWdTdHJpbmcsIGNoYW5uZWxQb3NpdGlvbnM6IE1vZGlmeUd1aWxkQ2hhbm5lbFBvc2l0aW9uc1tdKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBFZGl0cyBhbiBlbW9qaS5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIGluIHdoaWNoIHRvIGVkaXQgdGhlIGVtb2ppLlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhlIGVtb2ppIHRvIGVkaXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBlbW9qaS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgdXBkYXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEVtb2ppfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRm9yIGVtb2ppcyBjcmVhdGVkIGJ5IHRoZSBjdXJyZW50IHVzZXIsIHJlcXVpcmVzIGVpdGhlciB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRm9yIG90aGVyIGVtb2ppcywgcmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgYEd1aWxkIEVtb2ppcyBVcGRhdGVgIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9lbW9qaSNtb2RpZnktZ3VpbGQtZW1vaml9XG4gICAqL1xuICBlZGl0RW1vamk6IChndWlsZElkOiBCaWdTdHJpbmcsIGlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkRW1vamksIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkRW1vamk+XG4gIC8qKlxuICAgKiBFZGl0cyBhIGZvbGxvdy11cCBtZXNzYWdlIHRvIGFuIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgaW50ZXJhY3Rpb24gdG9rZW4gdG8gdXNlLCBwcm92aWRlZCBpbiB0aGUgb3JpZ2luYWwgaW50ZXJhY3Rpb24uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIG1lc3NhZ2UuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVW5saWtlIGBlZGl0TWVzc2FnZSgpYCwgdGhpcyBlbmRwb2ludCBhbGxvd3MgdGhlIGJvdCB1c2VyIHRvIGFjdCB3aXRob3V0IG5lZWRpbmcgdG8gc2VlIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIGlzIGluLlxuICAgKlxuICAgKiBEb2VzIG5vdCBzdXBwb3J0IGVwaGVtZXJhbCBmb2xsb3ctdXAgbWVzc2FnZXMgZHVlIHRvIHRoZXNlIGJlaW5nIHN0YXRlbGVzcy5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBVcGRhdGVfIGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvcmVjZWl2aW5nLWFuZC1yZXNwb25kaW5nI2VkaXQtZm9sbG93dXAtbWVzc2FnZX1cbiAgICovXG4gIGVkaXRGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZE1lc3NhZ2U+XG4gIC8qKlxuICAgKiBFZGl0cyBhIGdsb2JhbCBhcHBsaWNhdGlvbiBjb21tYW5kLlxuICAgKlxuICAgKiBAcGFyYW0gY29tbWFuZElkIC0gVGhlIElEIG9mIHRoZSBjb21tYW5kIHRvIGVkaXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBjb21tYW5kLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQXBwbGljYXRpb25Db21tYW5kfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2VkaXQtZ2xvYmFsLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBlZGl0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkQXBwbGljYXRpb25Db21tYW5kPlxuICAvKipcbiAgICogRWRpdHMgYSBndWlsZCdzIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZWRpdC5cbiAgICogQHBhcmFtIHNoYXJkSWQgLSBUaGUgSUQgb2YgdGhlIHNoYXJkIHRoZSBndWlsZCBpcyBpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIGd1aWxkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRHdWlsZH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBJZiBhdHRlbXB0aW5nIHRvIGFkZCBvciByZW1vdmUgdGhlIHtAbGluayBHdWlsZEZlYXR1cmVzfS5Db21tdW5pdHkgZmVhdHVyZTpcbiAgICogLSBSZXF1aXJlcyB0aGUgYEFETUlOSVNUUkFUT1JgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI21vZGlmeS1ndWlsZH1cbiAgICovXG4gIGVkaXRHdWlsZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5R3VpbGQsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkR3VpbGQ+XG4gIC8qKlxuICAgKiBFZGl0cyBhbiBhcHBsaWNhdGlvbiBjb21tYW5kIHJlZ2lzdGVyZWQgaW4gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRoZSBjb21tYW5kIGlzIHJlZ2lzdGVyZWQgaW4uXG4gICAqIEBwYXJhbSBjb21tYW5kSWQgLSBUaGUgSUQgb2YgdGhlIGNvbW1hbmQgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIGNvbW1hbmQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmR9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjZWRpdC1ndWlsZC1hcHBsaWNhdGlvbi1jb21tYW5kfVxuICAgKi9cbiAgZWRpdEd1aWxkQXBwbGljYXRpb25Db21tYW5kOiAoXG4gICAgY29tbWFuZElkOiBCaWdTdHJpbmcsXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+XG4gIC8qKiBNb2RpZnkgYSBndWlsZCdzIE1GQSBsZXZlbC4gUmVxdWlyZXMgZ3VpbGQgb3duZXJzaGlwLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqL1xuICBlZGl0R3VpbGRNZmFMZXZlbDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgbWZhTGV2ZWw6IE1mYUxldmVscywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBFZGl0IHRoZSBnaXZlbiBzdGlja2VyLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm4gQSB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFN0aWNrZXJ9XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZvciBzdGlja2VycyBjcmVhdGVkIGJ5IHRoZSBjdXJyZW50IHVzZXIsIHJlcXVpcmVzIGVpdGhlciB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRm9yIG90aGVyIHN0aWNrZXJzLCByZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRmlyZXMgYSBHdWlsZCBTdGlja2VycyBVcGRhdGUgR2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0aWNrZXIjbW9kaWZ5LWd1aWxkLXN0aWNrZXJ9XG4gICAqL1xuICBlZGl0R3VpbGRTdGlja2VyOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHN0aWNrZXJJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IEF0TGVhc3RPbmU8RWRpdEd1aWxkU3RpY2tlck9wdGlvbnM+LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRTdGlja2VyPlxuICAvKipcbiAgICogRWRpdHMgYSB0ZW1wbGF0ZSdzIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZWRpdCBhIHRlbXBsYXRlIG9mLlxuICAgKiBAcGFyYW0gdGVtcGxhdGVDb2RlIC0gVGhlIGNvZGUgb2YgdGhlIHRlbXBsYXRlIHRvIGVkaXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSB0ZW1wbGF0ZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFRlbXBsYXRlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkLXRlbXBsYXRlI21vZGlmeS1ndWlsZC10ZW1wbGF0ZX1cbiAgICovXG4gIGVkaXRHdWlsZFRlbXBsYXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB0ZW1wbGF0ZUNvZGU6IHN0cmluZywgb3B0aW9uczogTW9kaWZ5R3VpbGRUZW1wbGF0ZSkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkVGVtcGxhdGU+XG4gIC8qKlxuICAgKiBFZGl0cyBhIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZWRpdCB0aGUgbWVzc2FnZSBpbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRHMgb2YgdGhlIG1lc3NhZ2UgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIG1lc3NhZ2UuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSWYgZWRpdGluZyBhbm90aGVyIHVzZXIncyBtZXNzYWdlOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKiAtIE9ubHkgdGhlIHtAbGluayBFZGl0TWVzc2FnZS5mbGFncyB8IGZsYWdzfSBwcm9wZXJ0eSBvZiB0aGUge0BsaW5rIG9wdGlvbnN9IG9iamVjdCBwYXJhbWV0ZXIgY2FuIGJlIGVkaXRlZC5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2VkaXQtbWVzc2FnZX1cbiAgICovXG4gIGVkaXRNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0TWVzc2FnZSkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZT5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBpbml0aWFsIG1lc3NhZ2UgcmVzcG9uc2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIHJlc3BvbnNlLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFVubGlrZSBgZWRpdE1lc3NhZ2UoKWAsIHRoaXMgZW5kcG9pbnQgYWxsb3dzIHRoZSBib3QgdXNlciB0byBhY3Qgd2l0aG91dCBuZWVkaW5nIHRvIHNlZSB0aGUgY2hhbm5lbCB0aGUgbWVzc2FnZSBpcyBpbi5cbiAgICpcbiAgICogRG9lcyBub3Qgc3VwcG9ydCBlcGhlbWVyYWwgZm9sbG93LXVwIG1lc3NhZ2VzIGR1ZSB0byB0aGVzZSBiZWluZyBzdGF0ZWxlc3MuXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgVXBkYXRlXyBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL3JlY2VpdmluZy1hbmQtcmVzcG9uZGluZyNlZGl0LW9yaWdpbmFsLWludGVyYWN0aW9uLXJlc3BvbnNlfVxuICAgKi9cbiAgZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogKHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IEludGVyYWN0aW9uQ2FsbGJhY2tEYXRhKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRNZXNzYWdlPlxuICAvKipcbiAgICogRWRpdHMgdGhlIG9yaWdpbmFsIHdlYmhvb2sgbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIHdlYmhvb2tJZCAtIFRoZSBJRCBvZiB0aGUgd2ViaG9vayB0byBlZGl0IHRoZSBvcmlnaW5hbCBtZXNzYWdlIG9mLlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgd2ViaG9vayB0b2tlbiwgdXNlZCB0byBlZGl0IHRoZSBtZXNzYWdlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZWRpdC13ZWJob29rLW1lc3NhZ2V9XG4gICAqL1xuICBlZGl0T3JpZ2luYWxXZWJob29rTWVzc2FnZTogKFxuICAgIHdlYmhvb2tJZDogQmlnU3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgb3B0aW9uczogSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEgJiB7IHRocmVhZElkPzogQmlnU3RyaW5nIH0sXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZT5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSB2b2ljZSBzdGF0ZSBvZiB0aGUgYm90IHVzZXIuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCBpbiB3aGljaCB0byBlZGl0IHRoZSB2b2ljZSBzdGF0ZSBvZiB0aGUgYm90IHVzZXIuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSB2b2ljZSBzdGF0ZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhlIHtAbGluayBFZGl0T3duVm9pY2VTdGF0ZS5jaGFubmVsSWQgfCBjaGFubmVsSWR9IHByb3BlcnR5IG9mIHRoZSB7QGxpbmsgb3B0aW9uc30gb2JqZWN0IHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGEgc3RhZ2UgY2hhbm5lbCwgYW5kIHRoZSBib3QgdXNlciBtdXN0IGFscmVhZHkgaGF2ZSBqb2luZWQgaXQuXG4gICAqXG4gICAqIElmIGF0dGVtcHRpbmcgdG8gdW5tdXRlIG9uZXNlbGY6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBNVVRFX01FTUJFUlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIElmIGF0dGVtcHRpbmcgdG8gcmVxdWVzdCB0byBzcGVhazpcbiAgICogLSBSZXF1aXJlcyB0aGUgYFJFUVVFU1RfVE9fU1BFQUtgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtb2RpZnktY3VycmVudC11c2VyLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgZWRpdE93blZvaWNlU3RhdGU6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRPd25Wb2ljZVN0YXRlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBFZGl0cyBhIHJvbGUgaW4gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIHJvbGUgaW4uXG4gICAqIEBwYXJhbSByb2xlSWQgLSBUaGUgSUQgb2YgdGhlIHJvbGUgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIHJvbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFJvbGV9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9ST0xFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgUm9sZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtb2RpZnktZ3VpbGQtcm9sZX1cbiAgICovXG4gIGVkaXRSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdEd1aWxkUm9sZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRSb2xlPlxuICAvKipcbiAgICogRWRpdHMgdGhlIHBvc2l0aW9ucyBvZiBhIHNldCBvZiByb2xlcy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIHJvbGUgcG9zaXRpb25zIGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgcm9sZSBwb3NpdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkUm9sZX0gb2JqZWN0cyBhc3NvcnRlZCBieSByb2xlIElELlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9ST0xFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgUm9sZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQgZm9yIGV2ZXJ5IHJvbGUgaW1wYWN0ZWQgaW4gdGhpcyBjaGFuZ2UuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtb2RpZnktZ3VpbGQtcm9sZS1wb3NpdGlvbnN9XG4gICAqL1xuICBlZGl0Um9sZVBvc2l0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5Um9sZVBvc2l0aW9uc1tdLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFJvbGVbXT5cbiAgLyoqXG4gICAqIEVkaXRzIGEgc2NoZWR1bGVkIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZWRpdCB0aGUgc2NoZWR1bGVkIGV2ZW50IGluLlxuICAgKiBAcGFyYW0gZXZlbnRJZCAtIFRoZSBJRCBvZiB0aGUgc2NoZWR1bGVkIGV2ZW50IHRvIGVkaXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFNjaGVkdWxlZEV2ZW50fS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfRVZFTlRTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBUbyBzdGFydCBvciBlbmQgYW4gZXZlbnQsIG1vZGlmeSB0aGUgZXZlbnQncyBgc3RhdHVzYCBwcm9wZXJ0eS5cbiAgICpcbiAgICogVGhlIGBlbnRpdHlfbWV0YWRhdGFgIHByb3BlcnR5IGlzIGRpc2NhcmRlZCBmb3IgZXZlbnRzIHdob3NlIGBlbnRpdHlfdHlwZWAgaXMgbm90IHtAbGluayBTY2hlZHVsZWRFdmVudEVudGl0eVR5cGV9LkV4dGVybmFsLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBTY2hlZHVsZWQgRXZlbnQgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtc2NoZWR1bGVkLWV2ZW50I21vZGlmeS1ndWlsZC1zY2hlZHVsZWQtZXZlbnR9XG4gICAqL1xuICBlZGl0U2NoZWR1bGVkRXZlbnQ6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgZXZlbnRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8RWRpdFNjaGVkdWxlZEV2ZW50PixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkU2NoZWR1bGVkRXZlbnQ+XG4gIC8qKlxuICAgKiBFZGl0cyBhIHN0YWdlIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBzdGFnZSBjaGFubmVsIHRoZSBzdGFnZSBpbnN0YW5jZSBpcyBhc3NvY2lhdGVkIHdpdGguXG4gICAqIEBwYXJhbSB0b3BpYyAtIFRvcGljIG9mIHRoZSBTdGFnZSBpbnN0YW5jZSAoMS0xMjAgY2hhcmFjdGVycykuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIHVwZGF0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRTdGFnZUluc3RhbmNlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIHVzZXIgdG8gYmUgYSBtb2RlcmF0b3Igb2YgdGhlIHN0YWdlIGNoYW5uZWwuXG4gICAqXG4gICAqIEZpcmVzIGEgX1N0YWdlIEluc3RhbmNlIFVwZGF0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9zdGFnZS1pbnN0YW5jZSNtb2RpZnktc3RhZ2UtaW5zdGFuY2V9XG4gICAqL1xuICBlZGl0U3RhZ2VJbnN0YW5jZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB0b3BpYzogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFN0YWdlSW5zdGFuY2U+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgdm9pY2Ugc3RhdGUgb2YgYW5vdGhlciB1c2VyLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgaW4gd2hpY2ggdG8gZWRpdCB0aGUgdm9pY2Ugc3RhdGUgb2YgdGhlIGJvdCB1c2VyLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgdm9pY2Ugc3RhdGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSB7QGxpbmsgRWRpdE93blZvaWNlU3RhdGUuY2hhbm5lbElkIHwgY2hhbm5lbElkfSBwcm9wZXJ0eSBvZiB0aGUge0BsaW5rIG9wdGlvbnN9IG9iamVjdCBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBhIHN0YWdlIGNoYW5uZWwsIGFuZCB0aGUgdXNlciBtdXN0IGFscmVhZHkgaGF2ZSBqb2luZWQgaXQuXG4gICAqXG4gICAqIFJlcXVpcmVzIHRoZSBgTVVURV9NRU1CRVJTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbW9kaWZ5LWN1cnJlbnQtdXNlci12b2ljZS1zdGF0ZX1cbiAgICovXG4gIGVkaXRVc2VyVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdFVzZXJWb2ljZVN0YXRlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBFZGl0IHRoZSBjdXJyZW50IHVzZXIgYXBwbGljYXRpb24gcm9sZSBjb25uZWN0aW9uIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIFRoZSBhY2Nlc3MgdG9rZW4gb2YgdGhlIHVzZXJcbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgaWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGVkaXQgdGhlIHJvbGUgY29ubmVjdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIGVkaXRcbiAgICogQHJldHVybnMge0NhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9ufVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIHJlcXVpcmVzIHRoZSBgcm9sZV9jb25uZWN0aW9ucy53cml0ZWAgc2NvcGUuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy91c2VyI3VwZGF0ZS11c2VyLWFwcGxpY2F0aW9uLXJvbGUtY29ubmVjdGlvbn1cbiAgICovXG4gIGVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbjogKFxuICAgIGJlYXJlclRva2VuOiBzdHJpbmcsXG4gICAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uLFxuICApID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24+XG4gIC8qKlxuICAgKiBFZGl0cyBhIHdlYmhvb2suXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJob29rSWQgLSBUaGUgSUQgb2YgdGhlIHdlYmhvb2sgdG8gZWRpdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkV2ViaG9va30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9XZWJob29rcyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2VkaXQtd2ViaG9va31cbiAgICovXG4gIGVkaXRXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeVdlYmhvb2ssIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkV2ViaG9vaz5cbiAgLyoqXG4gICAqIEVkaXRzIGEgd2ViaG9vayBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGVkaXQgdGhlIG1lc3NhZ2Ugb2YuXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSB3ZWJob29rIHRva2VuLCB1c2VkIHRvIGVkaXQgdGhlIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIG1lc3NhZ2UuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2VkaXQtd2ViaG9vay1tZXNzYWdlfVxuICAgKi9cbiAgZWRpdFdlYmhvb2tNZXNzYWdlOiAoXG4gICAgd2ViaG9va0lkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSAmIHsgdGhyZWFkSWQ/OiBCaWdTdHJpbmcgfSxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRNZXNzYWdlPlxuICAvKipcbiAgICogRWRpdHMgYSB3ZWJob29rIHVzaW5nIHRoZSB3ZWJob29rIHRva2VuLCB0aGVyZWJ5IGJ5cGFzc2luZyB0aGUgbmVlZCBmb3IgYXV0aGVudGljYXRpb24gKyBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHdlYmhvb2tJZCAtIFRoZSBJRCBvZiB0aGUgd2ViaG9vayB0byBlZGl0LlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgd2ViaG9vayB0b2tlbiwgdXNlZCB0byBlZGl0IHRoZSB3ZWJob29rLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkV2ViaG9va30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9XZWJob29rcyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI21vZGlmeS13ZWJob29rLXdpdGgtdG9rZW59XG4gICAqL1xuICBlZGl0V2ViaG9va1dpdGhUb2tlbjogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nLCBvcHRpb25zOiBPbWl0PE1vZGlmeVdlYmhvb2ssICdjaGFubmVsSWQnPikgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkV2ViaG9vaz5cbiAgLyoqXG4gICAqIEVkaXRzIGEgZ3VpbGQncyB3ZWxjb21lIHNjcmVlbi5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIHdlbGNvbWUgc2NyZWVuIG9mLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgd2VsY29tZSBzY3JlZW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFdlbGNvbWVTY3JlZW59LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbW9kaWZ5LWd1aWxkLXdlbGNvbWUtc2NyZWVufVxuICAgKi9cbiAgZWRpdFdlbGNvbWVTY3JlZW46IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ2FtZWxpemVkRGlzY29yZE1vZGlmeUd1aWxkV2VsY29tZVNjcmVlbixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkV2VsY29tZVNjcmVlbj5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBzZXR0aW5ncyBvZiBhIGd1aWxkJ3Mgd2lkZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgdGhlIHdpZGdldCBvZi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5nc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtb2RpZnktZ3VpbGQtd2lkZ2V0fVxuICAgKi9cbiAgZWRpdFdpZGdldFNldHRpbmdzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplZERpc2NvcmRHdWlsZFdpZGdldFNldHRpbmdzLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRHdWlsZFdpZGdldFNldHRpbmdzPlxuICAvKipcbiAgICogRXhlY3V0ZXMgYSB3ZWJob29rLCBjYXVzaW5nIGEgbWVzc2FnZSB0byBiZSBwb3N0ZWQgaW4gdGhlIGNoYW5uZWwgY29uZmlndXJlZCBmb3IgdGhlIHdlYmhvb2suXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJob29rSWQgLSBUaGUgSUQgb2YgdGhlIHdlYmhvb2sgdG8gZXhlY3V0ZS5cbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIHdlYmhvb2sgdG9rZW4sIHVzZWQgdG8gZXhlY3V0ZSB0aGUgd2ViaG9vay5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgd2ViaG9vay5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRNZXNzYWdlfSwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHtAbGluayBFeGVjdXRlV2ViaG9vay53YWl0IHwgd2FpdH0gcHJvcGVydHkgb2YgdGhlIHtAbGluayBvcHRpb25zfSBvYmplY3QgcGFyYW1ldGVyIGlzIHNldCB0byBgZmFsc2VgLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiB0aGUgd2ViaG9vayBjaGFubmVsIGlzIGEgZm9ydW0gY2hhbm5lbCwgeW91IG11c3QgcHJvdmlkZSBhIHZhbHVlIGZvciBlaXRoZXIgYHRocmVhZElkYCBvciBgdGhyZWFkTmFtZWAuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2V4ZWN1dGUtd2ViaG9va31cbiAgICovXG4gIGV4ZWN1dGVXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IEV4ZWN1dGVXZWJob29rKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRNZXNzYWdlIHwgdW5kZWZpbmVkPlxuICAvKipcbiAgICogRm9sbG93cyBhbiBhbm5vdW5jZW1lbnQgY2hhbm5lbCwgYWxsb3dpbmcgbWVzc2FnZXMgcG9zdGVkIHdpdGhpbiBpdCB0byBiZSBjcm9zcy1wb3N0ZWQgaW50byB0aGUgdGFyZ2V0IGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2VDaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGFubm91bmNlbWVudCBjaGFubmVsIHRvIGZvbGxvdy5cbiAgICogQHBhcmFtIHRhcmdldENoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgdGFyZ2V0IGNoYW5uZWwgLSB0aGUgY2hhbm5lbCB0byBjcm9zcy1wb3N0IHRvLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEZvbGxvd2VkQ2hhbm5lbH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uIGluIHRoZSBfX3RhcmdldCBjaGFubmVsX18uXG4gICAqXG4gICAqIEZpcmVzIGEgX1dlYmhvb2tzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZm9sbG93LWFubm91bmNlbWVudC1jaGFubmVsfVxuICAgKi9cbiAgZm9sbG93QW5ub3VuY2VtZW50OiAoc291cmNlQ2hhbm5lbElkOiBCaWdTdHJpbmcsIHRhcmdldENoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRGb2xsb3dlZENoYW5uZWw+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGFsbCBhY3RpdmUgdGhyZWFkcyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgdGhyZWFkcyBvZi5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRBY3RpdmVUaHJlYWRzfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmV0dXJucyBib3RoIHB1YmxpYyBhbmQgcHJpdmF0ZSB0aHJlYWRzLlxuICAgKlxuICAgKiBUaHJlYWRzIGFyZSBvcmRlcmVkIGJ5IHRoZSBgaWRgIHByb3BlcnR5IGluIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNsaXN0LWFjdGl2ZS1ndWlsZC10aHJlYWRzfVxuICAgKi9cbiAgZ2V0QWN0aXZlVGhyZWFkczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkQWN0aXZlVGhyZWFkcz5cbiAgLyoqIEdldCB0aGUgYXBwbGljYXRpb25zIGluZm8gKi9cbiAgZ2V0QXBwbGljYXRpb25JbmZvOiAoKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbj5cbiAgLyoqXG4gICAqIEVkaXQgcHJvcGVydGllcyBvZiB0aGUgYXBwIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVxdWVzdGluZyBib3QgdXNlci5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogT25seSBwcm9wZXJ0aWVzIHRoYXQgYXJlIHBhc3NlZCB3aWxsIGJlIHVwZGF0ZWQuXG4gICAqL1xuICBlZGl0QXBwbGljYXRpb25JbmZvOiAoYm9keTogRWRpdEFwcGxpY2F0aW9uKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbj5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBhdXRoZW50aWNhdGlvbiBpbmZvIGZvciB0aGUgYXV0aGVudGljYXRlZCB1c2VyXG4gICAqXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIEFueSBPQXV0aDIgZGVyaXZlZCBhY2Nlc3MgdG9rZW5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRDdXJyZW50QXV0aG9yaXphdGlvbn1cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhlIHVzZXIgb2JqZWN0IGlzIG5vdCBkZWZpbmVkIGlmIHRoZSBzY29wZXMgZG8gbm90IGluY2x1ZGUgYGlkZW50aWZ5YC5cbiAgICogSW4gdGhlIHVzZXIgb2JqZWN0LCBpZiBkZWZpbmVkLCB0aGUgZW1haWwgaXMgbm90IGluY2x1ZGVkIGlmIHRoZSBzY29wZXMgZG8gbm90IGluY2x1ZGUgYGVtYWlsYFxuICAgKi9cbiAgZ2V0Q3VycmVudEF1dGhlbnRpY2F0aW9uSW5mbzogKGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEN1cnJlbnRBdXRob3JpemF0aW9uPlxuICAvKipcbiAgICogRXhjaGFuZ2UgdGhlIGluZm9ybWF0aW9uIHRvIGdldCBhIE9BdXRoMiBhY2Nlc3NUb2tlbiB0b2tlblxuICAgKlxuICAgKiBAcGFyYW0gY2xpZW50SWQgLSBBcHBsaWNhdGlvbidzIGNsaWVudCBpZFxuICAgKiBAcGFyYW0gY2xpZW50U2VjcmV0IC0gYXBwbGljYXRpb24ncyBjbGllbnQgc2VjcmV0XG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gbWFrZSB0aGUgZXhjaGFuZ2Ugd2l0aCBkaXNjb3JkXG4gICAqL1xuICBleGNoYW5nZVRva2VuOiAoY2xpZW50SWQ6IEJpZ1N0cmluZywgY2xpZW50U2VjcmV0OiBzdHJpbmcsIG9wdGlvbnM6IENhbWVsaXplZERpc2NvcmRUb2tlbkV4Y2hhbmdlKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBY2Nlc3NUb2tlblJlc3BvbnNlPlxuICAvKipcbiAgICogUmV2b2tlIGFuIGFjY2Vzc190b2tlblxuICAgKlxuICAgKiBAcGFyYW0gY2xpZW50SWQgLSBBcHBsaWNhdGlvbidzIGNsaWVudCBpZFxuICAgKiBAcGFyYW0gY2xpZW50U2VjcmV0IC0gYXBwbGljYXRpb24ncyBjbGllbnQgc2VjcmV0XG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gcmV2b2tlIHRoZSBhY2Nlc3NfdG9rZW5cbiAgICovXG4gIHJldm9rZVRva2VuOiAoY2xpZW50SWQ6IEJpZ1N0cmluZywgY2xpZW50U2VjcmV0OiBzdHJpbmcsIG9wdGlvbnM6IENhbWVsaXplZERpc2NvcmRUb2tlblJldm9jYXRpb24pID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBlcm1pc3Npb25zIG9mIGEgZ3VpbGQgYXBwbGljYXRpb24gY29tbWFuZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRoZSBjb21tYW5kIGlzIHJlZ2lzdGVyZWQgaW4uXG4gICAqIEBwYXJhbSBjb21tYW5kSWQgLSBUaGUgSUQgb2YgdGhlIGNvbW1hbmQgdG8gZ2V0IHRoZSBwZXJtaXNzaW9ucyBvZi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgT0F1dGgyIHJlbGF0ZWQgb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZW4gc3BlY2lmeWluZyB0aGUgb3B0aW9ucyBvYmplY3QgdGhlIGFjY2VzcyB0b2tlbiBwYXNzZWQtaW4gcmVxdWlyZXMgdGhlIE9BdXRoMiBzY29wZSBgYXBwbGljYXRpb25zLmNvbW1hbmRzLnBlcm1pc3Npb25zLnVwZGF0ZWBcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2dldC1hcHBsaWNhdGlvbi1jb21tYW5kLXBlcm1pc3Npb25zfVxuICAgKi9cbiAgZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbjogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbk9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucz5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBlcm1pc3Npb25zIG9mIGFsbCBhcHBsaWNhdGlvbiBjb21tYW5kcyByZWdpc3RlcmVkIGluIGEgZ3VpbGQgYnkgdGhlIElEIG9mIHRoZSBndWlsZCBhbmQgb3B0aW9uYWxseSBhbiBleHRlcm5hbCBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgcGVybWlzc2lvbnMgb2JqZWN0cyBvZi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgT0F1dGgyIHJlbGF0ZWQgb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnN9IG9iamVjdHMgYXNzb3J0ZWQgYnkgY29tbWFuZCBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhlbiBzcGVjaWZ5aW5nIHRoZSBvcHRpb25zIG9iamVjdCB0aGUgYWNjZXNzIHRva2VuIHBhc3NlZC1pbiByZXF1aXJlcyB0aGUgT0F1dGgyIHNjb3BlIGBhcHBsaWNhdGlvbnMuY29tbWFuZHMucGVybWlzc2lvbnMudXBkYXRlYFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjZ2V0LWd1aWxkLWFwcGxpY2F0aW9uLWNvbW1hbmQtcGVybWlzc2lvbnN9XG4gICAqL1xuICBnZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbk9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc1tdPlxuICAvKipcbiAgICogR2V0cyBhIGd1aWxkJ3MgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBhdWRpdCBsb2cgb2YuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEF1ZGl0TG9nfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBWSUVXX0FVRElUX0xPR2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2F1ZGl0LWxvZyNnZXQtZ3VpbGQtYXVkaXQtbG9nfVxuICAgKi9cbiAgZ2V0QXVkaXRMb2c6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRHdWlsZEF1ZGl0TG9nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBdWRpdExvZz5cbiAgLyoqXG4gICAqIEdldHMgYW4gYXV0b21vZCBydWxlIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgcnVsZSBvZi5cbiAgICogQHBhcmFtIHJ1bGVJZCAtIFRoZSBJRCBvZiB0aGUgcnVsZSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQXV0b01vZGVyYXRpb25SdWxlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9hdXRvLW1vZGVyYXRpb24jZ2V0LWF1dG8tbW9kZXJhdGlvbi1ydWxlfVxuICAgKi9cbiAgZ2V0QXV0b21vZFJ1bGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJ1bGVJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGU+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGF1dG9tb2QgcnVsZXMgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHJ1bGVzIGZyb20uXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEF1dG9Nb2RlcmF0aW9uUnVsZX0gb2JqZWN0cyBhc3NvcnRlZCBieSBydWxlIElELlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2F1dG8tbW9kZXJhdGlvbiNsaXN0LWF1dG8tbW9kZXJhdGlvbi1ydWxlcy1mb3ItZ3VpbGR9XG4gICAqL1xuICBnZXRBdXRvbW9kUnVsZXM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEF1dG9Nb2RlcmF0aW9uUnVsZVtdPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBhdmFpbGFibGUgdm9pY2UgcmVnaW9ucy5cbiAgICpcbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkVm9pY2VSZWdpb259IG9iamVjdHMgYXNzb3J0ZWQgYnkgdm9pY2UgcmVnaW9uIElELlxuICAgKi9cbiAgZ2V0QXZhaWxhYmxlVm9pY2VSZWdpb25zOiAoKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRWb2ljZVJlZ2lvbltdPlxuICAvKipcbiAgICogR2V0cyBhIGJhbiBieSB1c2VyIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBiYW4gZnJvbS5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBnZXQgdGhlIGJhbiBmb3IuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQmFufS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBCQU5fTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1iYW59XG4gICAqL1xuICBnZXRCYW46IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRCYW4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGJhbnMgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpc3Qgb2YgYmFucyBmb3IuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgbGlzdCBvZiBiYW5zLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRCYW59IG9iamVjdHMgYXNzb3J0ZWQgYnkgdXNlciBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBCQU5fTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogVXNlcnMgYXJlIG9yZGVyZWQgYnkgdGhlaXIgSURzIGluIF9hc2NlbmRpbmdfIG9yZGVyLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjZ2V0LWd1aWxkLWJhbnN9XG4gICAqL1xuICBnZXRCYW5zOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0QmFucykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkQmFuW10+XG4gIC8qKlxuICAgKiBHZXRzIGEgY2hhbm5lbCBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZENoYW5uZWx9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiB0aGUgY2hhbm5lbCBpcyBhIHRocmVhZCwgYSB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFRocmVhZE1lbWJlcn0gb2JqZWN0IGlzIGluY2x1ZGVkIGluIHRoZSByZXN1bHQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2dldC1jaGFubmVsfVxuICAgKi9cbiAgZ2V0Q2hhbm5lbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRDaGFubmVsPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBpbnZpdGVzIGZvciBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZ2V0IHRoZSBpbnZpdGVzIG9mLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRJbnZpdGVNZXRhZGF0YX0gb2JqZWN0cyBhc3NvcnRlZCBieSBpbnZpdGUgY29kZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfQ0hBTk5FTFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIE9ubHkgdXNhYmxlIGZvciBndWlsZCBjaGFubmVscy5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZ2V0LWNoYW5uZWwtaW52aXRlc31cbiAgICovXG4gIGdldENoYW5uZWxJbnZpdGVzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEludml0ZU1ldGFkYXRhW10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGNoYW5uZWxzIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBjaGFubmVscyBvZi5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQ2hhbm5lbH0gb2JqZWN0cyBhc3NvcnRlZCBieSBjaGFubmVsIElELlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBFeGNsdWRlcyB0aHJlYWRzLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjZ2V0LWd1aWxkLWNoYW5uZWxzfVxuICAgKi9cbiAgZ2V0Q2hhbm5lbHM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZENoYW5uZWxbXT5cbiAgLyoqXG4gICAqIEdldHMgYSBsaXN0IG9mIHdlYmhvb2tzIGZvciBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgd2hpY2ggdG8gZ2V0IHRoZSB3ZWJob29rcyBvZi5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkV2ViaG9va30gb2JqZWN0cyBhc3NvcnRlZCBieSB3ZWJob29rIElELlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9XRUJIT09LU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZ2V0LWNoYW5uZWwtd2ViaG9va3N9XG4gICAqL1xuICBnZXRDaGFubmVsV2ViaG9va3M6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkV2ViaG9va1tdPlxuICAvKipcbiAgICogR2V0cyBvciBjcmVhdGVzIGEgRE0gY2hhbm5lbCB3aXRoIGEgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBjcmVhdGUgdGhlIERNIGNoYW5uZWwgd2l0aC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRDaGFubmVsfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3VzZXIjY3JlYXRlLWRtfVxuICAgKi9cbiAgZ2V0RG1DaGFubmVsOiAodXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZENoYW5uZWw+XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgZ3JvdXAgRE0gY2hhbm5lbCB3aXRoIG11bHRpcGxlIHVzZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBjcmVhdGUgYSBuZXcgZ3JvdXAgZG1cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRDaGFubmVsfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhlIGFjY2VzcyB0b2tlbnMgcmVxdWlyZSB0byBoYXZlIHRoZSBgZ2RtLmpvaW5gIHNjb3BlXG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgaXMgbGltaXRlZCB0byAxMCBhY3RpdmUgZ3JvdXAgRE1zLlxuICAgKlxuICAgKiBGaXJlcyBhIF9DaGFubmVsIGNyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3VzZXIjY3JlYXRlLWdyb3VwLWRtfVxuICAgKi9cbiAgZ2V0R3JvdXBEbUNoYW5uZWw6IChvcHRpb25zOiBHZXRHcm91cERtT3B0aW9ucykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkQ2hhbm5lbD5cbiAgLyoqXG4gICAqIEdldHMgYW4gZW1vamkgYnkgaXRzIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgZnJvbSB3aGljaCB0byBnZXQgdGhlIGVtb2ppLlxuICAgKiBAcGFyYW0gZW1vamlJZCAtIFRoZSBJRCBvZiB0aGUgZW1vamkgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEVtb2ppfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSW5jbHVkZXMgdGhlIGB1c2VyYCBmaWVsZCBpZiB0aGUgYm90IGhhcyB0aGUgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbixcbiAgICogb3IgaWYgdGhlIGJvdCBjcmVhdGVkIHRoZSBlbW9qaSBhbmQgaGFzIHRoZSB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2Vtb2ppI2dldC1ndWlsZC1lbW9qaX1cbiAgICovXG4gIGdldEVtb2ppOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBlbW9qaUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEVtb2ppPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBlbW9qaXMgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB3aGljaCB0byBnZXQgdGhlIGVtb2ppcyBvZi5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkRW1vaml9IG9iamVjdHMgYXNzb3J0ZWQgYnkgZW1vamkgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEluY2x1ZGVzIGB1c2VyYCBmaWVsZHMgaWYgdGhlIGJvdCBoYXMgdGhlIGBDUkVBVEVfR1VJTERfRVhQUkVTU0lPTlNgIG9yIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9lbW9qaSNsaXN0LWd1aWxkLWVtb2ppc31cbiAgICovXG4gIGdldEVtb2ppczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkRW1vamlbXT5cbiAgLyoqXG4gICAqIEdldHMgYSBmb2xsb3ctdXAgbWVzc2FnZSB0byBhbiBpbnRlcmFjdGlvbiBieSB0aGUgSUQgb2YgdGhlIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFVubGlrZSBgZ2V0TWVzc2FnZSgpYCwgdGhpcyBlbmRwb2ludCBhbGxvd3MgdGhlIGJvdCB1c2VyIHRvIGFjdCB3aXRob3V0OlxuICAgKiAtIE5lZWRpbmcgdG8gYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIHRoYXQgdGhlIG1lc3NhZ2UgaXMgaW4uIChgUkVBRF9NRVNTQUdFU2AgcGVybWlzc2lvbi4pXG4gICAqIC0gUmVxdWlyaW5nIHRoZSBgTUVTU0FHRV9DT05URU5UYCBpbnRlbnQuXG4gICAqXG4gICAqIERvZXMgbm90IHN1cHBvcnQgZXBoZW1lcmFsIGZvbGxvdy11cCBtZXNzYWdlcyBkdWUgdG8gdGhlc2UgYmVpbmcgc3RhdGVsZXNzLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvcmVjZWl2aW5nLWFuZC1yZXNwb25kaW5nI2dldC1mb2xsb3d1cC1tZXNzYWdlfVxuICAgKi9cbiAgZ2V0Rm9sbG93dXBNZXNzYWdlOiAodG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZE1lc3NhZ2U+XG4gIC8qKiBHZXQgdGhlIGJvdHMgR2F0ZXdheSBtZXRhZGF0YSB0aGF0IGNhbiBoZWxwIGR1cmluZyB0aGUgb3BlcmF0aW9uIG9mIGxhcmdlIG9yIHNoYXJkZWQgYm90cy4gKi9cbiAgZ2V0R2F0ZXdheUJvdDogKCkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkR2V0R2F0ZXdheUJvdD5cbiAgLyoqXG4gICAqIEdldHMgYSBnbG9iYWwgYXBwbGljYXRpb24gY29tbWFuZCBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBjb21tYW5kSWQgLSBUaGUgSUQgb2YgdGhlIGNvbW1hbmQgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZH0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9hcHBsaWNhdGlvbi1jb21tYW5kcyNnZXQtZ2xvYmFsLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IChjb21tYW5kSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkQXBwbGljYXRpb25Db21tYW5kPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiB5b3VyIGJvdCdzIGdsb2JhbCBhcHBsaWNhdGlvbiBjb21tYW5kcy5cbiAgICpcbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQXBwbGljYXRpb25Db21tYW5kfSBvYmplY3RzIGFzc29ydGVkIGJ5IGNvbW1hbmQgSUQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9hcHBsaWNhdGlvbi1jb21tYW5kcyNnZXQtZ2xvYmFsLWFwcGxpY2F0aW9uLWNvbW1hbmRzfVxuICAgKi9cbiAgZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kczogKCkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkQXBwbGljYXRpb25Db21tYW5kW10+XG4gIC8qKlxuICAgKiBHZXRzIGEgZ3VpbGQgYnkgaXRzIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIGd1aWxkLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEd1aWxkfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZH1cbiAgICovXG4gIGdldEd1aWxkOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogeyBjb3VudHM/OiBib29sZWFuIH0pID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEd1aWxkPlxuICAvKipcbiAgICogR2V0IHRoZSB1c2VyIGd1aWxkcy5cbiAgICpcbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gVGhlIGFjY2VzcyB0b2tlbiBvZiB0aGUgdXNlciwgaWYgdW5zcGVjaWZpZWQgdGhlIGJvdCB0b2tlbiBpcyB1c2VkIGluc3RlYWRcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBndWlsZC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRHdWlsZH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHVzZWQgd2l0aCBhbiBhY2Nlc3MgdG9rZW4sIHRoZSB0b2tlbiBuZWVkcyB0byBoYXZlIHRoZSBgZ3VpbGRzYCBzY29wZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvdXNlciNnZXQtY3VycmVudC11c2VyLWd1aWxkc31cbiAgICovXG4gIGdldEd1aWxkczogKGJlYXJlclRva2VuPzogc3RyaW5nLCBvcHRpb25zPzogR2V0VXNlckd1aWxkcykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkUGFydGlhbEd1aWxkW10+XG4gIC8qKlxuICAgKiBHZXRzIGEgZ3VpbGQgYXBwbGljYXRpb24gY29tbWFuZCBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgY29tbWFuZCBpcyByZWdpc3RlcmVkIGluLlxuICAgKiBAcGFyYW0gY29tbWFuZElkIC0gVGhlIElEIG9mIHRoZSBjb21tYW5kIHRvIGdldC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmR9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjZ2V0LWd1aWxkLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZD5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgYXBwbGljYXRpb24gY29tbWFuZHMgcmVnaXN0ZXJlZCBieSB5b3VyIGJvdCBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIGNvbW1hbmRzIGFyZSByZWdpc3RlcmVkIGluLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmR9IG9iamVjdHMgYXNzb3J0ZWQgYnkgY29tbWFuZCBJRC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2dldC1nbG9iYWwtYXBwbGljYXRpb24tY29tbWFuZHNzfVxuICAgKi9cbiAgZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmRbXT5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHByZXZpZXcgb2YgYSBndWlsZCBieSBhIGd1aWxkJ3MgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHByZXZpZXcgb2YuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkR3VpbGRQcmV2aWV3fS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSWYgdGhlIGJvdCB1c2VyIGlzIG5vdCBpbiB0aGUgZ3VpbGQsIHRoZSBndWlsZCBtdXN0IGJlIGRpc2NvdmVyYWJsZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1wcmV2aWV3fVxuICAgKi9cbiAgZ2V0R3VpbGRQcmV2aWV3OiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRHdWlsZFByZXZpZXc+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RpY2tlciBvYmplY3QgZm9yIHRoZSBnaXZlbiBndWlsZCBhbmQgc3RpY2tlciBJRHMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0XG4gICAqIEBwYXJhbSBzdGlja2VySWQgVGhlIElEIG9mIHRoZSBzdGlja2VyIHRvIGdldFxuICAgKiBAcmV0dXJuIEEge0BsaW5rIENhbWVsaXplZERpc2NvcmRTdGlja2VyfVxuICAgKlxuICAgKiBAcmVtYXJrcyBJbmNsdWRlcyB0aGUgdXNlciBmaWVsZCBpZiB0aGUgYm90IGhhcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0aWNrZXIjZ2V0LWd1aWxkLXN0aWNrZXJ9XG4gICAqL1xuICBnZXRHdWlsZFN0aWNrZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHN0aWNrZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRTdGlja2VyPlxuICAvKipcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBzdGlja2VyIG9iamVjdHMgZm9yIHRoZSBnaXZlbiBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXRcbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkU3RpY2tlcn0gb2JqZWN0cyBhc3NvcnRlZCBieSBzdGlja2VyIElELlxuICAgKlxuICAgKiBAcmVtYXJrcyBJbmNsdWRlcyB1c2VyIGZpZWxkcyBpZiB0aGUgYm90IGhhcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0aWNrZXIjbGlzdC1ndWlsZC1zdGlja2Vyc31cbiAgICovXG4gIGdldEd1aWxkU3RpY2tlcnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFN0aWNrZXJbXT5cbiAgLyoqXG4gICAqIEdldHMgYSB0ZW1wbGF0ZSBieSBpdHMgY29kZS5cbiAgICpcbiAgICogQHBhcmFtIHRlbXBsYXRlQ29kZSAtIFRoZSBjb2RlIG9mIHRoZSB0ZW1wbGF0ZSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkVGVtcGxhdGV9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkLXRlbXBsYXRlI2dldC1ndWlsZC10ZW1wbGF0ZX1cbiAgICovXG4gIGdldEd1aWxkVGVtcGxhdGU6ICh0ZW1wbGF0ZUNvZGU6IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkVGVtcGxhdGU+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIHRlbXBsYXRlcyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGlzdCBvZiB0ZW1wbGF0ZXMgZm9yLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRUZW1wbGF0ZX0gb2JqZWN0cyBhc3NvcnRlZCBieSB0ZW1wbGF0ZSBjb2RlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkLXRlbXBsYXRlI2dldC1ndWlsZC10ZW1wbGF0ZXN9XG4gICAqL1xuICBnZXRHdWlsZFRlbXBsYXRlczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkVGVtcGxhdGVbXT5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2Ygd2ViaG9va3MgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpc3Qgb2Ygd2ViaG9va3MgZm9yLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRXZWJob29rfSBvYmplY3RzIGFzc29ydGVkIGJ5IHdlYmhvb2sgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvd2ViaG9vayNnZXQtZ3VpbGQtd2ViaG9va3N9XG4gICAqL1xuICBnZXRHdWlsZFdlYmhvb2tzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRXZWJob29rW10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGludGVncmF0aW9ucyBhdHRhY2hlZCB0byBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaXN0IG9mIGludGVncmF0aW9ucyBmcm9tLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRJbnRlZ3JhdGlvbn0gb2JqZWN0cyBhc3NvcnRlZCBieSBpbnRlZ3JhdGlvbiBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNnZXQtZ3VpbGQtaW50ZWdyYXRpb25zfVxuICAgKi9cbiAgZ2V0SW50ZWdyYXRpb25zOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRJbnRlZ3JhdGlvbltdPlxuICAvKipcbiAgICogR2V0cyBhbiBpbnZpdGUgdG8gYSBjaGFubmVsIGJ5IGl0cyBpbnZpdGUgY29kZS5cbiAgICpcbiAgICogQHBhcmFtIGludml0ZUNvZGUgLSBUaGUgaW52aXRlIGNvZGUgb2YgdGhlIGludml0ZSB0byBnZXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgaW52aXRlLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEludml0ZU1ldGFkYXRhfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2ludml0ZSNnZXQtaW52aXRlfVxuICAgKi9cbiAgZ2V0SW52aXRlOiAoaW52aXRlQ29kZTogc3RyaW5nLCBvcHRpb25zPzogR2V0SW52aXRlKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRJbnZpdGVNZXRhZGF0YT5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgaW52aXRlcyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgaW52aXRlcyBmcm9tLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRJbnZpdGVNZXRhZGF0YX0gb2JqZWN0cyBhc3NvcnRlZCBieSBpbnZpdGUgY29kZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9pbnZpdGUjZ2V0LWludml0ZXN9XG4gICAqL1xuICBnZXRJbnZpdGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRJbnZpdGVNZXRhZGF0YVtdPlxuICAvKipcbiAgICogR2V0cyBhIG1lc3NhZ2UgZnJvbSBhIGNoYW5uZWwgYnkgdGhlIElEIG9mIHRoZSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIGZyb20gd2hpY2ggdG8gZ2V0IHRoZSBtZXNzYWdlLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGdldC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhhdCB0aGUgYm90IHVzZXIgYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIGluIHdoaWNoIHRoZSBtZXNzYWdlIHdhcyBwb3N0ZWQuXG4gICAqXG4gICAqIElmIGdldHRpbmcgYSBtZXNzYWdlIGZyb20gYSBndWlsZCBjaGFubmVsOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2dldC1jaGFubmVsLW1lc3NhZ2V9XG4gICAqL1xuICBnZXRNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRNZXNzYWdlPlxuICAvKipcbiAgICogR2V0cyBtdWx0aXBsZSBtZXNzYWdlcyBmcm9tIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCBmcm9tIHdoaWNoIHRvIGdldCB0aGUgbWVzc2FnZXMuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgbWVzc2FnZXMuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZE1lc3NhZ2V9IG9iamVjdHMgYXNzb3J0ZWQgYnkgbWVzc2FnZSBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhhdCB0aGUgYm90IHVzZXIgYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIGluIHdoaWNoIHRoZSBtZXNzYWdlcyB3ZXJlIHBvc3RlZC5cbiAgICpcbiAgICogSWYgZ2V0dGluZyBhIG1lc3NhZ2VzIGZyb20gYSBndWlsZCBjaGFubmVsOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2dldC1jaGFubmVsLW1lc3NhZ2VzfVxuICAgKi9cbiAgZ2V0TWVzc2FnZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldE1lc3NhZ2VzT3B0aW9ucykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZVtdPlxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGlzdCBvZiBzdGlja2VyIHBhY2tzIGF2YWlsYWJsZS5cbiAgICpcbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkU3RpY2tlclBhY2t9IG9iamVjdHMgYXNzb3J0ZWQgYnkgc3RpY2tlciBJRC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0aWNrZXIjbGlzdC1zdGlja2VyLXBhY2tzfVxuICAgKi9cbiAgZ2V0U3RpY2tlclBhY2tzOiAoKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRTdGlja2VyUGFja1tdPlxuICAvKipcbiAgICogR2V0cyB0aGUgaW5pdGlhbCBtZXNzYWdlIHJlc3BvbnNlIHRvIGFuIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgaW50ZXJhY3Rpb24gdG9rZW4gdG8gdXNlLCBwcm92aWRlZCBpbiB0aGUgb3JpZ2luYWwgaW50ZXJhY3Rpb24uXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFVubGlrZSBgZ2V0TWVzc2FnZSgpYCwgdGhpcyBlbmRwb2ludCBhbGxvd3MgdGhlIGJvdCB1c2VyIHRvIGFjdCB3aXRob3V0OlxuICAgKiAtIE5lZWRpbmcgdG8gYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIHRoYXQgdGhlIG1lc3NhZ2UgaXMgaW4uIChgUkVBRF9NRVNTQUdFU2AgcGVybWlzc2lvbi4pXG4gICAqIC0gUmVxdWlyaW5nIHRoZSBgTUVTU0FHRV9DT05URU5UYCBpbnRlbnQuXG4gICAqXG4gICAqIERvZXMgbm90IHN1cHBvcnQgZXBoZW1lcmFsIGZvbGxvdy11cCBtZXNzYWdlcyBkdWUgdG8gdGhlc2UgYmVpbmcgc3RhdGVsZXNzLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvcmVjZWl2aW5nLWFuZC1yZXNwb25kaW5nI2dldC1vcmlnaW5hbC1pbnRlcmFjdGlvbi1yZXNwb25zZX1cbiAgICovXG4gIGdldE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogKHRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZE1lc3NhZ2U+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwaW5uZWQgbWVzc2FnZXMgZm9yIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBnZXQgdGhlIHBpbm5lZCBtZXNzYWdlcyBmb3IuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZE1lc3NhZ2V9IG9iamVjdHMgYXNzb3J0ZWQgYnkgbWVzc2FnZSBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhhdCB0aGUgYm90IHVzZXIgYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIGluIHdoaWNoIHRoZSBtZXNzYWdlcyB3ZXJlIHBvc3RlZC5cbiAgICpcbiAgICogSWYgZ2V0dGluZyBhIG1lc3NhZ2UgZnJvbSBhIGd1aWxkIGNoYW5uZWw6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZ2V0LXBpbm5lZC1tZXNzYWdlc31cbiAgICovXG4gIGdldFBpbm5lZE1lc3NhZ2VzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZE1lc3NhZ2VbXT5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgcHJpdmF0ZSBhcmNoaXZlZCB0aHJlYWRzIGZvciBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZ2V0IHRoZSBhcmNoaXZlZCB0aHJlYWRzIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRocmVhZHMuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQXJjaGl2ZWRUaHJlYWRzfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfVEhSRUFEU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogUmV0dXJucyB0aHJlYWRzIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRQcml2YXRlVGhyZWFkLlxuICAgKlxuICAgKiBUaHJlYWRzIGFyZSBvcmRlcmVkIGJ5IHRoZSBgYXJjaGl2ZV90aW1lc3RhbXBgIHByb3BlcnR5IGluY2x1ZGVkIGluIHRoZSBtZXRhZGF0YSBvZiB0aGUgb2JqZWN0IGluIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2xpc3QtcHJpdmF0ZS1hcmNoaXZlZC10aHJlYWRzfVxuICAgKi9cbiAgZ2V0UHJpdmF0ZUFyY2hpdmVkVGhyZWFkczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogTGlzdEFyY2hpdmVkVGhyZWFkcykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkQXJjaGl2ZWRUaHJlYWRzPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBwcml2YXRlIGFyY2hpdmVkIHRocmVhZHMgdGhlIGJvdCBpcyBhIG1lbWJlciBvZiBmb3IgYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIGdldCB0aGUgYXJjaGl2ZWQgdGhyZWFkcyBmb3IuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aHJlYWRzLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEFyY2hpdmVkVGhyZWFkc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIFJldHVybnMgdGhyZWFkcyBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkUHJpdmF0ZVRocmVhZC5cbiAgICpcbiAgICogVGhyZWFkcyBhcmUgb3JkZXJlZCBieSB0aGUgYGlkYCBwcm9wZXJ0eSBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNsaXN0LWpvaW5lZC1wcml2YXRlLWFyY2hpdmVkLXRocmVhZHN9XG4gICAqL1xuICBnZXRQcml2YXRlSm9pbmVkQXJjaGl2ZWRUaHJlYWRzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0QXJjaGl2ZWRUaHJlYWRzKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBcmNoaXZlZFRocmVhZHM+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IHdvdWxkIGJlIGtpY2tlZCBmcm9tIGEgZ3VpbGQgZHVyaW5nIHBydW5pbmcuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHBydW5lIGNvdW50IG9mLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIHBydW5lIGNvdW50LlxuICAgKiBAcmV0dXJucyBBIG51bWJlciBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IHdvdWxkIGJlIGtpY2tlZC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIGFuZCBgS0lDS19NRU1CRVJTYCBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1wcnVuZS1jb3VudH1cbiAgICovXG4gIGdldFBydW5lQ291bnQ6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRHdWlsZFBydW5lQ291bnRRdWVyeSkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkUHJ1bmVkQ291bnQ+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIHB1YmxpYyBhcmNoaXZlZCB0aHJlYWRzIGZvciBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZ2V0IHRoZSBhcmNoaXZlZCB0aHJlYWRzIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRocmVhZHMuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQXJjaGl2ZWRUaHJlYWRzfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogSWYgY2FsbGVkIG9uIGEgY2hhbm5lbCBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkVGV4dCwgcmV0dXJucyB0aHJlYWRzIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRQdWJsaWNUaHJlYWQuXG4gICAqIElmIGNhbGxlZCBvbiBhIGNoYW5uZWwgb2YgdHlwZSB7QGxpbmsgQ2hhbm5lbFR5cGVzfS5HdWlsZE5ld3MsIHJldHVybnMgdGhyZWFkcyBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkTmV3c1RocmVhZC5cbiAgICpcbiAgICogVGhyZWFkcyBhcmUgb3JkZXJlZCBieSB0aGUgYGFyY2hpdmVfdGltZXN0YW1wYCBwcm9wZXJ0eSBpbmNsdWRlZCBpbiB0aGUgbWV0YWRhdGEgb2YgdGhlIG9iamVjdCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNsaXN0LXB1YmxpYy1hcmNoaXZlZC10aHJlYWRzfVxuICAgKi9cbiAgZ2V0UHVibGljQXJjaGl2ZWRUaHJlYWRzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0QXJjaGl2ZWRUaHJlYWRzKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBcmNoaXZlZFRocmVhZHM+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIHJvbGVzIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaXN0IG9mIHJvbGVzIGZvci5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkUm9sZX0gb2JqZWN0cyBhc3NvcnRlZCBieSByb2xlIElELlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiDimqDvuI8gVGhpcyBlbmRwb2ludCBzaG91bGQgYmUgdXNlZCBzcGFyaW5nbHkgZHVlIHRvIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkUm9sZX0gb2JqZWN0cyBhbHJlYWR5IGJlaW5nIGluY2x1ZGVkIGluIGd1aWxkIHBheWxvYWRzLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjZ2V0LWd1aWxkLXJvbGVzfVxuICAgKi9cbiAgZ2V0Um9sZXM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFJvbGVbXT5cbiAgLyoqXG4gICAqIEdldHMgYSBzY2hlZHVsZWQgZXZlbnQgYnkgaXRzIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBzY2hlZHVsZWQgZXZlbnQgZnJvbS5cbiAgICogQHBhcmFtIGV2ZW50SWQgLSBUaGUgSUQgb2YgdGhlIHNjaGVkdWxlZCBldmVudCB0byBnZXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgc2NoZWR1bGVkIGV2ZW50LlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFNjaGVkdWxlZEV2ZW50fS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkLXNjaGVkdWxlZC1ldmVudCNnZXQtZ3VpbGQtc2NoZWR1bGVkLWV2ZW50fVxuICAgKi9cbiAgZ2V0U2NoZWR1bGVkRXZlbnQ6IChndWlsZElkOiBCaWdTdHJpbmcsIGV2ZW50SWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IHsgd2l0aFVzZXJDb3VudD86IGJvb2xlYW4gfSkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkU2NoZWR1bGVkRXZlbnQ+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIHNjaGVkdWxlZCBldmVudHMgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHNjaGVkdWxlZCBldmVudHMgZnJvbS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBzY2hlZHVsZWQgZXZlbnRzLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRTY2hlZHVsZWRFdmVudH0gb2JqZWN0cyBhc3NvcnRlZCBieSBldmVudCBJRC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkLXNjaGVkdWxlZC1ldmVudCNsaXN0LXNjaGVkdWxlZC1ldmVudHMtZm9yLWd1aWxkfVxuICAgKi9cbiAgZ2V0U2NoZWR1bGVkRXZlbnRzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0U2NoZWR1bGVkRXZlbnRzKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRTY2hlZHVsZWRFdmVudFtdPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBzdWJzY3JpYmVycyB0byBhIHNjaGVkdWxlZCBldmVudCBmcm9tIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHN1YnNjcmliZXJzIHRvIHRoZSBzY2hlZHVsZWQgZXZlbnQgZnJvbS5cbiAgICogQHBhcmFtIGV2ZW50SWQgLSBUaGUgSUQgb2YgdGhlIHNjaGVkdWxlZCBldmVudCB0byBnZXQgdGhlIHN1YnNjcmliZXJzIG9mLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIHN1YnNjcmliZXJzLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRVc2VyfSBvYmplY3RzIGFzc29ydGVkIGJ5IHVzZXIgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0VWRU5UU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogVXNlcnMgYXJlIG9yZGVyZWQgYnkgdGhlaXIgSURzIGluIF9hc2NlbmRpbmdfIG9yZGVyLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtc2NoZWR1bGVkLWV2ZW50I2dldC1ndWlsZC1zY2hlZHVsZWQtZXZlbnQtdXNlcnN9XG4gICAqL1xuICBnZXRTY2hlZHVsZWRFdmVudFVzZXJzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGV2ZW50SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0U2NoZWR1bGVkRXZlbnRVc2VycyxcbiAgKSA9PiBQcm9taXNlPEFycmF5PHsgdXNlcjogQ2FtZWxpemVkRGlzY29yZFVzZXI7IG1lbWJlcj86IENhbWVsaXplZERpc2NvcmRNZW1iZXIgfT4+XG4gIC8qKiBHZXQgdGhlIGJvdHMgR2F0ZXdheSBtZXRhZGF0YSB0aGF0IGNhbiBoZWxwIGR1cmluZyB0aGUgb3BlcmF0aW9uIG9mIGxhcmdlIG9yIHNoYXJkZWQgYm90cy4gKi9cbiAgZ2V0U2Vzc2lvbkluZm86ICgpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEdldEdhdGV3YXlCb3Q+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzdGFnZSBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggYSBzdGFnZSBjaGFubmVsLCBpZiBvbmUgZXhpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBzdGFnZSBjaGFubmVsIHRoZSBzdGFnZSBpbnN0YW5jZSBpcyBhc3NvY2lhdGVkIHdpdGguXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkU3RhZ2VJbnN0YW5jZX0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9zdGFnZS1pbnN0YW5jZSNnZXQtc3RhZ2UtaW5zdGFuY2V9XG4gICAqL1xuICBnZXRTdGFnZUluc3RhbmNlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFN0YWdlSW5zdGFuY2U+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RpY2tlciBvYmplY3QgZm9yIHRoZSBnaXZlbiBzdGlja2VyIElELlxuICAgKlxuICAgKiBAcGFyYW0gc3RpY2tlcklkIFRoZSBJRCBvZiB0aGUgc3RpY2tlciB0byBnZXRcbiAgICogQHJldHVybnMgQSB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFN0aWNrZXJ9XG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9zdGlja2VyI2dldC1zdGlja2VyfVxuICAgKi9cbiAgZ2V0U3RpY2tlcjogKHN0aWNrZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRTdGlja2VyPlxuICAvKipcbiAgICogR2V0cyBhIHRocmVhZCBtZW1iZXIgYnkgdGhlaXIgdXNlciBJRC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgdGhyZWFkIHRvIGdldCB0aGUgdGhyZWFkIG1lbWJlciBvZi5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSB0aHJlYWQgbWVtYmVyIHRvIGdldC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRUaHJlYWRNZW1iZXJ9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNnZXQtdGhyZWFkLW1lbWJlcn1cbiAgICovXG4gIGdldFRocmVhZE1lbWJlcjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkVGhyZWFkTWVtYmVyPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiB0aHJlYWQgbWVtYmVycyBmb3IgYSB0aHJlYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHRocmVhZCB0byBnZXQgdGhlIHRocmVhZCBtZW1iZXJzIG9mLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRUaHJlYWRNZW1iZXJ9IGFzc29ydGVkIGJ5IHVzZXIgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBhcHBsaWNhdGlvbiB0byBoYXZlIHRoZSBgR1VJTERfTUVNQkVSU2AgcHJpdmlsZWdlZCBpbnRlbnQgZW5hYmxlZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjbGlzdC10aHJlYWQtbWVtYmVyc31cbiAgICovXG4gIGdldFRocmVhZE1lbWJlcnM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkVGhyZWFkTWVtYmVyW10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIHVzZXJzIHRoYXQgcmVhY3RlZCB3aXRoIGFuIGVtb2ppIHRvIGEgbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0aGUgbWVzc2FnZSB0byBnZXQgdGhlIHVzZXJzIGZvciBpcyBpbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBnZXQgdGhlIHVzZXJzIGZvci5cbiAgICogQHBhcmFtIHJlYWN0aW9uIC0gVGhlIHJlYWN0aW9uIGZvciB3aGljaCB0byBnZXQgdGhlIHVzZXJzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIHVzZXJzLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRVc2VyfSBvYmplY3RzIGFzc29ydGVkIGJ5IHVzZXIgSUQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2dldC1yZWFjdGlvbnN9XG4gICAqL1xuICBnZXRSZWFjdGlvbnM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uOiBzdHJpbmcsIG9wdGlvbnM/OiBHZXRSZWFjdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFVzZXJbXT5cbiAgLyoqXG4gICAqIEdldCBhIHVzZXIncyBkYXRhIGZyb20gdGhlIGFwaVxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIHVzZXIncyBpZFxuICAgKiBAcmV0dXJucyB7Q2FtZWxpemVkRGlzY29yZFVzZXJ9XG4gICAqL1xuICBnZXRVc2VyOiAoaWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkVXNlcj5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCB1c2VyIGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIFRoZSBhY2Nlc3MgdG9rZW4gb2YgdGhlIHVzZXJcbiAgICogQHJldHVybnMge0NhbWVsaXplZERpc2NvcmRVc2VyfVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIHJlcXVpcmVzIHRoZSBgaWRlbnRpZnlgIHNjb3BlLlxuICAgKlxuICAgKiBUbyBnZXQgdGhlIG1haWwgdGhpcyBhbHNvIHJlcXVpcmVzIHRoZSBgZW1haWxgIHNjb3BlXG4gICAqL1xuICBnZXRDdXJyZW50VXNlcjogKGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFVzZXI+XG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdXNlciBjb25uZWN0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gVGhlIGFjY2VzcyB0b2tlbiBvZiB0aGUgdXNlclxuICAgKiBAcmV0dXJucyB7Q2FtZWxpemVkRGlzY29yZENvbm5lY3Rpb25bXX1cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyByZXF1aXJlcyB0aGUgYGNvbm5lY3Rpb25zYCBzY29wZS5cbiAgICovXG4gIGdldFVzZXJDb25uZWN0aW9uczogKGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZENvbm5lY3Rpb25bXT5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCB1c2VyIGFwcGxpY2F0aW9uIHJvbGUgY29ubmVjdGlvbiBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gYmVhcmVyVG9rZW4gLSBUaGUgYWNjZXNzIHRva2VuIG9mIHRoZSB1c2VyXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIGlkIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIHJvbGUgY29ubmVjdGlvblxuICAgKiBAcmV0dXJucyB7Q2FtZWxpemVkRGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb259XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSBhY2Nlc3MgdG9rZW4gcmVxdWlyZXMgdGhlIGByb2xlX2Nvbm5lY3Rpb25zLndyaXRlYCBzY29wZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3VzZXIjZ2V0LXVzZXItYXBwbGljYXRpb24tcm9sZS1jb25uZWN0aW9ufVxuICAgKi9cbiAgZ2V0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IChiZWFyZXJUb2tlbjogc3RyaW5nLCBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24+XG4gIC8qKlxuICAgKiBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YW5pdHkgdXJsIG9mIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHZhbml0eSB1cmwgaW5mb3JtYXRpb24gZm9yLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFZhbml0eVVybH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBUaGUgYGNvZGVgIHByb3BlcnR5IHdpbGwgYmUgYG51bGxgIGlmIHRoZSBndWlsZCBkb2VzIG5vdCBoYXZlIGEgc2V0IHZhbml0eSB1cmwuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNnZXQtZ3VpbGQtdmFuaXR5LXVybH1cbiAgICovXG4gIGdldFZhbml0eVVybDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkVmFuaXR5VXJsPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiB2b2ljZSByZWdpb25zIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSB2b2ljZSByZWdpb25zIGZvci5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkVm9pY2VSZWdpb259IG9iamVjdHMgYXNzb3J0ZWQgYnkgdm9pY2UgcmVnaW9uIElELlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjZ2V0LWd1aWxkLXZvaWNlLXJlZ2lvbnN9XG4gICAqL1xuICBnZXRWb2ljZVJlZ2lvbnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFZvaWNlUmVnaW9uW10+XG4gIC8qKlxuICAgKiBHZXRzIGEgd2ViaG9vayBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJob29rSWQgLSBUaGUgSUQgb2YgdGhlIHdlYmhvb2sgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZFdlYmhvb2t9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9XRUJIT09LU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZ2V0LXdlYmhvb2t9XG4gICAqL1xuICBnZXRXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFdlYmhvb2s+XG4gIC8qKlxuICAgKiBHZXRzIGEgd2ViaG9vayBtZXNzYWdlIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQHBhcmFtIHdlYmhvb2tJZCAtIFRoZSBJRCBvZiB0aGUgd2ViaG9vayB0byBnZXQgYSBtZXNzYWdlIG9mLlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgd2ViaG9vayB0b2tlbiwgdXNlZCB0byBnZXQgd2ViaG9vayBtZXNzYWdlcy5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIHRoZSBJRCBvZiB0aGUgd2ViaG9vayBtZXNzYWdlIHRvIGdldC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBtZXNzYWdlLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvd2ViaG9vayNnZXQtd2ViaG9vay1tZXNzYWdlfVxuICAgKi9cbiAgZ2V0V2ViaG9va01lc3NhZ2U6IChcbiAgICB3ZWJob29rSWQ6IEJpZ1N0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG1lc3NhZ2VJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRXZWJob29rTWVzc2FnZU9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZT5cbiAgLyoqXG4gICAqIEdldHMgYSB3ZWJob29rIHVzaW5nIHRoZSB3ZWJob29rIHRva2VuLCB0aGVyZWJ5IGJ5cGFzc2luZyB0aGUgbmVlZCBmb3IgYXV0aGVudGljYXRpb24gKyBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHdlYmhvb2tJZCAtIFRoZSBJRCBvZiB0aGUgd2ViaG9vayB0byBnZXQuXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSB3ZWJob29rIHRva2VuLCB1c2VkIHRvIGdldCB0aGUgd2ViaG9vay5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRXZWJob29rfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZ2V0LXdlYmhvb2std2l0aC10b2tlbn1cbiAgICovXG4gIGdldFdlYmhvb2tXaXRoVG9rZW46ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkV2ViaG9vaz5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHdlbGNvbWUgc2NyZWVuIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSB3ZWxjb21lIHNjcmVlbiBmb3IuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkV2VsY29tZVNjcmVlbn0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHRoZSB3ZWxjb21lIHNjcmVlbiBpcyBub3QgZW5hYmxlZDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC13ZWxjb21lLXNjcmVlbn1cbiAgICovXG4gIGdldFdlbGNvbWVTY3JlZW46IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFdlbGNvbWVTY3JlZW4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBndWlsZCB3aWRnZXQgYnkgZ3VpbGQgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHdpZGdldCBvZi5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRHdWlsZFdpZGdldH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGFuIGBJTlZJVEVfQ1JFQVRFRGAgR2F0ZXdheSBldmVudCB3aGVuIGFuIGludml0ZSBjaGFubmVsIGlzIGRlZmluZWQgYW5kIGEgbmV3IGBJbnZpdGVgIGlzIGdlbmVyYXRlZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC13aWRnZXR9XG4gICAqL1xuICBnZXRXaWRnZXQ6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEd1aWxkV2lkZ2V0PlxuICAvKipcbiAgICogR2V0cyB0aGUgc2V0dGluZ3Mgb2YgYSBndWlsZCdzIHdpZGdldC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgd2lkZ2V0IG9mLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZEd1aWxkV2lkZ2V0U2V0dGluZ3N9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC13aWRnZXQtc2V0dGluZ3N9XG4gICAqL1xuICBnZXRXaWRnZXRTZXR0aW5nczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5ncz5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIGJvdCB1c2VyIHRvIGEgdGhyZWFkLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSB0aHJlYWQgdG8gYWRkIHRoZSBib3QgdXNlciB0by5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIHRocmVhZCBub3QgYmUgYXJjaGl2ZWQuXG4gICAqXG4gICAqIEZpcmVzIGEgX1RocmVhZCBNZW1iZXJzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjam9pbi10aHJlYWR9XG4gICAqL1xuICBqb2luVGhyZWFkOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIExlYXZlcyBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gbGVhdmUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGEgX0d1aWxkIERlbGV0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy91c2VyI2xlYXZlLWd1aWxkfVxuICAgKi9cbiAgbGVhdmVHdWlsZDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgYm90IHVzZXIgZnJvbSBhIHRocmVhZC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgdGhyZWFkIHRvIHJlbW92ZSB0aGUgYm90IHVzZXIgZnJvbS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIHRocmVhZCBub3QgYmUgYXJjaGl2ZWQuXG4gICAqXG4gICAqIEZpcmVzIGEgX1RocmVhZCBNZW1iZXJzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjbGVhdmUtdGhyZWFkfVxuICAgKi9cbiAgbGVhdmVUaHJlYWQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQ3Jvc3MtcG9zdHMgYSBtZXNzYWdlIHBvc3RlZCBpbiBhbiBhbm5vdW5jZW1lbnQgY2hhbm5lbCB0byBzdWJzY3JpYmVkIGNoYW5uZWxzLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBhbm5vdW5jZW1lbnQgY2hhbm5lbC5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBjcm9zcy1wb3N0LlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3Jvc3MtcG9zdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgU0VORF9NRVNTQUdFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogSWYgbm90IGNyb3NzLXBvc3Rpbmcgb3duIG1lc3NhZ2U6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgQ3JlYXRlXyBldmVudCBpbiB0aGUgZ3VpbGRzIHRoZSBzdWJzY3JpYmVkIGNoYW5uZWxzIGFyZSBpbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjY3Jvc3Nwb3N0LW1lc3NhZ2V9XG4gICAqL1xuICBwdWJsaXNoTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZT5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSByb2xlIGZyb20gYSBtZW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgbWVtYmVyIHRvIHJlbW92ZSB0aGUgcm9sZSBmcm9tIGlzIGluLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIHVzZXIgSUQgb2YgdGhlIG1lbWJlciB0byByZW1vdmUgdGhlIHJvbGUgZnJvbS5cbiAgICogQHBhcmFtIHJvbGVJZCAtIFRoZSBJRCBvZiB0aGUgcm9sZSB0byByZW1vdmUgZnJvbSB0aGUgbWVtYmVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXIgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjcmVtb3ZlLWd1aWxkLW1lbWJlci1yb2xlfVxuICAgKi9cbiAgcmVtb3ZlUm9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBtZW1iZXIgZnJvbSBhIHRocmVhZC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgdGhyZWFkIHRvIHJlbW92ZSB0aGUgdGhyZWFkIG1lbWJlciBvZi5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSB0aHJlYWQgbWVtYmVyIHRvIHJlbW92ZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSWYgdGhlIHRocmVhZCBpcyBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkUHJpdmF0ZVRocmVhZCwgcmVxdWlyZXMgdG8gYmUgdGhlIGNyZWF0b3Igb2YgdGhlIHRocmVhZC5cbiAgICogT3RoZXJ3aXNlLCByZXF1aXJlcyB0aGUgYE1BTkFHRV9USFJFQURTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgdGhyZWFkIG5vdCBiZSBhcmNoaXZlZC5cbiAgICpcbiAgICogRmlyZXMgYSBfVGhyZWFkIE1lbWJlcnMgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNyZW1vdmUtdGhyZWFkLW1lbWJlcn1cbiAgICovXG4gIHJlbW92ZVRocmVhZE1lbWJlcjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogUmVtb3ZlcyBhIG1lbWJlciBmcm9tIGEgR3JvdXAgRE0uXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gcmVtb3ZlIHRoZSByZWNpcGllbnQgdXNlciBvZi5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSB1c2VyIHRvIHJlbW92ZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZ3JvdXAtZG0tcmVtb3ZlLXJlY2lwaWVudH1cbiAgICovXG4gIHJlbW92ZURtUmVjaXBpZW50OiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBTZW5kcyBhIG1lc3NhZ2UgdG8gYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIHNlbmQgdGhlIG1lc3NhZ2UgaW4uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhhdCB0aGUgYm90IHVzZXIgYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIGlzIHRvIGJlIHNlbnQgaW4uXG4gICAqXG4gICAqIElmIHNlbmRpbmcgYSBtZXNzYWdlIHRvIGEgZ3VpbGQgY2hhbm5lbDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYFNFTkRfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIElmIHNlbmRpbmcgYSBUVFMgbWVzc2FnZTpcbiAgICogLSBSZXF1aXJlcyB0aGUgYFNFTkRfVFRTX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBJZiBzZW5kaW5nIGEgbWVzc2FnZSBhcyBhIHJlcGx5IHRvIGFub3RoZXIgbWVzc2FnZTpcbiAgICogLSBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKiAtIFRoZSBtZXNzYWdlIGJlaW5nIHJlcGxpZWQgdG8gY2Fubm90IGJlIGEgc3lzdGVtIG1lc3NhZ2UuXG4gICAqXG4gICAqIOKaoO+4jyBUaGUgbWF4aW11bSBzaXplIG9mIGEgcmVxdWVzdCAoYWNjb3VudGluZyBmb3IgYW55IGF0dGFjaG1lbnRzIGFuZCBtZXNzYWdlIGNvbnRlbnQpIGZvciBib3QgdXNlcnMgaXMgXzggTWlCXy5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBDcmVhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2NyZWF0ZS1tZXNzYWdlfVxuICAgKi9cbiAgc2VuZE1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlTWVzc2FnZU9wdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZE1lc3NhZ2U+XG4gIC8qKlxuICAgKiBTZW5kcyBhIGZvbGxvdy11cCBtZXNzYWdlIHRvIGFuIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgaW50ZXJhY3Rpb24gdG9rZW4gdG8gdXNlLCBwcm92aWRlZCBpbiB0aGUgb3JpZ2luYWwgaW50ZXJhY3Rpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICog4pqg77iPIEludGVyYWN0aW9uIHRva2VucyBhcmUgb25seSB2YWxpZCBmb3IgXzE1IG1pbnV0ZXNfLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBtZW50aW9ucyBhcmUgc3VwcHJlc3NlZC4gVG8gZW5hYmxlIG1lbnRpb25zLCBwYXNzIGEgbWVudGlvbiBvYmplY3Qgd2l0aCB0aGUgY2FsbGJhY2sgZGF0YS5cbiAgICpcbiAgICogVW5saWtlIGBzZW5kTWVzc2FnZSgpYCwgdGhpcyBlbmRwb2ludCBhbGxvd3MgdGhlIGJvdCB1c2VyIHRvIGFjdCB3aXRob3V0OlxuICAgKiAtIE5lZWRpbmcgdG8gYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIHRoYXQgdGhlIG1lc3NhZ2UgaXMgaW4uIChgUkVBRF9NRVNTQUdFU2AgcGVybWlzc2lvbi4pXG4gICAqIC0gUmVxdWlyaW5nIHRoZSBgTUVTU0FHRV9DT05URU5UYCBpbnRlbnQuXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgQ3JlYXRlXyBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL3JlY2VpdmluZy1hbmQtcmVzcG9uZGluZyNjcmVhdGUtZm9sbG93dXAtbWVzc2FnZX1cbiAgICovXG4gIHNlbmRGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZT5cbiAgLyoqXG4gICAqIFNlbmRzIGEgcmVzcG9uc2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpbnRlcmFjdGlvbklkIC0gVGhlIElEIG9mIHRoZSBpbnRlcmFjdGlvbiB0byByZXNwb25kIHRvLlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgaW50ZXJhY3Rpb24gdG9rZW4gdG8gdXNlLCBwcm92aWRlZCBpbiB0aGUgb3JpZ2luYWwgaW50ZXJhY3Rpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICog4pqg77iPIEludGVyYWN0aW9uIHRva2VucyBhcmUgb25seSB2YWxpZCBmb3IgXzE1IG1pbnV0ZXNfLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBtZW50aW9ucyBhcmUgc3VwcHJlc3NlZC4gVG8gZW5hYmxlIG1lbnRpb25zLCBwYXNzIGEgbWVudGlvbiBvYmplY3Qgd2l0aCB0aGUgY2FsbGJhY2sgZGF0YS5cbiAgICpcbiAgICogVW5saWtlIGBzZW5kTWVzc2FnZSgpYCwgdGhpcyBlbmRwb2ludCBhbGxvd3MgdGhlIGJvdCB1c2VyIHRvIGFjdCB3aXRob3V0OlxuICAgKiAtIE5lZWRpbmcgdG8gYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIHRoYXQgdGhlIG1lc3NhZ2UgaXMgaW4uIChgUkVBRF9NRVNTQUdFU2AgcGVybWlzc2lvbi4pXG4gICAqIC0gUmVxdWlyaW5nIHRoZSBgTUVTU0FHRV9DT05URU5UYCBpbnRlbnQuXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgQ3JlYXRlXyBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL3JlY2VpdmluZy1hbmQtcmVzcG9uZGluZyNjcmVhdGUtaW50ZXJhY3Rpb24tcmVzcG9uc2V9XG4gICAqL1xuICBzZW5kSW50ZXJhY3Rpb25SZXNwb25zZTogKGludGVyYWN0aW9uSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZywgb3B0aW9uczogSW50ZXJhY3Rpb25SZXNwb25zZSkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRocmVhZCwgdXNpbmcgYW4gZXhpc3RpbmcgbWVzc2FnZSBhcyBpdHMgcG9pbnQgb2Ygb3JpZ2luLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgdGhyZWFkLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIHVzZSBhcyB0aGUgdGhyZWFkJ3MgcG9pbnQgb2Ygb3JpZ2luLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIHRvIHVzZSBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSB0aHJlYWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRDaGFubmVsfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSWYgY2FsbGVkIG9uIGEgY2hhbm5lbCBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkVGV4dCwgY3JlYXRlcyBhIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkUHVibGljVGhyZWFkLlxuICAgKiBJZiBjYWxsZWQgb24gYSBjaGFubmVsIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGROZXdzLCBjcmVhdGVzIGEge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGROZXdzVGhyZWFkLlxuICAgKiBEb2VzIG5vdCB3b3JrIG9uIGNoYW5uZWxzIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRGb3J1bS5cbiAgICpcbiAgICogVGhlIElEIG9mIHRoZSBjcmVhdGVkIHRocmVhZCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBJRCBvZiB0aGUgc291cmNlIG1lc3NhZ2UuXG4gICAqXG4gICAqIEZpcmVzIGEgX1RocmVhZCBDcmVhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI3N0YXJ0LXRocmVhZC1mcm9tLW1lc3NhZ2V9XG4gICAqL1xuICBzdGFydFRocmVhZFdpdGhNZXNzYWdlOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogU3RhcnRUaHJlYWRXaXRoTWVzc2FnZSxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkQ2hhbm5lbD5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0aHJlYWQgd2l0aG91dCB1c2luZyBhIG1lc3NhZ2UgYXMgdGhlIHRocmVhZCdzIHBvaW50IG9mIG9yaWdpbi5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCBpbiB3aGljaCB0byBjcmVhdGUgdGhlIHRocmVhZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyB0byB1c2UgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgdGhyZWFkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQ2hhbm5lbCB8IFRocmVhZH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIENyZWF0aW5nIGEgcHJpdmF0ZSB0aHJlYWQgcmVxdWlyZXMgdGhlIHNlcnZlciB0byBiZSBib29zdGVkLlxuICAgKlxuICAgKiBGaXJlcyBhIF9UaHJlYWQgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNzdGFydC10aHJlYWQtd2l0aG91dC1tZXNzYWdlfVxuICAgKi9cbiAgc3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBTdGFydFRocmVhZFdpdGhvdXRNZXNzYWdlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZENoYW5uZWw+XG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIHVzZXJzIHRoYXQgdm90ZWQgZm9yIHRoaXMgc3BlY2lmaWMgYW5zd2VyLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIGluIHdoaWNoIHRoZSBtZXNzYWdlIHdpdGggdGhlIHBvbGwgbGl2ZXNcbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSBpbiB3aGljaCB0aGUgcG9sbCBsaXZlc1xuICAgKiBAcGFyYW0gYW5zd2VySWQgLSBUaGUgSUQgb2YgdGhlIGFuc3dlciB0byBnZXQgdGhlIHVzZXJzIHRoYXQgdm90ZWQgdGhhdCBhbnN3ZXJcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgdXNlcnMgdGhhdCB2b3RlZCBmb3IgdGhlIHNwZWNpZmljIGFuc3dlci5cbiAgICovXG4gIGdldFBvbGxBbnN3ZXJWb3RlcnM6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICBhbnN3ZXJJZDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiBHZXRQb2xsQW5zd2VyVm90ZXMsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkR2V0QW5zd2VyVm90ZXNSZXNwb25zZT5cbiAgLyoqXG4gICAqIEltbWVkaWF0ZWx5IGVuZHMgdGhlIHBvbGwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgaW4gd2hpY2ggdGhlIG1lc3NhZ2Ugd2l0aCB0aGUgcG9sbCBsaXZlc1xuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIGluIHdoaWNoIHRoZSBwb2xsIGxpdmVzXG4gICAqIEByZXR1cm5zIFRoZSBtZXNzYWdlIHdpdGggdGhlIGV4cGlyZWQgcG9sbFxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBZb3UgY2Fubm90IGVuZCBwb2xscyBmcm9tIG90aGVyIHVzZXJzLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudFxuICAgKi9cbiAgZW5kUG9sbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZT5cbiAgLyoqXG4gICAqIFN5bmNocm9uaXNlcyBhIHRlbXBsYXRlIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIHN5bmNocm9uaXNlIGEgdGVtcGxhdGUgb2YuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRUZW1wbGF0ZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZC10ZW1wbGF0ZSNnZXQtZ3VpbGQtdGVtcGxhdGVzfVxuICAgKi9cbiAgc3luY0d1aWxkVGVtcGxhdGU6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFRlbXBsYXRlPlxuICAvKipcbiAgICogVHJpZ2dlcnMgYSB0eXBpbmcgaW5kaWNhdG9yIGZvciB0aGUgc3BlY2lmaWVkIGNoYW5uZWwsIHdoaWNoIGV4cGlyZXMgYWZ0ZXIgMTAgc2Vjb25kcy5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCBpbiB3aGljaCB0byB0cmlnZ2VyIHRoZSB0eXBpbmcgaW5kaWNhdG9yLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBHZW5lcmFsbHkgYm90cyBzaG91bGQgKipub3QqKiB1c2UgdGhpcyByb3V0ZS5cbiAgICogSG93ZXZlciwgaWYgYSBib3QgaXMgcmVzcG9uZGluZyB0byBhIGNvbW1hbmQgYW5kIGV4cGVjdHMgdGhlIGNvbXB1dGF0aW9uIHRvIHRha2UgYSBmZXcgc2Vjb25kcyxcbiAgICogdGhpcyBlbmRwb2ludCBtYXkgYmUgY2FsbGVkIHRvIGxldCB0aGUgdXNlciBrbm93IHRoYXQgdGhlIGJvdCBpcyBwcm9jZXNzaW5nIHRoZWlyIG1lc3NhZ2UuXG4gICAqXG4gICAqIEZpcmVzIGEgX1R5cGluZyBTdGFydF8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjdHJpZ2dlci10eXBpbmctaW5kaWNhdG9yfVxuICAgKi9cbiAgdHJpZ2dlclR5cGluZ0luZGljYXRvcjogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBSZS1yZWdpc3RlcnMgdGhlIGxpc3Qgb2YgZ2xvYmFsIGFwcGxpY2F0aW9uIGNvbW1hbmRzLCBvdmVyd3JpdGluZyB0aGUgcHJldmlvdXMgY29tbWFuZHMgY29tcGxldGVseS5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmRzIC0gVGhlIGxpc3Qgb2YgY29tbWFuZHMgdG8gdXNlIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgbGlzdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBlbmRwb2ludC5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQXBwbGljYXRpb25Db21tYW5kfSBvYmplY3RzIGFzc29ydGVkIGJ5IGNvbW1hbmQgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIOKdlyBDb21tYW5kcyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgYGNvbW1hbmRzYCBhcnJheSB3aWxsIGJlIF9fZGVsZXRlZF9fLlxuICAgKlxuICAgKiDimqDvuI8gQ29tbWFuZHMgdGhhdCBkbyBub3QgYWxyZWFkeSBleGlzdCB3aWxsIGNvdW50IHRvd2FyZHMgdGhlIGRhaWx5IGxpbWl0IG9mIF8yMDBfIG5ldyBjb21tYW5kcy5cbiAgICpcbiAgICogV2hlbiB1c2luZyB0aGUgYmVhcmVyIHRva2VuIHRoZSB0b2tlbiBuZWVkcyB0aGUgYGFwcGxpY2F0aW9ucy5jb21tYW5kcy51cGRhdGVgIHNjb3BlIGFuZCBtdXN0IGJlIGEgYENsaWVudCBncmFudGAgdG9rZW4uXG4gICAqICBZb3Ugd2lsbCBiZSBhYmxlIHRvIHVwZGF0ZSBvbmx5IHlvdXIgb3duIGFwcGxpY2F0aW9uIGNvbW1hbmRzXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9hcHBsaWNhdGlvbi1jb21tYW5kcyNidWxrLW92ZXJ3cml0ZS1nbG9iYWwtYXBwbGljYXRpb24tY29tbWFuZHN9XG4gICAqL1xuICB1cHNlcnRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzOiAoXG4gICAgY29tbWFuZHM6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZFtdLFxuICAgIG9wdGlvbnM/OiBVcHNlcnRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZFtdPlxuICAvKipcbiAgICogUmUtcmVnaXN0ZXJzIHRoZSBsaXN0IG9mIGFwcGxpY2F0aW9uIGNvbW1hbmRzIHJlZ2lzdGVyZWQgaW4gYSBndWlsZCwgb3ZlcndyaXRpbmcgdGhlIHByZXZpb3VzIGNvbW1hbmRzIGNvbXBsZXRlbHkuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB3aG9zZSBsaXN0IG9mIGNvbW1hbmRzIHRvIG92ZXJ3cml0ZS5cbiAgICogQHBhcmFtIGNvbW1hbmRzIC0gVGhlIGxpc3Qgb2YgY29tbWFuZHMgdG8gdXNlIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgbGlzdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBlbmRwb2ludC5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkQXBwbGljYXRpb25Db21tYW5kfSBvYmplY3RzIGFzc29ydGVkIGJ5IGNvbW1hbmQgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIOKdlyBDb21tYW5kcyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgYGNvbW1hbmRzYCBhcnJheSB3aWxsIGJlIF9fZGVsZXRlZF9fLlxuICAgKlxuICAgKiDimqDvuI8gQ29tbWFuZHMgdGhhdCBkbyBub3QgYWxyZWFkeSBleGlzdCB3aWxsIGNvdW50IHRvd2FyZHMgdGhlIGRhaWx5IGxpbWl0IG9mIF8yMDBfIG5ldyBjb21tYW5kcy5cbiAgICpcbiAgICogV2hlbiB1c2luZyB0aGUgYmVhcmVyIHRva2VuIHRoZSB0b2tlbiBuZWVkcyB0aGUgYGFwcGxpY2F0aW9ucy5jb21tYW5kcy51cGRhdGVgIHNjb3BlIGFuZCBtdXN0IGJlIGEgYENsaWVudCBncmFudGAgdG9rZW4uXG4gICAqICBZb3Ugd2lsbCBiZSBhYmxlIHRvIHVwZGF0ZSBvbmx5IHlvdXIgb3duIGFwcGxpY2F0aW9uIGNvbW1hbmRzXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9hcHBsaWNhdGlvbi1jb21tYW5kcyNidWxrLW92ZXJ3cml0ZS1ndWlsZC1hcHBsaWNhdGlvbi1jb21tYW5kc31cbiAgICovXG4gIHVwc2VydEd1aWxkQXBwbGljYXRpb25Db21tYW5kczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjb21tYW5kczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kW10sXG4gICAgb3B0aW9ucz86IFVwc2VydEd1aWxkQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmRbXT5cbiAgLyoqXG4gICAqIEJhbnMgYSB1c2VyIGZyb20gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGJhbiB0aGUgdXNlciBmcm9tLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGJhbiBmcm9tIHRoZSBndWlsZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBiYW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBCQU5fTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgQmFuIEFkZF8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2NyZWF0ZS1ndWlsZC1iYW59XG4gICAqL1xuICBiYW5NZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogQ3JlYXRlR3VpbGRCYW4sIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQmFucyB1cCB0byAyMDAgdXNlcnMgZnJvbSBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gYmFuIHRoZSB1c2VycyBmcm9tLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB1c2VycyB0byBiYW4gYW5kIHRoZSBvdGhlciBvcHRpb25zIGZvciB0aGUgYmFuLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQkFOX01FTUJFUlNgIGFuZCBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICogSWYgYWxsIHByb3ZpZGVkIHVzZXJzIGZhaWwgdG8gYmUgYmFubmVkLCBkaXNjb3JkIHdpbGwgcmVzcG9uZCB3aXRoIGFuIGVycm9yIChjb2RlOiBgNTAwMDAwOiBGYWlsZWQgdG8gYmFuIHVzZXJzYClcbiAgICpcbiAgICogRmlyZXMgYXMgbWFueSBfR3VpbGQgQmFuIEFkZF8gZ2F0ZXdheSBldmVudHMgYXMgbWFueSB1c2VyIHdoZXJlIGJhbm5lZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2J1bGstZ3VpbGQtYmFufVxuICAgKi9cbiAgYnVsa0Jhbk1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkQnVsa0JhbiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRCdWxrQmFuPj5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBuaWNrbmFtZSBvZiB0aGUgYm90IHVzZXIuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBlZGl0IHRoZSBuaWNrbmFtZSBvZiB0aGUgYm90IHVzZXIgaW4uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBuaWNrbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkTWVtYmVyfVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXIgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbW9kaWZ5LWN1cnJlbnQtbWVtYmVyfVxuICAgKi9cbiAgZWRpdEJvdE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdEJvdE1lbWJlck9wdGlvbnMsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVtYmVyPlxuICAvKipcbiAgICogRWRpdHMgYSBtZW1iZXIncyBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZWRpdCB0aGUgbWVtYmVyIG9mLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIHVzZXIgSUQgb2YgdGhlIG1lbWJlciB0byBlZGl0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSB1c2VyLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIGVuZHBvaW50IHJlcXVpcmVzIHZhcmlvdXMgcGVybWlzc2lvbnMgZGVwZW5kaW5nIG9uIHdoYXQgaXMgZWRpdGVkIGFib3V0IHRoZSBtZW1iZXIuXG4gICAqIFRvIGZpbmQgb3V0IHRoZSByZXF1aXJlZCBwZXJtaXNzaW9uIHRvIGVuYWN0IGEgY2hhbmdlLCByZWFkIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZW5kcG9pbnQncyB7QGxpbmsgTW9kaWZ5R3VpbGRNZW1iZXIgfCBwYXJhbWV0ZXJzfS5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgTWVtYmVyIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI21vZGlmeS1ndWlsZC1tZW1iZXJ9XG4gICAqL1xuICBlZGl0TWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5R3VpbGRNZW1iZXIsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVtYmVyPlxuICAvKipcbiAgICogR2V0cyB0aGUgbWVtYmVyIG9iamVjdCBieSB1c2VyIElELlxuICAgKlxuICBcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbWVtYmVyIG9iamVjdCBmb3IuXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBtZW1iZXIgb2JqZWN0IGZvci5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbWVsaXplZERpc2NvcmRNZW1iZXJXaXRoVXNlcn0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNnZXQtZ3VpbGQtbWVtYmVyfVxuICAgKi9cbiAgZ2V0TWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVtYmVyV2l0aFVzZXI+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IG1lbWJlciBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIFRoZSBhY2Nlc3MgdG9rZW4gb2YgdGhlIHVzZXJcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbWVtYmVyIG9iamVjdCBmb3IuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkTWVtYmVyV2l0aFVzZXJ9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGUgYWNjZXNzIHRva2VucyBuZWVkcyB0aGUgYGd1aWxkcy5tZW1iZXJzLnJlYWRgIHNjb3BlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy91c2VyI2dldC1jdXJyZW50LXVzZXItZ3VpbGQtbWVtYmVyfVxuICAgKi9cbiAgZ2V0Q3VycmVudE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVtYmVyV2l0aFVzZXI+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIG1lbWJlcnMgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpc3Qgb2YgbWVtYmVycyBmb3IuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgbWVtYmVycy5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkTWVtYmVyV2l0aFVzZXJ9IG9iamVjdHMgYXNzb3J0ZWQgYnkgdXNlciBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBHVUlMRF9NRU1CRVJTYCBpbnRlbnQuXG4gICAqXG4gICAqIOKaoO+4jyBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgZW5kcG9pbnQgd2l0aCB2ZXJ5IGxhcmdlIGJvdHMuIEluc3RlYWQsIG9wdCB0byB1c2UgYGZldGNoTWVtYmVycygpYDpcbiAgICogUkVTVCBjb21tdW5pY2F0aW9uIG9ubHkgcGVybWl0cyA1MCByZXF1ZXN0cyB0byBiZSBtYWRlIHBlciBzZWNvbmQsIHdoaWxlIGdhdGV3YXlzIGFsbG93IGZvciB1cCB0byAxMjAgcmVxdWVzdHNcbiAgICogcGVyIG1pbnV0ZSBwZXIgc2hhcmQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWFkIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvcmF0ZS1saW1pdHMjcmF0ZS1saW1pdHN9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbGlzdC1ndWlsZC1tZW1iZXJzfVxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSNyZXF1ZXN0LWd1aWxkLW1lbWJlcnN9XG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9yYXRlLWxpbWl0cyNyYXRlLWxpbWl0c31cbiAgICovXG4gIGdldE1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IExpc3RHdWlsZE1lbWJlcnMpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZE1lbWJlcldpdGhVc2VyW10+XG5cbiAgLyoqXG4gICAqIEtpY2tzIGEgbWVtYmVyIGZyb20gYSBndWlsZC5cbiAgICpcbiAgXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBraWNrIHRoZSBtZW1iZXIgZnJvbS5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSBtZW1iZXIgdG8ga2ljayBmcm9tIHRoZSBndWlsZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYEtJQ0tfTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgTWVtYmVyIFJlbW92ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI3JlbW92ZS1ndWlsZC1tZW1iZXJ9XG4gICAqL1xuICBraWNrTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBQaW5zIGEgbWVzc2FnZSBpbiBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgd2hlcmUgdGhlIG1lc3NhZ2UgaXMgdG8gYmUgcGlubmVkLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIHBpbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGF0IHRoZSBib3QgdXNlciBiZSBhYmxlIHRvIHNlZSB0aGUgY29udGVudHMgb2YgdGhlIGNoYW5uZWwgaW4gd2hpY2ggdGhlIG1lc3NhZ2VzIHdlcmUgcG9zdGVkLlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9NRVNTQUdFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICog4pqg77iPIFRoZXJlIGNhbiBvbmx5IGJlIGF0IG1heCA1MCBtZXNzYWdlcyBwaW5uZWQgaW4gYSBjaGFubmVsLlxuICAgKlxuICAgKiBGaXJlcyBhIF9DaGFubmVsIFBpbnMgVXBkYXRlXyBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjcGluLW1lc3NhZ2V9XG4gICAqL1xuICBwaW5NZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEluaXRpYXRlcyB0aGUgcHJvY2VzcyBvZiBwcnVuaW5nIGluYWN0aXZlIG1lbWJlcnMuXG4gICAqXG4gIFxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gcHJ1bmUgdGhlIG1lbWJlcnMgb2YuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBwcnVuaW5nIG9mIG1lbWJlcnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQSBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSBtZW1iZXJzIHdlcmUgcHJ1bmVkLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgYW5kIGBLSUNLX01FTUJFUlNgIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiDinZcgUmVxdWVzdHMgdG8gdGhpcyBlbmRwb2ludCB3aWxsIHRpbWUgb3V0IGZvciBsYXJnZSBndWlsZHMuIFRvIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZywgc2V0IHRoZSB7QGxpbmsgQmVnaW5HdWlsZFBydW5lLmNvbXB1dGVQcnVuZUNvdW50fSBwcm9wZXJ0eSBvZiB0aGUge0BsaW5rIG9wdGlvbnN9IG9iamVjdCBwYXJhbWV0ZXIgdG8gYGZhbHNlYC4gVGhpcyB3aWxsIGJlZ2luIHRoZSBwcm9jZXNzIG9mIHBydW5pbmcsIGFuZCBpbW1lZGlhdGVseSByZXR1cm4gYHVuZGVmaW5lZGAsIHJhdGhlciB0aGFuIHdhaXQgZm9yIHRoZSBwcm9jZXNzIHRvIGNvbXBsZXRlIGJlZm9yZSByZXR1cm5pbmcgdGhlIGFjdHVhbCBjb3VudCBvZiBtZW1iZXJzIHRoYXQgaGF2ZSBiZWVuIGtpY2tlZC5cbiAgICpcbiAgICog4pqg77iPIEJ5IGRlZmF1bHQsIHRoaXMgcHJvY2VzcyB3aWxsIG5vdCByZW1vdmUgbWVtYmVycyB3aXRoIGEgcm9sZS4gVG8gaW5jbHVkZSB0aGUgbWVtYmVycyB3aG8gaGF2ZSBhIF9wYXJ0aWN1bGFyIHN1YnNldCBvZiByb2xlc18sIHNwZWNpZnkgdGhlIHJvbGUocykgaW4gdGhlIHtAbGluayBCZWdpbkd1aWxkUHJ1bmUuaW5jbHVkZVJvbGVzIHwgaW5jbHVkZVJvbGVzfSBwcm9wZXJ0eSBvZiB0aGUge0BsaW5rIG9wdGlvbnN9IG9iamVjdCBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIE1lbWJlciBSZW1vdmVfIGdhdGV3YXkgZXZlbnQgZm9yIGV2ZXJ5IG1lbWJlciBraWNrZWQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNiZWdpbi1ndWlsZC1wcnVuZX1cbiAgICovXG4gIHBydW5lTWVtYmVyczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQmVnaW5HdWlsZFBydW5lLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8eyBwcnVuZWQ6IG51bWJlciB8IG51bGwgfT5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgbWVtYmVycyB3aG9zZSB1c2VybmFtZXMgb3Igbmlja25hbWVzIHN0YXJ0IHdpdGggYSBwcm92aWRlZCBzdHJpbmcuXG4gICAqXG4gIFxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gc2VhcmNoIGluLlxuICAgKiBAcGFyYW0gcXVlcnkgLSBUaGUgc3RyaW5nIHRvIG1hdGNoIHVzZXJuYW1lcyBvciBuaWNrbmFtZXMgYWdhaW5zdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3Igc2VhcmNoaW5nIHRocm91Z2ggdGhlIG1lbWJlcnMuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgQ2FtZWxpemVkRGlzY29yZE1lbWJlcn0gb2JqZWN0cyBhc3NvcnRlZCBieSB1c2VyIElELlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjc2VhcmNoLWd1aWxkLW1lbWJlcnN9XG4gICAqL1xuICBzZWFyY2hNZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBxdWVyeTogc3RyaW5nLCBvcHRpb25zPzogT21pdDxTZWFyY2hNZW1iZXJzLCAncXVlcnknPikgPT4gUHJvbWlzZTxDYW1lbGl6ZWREaXNjb3JkTWVtYmVyV2l0aFVzZXJbXT5cbiAgLyoqXG4gICAqIFVuYmFucyBhIHVzZXIgZnJvbSBhIGd1aWxkLlxuICAgKlxuICBcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIHVuYmFuIHRoZSB1c2VyIGluLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIHVuYmFuLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQkFOX01FTUJFUlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIEJhbiBSZW1vdmVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNyZW1vdmUtZ3VpbGQtYmFufVxuICAgKi9cbiAgdW5iYW5NZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFVucGlucyBhIHBpbm5lZCBtZXNzYWdlIGluIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB3aGVyZSB0aGUgbWVzc2FnZSBpcyBwaW5uZWQuXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gdW5waW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhhdCB0aGUgYm90IHVzZXIgYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIGluIHdoaWNoIHRoZSBtZXNzYWdlcyB3ZXJlIHBvc3RlZC5cbiAgICpcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0NoYW5uZWwgUGlucyBVcGRhdGVfIGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCN1bnBpbi1tZXNzYWdlfVxuICAgKi9cbiAgdW5waW5NZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEdldCB0aGUgZ3VpbGQgb25ib2FyZGluZ1xuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBndWlsZCB0byBnZXQgdGhlIG9uYm9hcmRpbmcgZnJvbVxuICAgKi9cbiAgZ2V0R3VpbGRPbmJvYXJkaW5nOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRHdWlsZE9uYm9hcmRpbmc+XG4gIC8qKlxuICAgKiBNb2RpZmllcyB0aGUgb25ib2FyZGluZyBjb25maWd1cmF0aW9uIG9mIHRoZSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgZ3VpbGQgdG8gZ2V0IHRoZSBvbmJvYXJkaW5nIGZyb21cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgYW5kIGBNQU5BR0VfUk9MRVNgIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBPbmJvYXJkaW5nIGVuZm9yY2VzIGNvbnN0cmFpbnRzIHdoZW4gZW5hYmxlZC4gVGhlc2UgY29uc3RyYWludHMgYXJlOlxuICAgKiAgLSBhdCBsZWFzdCA3IGRlZmF1bHQgY2hhbm5lbHNcbiAgICogIC0gYXQgbGVhc3QgNSBvZiB0aGUgNyBjaGFubmVscyBtdXN0IGFsbG93IHNlbmRpbmcgbWVzc2FnZXMgdG8gdGhlIEBldmVyeW9uZSByb2xlXG4gICAqXG4gICAqIFRoZSBgbW9kZWAgZmllbGQgbW9kaWZpZXMgd2hhdCBpcyBjb25zaWRlcmVkIHdoZW4gZW5mb3JjaW5nIHRoZXNlIGNvbnN0cmFpbnRzLlxuICAgKi9cbiAgZWRpdEd1aWxkT25ib2FyZGluZzogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdEd1aWxkT25ib2FyZGluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRHdWlsZE9uYm9hcmRpbmc+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBlbnRpdGxlbWVudHMgZm9yIGEgZ2l2ZW4gYXBwLCBhY3RpdmUgYW5kIGV4cGlyZWQuXG4gICAqXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIGlkIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGVudGl0bGVtZW50c1xuICAgKiBAcGFyYW0ge0dldEVudGl0bGVtZW50c30gW29wdGlvbnNdIC0gVGhlIG9wdGlvbmFsIHF1ZXJ5IHBhcmFtcyBmb3IgdGhlIGVuZHBvaW50XG4gICAqL1xuICBsaXN0RW50aXRsZW1lbnRzOiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0RW50aXRsZW1lbnRzKSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRFbnRpdGxlbWVudFtdPlxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRlc3QgZW50aXRsZW1lbnQgdG8gYSBnaXZlbiBTS1UgZm9yIGEgZ2l2ZW4gZ3VpbGQgb3IgdXNlci4gRGlzY29yZCB3aWxsIGFjdCBhcyB0aG91Z2ggdGhhdCB1c2VyIG9yIGd1aWxkIGhhcyBlbnRpdGxlbWVudCB0byB5b3VyIHByZW1pdW0gb2ZmZXJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIGlkIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBjcmVhdGUgdGhlIGVudGl0bGVtZW50XG4gICAqIEBwYXJhbSBib2R5IC0gVGhlIG9wdGlvbnMgZm9yIG5ldyBlbnRpdGxlbWVudFxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIGVuZHBvaW50IHJldHVybnMgYSBwYXJ0aWFsIGVudGl0bGVtZW50IG9iamVjdC5cbiAgICogSXQgd2lsbCBub3QgY29udGFpbiBzdWJzY3JpcHRpb25faWQsIHN0YXJ0c19hdCwgb3IgZW5kc19hdCwgYXMgaXQncyB2YWxpZCBpbiBwZXJwZXR1aXR5LlxuICAgKi9cbiAgY3JlYXRlVGVzdEVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBib2R5OiBDcmVhdGVFbnRpdGxlbWVudCkgPT4gUHJvbWlzZTxQYXJ0aWFsPENhbWVsaXplZERpc2NvcmRFbnRpdGxlbWVudD4+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgY3VycmVudGx5LWFjdGl2ZSB0ZXN0IGVudGl0bGVtZW50LiBEaXNjb3JkIHdpbGwgYWN0IGFzIHRob3VnaCB0aGF0IHVzZXIgb3IgZ3VpbGQgbm8gbG9uZ2VyIGhhcyBlbnRpdGxlbWVudCB0byB5b3VyIHByZW1pdW0gb2ZmZXJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIGlkIG9mIHRoZSBhcHBsaWNhdGlvbiBmcm9tIHdoZXJlIGRlbGV0ZSB0aGUgZW50aXRsZW1lbnRcbiAgICogQHBhcmFtIGVudGl0bGVtZW50SWQgLSBUaGUgaWQgb2YgdGhlIGVudGl0bGVtZW50IHRvIGRlbGV0ZVxuICAgKi9cbiAgZGVsZXRlVGVzdEVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBlbnRpdGxlbWVudElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEZvciBPbmUtVGltZSBQdXJjaGFzZSBjb25zdW1hYmxlIFNLVXMsIG1hcmtzIGEgZ2l2ZW4gZW50aXRsZW1lbnQgZm9yIHRoZSB1c2VyIGFzIGNvbnN1bWVkLiBUaGUgZW50aXRsZW1lbnQgd2lsbCBoYXZlIGBjb25zdW1lZDogdHJ1ZWAgd2hlbiB1c2luZyB7QGxpbmsgUmVzdE1hbmFnZXIubGlzdEVudGl0bGVtZW50cyB8IExpc3QgRW50aXRsZW1lbnRzfVxuICAgKi9cbiAgY29uc3VtZUVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBlbnRpdGxlbWVudElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIFNLVXMgZm9yIGEgZ2l2ZW4gYXBwbGljYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgaWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgU0tVc1xuICAgKi9cbiAgbGlzdFNrdXM6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZFNrdVtdPlxufVxuXG5leHBvcnQgdHlwZSBSZXF1ZXN0TWV0aG9kcyA9ICdHRVQnIHwgJ1BPU1QnIHwgJ0RFTEVURScgfCAnUEFUQ0gnIHwgJ1BVVCdcbmV4cG9ydCB0eXBlIEFwaVZlcnNpb25zID0gOSB8IDEwXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlV2ViaG9vayB7XG4gIC8qKiBOYW1lIG9mIHRoZSB3ZWJob29rICgxLTgwIGNoYXJhY3RlcnMpICovXG4gIG5hbWU6IHN0cmluZ1xuICAvKiogSW1hZ2UgdXJsIGZvciB0aGUgZGVmYXVsdCB3ZWJob29rIGF2YXRhciAqL1xuICBhdmF0YXI/OiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUmVxdWVzdEJvZHlPcHRpb25zIHtcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgYm9keT86IGFueVxuICB1bmF1dGhvcml6ZWQ/OiBib29sZWFuXG4gIHJlYXNvbj86IHN0cmluZ1xuICBmaWxlcz86IEZpbGVDb250ZW50W11cbn1cblxuZXhwb3J0IHR5cGUgTWFrZVJlcXVlc3RPcHRpb25zID0gT21pdDxDcmVhdGVSZXF1ZXN0Qm9keU9wdGlvbnMsICdtZXRob2QnPiAmIFBpY2s8U2VuZFJlcXVlc3RPcHRpb25zLCAncnVuVGhyb3VnaFF1ZXVlJz5cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0Qm9keSB7XG4gIGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgYm9keT86IHN0cmluZyB8IEZvcm1EYXRhXG4gIG1ldGhvZDogUmVxdWVzdE1ldGhvZHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZW5kUmVxdWVzdE9wdGlvbnMge1xuICAvKiogVGhlIHJvdXRlIHRvIHNlbmQgdGhlIHJlcXVlc3QgdG8uICovXG4gIHJvdXRlOiBzdHJpbmdcbiAgLyoqIFRoZSBtZXRob2QgdG8gdXNlIGZvciBzZW5kaW5nIHRoZSByZXF1ZXN0LiAqL1xuICBtZXRob2Q6IFJlcXVlc3RNZXRob2RzXG4gIC8qKiBUaGUgYW1vdW50IG9mIHRpbWVzIHRoaXMgcmVxdWVzdCBoYXMgYmVlbiByZXRyaWVkLiAqL1xuICByZXRyeUNvdW50OiBudW1iZXJcbiAgLyoqIEhhbmRsZXIgdG8gcmV0cnkgYSByZXF1ZXN0IHNob3VsZCBpdCBiZSByYXRlIGxpbWl0ZWQuICovXG4gIHJldHJ5UmVxdWVzdD86IChvcHRpb25zOiBTZW5kUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFJlc29sdmUgaGFuZGxlciB3aGVuIGEgcmVxdWVzdCBzdWNjZWVkcy4gKi9cbiAgcmVzb2x2ZTogKHZhbHVlOiBSZXN0UmVxdWVzdFJlc3BvbnNlKSA9PiB2b2lkXG4gIC8qKiBSZWplY3QgaGFuZGxlciB3aGVuIGEgcmVxdWVzdCBmYWlscy4gKi9cbiAgcmVqZWN0OiAodmFsdWU6IFJlc3RSZXF1ZXN0UmVqZWN0aW9uKSA9PiB2b2lkXG4gIC8qKiBJZiB0aGlzIHJlcXVlc3QgaGFzIGEgYnVja2V0IGlkIHdoaWNoIGl0IGZhbGxzIHVuZGVyIGZvciByYXRlIGxpbWl0ICovXG4gIGJ1Y2tldElkPzogc3RyaW5nXG4gIC8qKiBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9ucywgdXNlZCBmb3IgdGhpbmdzIGxpa2Ugb3ZlcnJpZGluZyBhdXRob3JpemF0aW9uIGhlYWRlci4gKi9cbiAgcmVxdWVzdEJvZHlPcHRpb25zPzogQ3JlYXRlUmVxdWVzdEJvZHlPcHRpb25zXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXF1ZXN0IHNob3VsZCBiZSBydW4gdGhyb3VnaCB0aGUgcXVldWUuXG4gICAqIFVzZWZ1bCBmb3Igcm91dGVzIHdoaWNoIGRvIG5vdCBoYXZlIGFueSByYXRlIGxpbWl0cy5cbiAgICovXG4gIHJ1blRocm91Z2hRdWV1ZT86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXN0UmF0ZUxpbWl0ZWRQYXRoIHtcbiAgdXJsOiBzdHJpbmdcbiAgcmVzZXRUaW1lc3RhbXA6IG51bWJlclxuICBidWNrZXRJZD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYmhvb2tNZXNzYWdlRWRpdG9yIHtcbiAgLyoqXG4gICAqIEVkaXRzIGEgd2ViaG9vayBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGVkaXQgdGhlIG1lc3NhZ2Ugb2YuXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSB3ZWJob29rIHRva2VuLCB1c2VkIHRvIGVkaXQgdGhlIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIG1lc3NhZ2UuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIENhbWVsaXplZERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2VkaXQtd2ViaG9vay1tZXNzYWdlfVxuICAgKi9cbiAgKFxuICAgIHdlYmhvb2tJZDogQmlnU3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEgJiB7IHRocmVhZElkPzogQmlnU3RyaW5nIH0sXG4gICk6IFByb21pc2U8Q2FtZWxpemVkRGlzY29yZE1lc3NhZ2U+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgb3JpZ2luYWwgd2ViaG9vayBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGVkaXQgdGhlIG9yaWdpbmFsIG1lc3NhZ2Ugb2YuXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSB3ZWJob29rIHRva2VuLCB1c2VkIHRvIGVkaXQgdGhlIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBtZXNzYWdlLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBDYW1lbGl6ZWREaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvd2ViaG9vayNlZGl0LXdlYmhvb2stbWVzc2FnZX1cbiAgICovXG4gIG9yaWdpbmFsOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IEludGVyYWN0aW9uQ2FsbGJhY2tEYXRhICYgeyB0aHJlYWRJZD86IEJpZ1N0cmluZyB9KSA9PiBQcm9taXNlPENhbWVsaXplZERpc2NvcmRNZXNzYWdlPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RSZXF1ZXN0UmVzcG9uc2Uge1xuICBvazogYm9vbGVhblxuICBzdGF0dXM6IG51bWJlclxuICBib2R5Pzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdFJlcXVlc3RSZWplY3Rpb24ge1xuICBvazogYm9vbGVhblxuICBzdGF0dXM6IG51bWJlclxuICBib2R5Pzogc3RyaW5nXG4gIGVycm9yPzogc3RyaW5nXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdzhGQSxXQUtDIn0=
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90eXBpbmdzL3JvdXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEJpZ1N0cmluZyxcbiAgR2V0QmFucyxcbiAgR2V0RW50aXRsZW1lbnRzLFxuICBHZXRHdWlsZEF1ZGl0TG9nLFxuICBHZXRHdWlsZFBydW5lQ291bnRRdWVyeSxcbiAgR2V0SW52aXRlLFxuICBHZXRNZXNzYWdlc09wdGlvbnMsXG4gIEdldFBvbGxBbnN3ZXJWb3RlcyxcbiAgR2V0UmVhY3Rpb25zLFxuICBHZXRTY2hlZHVsZWRFdmVudFVzZXJzLFxuICBHZXRVc2VyR3VpbGRzLFxuICBMaXN0QXJjaGl2ZWRUaHJlYWRzLFxuICBMaXN0R3VpbGRNZW1iZXJzLFxufSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcblxuZXhwb3J0IGludGVyZmFjZSBSZXN0Um91dGVzIHtcbiAgLyoqIEEgc3BlY2lmaWMgdXNlciByb3V0ZS4gKi9cbiAgdXNlcjogKGlkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAvLyBHYXRld2F5IEJvdFxuICBnYXRld2F5Qm90OiAoKSA9PiBzdHJpbmdcbiAgLy8gU3RhbmRhcmQgU3RpY2tlciBQYWNrc1xuICBzdGlja2VyUGFja3M6ICgpID0+IHN0cmluZ1xuICAvKiogUm91dGVzIGZvciB3ZWJob29rIHJlbGF0ZWQgcm91dGVzLiAqL1xuICB3ZWJob29rczoge1xuICAgIC8qKiBSb3V0ZSBmb3IgbWFuYWdpbmcgdGhlIG9yaWdpbmFsIG1lc3NhZ2Ugc2VudCBieSBhIHdlYmhvb2suICovXG4gICAgb3JpZ2luYWw6ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZywgb3B0aW9ucz86IHsgdGhyZWFkSWQ/OiBCaWdTdHJpbmcgfSkgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciB3ZWJob29rIHdpdGggYSBpZC4gKi9cbiAgICBpZDogKHdlYmhvb2tJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIGEgd2ViaG9vayB3aXRoIGEgdG9rZW4uICovXG4gICAgd2ViaG9vazogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nLCBvcHRpb25zPzogeyB3YWl0PzogYm9vbGVhbjsgdGhyZWFkSWQ/OiBCaWdTdHJpbmcgfSkgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIG1lc3NhZ2UgdGhhdCB3YXMgc2VudCB0aHJvdWdoIGEgd2ViaG9vay4gKi9cbiAgICBtZXNzYWdlOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogeyB0aHJlYWRJZD86IEJpZ1N0cmluZyB9KSA9PiBzdHJpbmdcbiAgfVxuICAvKiogUm91dGVzIGZvciBjaGFubmVsIHJlbGF0ZWQgZW5kcG9pbnRzLiAqL1xuICBjaGFubmVsczoge1xuICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYnVsayBtZXNzYWdlcyBpbiBhIGNoYW5uZWwuICovXG4gICAgYnVsazogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIG5vbi1zcGVjaWZpYyBkbSBjaGFubmVsLiAqL1xuICAgIGRtOiAoKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgdG8gYWRkIGEgdXNlciB0byBhbiBleGl0aW5nIGdyb3VwIERNLCByZXF1aXJlcyBhbiBhY2Nlc3MgdG9rZW4gd2l0aCB0aGUgT0F1dGgyIGBnZG0uam9pbmAgc2NvcGUgKi9cbiAgICBkbVJlY2lwaWVudDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIHNwZWNpZmljIHBpbi4gKi9cbiAgICBwaW46IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSBjaGFubmVscyBwaW5zLiAqL1xuICAgIHBpbnM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBub24tc3BlY2lmaWMgd2ViaG9vayBpbiBhIGNoYW5uZWwuICovXG4gICAgd2ViaG9va3M6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBhIHNwZWNpZmljIGNoYW5uZWwuICovXG4gICAgY2hhbm5lbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGZvbGxvd2luZyBhIHNwZWNpZmljIGNoYW5uZWwuICovXG4gICAgZm9sbG93OiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSBmb3IgbWFuYWdpbmcgYSBmb3J1bSB3aXRoIGEgbWVzc2FnZS4gKi9cbiAgICBmb3J1bTogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGEgc3BlY2lmaWMgY2hhbm5lbCdzIGludml0ZXMuICovXG4gICAgaW52aXRlczogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGEgc3BlY2lmaWMgbWVzc2FnZSAqL1xuICAgIG1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgaWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBub24tc3BlY2lmaWMgbWVzc2FnZXMuICovXG4gICAgbWVzc2FnZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldE1lc3NhZ2VzT3B0aW9ucykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIHNwZWNpZmljIG92ZXJ3cml0ZS4gKi9cbiAgICBvdmVyd3JpdGU6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3ZlcndyaXRlSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBjcm9zc3Bvc3RpbmcgYSBzcGVjaWZpYyBtZXNzYWdlLiAqL1xuICAgIGNyb3NzcG9zdDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBub24tc3BlY2lmaWMgc3RhZ2VzICovXG4gICAgc3RhZ2VzOiAoKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIGEgc3BlY2lmaWMgc3RhZ2UgKi9cbiAgICBzdGFnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGVzIGZvciBoYW5kbGluZyB0aHJlYWQgcmVsYXRlZCB0byBhIGNoYW5uZWwuICovXG4gICAgdGhyZWFkczoge1xuICAgICAgLyoqIFJvdXRlIGZvciB0aHJlYWQgYSBzcGVjaWZpYyBtZXNzYWdlLiAqL1xuICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgICAvKiogUm91dGUgZm9yIHRocmVhZCB3aXRob3V0IGEgbWVzc2FnZS4gKi9cbiAgICAgIGFsbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgYWN0aXZlIHRocmVhZHMuICovXG4gICAgICBhY3RpdmU6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBtZW1iZXJzIGluIGEgdGhyZWFkLiAqL1xuICAgICAgbWVtYmVyczogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgdGhlIGJvdCBtZW1iZXIgaW4gYSB0aHJlYWQuICovXG4gICAgICBtZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgYSBzcGVjaWZpYyBtZW1iZXIgaW4gYSB0aHJlYWQuICovXG4gICAgICB1c2VyOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYXJjaGl2ZWQgdGhyZWFkcy4gKi9cbiAgICAgIGFyY2hpdmVkOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBwdWJsaWNhbGx5IGFyY2hpdmVkIHRocmVhZHMuICovXG4gICAgICBwdWJsaWM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RBcmNoaXZlZFRocmVhZHMpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBwcml2YXRlIGFyY2hpdmVkIHRocmVhZHMuICovXG4gICAgICBwcml2YXRlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0QXJjaGl2ZWRUaHJlYWRzKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgcHJpdmF0ZSBhcmNoaXZlZCB0aHJlYWRzIHRoYXQgdGhlIGJvdCBoYXMgam9pbmVkLiAqL1xuICAgICAgam9pbmVkOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0QXJjaGl2ZWRUaHJlYWRzKSA9PiBzdHJpbmdcbiAgICB9XG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyB0eXBpbmcgaW5kaWNhdG9ycyBpbiBhIGPCq2hhbm5lbC4gKi9cbiAgICB0eXBpbmc6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlcyBmb3IgaGFuZGxpbmcgcmVhY3Rpb25zIG9uIGEgbWVzc2FnZS4gKi9cbiAgICByZWFjdGlvbnM6IHtcbiAgICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSBib3RzIHJlYWN0aW9uLiAqL1xuICAgICAgYm90OiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCBlbW9qaTogc3RyaW5nKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSB1c2VyJ3MgcmVhY3Rpb25zLiAqL1xuICAgICAgdXNlcjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgZW1vamk6IHN0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhbGwgdGhlIHJlYWN0aW9ucyBvbiBhIG1lc3NhZ2UuICovXG4gICAgICBhbGw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhbGwgcmVhY3Rpb25zIGZvciBhIHNpbmdsZSBlbW9qaSBvbiBhIG1lc3NhZ2UuICovXG4gICAgICBlbW9qaTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgZW1vamk6IHN0cmluZywgb3B0aW9ucz86IEdldFJlYWN0aW9ucykgPT4gc3RyaW5nXG4gICAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIGEgc3BlY2lmaWMgcmVhY3Rpb24gb24gYSBtZXNzYWdlLiAqL1xuICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgZW1vamk6IHN0cmluZywgb3B0aW9ucz86IEdldFJlYWN0aW9ucykgPT4gc3RyaW5nXG4gICAgfVxuICAgIHBvbGxzOiB7XG4gICAgICB2b3RlczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgYW5zd2VySWQ6IG51bWJlciwgb3B0aW9ucz86IEdldFBvbGxBbnN3ZXJWb3RlcykgPT4gc3RyaW5nXG4gICAgICBleHBpcmU6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIH1cbiAgfVxuICAvKiogUm91dGVzIGZvciBndWlsZCByZWxhdGVkIGVuZHBvaW50cy4gKi9cbiAgZ3VpbGRzOiB7XG4gICAgLyoqIFJvdXRlcyBmb3IgaGFuZGxpbmcgYSBub24tc3BlY2lmaWMgZ3VpbGQuICovXG4gICAgYWxsOiAoKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGZldGNoaW5nIGFuIHVzZXIgZ3VpbGRzLiBSZXF1aXJlcyBgZ3VpbGRzYCBPQXV0aDIgc2NvcGUgKi9cbiAgICB1c2VyR3VpbGRzOiAob3B0aW9ucz86IEdldFVzZXJHdWlsZHMpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYXVkaXQgbG9ncyBpbiBhIGd1aWxkLiAqL1xuICAgIGF1ZGl0bG9nczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEd1aWxkQXVkaXRMb2cpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZXMgZm9yIGEgZ3VpbGRzIGF1dG9tb2RlcmF0aW9uLiAqL1xuICAgIGF1dG9tb2Q6IHtcbiAgICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSBndWlsZCdzIGF1dG9tb2RlcmF0aW9uLiAqL1xuICAgICAgcnVsZXM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIHNwZWNpZmljIGF1dG9tb2RlcmF0aW9uIHJ1bGUgZ3VpbGQncyAqL1xuICAgICAgcnVsZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcnVsZUlkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIH1cbiAgICAvKiogUm91dGVzIGZvciBoYW5kbGluZyBhIGd1aWxkJ3Mgc2NoZWR1bGVkIGV2ZW50cy4gKi9cbiAgICBldmVudHM6IHtcbiAgICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgbm9uLXNwZWNpZmljIHNjaGVkdWxlZCBldmVudC4gKi9cbiAgICAgIGV2ZW50czogKGd1aWxkSWQ6IEJpZ1N0cmluZywgd2l0aFVzZXJDb3VudD86IGJvb2xlYW4pID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIHNwZWNpZmljIHNjaGVkdWxlZCBldmVudC4gKi9cbiAgICAgIGV2ZW50OiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBldmVudElkOiBCaWdTdHJpbmcsIHdpdGhVc2VyQ291bnQ/OiBib29sZWFuKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSBzY2hlZHVsZWQgZXZlbnQgdXNlcnMuICovXG4gICAgICB1c2VyczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgZXZlbnRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0U2NoZWR1bGVkRXZlbnRVc2VycykgPT4gc3RyaW5nXG4gICAgfVxuICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgbm9uLXNwZWNpZmljIGNoYW5uZWxzIGluIGEgZ3VpbGQgKi9cbiAgICBjaGFubmVsczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIHNwZWNpZmljIGVtb2ppLiAqL1xuICAgIGVtb2ppOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBpZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIG5vbi1zcGVjaWZpYyBlbW9qaXMuICovXG4gICAgZW1vamlzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIGEgc3BlY2lmaWMgZ3VpbGQuICovXG4gICAgZ3VpbGQ6IChndWlsZElkOiBCaWdTdHJpbmcsIHdpdGhDb3VudHM/OiBib29sZWFuKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIGEgc3BlY2lmaWMgaW50ZWdyYXRpb24uICovXG4gICAgaW50ZWdyYXRpb246IChndWlsZElkOiBCaWdTdHJpbmcsIGludGVncmF0aW9uSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBub24tc3BlY2lmaWMgaW50ZWdyYXRpb25zLiAqL1xuICAgIGludGVncmF0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIHNwZWNpZmljIGd1aWxkIGludml0ZS4gKi9cbiAgICBpbnZpdGU6IChpbnZpdGVDb2RlOiBzdHJpbmcsIG9wdGlvbnM/OiBHZXRJbnZpdGUpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgbm9uLXNwZWNpZmljIGludml0ZXMgaW4gYSBndWlsZC4gKi9cbiAgICBpbnZpdGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIGEgYm90IGxlYXZpbmcgYSBndWlsZC4gKi9cbiAgICBsZWF2ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIGd1aWxkJ3MgcHJldmlldy4gKi9cbiAgICBwcmV2aWV3OiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIHBydW5pbmcgb2YgYSBndWlsZC4gKi9cbiAgICBwcnVuZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEd1aWxkUHJ1bmVDb3VudFF1ZXJ5KSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIG5vbi1zcGVjaWZpYyB3ZWJob29rcyBpbiBhIGd1aWxkICovXG4gICAgd2ViaG9va3M6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSBndWlsZCdzIHdlbGNvbWUgc2NyZWVuLiAqL1xuICAgIHdlbGNvbWU6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSBndWlsZCdzIHdpZGdldC4gKi9cbiAgICB3aWRnZXQ6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSBndWlsZCdzIHdpZGdldCBpbiB0aGUgZm9ybSBvZiBqc29uLiAqL1xuICAgIHdpZGdldEpzb246IChndWlsZElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSBndWlsZHMgbWZhIGxldmVsLiAqL1xuICAgIG1mYTogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlcyBmb3IgaGFuZGxpbmcgYSBndWlsZCdzIG1lbWJlcnMuICovXG4gICAgbWVtYmVyczoge1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIHNwZWNpZmljIGd1aWxkIG1lbWJlcidzIGJhbi4gKi9cbiAgICAgIGJhbjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBub24tc3BlY2lmaWMgYmFucyBpbiBhIGd1aWxkLiAqL1xuICAgICAgYmFuczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEJhbnMpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBidWxrLWJhbm5pbmcgbWVtYmVycy4gKi9cbiAgICAgIGJ1bGtCYW46IChndWlsZElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIHRoZSBib3QgZ3VpbGQgbWVtYmVyLiAqL1xuICAgICAgYm90OiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSBzcGVjaWZpYyBndWlsZCBtZW1iZXIuICovXG4gICAgICBtZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSB0byBnZXQgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlci4gUmVxdWlyZXMgdGhlIGBndWlsZHMubWVtYmVycy5yZWFkYCBPQXV0aDIgc2NvcGUgKi9cbiAgICAgIGN1cnJlbnRNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBub24tc3BlY2lmaWMgZ3VpbGQgbWVtYmVycy4gKi9cbiAgICAgIG1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0R3VpbGRNZW1iZXJzKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgbWVtYmVyIHNlYXJjaGluZyBpbiBhIGd1aWxkLiAqL1xuICAgICAgc2VhcmNoOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBxdWVyeTogc3RyaW5nLCBvcHRpb25zPzogeyBsaW1pdD86IG51bWJlciB9KSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgcHJ1bmluZyBndWlsZCBtZW1iZXJzLiAqL1xuICAgICAgcHJ1bmU6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRHdWlsZFBydW5lQ291bnRRdWVyeSkgPT4gc3RyaW5nXG4gICAgfVxuICAgIC8qKiBSb3V0ZXMgZm9yIGhhbmRsaW5nIGEgZ3VpbGQncyB0ZW1wbGF0ZXMuICovXG4gICAgdGVtcGxhdGVzOiB7XG4gICAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIGEgc3BlY2lmYyBndWlsZCdzIHRlbXBsYXRlcyB3aXRoIGEgY29kZSBvbmx5LiAqL1xuICAgICAgY29kZTogKGNvZGU6IHN0cmluZykgPT4gc3RyaW5nXG4gICAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIGEgc3BlY2lmaWMgZ3VpbGQncyB0ZW1wbGF0ZSB3aXRoIGEgZ3VpbGQgaWQgYW5kIGNvZGUuICovXG4gICAgICBndWlsZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgY29kZTogc3RyaW5nKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgbm9uLXNwZWNpZmljIGd1aWxkJ3MgdGVtcGxhdGVzLiAqL1xuICAgICAgYWxsOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICB9XG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIGd1aWxkJ3MgdmFuaXR5IHVybC4gKi9cbiAgICB2YW5pdHk6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSBndWlsZCdzIHJlZ2lvbnMuICovXG4gICAgcmVnaW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlcyBmb3IgaGFuZGxpbmcgYSBndWlsZCdzIHJvbGVzLiAqL1xuICAgIHJvbGVzOiB7XG4gICAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIGEgc3BlY2lmaWMgZ3VpbGQgcm9sZS4gKi9cbiAgICAgIG9uZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIGd1aWxkJ3Mgcm9sZXMuICovXG4gICAgICBhbGw6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIG1lbWJlcnMgcm9sZXMgaW4gYSBndWlsZC4gKi9cbiAgICAgIG1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgbWVtYmVySWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIH1cbiAgICAvKiogUm91dGUgZm9yIGhhbmRsaW5nIGEgc3BlY2lmaWMgZ3VpbGQgc3RpY2tlci4gKi9cbiAgICBzdGlja2VyczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBub24tc3BlY2lmaWMgZ3VpbGQgc3RpY2tlcnMuICovXG4gICAgc3RpY2tlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgc3RpY2tlcklkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYSB2b2ljZSBzdGF0ZS4gKi9cbiAgICB2b2ljZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkPzogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgZm9yIHRoZSBvbmJvYXJkaW5nICovXG4gICAgb25ib2FyZGluZzogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gIH1cbiAgLyoqIFJvdXRlcyBmb3IgaW50ZXJhY3Rpb24gcmVsYXRlZCBlbmRwb2ludHMuICovXG4gIGludGVyYWN0aW9uczoge1xuICAgIC8qKiBSb3V0ZXMgZm9yIGludGVyYWN0aW9uIGNvbW1hbmQgcmVsYXRlZCBlbmRwb2ludHMuICovXG4gICAgY29tbWFuZHM6IHtcbiAgICAgIC8qKiBSb3V0ZSBmb3Igbm9uLXNwZWNpZmljIGNvbW1hbmRzLiAqL1xuICAgICAgY29tbWFuZHM6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBndWlsZCByZWxhdGVkIGNvbW1hbmRzLiAqL1xuICAgICAgZ3VpbGRzOiB7XG4gICAgICAgIC8qKiBSb3V0ZSBmb3Igbm9uLXNwZWNpZmljIGd1aWxkIGNvbW1hbmRzLiAqL1xuICAgICAgICBhbGw6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsIGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgICAgIC8qKiBSb3V0ZSBmb3IgYSBzcGVjaWZpYyBndWlsZCBjb21tYW5kLiAqL1xuICAgICAgICBvbmU6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsIGd1aWxkSWQ6IEJpZ1N0cmluZywgY29tbWFuZElkOiBCaWdTdHJpbmcsIHdpdGhMb2NhbGl6YXRpb25zPzogYm9vbGVhbikgPT4gc3RyaW5nXG4gICAgICB9XG4gICAgICAvKiogUm91dGUgZm9yIG5vbi1zcGVjaWZpYyBjb21tYW5kIHBlcm1pc3Npb25zLiAqL1xuICAgICAgcGVybWlzc2lvbnM6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsIGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gICAgICAvKiogUm91dGUgZm9yIGEgc3BlY2lmaWMgY29tbWFuZCdzIHBlcm1pc3Npb24uICovXG4gICAgICBwZXJtaXNzaW9uOiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcsIGNvbW1hbmRJZDogQmlnU3RyaW5nKSA9PiBzdHJpbmdcbiAgICAgIC8qKiBSb3V0ZSBmb3IgYSBzcGVjaWZpYyBjb21tYW5kLiAqL1xuICAgICAgY29tbWFuZDogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgY29tbWFuZElkOiBCaWdTdHJpbmcsIHdpdGhMb2NhbGl6YXRpb25zPzogYm9vbGVhbikgPT4gc3RyaW5nXG4gICAgfVxuICAgIC8qKiBSb3V0ZXMgZm9yIGludGVyYWN0aW9uIHJlc3BvbnNlIHJlbGF0ZWQgZW5kcG9pbnRzLiAqL1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIGNhbGxiYWNrIHJlc3BvbnNlIHdpdGggaWQgYW5kIHRva2VuLiAqL1xuICAgICAgY2FsbGJhY2s6IChpbnRlcmFjdGlvbklkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyB0aGUgb3JpZ2luYWwgcmVzcG9uc2UgdXNpbmcgaWQgYW5kIHRva2VuLiAqL1xuICAgICAgb3JpZ2luYWw6IChpbnRlcmFjdGlvbklkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IHN0cmluZ1xuICAgICAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIGZvbGxvd3VwIG1lc3NhZ2UgZnJvbSBhIGludGVyYWN0aW9uIHJlc3BvbnNlLiAqL1xuICAgICAgbWVzc2FnZTogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIH1cbiAgfVxuICAvKiogUm91dGVzIHJlbGF0ZWQgdG8gT0F1dGgyICovXG4gIG9hdXRoMjoge1xuICAgIC8qKiBSb3V0ZSB0byBnZW5lcmF0ZSBhIG5ldyBhY2Nlc3MgdG9rZW4gKi9cbiAgICB0b2tlbkV4Y2hhbmdlOiAoKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgdG8gcmV2b2tlIGFuIE9BdXRoMiBhY2Nlc3NfdG9rZW4gKi9cbiAgICB0b2tlblJldm9rZTogKCkgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBhdXRob3JpemF0aW9uLiBSZXF1aXJlcyBhbiBhY2Nlc3MgdG9rZW4gKi9cbiAgICBjdXJyZW50QXV0aG9yaXphdGlvbjogKCkgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi4gKi9cbiAgICBhcHBsaWNhdGlvbjogKCkgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIHRvIGdldCB0aGUgY29ubmVjdGlvbiB0aGUgdXNlciBoYXMuIFJlcXVpcmVzIHRoZSBgY29ubmVjdGlvbnNgIE9BdXRoMiBzY29wZSAqL1xuICAgIGNvbm5lY3Rpb25zOiAoKSA9PiBzdHJpbmdcbiAgICAvKiogUm91dGUgdG8gaGFuZGxpbmcgcm9sZS1jb25uZWN0aW9uIGZvciBhbiBhcHBsaWNhdGlvbiAqL1xuICAgIHJvbGVDb25uZWN0aW9uczogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gIH1cbiAgLyoqIFJvdXRlcyByZWxhdGVkIHRvIG1vbmV0aXphdGlvbiAoZW50aXRsZW1lbnRzIGFuZCBTS1UpICovXG4gIG1vbmV0aXphdGlvbjoge1xuICAgIC8qKiBSb3V0ZSB0byBsaXN0IC8gY3JlYXRlIGVudGl0bGVtZW50cyAqL1xuICAgIGVudGl0bGVtZW50czogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEVudGl0bGVtZW50cykgPT4gc3RyaW5nXG4gICAgLyoqIFJvdXRlIHRvIGRlbGV0ZSBhbiBlbnRpdGxlbWVudCAqL1xuICAgIGVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBlbnRpdGxlbWVudElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSB0byBjb25zdW1lIGFuIGVudGl0bGVtZW50ICovXG4gICAgY29uc3VtZUVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBlbnRpdGxlbWVudElkOiBCaWdTdHJpbmcpID0+IHN0cmluZ1xuICAgIC8qKiBSb3V0ZSB0byBsaXN0IHRoZSBTS1VzICovXG4gICAgc2t1czogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gIH1cbiAgLyoqIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBPQXV0aDIgdXNlciAvIGJvdCB1c2VyLiBJZiB1c2VkIHdpdGggYSBPQXV0aDIgdG9rZW4gcmVxdWlyZXMgdGhlIGBpZGVudGlmeWAgT0F1dGgyIHNjb3BlICovXG4gIGN1cnJlbnRVc2VyOiAoKSA9PiBzdHJpbmdcbiAgLyoqICBSb3V0ZSB0byBnZXQgYW5kIGVkaXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24uICovXG4gIGFwcGxpY2F0aW9uOiAoKSA9PiBzdHJpbmdcbiAgLyoqIFJvdXRlIGZvciBoYW5kbGluZyBhIHN0aWNrZXIuICovXG4gIHN0aWNrZXI6IChzdGlja2VySWQ6IEJpZ1N0cmluZykgPT4gc3RyaW5nXG4gIC8qKiBSb3V0ZSBmb3IgaGFuZGxpbmcgYWxsIHZvaWNlIHJlZ2lvbnMuICovXG4gIHJlZ2lvbnM6ICgpID0+IHN0cmluZ1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxXQTJRQyJ9
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2022.full.d.ts","../../types/dist/types/shared.d.ts","../../types/dist/types/discord.d.ts","../../types/dist/types/camel.d.ts","../../types/dist/types/discordeno.d.ts","../../types/dist/types/index.d.ts","../src/typings/routes.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../utils/dist/types/Collection.d.ts","../../utils/dist/types/base64.d.ts","../../utils/dist/types/logger.d.ts","../../utils/dist/types/bucket.d.ts","../../utils/dist/types/builders/embeds.d.ts","../../utils/dist/types/builders.d.ts","../../utils/dist/types/casing.d.ts","../../utils/dist/types/colors.d.ts","../../utils/dist/types/hash.d.ts","../../utils/dist/types/images.d.ts","../../utils/dist/types/oauth2.d.ts","../../utils/dist/types/permissions.d.ts","../../utils/dist/types/reactions.d.ts","../../utils/dist/types/token.d.ts","../../utils/dist/types/typeguards.d.ts","../../utils/dist/types/urlToBase64.d.ts","../../utils/dist/types/utils.d.ts","../../utils/dist/types/index.d.ts","../src/invalidBucket.ts","../src/types.ts","../src/queue.ts","../src/routes.ts","../src/manager.ts","../src/index.ts","../../../node_modules/@types/benchmark/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-as-promised/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/mocha/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/ws/index.d.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"62a4966981264d1f04c44eb0f4b5bdc3d81c1a54725608861e44755aa24ad6a5","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"86a34c7a13de9cabc43161348f663624b56871ed80986e41d214932ddd8d6719","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"1df2366de6650547b3dc1d7c4147355c0f6b4729c964e3839636fa418982d131","f6fd530da6e38b9d6e83845d8d497a4962afe5f2a1a9d8bbc67e959d962607e0","507a1f476b0f6118a54102becaf76de82444d447a8190718d1c99faf7035e5da","67ed38d0774a50a8fed0b216c90e28cb24c4d19ca4f78a514e229016e6cd51a7","edc3ba78817c9f32ab51f0ae32aa6fb42fadbf8f635c37365de6be849e29e07a","c100bea1b5caf946651a87e05e736d9626e32c23f9461ecaeebcf52f88c0c2d7",{"version":"51a37a58cd7a170dc0f33152ae26c03d296b0accd8ffad2273a79a39c7942f8c","signature":"0258ed391a2075ef93f96078bc42faa1b2734cc2901b7a956563a0d814b0b07a"},"efc7d584a33fe3422847783d228f315c4cd1afe74bd7cf8e3f0e4c1125129fef","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"7fd7fcbf021a5845bdd9397d4649fcf2fe17152d2098140fc723099a215d19ad","affectsGlobalScope":true},"df3389f71a71a38bc931aaf1ef97a65fada98f0a27f19dd12f8b8de2b0f4e461","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"41fb2a1c108fbf46609ce5a451b7ec78eb9b5ada95fd5b94643e4b26397de0b3","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"a1d2988ad9d2aef7b9915a22b5e52c165c83a878f2851c35621409046bbe3c05","affectsGlobalScope":true},"bd3f5d05b6b5e4bfcea7739a45f3ffb4a7f4a3442ba7baf93e0200799285b8f1","4c775c2fccabf49483c03cd5e3673f87c1ffb6079d98e7b81089c3def79e29c6","8806ae97308ef26363bd7ec8071bca4d07fb575f905ee3d8a91aff226df6d618","af5bf1db6f1804fb0069039ae77a05d60133c77a2158d9635ea27b6bb2828a8f","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"674168aa3db414ea0a19b2a31d901b2d49705c7a495e43ffdc96928543010f8c","affectsGlobalScope":true},"fe1fd6afdfe77976d4c702f3746c05fb05a7e566845c890e0e970fe9376d6a90","313a0b063f5188037db113509de1b934a0e286f14e9479af24fada241435e707","afb1701fd4be413a8a5a88df6befdd4510c30a31372c07a4138facf61594c66d","87ef1a23caa071b07157c72077fa42b86d30568f9dc9e31eed24d5d14fc30ba8","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"c07146dbbbd8b347241b5df250a51e48f2d7bef19b1e187b1a3f20c849988ff1","45b1053e691c5af9bfe85060a3e1542835f8d84a7e6e2e77ca305251eda0cb3c","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"ae5507fc333d637dec9f37c6b3f4d423105421ea2820a64818de55db85214d66","affectsGlobalScope":true},{"version":"0666f4c99b8688c7be5956df8fecf5d1779d3b22f8f2a88258ae7072c7b6026f","affectsGlobalScope":true},"8abd0566d2854c4bd1c5e48e05df5c74927187f1541e6770001d9637ac41542e","54e854615c4eafbdd3fd7688bd02a3aafd0ccf0e87c98f79d3e9109f047ce6b8","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","8221b00f271cf7f535a8eeec03b0f80f0929c7a16116e2d2df089b41066de69b","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","7424817d5eb498771e6d1808d726ec38f75d2eaf3fa359edd5c0c540c52725c1","9a9634296cca836c3308923ba7aa094fa6ed76bb1e366d8ddcf5c65888ab1024",{"version":"bddce945d552a963c9733db106b17a25474eefcab7fc990157a2134ef55d4954","affectsGlobalScope":true},{"version":"7052b7b0c3829df3b4985bab2fd74531074b4835d5a7b263b75c82f0916ad62f","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","4b55240c2a03b2c71e98a7fc528b16136faa762211c92e781a01c37821915ea6","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"94c086dff8dbc5998749326bc69b520e8e4273fb5b7b58b50e0210e0885dfcde","affectsGlobalScope":true},{"version":"f5b5dc128973498b75f52b1b8c2d5f8629869104899733ae485100c2309b4c12","affectsGlobalScope":true},"ebe5facd12fd7745cda5f4bc3319f91fb29dc1f96e57e9c6f8b260a7cc5b67ee","79bad8541d5779c85e82a9fb119c1fe06af77a71cc40f869d62ad379473d4b75","37dc027f781c75f0f546e329cfac7cf92a6b289f42458f47a9adc25e516b6839",{"version":"629d20681ca284d9e38c0a019f647108f5fe02f9c59ac164d56f5694fc3faf4d","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","4634bf89fdcff293ecd8a355d9a9cd204de3dcd33cf6ed8b22b816e82c992050","dc1fefa18b09770dc6273150870fa47eb83905a28d811a7061894759dde56c94","cc8b2fc214effbe74eabdc71fd1890d42f0eb5ef872c146fe864e37410f45730","695d8c5610e24852fbc069eae7c9b189d91053a53f6660808b817f8a077526bd","ab6a6f7b4edeeea5656e295d97f5826fe6e48d6146cba1bc4b1c790a8b41f5a8","44917309cc4ead1c03f35d08efcfdc157ce9a5979e4d0e090aa53473fa4b7924","ee8f05b51381454341e7478c29b42b6fdda4af970f12184db36b083c9886a87b","2aa24fd580be092d96f4db06145942ba629937dbcc180c074c9e0585b430d762","18989e1ceb0573592f338b5db276858a48a1a9bcdf35972ba5b0d4afc2537aa6","55f69b3404b51ef933095794ff28835fec56d1ced51c895780066f70873a8063","9e7530754fad674397c173c775a6c6cd18e0188185981d00fbce07e51dfa0dd8","a86e34c3f985e61ca0779ebaa7fb0bbbdabd5ed65cd4adf1347b12b907b0db71","e160ddf2eb3b0dd861f5ee354b44eb4fd71da9b1e69ecee8558eda9bd7a1cb41","d7d37e6764bf8c56790def2f45b2719272f4d5436a4cce1e0ab8027e06661226","37ccf4d7dcb25b151f2440e3d6aa9a0ac343a7f55a575d14d825a174f8239e22","5f4003b2979f1876ec7cb61d3509ab9bedc943806d7a278114da9d46e4068f4c","41afeea97765dd34106dbbf75cef29cef4942d9868824c3147c9fec21cd2d589","cbfdb1789f46395d753d00912a169a43e77b1c9f8c02c1eeec23594910d66257",{"version":"63ce9ff10d3059c1e50a5033055e0139c407e943a3dc60a4d5d78642ce15850a","signature":"9ddb5619305fbd74b4dbf33c70b53f34a3cb88bc8024f5c7cb6835ca977acf1e"},{"version":"42f11feb265f8382d42a70b101e8a8d7e06f7c240ba1b6a2182d0e9b452dcc63","signature":"37afe2c5eb370e44b4348d93ec5d2774d80c7290eaf254475f96b7069dc9069d"},{"version":"8f3253c91ec976bbe33a09b866b71641a824eb04a0c8447b8f756586b661a839","signature":"d55c971a60f8ebf72682c34ade5e81f2b355e1da0a9b48c314894e23cd7b70b7"},{"version":"1e974c49d0a3ef089e7540bc2157b94a520e666c32cf7d13d5c5c467c815d532","signature":"b6a4c3c2d28721ac56dcf9e688bb12e0dfe10e6634b01a826d4538bd35e9fab6"},{"version":"a4cb047bbff330022e655033b7748641468549b5a444692149958252c4a0a4e0","signature":"30f47e9183cf5832773093feda60e50e0821a23e03a991adf18c49ffe990493e"},{"version":"55989e47916427cca03e9a690615ae35a261722d87c0594de66849c67644a515","signature":"66e56db3dddd37b68de4e5f3bfd473e39f4b6d4b03790a36abad63d1289f7680"},"d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"4a2c144ea6f441e9616ec77fe9b1009b0cdf6db0cd9727b8d99623975cd6c693","affectsGlobalScope":true},{"version":"86e56d97b13ef0a58bc9c59aee782ae7d47d63802b5b32129ec5e5d62c20dbfa","affectsGlobalScope":true},"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4",{"version":"0ea93d01083b3d5863cc98cb589b5d0eac55d14417487f9e5e455dfa0b17c660","affectsGlobalScope":true},"5b5337f28573ffdbc95c3653c4a7961d0f02fdf4788888253bf74a3b5a05443e","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","85f8ebd7f245e8bf29da270e8b53dcdd17528826ffd27176c5fc7e426213ef5a","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","8e87660f5170c195ade218937e360484775be6a4e75a098665d9ba5a2e4cdc15","f7163a5d37d21f636f6a5cd1c064ce95fada21917859a64b6cc49a8b6fd5c1a8"],"root":[68,[173,178]],"options":{"composite":false,"declaration":true,"declarationDir":"./types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"inlineSources":false,"module":7,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"./","skipLibCheck":true,"strict":true,"target":9},"fileIdsList":[[117,120,146,154,180,181,182],[184],[117,154],[69],[104],[105,110,138],[106,117,118,125,135,146],[106,107,117,125],[108,147],[109,110,118,126],[110,135,143],[111,113,117,125],[104,112],[113,114],[117],[115,117],[104,117],[117,118,119,135,146],[117,118,119,132,135,138],[102,105,151],[113,117,120,125,135,146],[117,118,120,121,125,135,143,146],[120,122,135,143,146],[69,70,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],[117,123],[124,146,151],[113,117,125,135],[126],[127],[104,128],[129,145,151],[130],[131],[117,132,133],[132,134,147,149],[105,117,135,136,137,138],[105,135,137],[135,136],[138],[139],[104,135],[117,141,142],[141,142],[110,125,135,143],[144],[125,145],[105,120,131,146],[110,147],[135,148],[124,149],[150],[105,110,117,119,128,135,146,149,151],[135,152],[120,135,154],[191,230],[191,215,230],[230],[191],[191,216,230],[191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229],[216,230],[231],[117,120,122,135,143,146,152,154],[79,83,146],[79,135,146],[74],[76,79,143,146],[125,143],[154],[74,154],[76,79,125,146],[71,72,75,78,105,117,135,146],[71,77],[75,79,105,138,146,154],[105,154],[95,105,154],[73,74,154],[79],[73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,92,93,94,96,97,98,99,100,101],[79,86,87],[77,79,87,88],[78],[71,74,79],[79,83,87,88],[83],[77,79,82,146],[71,76,77,79,83,86],[105,135],[74,79,95,105,151,154],[68,173,174,175,176,177],[172],[67,105,172,173,174,175,176],[172,174],[67,68,172],[67,68,172,173,175],[67],[63,64],[63],[63,64,65,66],[154,157],[159],[155,156,157,158,160,161,162,163,164,165,166,167,168,169,170,171],[174],[68]],"referencedMap":[[183,1],[185,2],[189,3],[69,4],[70,4],[104,5],[105,6],[106,7],[107,8],[108,9],[109,10],[110,11],[111,12],[112,13],[113,14],[114,14],[116,15],[115,16],[117,17],[118,18],[119,19],[103,20],[120,21],[121,22],[122,23],[154,24],[123,25],[124,26],[125,27],[126,28],[127,29],[128,30],[129,31],[130,32],[131,33],[132,34],[133,34],[134,35],[135,36],[137,37],[136,38],[138,39],[139,40],[140,41],[141,42],[142,43],[143,44],[144,45],[145,46],[146,47],[147,48],[148,49],[149,50],[150,51],[151,52],[152,53],[182,54],[215,55],[216,56],[191,57],[194,57],[213,55],[214,55],[204,55],[203,58],[201,55],[196,55],[209,55],[207,55],[211,55],[195,55],[208,55],[212,55],[197,55],[198,55],[210,55],[192,55],[199,55],[200,55],[202,55],[206,55],[217,59],[205,55],[193,55],[230,60],[224,59],[226,61],[225,59],[218,59],[219,59],[221,59],[223,59],[227,61],[228,61],[220,61],[222,61],[232,62],[233,63],[180,15],[86,64],[93,65],[85,64],[100,66],[77,67],[76,68],[99,69],[94,70],[97,71],[79,72],[78,73],[74,74],[73,75],[96,76],[75,77],[80,78],[84,78],[102,79],[101,78],[88,80],[89,81],[91,82],[87,83],[90,84],[95,69],[82,85],[83,86],[92,87],[72,88],[98,89],[178,90],[173,91],[177,92],[175,93],[176,94],[174,95],[68,96],[65,97],[64,98],[66,97],[67,99],[155,69],[158,100],[160,101],[159,96],[161,96],[164,96],[172,102],[165,96],[166,96],[169,96]],"exportedModulesMap":[[183,1],[185,2],[189,3],[69,4],[70,4],[104,5],[105,6],[106,7],[107,8],[108,9],[109,10],[110,11],[111,12],[112,13],[113,14],[114,14],[116,15],[115,16],[117,17],[118,18],[119,19],[103,20],[120,21],[121,22],[122,23],[154,24],[123,25],[124,26],[125,27],[126,28],[127,29],[128,30],[129,31],[130,32],[131,33],[132,34],[133,34],[134,35],[135,36],[137,37],[136,38],[138,39],[139,40],[140,41],[141,42],[142,43],[143,44],[144,45],[145,46],[146,47],[147,48],[148,49],[149,50],[150,51],[151,52],[152,53],[182,54],[215,55],[216,56],[191,57],[194,57],[213,55],[214,55],[204,55],[203,58],[201,55],[196,55],[209,55],[207,55],[211,55],[195,55],[208,55],[212,55],[197,55],[198,55],[210,55],[192,55],[199,55],[200,55],[202,55],[206,55],[217,59],[205,55],[193,55],[230,60],[224,59],[226,61],[225,59],[218,59],[219,59],[221,59],[223,59],[227,61],[228,61],[220,61],[222,61],[232,62],[233,63],[180,15],[86,64],[93,65],[85,64],[100,66],[77,67],[76,68],[99,69],[94,70],[97,71],[79,72],[78,73],[74,74],[73,75],[96,76],[75,77],[80,78],[84,78],[102,79],[101,78],[88,80],[89,81],[91,82],[87,83],[90,84],[95,69],[82,85],[83,86],[92,87],[72,88],[98,89],[178,90],[173,91],[177,103],[175,103],[176,104],[174,95],[68,96],[65,97],[64,98],[66,97],[67,99],[155,69],[158,100],[160,101],[159,96],[161,96],[164,96],[172,102],[165,96],[166,96],[169,96]],"semanticDiagnosticsPerFile":[179,183,185,184,181,186,187,188,189,190,69,70,104,105,106,107,108,109,110,111,112,113,114,116,115,117,118,119,103,153,120,121,122,154,123,124,125,126,127,128,129,130,131,132,133,134,135,137,136,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,182,215,216,191,194,213,214,204,203,201,196,209,207,211,195,208,212,197,198,210,192,199,200,202,206,217,205,193,230,229,224,226,225,218,219,221,223,227,228,220,222,232,231,233,180,60,61,10,11,15,14,2,16,17,18,19,20,21,22,23,3,4,24,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,46,47,42,43,44,45,8,51,48,49,50,52,9,53,62,54,55,58,56,57,1,59,13,12,86,93,85,100,77,76,99,94,97,79,78,74,73,96,75,80,81,84,71,102,101,88,89,91,87,90,95,82,83,92,72,98,178,173,177,175,176,174,68,65,64,66,67,63,155,156,158,160,159,161,162,163,164,172,157,165,166,167,168,169,170,171]},"version":"5.3.3"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}