construct-hub 0.4.457 → 0.4.458

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -21767,6 +21767,6 @@
21767
21767
  "symbolId": "src/package-sources/npmjs:NpmJsProps"
21768
21768
  }
21769
21769
  },
21770
- "version": "0.4.457",
21771
- "fingerprint": "G54hCGXHUyL/Reayxz2Knpw+DTc9HQ91qbEMnvLK1j8="
21770
+ "version": "0.4.458",
21771
+ "fingerprint": "u3F9q1D5dPMbg2IAbddEKEpxZAEMeqzhc7FWi/ObEqE="
21772
21772
  }
@@ -412,7 +412,7 @@ class ConstructHub extends constructs_1.Construct {
412
412
  }
413
413
  exports.ConstructHub = ConstructHub;
414
414
  _a = JSII_RTTI_SYMBOL_1;
415
- ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.457" };
415
+ ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.458" };
416
416
  /**
417
417
  * How possibly risky operations (such as doc-generation, which requires
418
418
  * installing the indexed packages in order to trans-literate sample code) are
@@ -272,5 +272,5 @@ class CodeArtifact {
272
272
  }
273
273
  exports.CodeArtifact = CodeArtifact;
274
274
  _a = JSII_RTTI_SYMBOL_1;
275
- CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.457" };
275
+ CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.458" };
276
276
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYWNrYWdlLXNvdXJjZXMvY29kZS1hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE4RDtBQUM5RCwrREFPb0M7QUFFcEMsdURBQThDO0FBQzlDLHVFQUFnRTtBQUNoRSxpREFBOEQ7QUFDOUQsdURBQWlEO0FBQ2pELCtDQUFnRTtBQUNoRSxpREFBNkQ7QUFFN0QsNENBS3NCO0FBQ3RCLGtEQUE2QztBQU03QyxvRkFBK0U7QUFDL0Usb0ZBTWdEO0FBQ2hELDJDQUFpRDtBQWNqRDs7O0dBR0c7QUFDSCxNQUFhLFlBQVk7SUFDdkIsWUFBb0MsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7SUFBRyxDQUFDO0lBRXpELElBQUksQ0FDVCxLQUFnQixFQUNoQixFQUNFLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsS0FBSyxHQUNvQjtRQUUzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUxSSxNQUFNLGNBQWMsR0FBRywwQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ2pCLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsUUFBUSxnQkFBZ0IsRUFBRTtnQkFDM0QsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztnQkFDOUMsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLGNBQWMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDcEQsQ0FBQyxDQUFDO1FBQ0wsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1QixNQUFNLEdBQUcsR0FBRyxJQUFJLGVBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxRQUFRLE1BQU0sRUFBRTtZQUM5QyxVQUFVLEVBQUUseUJBQWUsQ0FBQyxXQUFXO1lBQ3ZDLGVBQWUsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEMsaUJBQWlCLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ3hDLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLElBQUksK0NBQXFCLENBQ3pDLEtBQUssRUFDTCxHQUFHLFFBQVEsWUFBWSxFQUN2QjtZQUNFLGVBQWUsRUFBRSxHQUFHO1lBQ3BCLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsWUFBWSwwQ0FBMEM7WUFDdkcsV0FBVyxFQUFFO2dCQUNYLG1CQUFtQixFQUFFLE9BQU87Z0JBQzVCLFdBQVcsRUFBRSxNQUFNLENBQUMsVUFBVTtnQkFDOUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQzFCO1lBQ0QsVUFBVSxFQUFFLElBQUk7WUFDaEIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEVBQUUsb0JBQU8sQ0FBQyxNQUFNO1NBQ3hCLENBQ0YsQ0FBQztRQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQixXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuQyxTQUFTLENBQUMsZUFBZSxDQUN2QixJQUFJLHlCQUFlLENBQUM7WUFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztZQUNwQixPQUFPLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztZQUNoRCxTQUFTLEVBQUU7Z0JBQ1QsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUN4QixPQUFPLEVBQUUsY0FBYztvQkFDdkIsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFNBQVMsRUFBRSx1QkFBUyxDQUFDLG1CQUFtQjtvQkFDeEMsWUFBWSxFQUFFO3dCQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWM7d0JBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVE7d0JBQzlCLEtBQUssRUFBRSxpQkFBaUI7d0JBQ3hCLEdBQUcsRUFBRSx5QkFBeUI7cUJBQy9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDWixDQUFDO2FBQ0g7U0FDRixDQUFDLENBQ0gsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLElBQUksaUJBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxRQUFRLGNBQWMsRUFBRTtZQUN0RCxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLFlBQVksY0FBYztZQUMxRSxZQUFZLEVBQUU7Z0JBQ1osTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUM7Z0JBQzVCLFVBQVUsRUFBRSxDQUFDLDJDQUEyQyxDQUFDO2dCQUN6RCxNQUFNLEVBQUU7b0JBQ04sV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDO29CQUNwRCxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7b0JBQ2xELGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztvQkFDaEQsYUFBYSxFQUFFLENBQUMsS0FBSyxDQUFDO2lCQUN2QjthQUNGO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxtQ0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3pDLENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLFNBQVM7YUFDM0IsWUFBWSxFQUFFO2FBQ2QsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLFFBQVEscUJBQXFCLEVBQUU7WUFDcEQsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLGlCQUFpQixZQUFZLFlBQVk7WUFDdEUsZ0JBQWdCLEVBQUU7Z0JBQ2hCLGlDQUFpQyxZQUFZLGFBQWE7Z0JBQzFELEVBQUU7Z0JBQ0YsZ0NBQWdDLElBQUEsNkJBQWlCLEVBQUMsU0FBUyxDQUFDLEVBQUU7YUFDL0QsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1osa0JBQWtCLEVBQ2hCLG1DQUFrQixDQUFDLGtDQUFrQztZQUN2RCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFNBQVMsRUFBRSxDQUFDO1lBQ1osZ0JBQWdCLEVBQUUsaUNBQWdCLENBQUMsT0FBTztTQUMzQyxDQUFDLENBQUM7UUFDTCxVQUFVLENBQUMsb0JBQW9CLENBQzdCLGdCQUFnQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLFdBQVcsRUFDekQsWUFBWSxDQUNiLENBQUM7UUFFRixNQUFNLGdCQUFnQixHQUFHLEdBQUc7YUFDekIsd0NBQXdDLENBQUM7WUFDeEMsTUFBTSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUM1QixDQUFDO2FBQ0QsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLFFBQVEsd0JBQXdCLEVBQUU7WUFDdkQsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLGlCQUFpQixZQUFZLGNBQWM7WUFDeEUsZ0JBQWdCLEVBQUU7Z0JBQ2hCLGlDQUFpQyxZQUFZLGFBQWE7Z0JBQzFELEVBQUU7Z0JBQ0YsZ0NBQWdDLElBQUEsNkJBQWlCLEVBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzlELGtDQUFrQyxJQUFBLHVCQUFXLEVBQUMsR0FBRyxDQUFDLEVBQUU7YUFDckQsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1osa0JBQWtCLEVBQ2hCLG1DQUFrQixDQUFDLGtDQUFrQztZQUN2RCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFNBQVMsRUFBRSxDQUFDO1lBQ1osZ0JBQWdCLEVBQUUsaUNBQWdCLENBQUMsYUFBYTtTQUNqRCxDQUFDLENBQUM7UUFDTCxVQUFVLENBQUMsbUJBQW1CLENBQzVCLGdCQUFnQixZQUFZLGdCQUFnQixFQUM1QyxnQkFBZ0IsQ0FDakIsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXhELGlCQUFpQixDQUFDLHVCQUF1QixDQUN2QyxnQkFBZ0IsWUFBWSxNQUFNLEVBQ2xDLEdBQUcsQ0FDSixDQUFDO1FBQ0YsaUJBQWlCLENBQUMsdUNBQXVDLENBQ3ZELFNBQVMsRUFDVCxHQUFHLFFBQVEsa0JBQWtCLENBQzlCLENBQUM7UUFFRixPQUFPO1lBQ0wsSUFBSSxFQUFFLGlCQUFpQixZQUFZLEVBQUU7WUFDckMsS0FBSyxFQUFFO2dCQUNMO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixHQUFHLEVBQUUsSUFBQSxxQ0FBeUIsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztvQkFDckQsT0FBTyxFQUFFLElBQUk7aUJBQ2Q7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLG9CQUFvQjtvQkFDMUIsR0FBRyxFQUFFLElBQUEsNkJBQWlCLEVBQUMsU0FBUyxDQUFDO2lCQUNsQztnQkFDRDtvQkFDRSxJQUFJLEVBQUUsa0JBQWtCO29CQUN4QixHQUFHLEVBQUUsSUFBQSxtQ0FBdUIsRUFBQyxTQUFTLENBQUM7aUJBQ3hDO2dCQUNEO29CQUNFLElBQUksRUFBRSxLQUFLO29CQUNYLEdBQUcsRUFBRSxJQUFBLHVCQUFXLEVBQUMsR0FBRyxDQUFDO2lCQUN0QjthQUNGO1lBQ0QsZ0JBQWdCLEVBQUU7Z0JBQ2hCO29CQUNFLElBQUksNEJBQVcsQ0FBQzt3QkFDZCxNQUFNLEVBQUUsQ0FBQzt3QkFDVCxLQUFLLEVBQUUsRUFBRTt3QkFDVCxLQUFLLEVBQUUsaUJBQWlCO3dCQUN4QixJQUFJLEVBQUU7NEJBQ0osSUFBQSx5QkFBVSxFQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDOzRCQUNqRSxJQUFBLHlCQUFVLEVBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO3lCQUN4RDt3QkFDRCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO3dCQUNyQixLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7d0JBQ3hELFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7d0JBQ3RCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7cUJBQzdCLENBQUM7b0JBQ0YsSUFBSSw0QkFBVyxDQUFDO3dCQUNkLE1BQU0sRUFBRSxDQUFDO3dCQUNULEtBQUssRUFBRSxFQUFFO3dCQUNULEtBQUssRUFBRSxtQkFBbUI7d0JBQzFCLElBQUksRUFBRTs0QkFDSixHQUFHLENBQUMsd0NBQXdDLENBQUM7Z0NBQzNDLEtBQUssRUFBRSxrQkFBa0I7Z0NBQ3pCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7NkJBQzVCLENBQUM7NEJBQ0YsR0FBRyxDQUFDLDJDQUEyQyxDQUFDO2dDQUM5QyxLQUFLLEVBQUUsaUJBQWlCO2dDQUN4QixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDOzZCQUM1QixDQUFDO3lCQUNIO3dCQUNELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7d0JBQ3JCLEtBQUssRUFBRTs0QkFDTCxHQUFHLENBQUMsbUNBQW1DLENBQUM7Z0NBQ3RDLEtBQUssRUFBRSxvQkFBb0I7Z0NBQzNCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7NkJBQzVCLENBQUM7eUJBQ0g7d0JBQ0QsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtxQkFDdkIsQ0FBQztpQkFDSDtnQkFDRDtvQkFDRSxJQUFJLDRCQUFXLENBQUM7d0JBQ2QsTUFBTSxFQUFFLENBQUM7d0JBQ1QsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLGlCQUFpQjt3QkFDeEIsSUFBSSxFQUFFOzRCQUNKLElBQUEseUJBQVUsRUFDUixJQUFJLENBQUMseUJBQXlCLENBQUMsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxFQUMvRCxDQUFDLENBQ0Y7NEJBQ0QsSUFBQSx5QkFBVSxFQUNSLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxDQUFDLEVBQzdELENBQUMsQ0FDRjs0QkFDRCxJQUFBLHlCQUFVLEVBQ1IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQ3BELENBQUMsQ0FDRjs0QkFDRCxJQUFBLHlCQUFVLEVBQ1IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFDckQsQ0FBQyxDQUNGO3lCQUNGO3dCQUNELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7cUJBQ3RCLENBQUM7aUJBQ0g7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBcUIsQ0FBQyxJQUFvQjtRQUMvQyxPQUFPLElBQUksdUJBQU0sQ0FBQztZQUNoQixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsRUFBRSwwQkFBUyxDQUFDLEdBQUc7WUFDeEIsR0FBRyxJQUFJO1lBQ1AsYUFBYSxFQUFFO2dCQUNiLENBQUMsZ0RBQXNCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlO2dCQUMvRCxDQUFDLCtDQUFxQixDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYztnQkFDN0QsQ0FBQyxtREFBeUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVE7YUFDNUQ7WUFDRCxVQUFVLHNEQUE4QjtZQUN4QyxTQUFTLEVBQUUsMkNBQWlCO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLHVCQUF1QixDQUFDLElBQW9CO1FBQ2pELE9BQU8sSUFBSSx1QkFBTSxDQUFDO1lBQ2hCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDM0IsU0FBUyxFQUFFLDBCQUFTLENBQUMsR0FBRztZQUN4QixHQUFHLElBQUk7WUFDUCxhQUFhLEVBQUU7Z0JBQ2IsQ0FBQyxnREFBc0IsQ0FBQyxFQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLElBQUksaUJBQUcsQ0FBQyxVQUFVO2dCQUN6RCxDQUFDLCtDQUFxQixDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYztnQkFDN0QsQ0FBQyxtREFBeUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVE7YUFDNUQ7WUFDRCxVQUFVLDhEQUErQjtZQUN6QyxTQUFTLEVBQUUsMkNBQWlCO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0IsQ0FBQyxJQUFvQjtRQUM1QyxPQUFPLElBQUksdUJBQU0sQ0FBQztZQUNoQixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsRUFBRSwwQkFBUyxDQUFDLEdBQUc7WUFDeEIsR0FBRyxJQUFJO1lBQ1AsYUFBYSxFQUFFO2dCQUNiLENBQUMsZ0RBQXNCLENBQUMsRUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLGlCQUFHLENBQUMsVUFBVTtnQkFDekQsQ0FBQywrQ0FBcUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWM7Z0JBQzdELENBQUMsbURBQXlCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRO2FBQzVEO1lBQ0QsVUFBVSwrQ0FBMEI7WUFDcEMsU0FBUyxFQUFFLDJDQUFpQjtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUIsQ0FBQyxJQUFvQjtRQUNuRCxPQUFPLElBQUksdUJBQU0sQ0FBQztZQUNoQixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsRUFBRSwwQkFBUyxDQUFDLEdBQUc7WUFDeEIsR0FBRyxJQUFJO1lBQ1AsYUFBYSxFQUFFO2dCQUNiLENBQUMsZ0RBQXNCLENBQUMsRUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLGlCQUFHLENBQUMsVUFBVTtnQkFDekQsQ0FBQywrQ0FBcUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWM7Z0JBQzdELENBQUMsbURBQXlCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRO2FBQzVEO1lBQ0QsVUFBVSwrREFBbUM7WUFDN0MsU0FBUyxFQUFFLDJDQUFpQjtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWxUSCxvQ0FtVEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcm5Gb3JtYXQsIEF3cywgRHVyYXRpb24sIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBHcmFwaFdpZGdldCxcbiAgTWV0cmljLFxuICBNZXRyaWNPcHRpb25zLFxuICBTdGF0aXN0aWMsXG4gIFRyZWF0TWlzc2luZ0RhdGEsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IENmblJlcG9zaXRvcnkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWFydGlmYWN0JztcbmltcG9ydCB7IFJ1bGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBUcmFjaW5nIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBCbG9ja1B1YmxpY0FjY2VzcywgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBRdWV1ZSwgUXVldWVFbmNyeXB0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7XG4gIGNvZGVBcnRpZmFjdFJlcG9zaXRvcnlVcmwsXG4gIGxhbWJkYUZ1bmN0aW9uVXJsLFxuICBsYW1iZGFTZWFyY2hMb2dHcm91cFVybCxcbiAgc3FzUXVldWVVcmwsXG59IGZyb20gJy4uL2RlZXAtbGluayc7XG5pbXBvcnQgeyBmaWxsTWV0cmljIH0gZnJvbSAnLi4vbWV0cmljLXV0aWxzJztcbmltcG9ydCB0eXBlIHtcbiAgSVBhY2thZ2VTb3VyY2UsXG4gIFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9ucyxcbiAgUGFja2FnZVNvdXJjZUJpbmRSZXN1bHQsXG59IGZyb20gJy4uL3BhY2thZ2Utc291cmNlJztcbmltcG9ydCB7IENvZGVBcnRpZmFjdEZvcndhcmRlciB9IGZyb20gJy4vY29kZWFydGlmYWN0L2NvZGUtYXJ0aWZhY3QtZm9yd2FyZGVyJztcbmltcG9ydCB7XG4gIE1FVFJJQ1NfTkFNRVNQQUNFLFxuICBNZXRyaWNOYW1lLFxuICBET01BSU5fTkFNRV9ESU1FTlNJT04sXG4gIERPTUFJTl9PV05FUl9ESU1FTlNJT04sXG4gIFJFUE9TSVRPUllfTkFNRV9ESU1FTlNJT04sXG59IGZyb20gJy4vY29kZWFydGlmYWN0L2NvbnN0YW50cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IFMzU3RvcmFnZUZhY3RvcnkgfSBmcm9tICcuLi9zMy9zdG9yYWdlJztcblxuZXhwb3J0IGludGVyZmFjZSBDb2RlQXJ0aWZhY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQ29kZUFydGlmYWN0IHJlcG9zaXRvcnkgd2hlcmUgcGFja2FnZXMgYXJlIG9idGFpbmVkIGZyb20uXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5OiBDZm5SZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgUzMgYnVja2V0IHdoZXJlIHBhY2thZ2VzIHdpbGwgYmUgc3RhZ2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0PzogSUJ1Y2tldDtcbn1cblxuLyoqXG4gKiBBIHBhY2thZ2Ugc291cmNlIHRoYXQgb2J0YWlucyBwYWNrYWdlIGRhdGEgZnJvbSBhbiBucG0gQ29kZUFydGlmYWN0XG4gKiByZXBvc2l0b3J5LlxuICovXG5leHBvcnQgY2xhc3MgQ29kZUFydGlmYWN0IGltcGxlbWVudHMgSVBhY2thZ2VTb3VyY2Uge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogQ29kZUFydGlmYWN0UHJvcHMpIHt9XG5cbiAgcHVibGljIGJpbmQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICB7XG4gICAgICBkZW55TGlzdCxcbiAgICAgIGluZ2VzdGlvbixcbiAgICAgIGxpY2Vuc2VMaXN0LFxuICAgICAgbW9uaXRvcmluZyxcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgICAgcXVldWUsXG4gICAgfTogUGFja2FnZVNvdXJjZUJpbmRPcHRpb25zXG4gICk6IFBhY2thZ2VTb3VyY2VCaW5kUmVzdWx0IHtcbiAgICBjb25zdCBpZFByZWZpeCA9IHRoaXMucHJvcHMucmVwb3NpdG9yeS5ub2RlLnBhdGg7XG4gICAgY29uc3QgcmVwb3NpdG9yeUlkID0gYCR7dGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lcn06JHt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWV9LyR7dGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lfWA7XG5cbiAgICBjb25zdCBzdG9yYWdlRmFjdG9yeSA9IFMzU3RvcmFnZUZhY3RvcnkuZ2V0T3JDcmVhdGUoc2NvcGUpO1xuICAgIGNvbnN0IGJ1Y2tldCA9XG4gICAgICB0aGlzLnByb3BzLmJ1Y2tldCB8fFxuICAgICAgc3RvcmFnZUZhY3RvcnkubmV3QnVja2V0KHNjb3BlLCBgJHtpZFByZWZpeH0vU3RhZ2luZ0J1Y2tldGAsIHtcbiAgICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFt7IGV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMzApIH1dLFxuICAgICAgfSk7XG4gICAgYnVja2V0LmdyYW50UmVhZChpbmdlc3Rpb24pO1xuXG4gICAgY29uc3QgZGxxID0gbmV3IFF1ZXVlKHNjb3BlLCBgJHtpZFByZWZpeH0vRExRYCwge1xuICAgICAgZW5jcnlwdGlvbjogUXVldWVFbmNyeXB0aW9uLktNU19NQU5BR0VELFxuICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgIHZpc2liaWxpdHlUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvcndhcmRlciA9IG5ldyBDb2RlQXJ0aWZhY3RGb3J3YXJkZXIoXG4gICAgICBzY29wZSxcbiAgICAgIGAke2lkUHJlZml4fS9Gb3J3YXJkZXJgLFxuICAgICAge1xuICAgICAgICBkZWFkTGV0dGVyUXVldWU6IGRscSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBbJHtzY29wZS5ub2RlLnBhdGh9L0NvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH1dIEhhbmRsZSBDb2RlQXJ0aWZhY3QgRXZlbnRCcmlkZ2UgZXZlbnRzYCxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBBV1NfRU1GX0VOVklST05NRU5UOiAnTG9jYWwnLFxuICAgICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBRVUVVRV9VUkw6IHF1ZXVlLnF1ZXVlVXJsLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vcnlTaXplOiAxMDI0LFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgICAgdHJhY2luZzogVHJhY2luZy5BQ1RJVkUsXG4gICAgICB9XG4gICAgKTtcbiAgICBidWNrZXQuZ3JhbnRSZWFkV3JpdGUoZm9yd2FyZGVyKTtcbiAgICBkZW55TGlzdD8uZ3JhbnRSZWFkKGZvcndhcmRlcik7XG4gICAgbGljZW5zZUxpc3QuZ3JhbnRSZWFkKGZvcndhcmRlcik7XG4gICAgcXVldWUuZ3JhbnRTZW5kTWVzc2FnZXMoZm9yd2FyZGVyKTtcbiAgICBmb3J3YXJkZXIuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbJ2NvZGVhcnRpZmFjdDpHZXRQYWNrYWdlVmVyc2lvbkFzc2V0J10sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIFN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICAgICAgc2VydmljZTogJ2NvZGVhcnRpZmFjdCcsXG4gICAgICAgICAgICByZXNvdXJjZTogJ3BhY2thZ2UnLFxuICAgICAgICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICAgICAgIHJlc291cmNlTmFtZTogW1xuICAgICAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgICAgICAgICAgJ25wbScsIC8vIHBhY2thZ2UgZm9ybWF0XG4gICAgICAgICAgICAgICcqJywgLy8gbmFtZXNwYWNlL3BhY2thZ2UtbmFtZVxuICAgICAgICAgICAgXS5qb2luKCcvJyksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBydWxlID0gbmV3IFJ1bGUoc2NvcGUsIGAke2lkUHJlZml4fS9FdmVudEJyaWRnZWAsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtzY29wZS5ub2RlLnBhdGh9L0NvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH0vRXZlbnRCcmlkZ2VgLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIHNvdXJjZTogWydhd3MuY29kZWFydGlmYWN0J10sXG4gICAgICAgIGRldGFpbFR5cGU6IFsnQ29kZUFydGlmYWN0IFBhY2thZ2UgVmVyc2lvbiBTdGF0ZSBDaGFuZ2UnXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgZG9tYWluT3duZXI6IFt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyXSxcbiAgICAgICAgICBkb21haW5OYW1lOiBbdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lXSxcbiAgICAgICAgICByZXBvc2l0b3J5TmFtZTogW3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZV0sXG4gICAgICAgICAgcGFja2FnZUZvcm1hdDogWyducG0nXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbbmV3IExhbWJkYUZ1bmN0aW9uKGZvcndhcmRlcildLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZmFpbHVyZUFsYXJtID0gZm9yd2FyZGVyXG4gICAgICAubWV0cmljRXJyb3JzKClcbiAgICAgIC5jcmVhdGVBbGFybShzY29wZSwgYCR7aWRQcmVmaXh9L0ZvcndhcmRlci9GYWlsdXJlc2AsIHtcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L0NvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH0vRm9yd2FyZGVyYCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgIGBUaGUgQ29kZUFydGlmYWN0IGZvd2FyZGVyIGZvciAke3JlcG9zaXRvcnlJZH0gaXMgZmFpbGluZ2AsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYExpbmsgdG8gdGhlIGxhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb3J3YXJkZXIpfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjpcbiAgICAgICAgICBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5NSVNTSU5HLFxuICAgICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRIaWdoU2V2ZXJpdHlBbGFybShcbiAgICAgIGBDb2RlQXJ0aWZhY3Q6JHt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWV9IEZhaWx1cmVzYCxcbiAgICAgIGZhaWx1cmVBbGFybVxuICAgICk7XG5cbiAgICBjb25zdCBkbHFOb3RFbXB0eUFsYXJtID0gZGxxXG4gICAgICAubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZSh7XG4gICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIH0pXG4gICAgICAuY3JlYXRlQWxhcm0oc2NvcGUsIGAke2lkUHJlZml4fS9Gb3J3YXJkZXIvRExRTm90RW1wdHlgLCB7XG4gICAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9Db2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9L0RMUU5vdEVtcHR5YCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgIGBUaGUgQ29kZUFydGlmYWN0IGZvd2FyZGVyIGZvciAke3JlcG9zaXRvcnlJZH0gaXMgZmFpbGluZ2AsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYExpbmsgdG8gdGhlIGxhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb3J3YXJkZXIpfWAsXG4gICAgICAgICAgYExpbmsgdG8gdGhlIGRlYWQgbGV0dGVyIHF1ZXVlOiAke3Nxc1F1ZXVlVXJsKGRscSl9YCxcbiAgICAgICAgXS5qb2luKCcvbicpLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6XG4gICAgICAgICAgQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgIGBDb2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9IERMUSBOb3QgRW1wdHlgLFxuICAgICAgZGxxTm90RW1wdHlBbGFybVxuICAgICk7XG5cbiAgICBydWxlLm5vZGUuYWRkRGVwZW5kZW5jeShmYWlsdXJlQWxhcm0sIGRscU5vdEVtcHR5QWxhcm0pO1xuXG4gICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkRExRTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBgQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfSBETFFgLFxuICAgICAgZGxxXG4gICAgKTtcbiAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRDb25jdXJyZW50RXhlY3V0aW9uTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBmb3J3YXJkZXIsXG4gICAgICBgJHtpZFByZWZpeH0vRm9yd2FyZGVyTGFtYmRhYFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogYENvZGVBcnRpZmFjdDogJHtyZXBvc2l0b3J5SWR9YCxcbiAgICAgIGxpbmtzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ29kZUFydGlmYWN0JyxcbiAgICAgICAgICB1cmw6IGNvZGVBcnRpZmFjdFJlcG9zaXRvcnlVcmwodGhpcy5wcm9wcy5yZXBvc2l0b3J5KSxcbiAgICAgICAgICBwcmltYXJ5OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0ZvcndhcmRlciBGdW5jdGlvbicsXG4gICAgICAgICAgdXJsOiBsYW1iZGFGdW5jdGlvblVybChmb3J3YXJkZXIpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1NlYXJjaCBMb2cgZ3JvdXAnLFxuICAgICAgICAgIHVybDogbGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwoZm9yd2FyZGVyKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdETFEnLFxuICAgICAgICAgIHVybDogc3FzUXVldWVVcmwoZGxxKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBkYXNoYm9hcmRXaWRnZXRzOiBbXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdGdW5jdGlvbiBIZWFsdGgnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKGZvcndhcmRlci5tZXRyaWNJbnZvY2F0aW9ucyh7IGxhYmVsOiAnSW52b2NhdGlvbnMnIH0pKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhmb3J3YXJkZXIubWV0cmljRXJyb3JzKHsgbGFiZWw6ICdFcnJvcnMnIH0pKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW2ZvcndhcmRlci5tZXRyaWNEdXJhdGlvbih7IGxhYmVsOiAnRHVyYXRpb24nIH0pXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0RlYWQgTGV0dGVyIFF1ZXVlJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZGxxLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVmlzaWJsZSBNZXNzYWdlcycsXG4gICAgICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZGxxLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnSGlkZGVuIE1lc3NhZ2VzJyxcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIGRscS5tZXRyaWNBcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1F1YWxpdHkgTWV0cmljcycsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNOb3RKc2lpRW5hYmxlZENvdW50KHsgbGFiZWw6ICdOb3QgYSBqc2lpIHBhY2thZ2UnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0luZWxpZ2libGVMaWNlbnNlKHsgbGFiZWw6ICdJbmVsaWdpYmxlIExpY2Vuc2UnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0RlbnlMaXN0ZWRDb3VudCh7IGxhYmVsOiAnRGVueSBMaXN0ZWQnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0RlbGV0ZWRDb3VudCh7IGxhYmVsOiAnRGVsZXRpb24gRXZlbnRzJyB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb3VudCBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBpZ25vcmVkIGR1ZSB0byBiZWluZyBpbiB0aGUgZGVueSBsaXN0LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0RlbnlMaXN0ZWRDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgW0RPTUFJTl9PV05FUl9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyLFxuICAgICAgICBbRE9NQUlOX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICBbUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkRFTllfTElTVEVEX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhY2thZ2UgdmVyc2lvbnMgdGhhdCB3ZXJlIGlnbm9yZWQgZHVlIHRvIHVzaW5nIGFuIGluZWxvaWdpYmxlIGxpY2Vuc2UuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljSW5lbGlnaWJsZUxpY2Vuc2Uob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFtET01BSU5fT1dORVJfRElNRU5TSU9OXTpcbiAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyID8/IEF3cy5BQ0NPVU5UX0lELFxuICAgICAgICBbRE9NQUlOX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICBbUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLklORUxJR0lCTEVfTElDRU5TRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBkZWxldGVkIGZyb20gQ29kZUFydGlmYWN0ICh0aG9zZSBldmVudHMgYXJlIG5vdFxuICAgKiBoYW5kbGVkIGN1cnJlbnRseSkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljRGVsZXRlZENvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBbRE9NQUlOX09XTkVSX0RJTUVOU0lPTl06XG4gICAgICAgICAgdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lciA/PyBBd3MuQUNDT1VOVF9JRCxcbiAgICAgICAgW0RPTUFJTl9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgW1JFUE9TSVRPUllfTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWUsXG4gICAgICB9LFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5ERUxFVEVEX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhY2thZ2UgdmVyc2lvbnMgdGhhdCBkbyBub3QgaGF2ZSBhIGpzaWkgYXNzZW1ibHkgaW4gdGhlIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTm90SnNpaUVuYWJsZWRDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgW0RPTUFJTl9PV05FUl9ESU1FTlNJT05dOlxuICAgICAgICAgIHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluT3duZXIgPz8gQXdzLkFDQ09VTlRfSUQsXG4gICAgICAgIFtET01BSU5fTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgIFtSRVBPU0lUT1JZX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lLFxuICAgICAgfSxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuTk9UX0pTSUlfRU5BQkxFRF9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -86,6 +86,12 @@ class CouchChanges extends events_1.EventEmitter {
86
86
  while (Date.now() - startTime < MAX_PACKAGE_SERVER_LAG_MS) {
87
87
  try {
88
88
  const meta = await this.https('get', metadataUrl);
89
+ if (!meta) {
90
+ throw new Error(`No metadata for ${change.id}`);
91
+ }
92
+ if (!meta._rev) {
93
+ throw new Error(`No _rev in metadata for ${change.id}`);
94
+ }
89
95
  const latestReplicaRev = parseSequentialRevision(meta._rev);
90
96
  change.doc = meta; // add metadata to the change object
91
97
  // Happy path: replica is up-to-date
@@ -220,4 +226,4 @@ function gunzip(readable) {
220
226
  readable.pipe(gz, { end: true });
221
227
  return gz;
222
228
  }
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291Y2gtY2hhbmdlcy5sYW1iZGEtc2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jb3VjaC1jaGFuZ2VzLmxhbWJkYS1zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXNDO0FBRXRDLGlDQUF1RDtBQUN2RCxxREFBNkM7QUFFN0MsNkJBQTBCO0FBQzFCLCtCQUFvQztBQUVwQyxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDO0FBRXZELE1BQU0sbUJBQW1CLEdBQUcsS0FBTSxDQUFDO0FBRW5DLE1BQU0sMEJBQTBCLEdBQUcsSUFBSyxDQUFDO0FBRXpDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBRS9CLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBRS9CLE1BQU0seUJBQXlCLEdBQUcsS0FBTSxDQUFDLENBQUMsYUFBYTtBQUV2RDs7O0dBR0c7QUFDSCxNQUFhLFlBQWEsU0FBUSxxQkFBWTtJQUs1Qzs7O09BR0c7SUFDSCxZQUFtQixPQUFlLEVBQUUsUUFBZ0I7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFDUix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGFBQUssQ0FBQztZQUNyQixTQUFTLEVBQUUsSUFBSTtZQUNmLGNBQWMsRUFBRSxJQUFLO1lBQ3JCLFVBQVUsRUFBRSxrQkFBa0I7WUFFOUIsb0VBQW9FO1lBQ3BFLG1DQUFtQztZQUNuQyxPQUFPLEVBQUUsS0FBTTtTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksU0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FB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QUM3QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsR0FBVztJQUMxQyxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQUMsTUFBc0I7SUFDdEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU87U0FDOUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xELE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVCLENBQUM7QUFDSixDQUFDO0FBa0VELFNBQVMsTUFBTSxDQUFDLFFBQWtCO0lBQ2hDLE1BQU0sRUFBRSxHQUFHLElBQUEsbUJBQVksR0FBRSxDQUFDO0lBQzFCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakMsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCB7IEluY29taW5nTWVzc2FnZSwgT3V0Z29pbmdIdHRwSGVhZGVycyB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IHsgQWdlbnQsIHJlcXVlc3QsIFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsganNvbiB9IGZyb20gJ25vZGU6c3RyZWFtL2NvbnN1bWVycyc7XG5pbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgY3JlYXRlR3VuemlwIH0gZnJvbSAnemxpYic7XG5cbmNvbnN0IE5QTV9SRUdJU1RSWV9VUkwgPSAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJztcblxuY29uc3QgUkVRVUVTVF9ERUFETElORV9NUyA9IDMwXzAwMDtcblxuY29uc3QgUkVRVUVTVF9BVFRFTVBUX1RJTUVPVVRfTVMgPSA1XzAwMDtcblxuY29uc3QgREVGQVVMVF9CQVRDSF9TSVpFID0gMTAwO1xuXG5jb25zdCBNQVhfQ09OTlNfUEVSX0hPU1QgPSAxMDA7XG5cbmNvbnN0IE1BWF9QQUNLQUdFX1NFUlZFUl9MQUdfTVMgPSAzMF8wMDA7IC8vIDMwIHNlY29uZHNcblxuLyoqXG4gKiBBIHV0aWxpdHkgY2xhc3MgdGhhdCBoZWxwcyB3aXRoIHRyYXZlcnNpbmcgQ291Y2hEQiBkYXRhYmFzZSBjaGFuZ2VzIHN0cmVhbXNcbiAqIGluIGEgcHJvbWlzZS1iYXNlZCwgcGFnZS1ieS1wYWdlIG1hbm5lci5cbiAqL1xuZXhwb3J0IGNsYXNzIENvdWNoQ2hhbmdlcyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWdlbnQ6IEFnZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IFVSTDtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhYmFzZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gYmFzZVVybCAgdGhlIENvdWNoREIgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gZGF0YWJhc2UgdGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGZvciB3aGljaCBjaGFuZ2VzIGFyZSBmZXRjaGVkLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGJhc2VVcmw6IHN0cmluZywgZGF0YWJhc2U6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gU2V0dGluZyB1cCBmb3Iga2VlcC1hbGl2ZSBjb25uZWN0aW9ucy5cbiAgICB0aGlzLmFnZW50ID0gbmV3IEFnZW50KHtcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICAgIGtlZXBBbGl2ZU1zZWNzOiA1XzAwMCxcbiAgICAgIG1heFNvY2tldHM6IE1BWF9DT05OU19QRVJfSE9TVCxcblxuICAgICAgLy8gVGhpcyB0aW1lb3V0IGlzIHNlcGFyYXRlIGZyb20gdGhlIHJlcXVlc3QgdGltZW91dCwgYW5kIGlzIGhlcmUgdG9cbiAgICAgIC8vIHByZXZlbnQgc3RhbGxlZC9pZGxlIGNvbm5lY3Rpb25zXG4gICAgICB0aW1lb3V0OiA2MF8wMDAsXG4gICAgfSk7XG4gICAgdGhpcy5iYXNlVXJsID0gbmV3IFVSTChiYXNlVXJsKTtcbiAgICB0aGlzLmRhdGFiYXNlID0gZGF0YWJhc2U7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3VtbWFyeSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGF0YWJhc2UuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW5mbygpOiBQcm9taXNlPERhdGFiYXNlSW5mb3M+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaHR0cHMoJ2dldCcsIHRoaXMuYmFzZVVybCkpIGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRhaW5zIGEgYmF0Y2ggb2YgY2hhbmdlcyBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQHBhcmFtIHNpbmNlICAgICB0aGUgc2VxdWVuY2UgdmFsdWUgc2luY2Ugd2hlbiBoaXN0b3J5IHNob3VsZCBiZSBmZXRjaGVkLlxuICAgKiBAcGFyYW0gYmF0Y2hTaXplIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBjaGFuZ2VzIHRvIHJldHVybiBpbiBhIHNpbmdsZSBwYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBhIHBhZ2Ugb2YgY2hhbmdlcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VzKFxuICAgIHNpbmNlOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgb3B0cz86IHsgcmVhZG9ubHkgYmF0Y2hTaXplPzogbnVtYmVyIH1cbiAgKTogUHJvbWlzZTxEYXRhYmFzZUNoYW5nZXM+IHtcbiAgICBjb25zdCBiYXRjaFNpemUgPSBvcHRzPy5iYXRjaFNpemUgPz8gREVGQVVMVF9CQVRDSF9TSVpFO1xuXG4gICAgY29uc3QgY2hhbmdlc1VybCA9IG5ldyBVUkwodGhpcy5kYXRhYmFzZSwgdGhpcy5iYXNlVXJsKTtcbiAgICBjaGFuZ2VzVXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2xpbWl0JywgYmF0Y2hTaXplLnRvRml4ZWQoKSk7XG4gICAgY2hhbmdlc1VybC5zZWFyY2hQYXJhbXMuc2V0KCdzaW5jZScsIHNpbmNlLnRvU3RyaW5nKCkpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gKGF3YWl0IHRoaXMuaHR0cHMoJ2dldCcsIGNoYW5nZXNVcmwpKSBhcyBhbnk7XG5cbiAgICBjb25zdCBsYXN0X3NlcSA9IHJlc3VsdC5sYXN0X3NlcTtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5mZXRjaEFuZEZpbHRlckFsbE1ldGFkYXRhKHJlc3VsdC5yZXN1bHRzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYXN0X3NlcSxcbiAgICAgIGFjdGlvbmFibGVSZXN1bHRzOiByZXN1bHRzLFxuICAgICAgdG90YWxDb3VudDogcmVzdWx0LnJlc3VsdHMubGVuZ3RoLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdGhlIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGNoYW5nZS4gVGhlIGNoYW5nZSBjb21lcyBhc3NvY2lhdGVkIHdpdGggYSByZXZpc2lvbiBudW1iZXIsXG4gICAqIHdoaWNoIGNhbiBiZSBjb21wYXJlZCB0byB0aGUgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBtZXRhZGF0YSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlcGxpY2EgaXNcbiAgICogbGFnZ2luZyBiZWhpbmQgdGhlIGNoYW5nZXMgc3RyZWFtLiBJZiBzbywgd2UgcmV0cnkgdW50aWwgdGhlIHJlcGxpY2EgaXMgdXAtdG8tZGF0ZSBvciB1bnRpbFxuICAgKiAzMCBzZWNvbmRzIGVsYXBzZWQgYWZ0ZXIgd2hpY2ggd2UgcmV0dXJuIHRoZSBwb3RlbnRpYWxseSBzdGFsZSBtZXRhZGF0YS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBbmRGaWx0ZXJNZXRhZGF0YShjaGFuZ2U6IERhdGFiYXNlQ2hhbmdlKSB7XG4gICAgLy8gRmlsdGVyIG91dCBkZWxldGVkIHBhY2thZ2VzIG9yIG51bGwgaWRzXG4gICAgaWYgKGNoYW5nZS5kZWxldGVkIHx8ICFjaGFuZ2UuaWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTa2lwcGluZyAke2NoYW5nZS5pZH06IGRlbGV0ZWQgb3IgbnVsbCBpZGApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxhdGVzdENoYW5nZXNSZXYgPSBnZXRNYXhTZXF1ZW50aWFsUmV2aXNpb24oY2hhbmdlKTtcbiAgICBjb25zdCBtZXRhZGF0YVVybCA9IG5ldyBVUkwoY2hhbmdlLmlkLCBOUE1fUkVHSVNUUllfVVJMKTtcbiAgICBjb25zb2xlLmxvZyhgRmV0Y2hpbmcgbWV0YWRhdGEgZm9yICR7Y2hhbmdlLmlkfTogJHttZXRhZGF0YVVybH1gKTtcblxuICAgIC8vIFJldHJ5IGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBiYXNlRGVsYXkgPSAxXzAwMDsgLy8gMSBzZWNvbmRcbiAgICBjb25zdCBtYXhEZWxheSA9IDhfMDAwOyAvLyA4IHNlY29uZHMgbWF4XG4gICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICB3aGlsZShEYXRlLm5vdygpIC0gc3RhcnRUaW1lIDwgTUFYX1BBQ0tBR0VfU0VSVkVSX0xBR19NUykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbWV0YSA9IGF3YWl0IHRoaXMuaHR0cHMoJ2dldCcsIG1ldGFkYXRhVXJsKTtcbiAgICAgICAgY29uc3QgbGF0ZXN0UmVwbGljYVJldiA9IHBhcnNlU2VxdWVudGlhbFJldmlzaW9uKG1ldGEuX3JldiBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGNoYW5nZS5kb2MgPSBtZXRhOyAvLyBhZGQgbWV0YWRhdGEgdG8gdGhlIGNoYW5nZSBvYmplY3RcblxuICAgICAgICAvLyBIYXBweSBwYXRoOiByZXBsaWNhIGlzIHVwLXRvLWRhdGVcbiAgICAgICAgaWYgKGxhdGVzdFJlcGxpY2FSZXYgPj0gbGF0ZXN0Q2hhbmdlc1Jldikge1xuICAgICAgICAgIHJldHVybiBjaGFuZ2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVbmhhcHB5IHBhdGg6IHJlcGxpY2EgaXMgYmVoaW5kLiBDYWxjdWxhdGUgZGVsYXkgYW5kIHJldHJ5XG4gICAgICAgIGNvbnN0IGRlbGF5ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTWF0aC5taW4oYmFzZURlbGF5ICogTWF0aC5wb3coMiwgYXR0ZW1wdCksIG1heERlbGF5KSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAke2NoYW5nZS5pZH06IHBhY2thZ2UgX3JldiAke2xhdGVzdFJlcGxpY2FSZXZ9IDwgZXhwZWN0ZWQgcmVwbGljYXRpb24gcmV2ICR7bGF0ZXN0Q2hhbmdlc1Jldn0sIHJldHJ5aW5nIGluICR7ZGVsYXl9IG1zYCk7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBkZWxheSkpO1xuICAgICAgICBhdHRlbXB0Kys7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgaWYgKGUubWVzc2FnZT8uaW5jbHVkZXMoJ0hUVFAgNDA0JykpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGBTa2lwcGluZyAke2NoYW5nZS5pZH0gYmVjYXVzZSBvZiBIVFRQIDQwNCAoTm90IEZvdW5kKSBlcnJvcmBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRpbWVvdXQgcmVhY2hlZCwgcHJvY2VlZCB3aXRoIHN0YWxlIGRhdGFcbiAgICBjb25zb2xlLmxvZyhgVGltZW91dCByZWFjaGVkIGZvciAke2NoYW5nZS5pZH0sIHJlcGxpY2EgbWF5IGJlIHN0YWxlYCk7XG4gICAgcmV0dXJuIGNoYW5nZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBbmRGaWx0ZXJBbGxNZXRhZGF0YShcbiAgICBjaGFuZ2VzOiBEYXRhYmFzZUNoYW5nZVtdXG4gICk6IFByb21pc2U8RGF0YWJhc2VDaGFuZ2VbXT4ge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgY2hhbmdlcy5tYXAoKGNoYW5nZSkgPT4gdGhpcy5mZXRjaEFuZEZpbHRlck1ldGFkYXRhKGNoYW5nZSkpXG4gICAgICApXG4gICAgKS5maWx0ZXIoKGNoYW5nZSk6IGNoYW5nZSBpcyBEYXRhYmFzZUNoYW5nZSA9PiBjaGFuZ2UgIT09IHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZXMgYW4gSFRUUHMgcmVxdWVzdCB1c2luZyB0aGUgcHJvdmlkZWQgbWV0aG9kLCB1cmwsIGFuZCBvcHRpb25hbGx5IHBheWxvYWQuIFRoaXMgZnVuY3Rpb25cbiAgICogcHJvcGVybHkgaGFuZGxlcyBpbnB1dCB0aGF0IGlzIHJlY2VpdmVkIHdpdGggYENvbnRlbnQtVHlwZTogZ3ppcGAgYW5kIGF1dG9tYXRpY2FsbHkgcmV0cmllc1xuICAgKiB0eXBpY2FsIHRyYW5zaWVudCBlcnJvcnMgKEhUVFAgNVhYLCBFQ09OTlJFU0VULCBldGMuLi4pIHdpdGggbGluZWFyIGJhY2stb2ZmIGFuZCBubyBtYXhpbXVtXG4gICAqIHJldHJ5IGNvdW50ICh0aGlzIGlzIHVzZWQgaW4gTGFtYmRhIGZ1bmN0aW9ucywgd2hpY2ggZGUtZmFjdG8gY2FwcyB0aGUgYW1vdW50IG9mIGF0dGVtcHRzXG4gICAqIHRoYXQgd2lsbCBiZSBtYWRlIGR1ZSB0byB0aGUgZnVuY3Rpb24gdGltZSBvdXQpLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kIHRoZSBIVFRQIG1ldGhvZCB1c2VkIGZvciB0aGUgcmVxdWVzdCAoZS5nOiAnZ2V0JywgJ3Bvc3QnLCAuLi4pLlxuICAgKiBAcGFyYW0gdXJsICAgIHRoZSBVUkwgdG8gcmVxdWVzdC5cbiAgICogQHBhcmFtIGJvZHkgICBhbiBvcHRpb25hbCBIVFRQIHJlcXVlc3QgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBKU09OLWVuY29kZWQuXG4gICAqXG4gICAqIEBwYXJhbSBhdHRlbXB0IHRoZSByZXF1ZXN0IGF0dGVtcHQgbnVtYmVyICh1c2VkIHRvIGRldGVybWluZSBiYWNrLW9mZiAvIHJldHJ5KS5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIEpTT04tZGVjb2RlZCByZXNwb25zZSBib2R5LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBodHRwcyhcbiAgICBtZXRob2Q6ICdnZXQnIHwgJ3Bvc3QnLFxuICAgIHVybDogVVJMLFxuICAgIGJvZHk/OiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfVxuICApOiBQcm9taXNlPHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9PiB7XG4gICAgY29uc3QgaGVhZGVyczogT3V0Z29pbmdIdHRwSGVhZGVycyA9IHtcbiAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwJyxcbiAgICAgICducG0tcmVwbGljYXRpb24tb3B0LWluJzogJ3RydWUnLCAvLyBjYW4gYmUgZGVsZXRlZCBhZnRlciBNYXkgMjk6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdzL2NvbW11bml0eS9kaXNjdXNzaW9ucy8xNTI1MTVcbiAgICB9O1xuICAgIGlmIChib2R5KSB7XG4gICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICBhZ2VudDogdGhpcy5hZ2VudCxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBtZXRob2QsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgICBzZXJ2ZXJuYW1lOiB1cmwuaG9zdG5hbWUsXG4gICAgICAvLyBUaGlzIGp1c3QgbGVhZHMgdG8gYSAndGltZW91dCcgZXZlbnRcbiAgICAgIHRpbWVvdXQ6IFJFUVVFU1RfQVRURU1QVF9USU1FT1VUX01TLFxuICAgIH07XG5cbiAgICBjb25zdCBkZWFkbGluZSA9IERhdGUubm93KCkgKyBSRVFVRVNUX0RFQURMSU5FX01TO1xuICAgIGxldCBtYXhEZWxheSA9IDEwMDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdFByb21pc2UodXJsLCByZXF1ZXN0T3B0aW9ucywgYm9keSk7XG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJldHJ5YWJsZUVycm9yKCdObyBzdGF0dXMgY29kZSBhdmFpbGFibGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlcnZlciBlcnJvcnMuIFdlIGNhbid0IGtub3cgd2hldGhlciB0aGVzZSBhcmUgcmVhbGx5IHJldHJ5YWJsZSBidXQgd2UgdXN1YWxseSBwcmV0ZW5kIHRoYXQgdGhleSBhcmUuXG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA+PSA1MDAgJiYgcmVzLnN0YXR1c0NvZGUgPCA2MDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmV0cnlhYmxlRXJyb3IoXG4gICAgICAgICAgICBgSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAke3Jlcy5zdGF0dXNNZXNzYWdlfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGVybWFuZW50IChjbGllbnQpIGVycm9yczpcbiAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID49IDQwMCAmJiByZXMuc3RhdHVzQ29kZSA8IDUwMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAke3Jlcy5zdGF0dXNNZXNzYWdlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYFJlc3BvbnNlOiAke21ldGhvZC50b1VwcGVyQ2FzZSgpfSAke3VybH0gPT4gSFRUUCAke1xuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGVcbiAgICAgICAgICB9ICgke3Jlcy5zdGF0dXNNZXNzYWdlfSlgXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRSZXNwb25zZUpzb24ocmVzKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBpZiAoRGF0ZS5ub3coKSA+IGRlYWRsaW5lIHx8ICFpc1JldHJ5YWJsZUVycm9yKGUpKSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtSRVRSWUFCTEVdICR7bWV0aG9kfSAke3VybH06ICR7ZX1gKTtcblxuICAgICAgICBhd2FpdCBzbGVlcChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBtYXhEZWxheSkpO1xuICAgICAgICBtYXhEZWxheSAqPSAyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgUHJvbWlzaWZpZWQgdmVyc2lvbiBvZiBgaHR0cHMucmVxdWVzdCgpYCB0aGF0IGFsc28gaGFuZGxlcyB0aW1lb3V0IGV2ZW50c1xuICovXG5mdW5jdGlvbiByZXF1ZXN0UHJvbWlzZShcbiAgdXJsOiBVUkwsXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zLFxuICBib2R5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbikge1xuICByZXR1cm4gbmV3IFByb21pc2U8SW5jb21pbmdNZXNzYWdlPigob2ssIGtvKSA9PiB7XG4gICAgY29uc3QgcmVxID0gcmVxdWVzdCh1cmwsIG9wdGlvbnMgPz8ge30sIG9rKTtcbiAgICByZXEub24oJ2Vycm9yJywga28pO1xuICAgIHJlcS5vbigndGltZW91dCcsICgpID0+IHtcbiAgICAgIHJlcS5kZXN0cm95KFxuICAgICAgICBuZXcgUmV0cnlhYmxlRXJyb3IoXG4gICAgICAgICAgYFRpbWVvdXQgYWZ0ZXIgJHtvcHRpb25zLnRpbWVvdXR9bXMsIGFib3J0aW5nIHJlcXVlc3RgXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmVxLmVuZChib2R5ICYmIEpTT04uc3RyaW5naWZ5KGJvZHksIG51bGwsIDIpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRSZXNwb25zZUpzb24oXG4gIHJlczogSW5jb21pbmdNZXNzYWdlXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgcmVzLm9uY2UoJ2Vycm9yJywga28pO1xuXG4gICAgY29uc3QgcGxhaW5QYXlsb2FkID1cbiAgICAgIHJlcy5oZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10gPT09ICdnemlwJyA/IGd1bnppcChyZXMpIDogcmVzO1xuXG4gICAgcmV0dXJuIGpzb24ocGxhaW5QYXlsb2FkKVxuICAgICAgLnRoZW4oKHBhcnNlZCkgPT4gb2socGFyc2VkIGFzIGFueSkpXG4gICAgICAuY2F0Y2goKGVycikgPT4ga28oZXJyKSk7XG4gIH0pO1xufVxuXG5jbGFzcyBSZXRyeWFibGVFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbmZ1bmN0aW9uIGlzUmV0cnlhYmxlRXJyb3IoZTogRXJyb3IpOiBib29sZWFuIHtcbiAgcmV0dXJuIGUgaW5zdGFuY2VvZiBSZXRyeWFibGVFcnJvciB8fCAoZSBhcyBhbnkpLmNvZGUgPT09ICdFQ09OTlJFU0VUJztcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2xlZXAobXM6IG51bWJlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rKSA9PiBzZXRUaW1lb3V0KG9rLCBtcykpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVNlcXVlbnRpYWxSZXZpc2lvbihyZXY6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBwYXJzZUludChyZXYuc3BsaXQoJy0nKVswXSk7XG59XG5cbmZ1bmN0aW9uIGdldE1heFNlcXVlbnRpYWxSZXZpc2lvbihjaGFuZ2U6IERhdGFiYXNlQ2hhbmdlKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KC4uLmNoYW5nZS5jaGFuZ2VzXG4gICAgLm1hcChjaGFuZ2UgPT4gcGFyc2VTZXF1ZW50aWFsUmV2aXNpb24oY2hhbmdlLnJldikpXG4gICAgLmZpbHRlcihudW0gPT4gIWlzTmFOKG51bSkpXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VDaGFuZ2VzIHtcbiAgLyoqXG4gICAqIFRoZSBsYXN0IHNlcXVlbmNlIElEIGZyb20gdGhpcyBjaGFuZ2Ugc2V0LiBUaGlzIGlzIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZVxuICAgKiBwYXNzZWQgdG8gdGhlIHN1YnNlcXVlbnQgYC5jaGFuZ2VzYCBjYWxsIHRvIGZldGNoIHRoZSBuZXh0IHBhZ2UuXG4gICAqL1xuICByZWFkb25seSBsYXN0X3NlcTogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uYWJsZSBjaGFuZ2VzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBiYXRjaC5cbiAgICogVGhpcyBoYXMgZGVsZXRlZCBhbmQgdW5yZWFjaGFibGUgcGFja2FnZXMgcmVtb3ZlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbmFibGVSZXN1bHRzOiByZWFkb25seSBEYXRhYmFzZUNoYW5nZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgY291bnQgb2YgY2hhbmdlcyBpbiB0aGlzIGJhdGNoLiBUaGlzIGluY2x1ZGVzIHVucHJvY2Vzc2FibGUgY2hhbmdlcy5cbiAgICogMCBpbmRpY2F0ZXMgd2UgYXJlIHVwIHRvIGRhdGUgd2l0aCBcIm5vd1wiLlxuICAgKi9cbiAgcmVhZG9ubHkgdG90YWxDb3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIFRoZSBzZXQgb2YgcmV2aXNpb25zIHRvIHRoZSBvYmplY3QgdGhhdCB3ZXJlIHJlc29sdmVkIGFzIHBhcnQgb2YgdGhpc1xuICAgKiBjaGFuZ2UuXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzOiBSZWFkb25seUFycmF5PHsgcmVhZG9ubHkgcmV2OiBzdHJpbmcgfT47XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgZG9jdW1lbnQgdGhhdCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXF1ZW5jZSBJRCBmb3IgdGhpcyBjaGFuZ2UgaW4gdGhlIHN0cmVhbS4gSXQgbWF5IG5vdCBiZSBwcmVzZW50IGZvclxuICAgKiBhbGwgKG9yIGFueSkgZW50cmllcyBpbiB0aGUgcmVzdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2VxPzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY2hhbmdlIGNvcnJlc3BvbmRzIHRvIHRoaXMgZG9jdW1lbnQgYmVpbmcgZGVsZXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHByZXNlbnQsIHRoZSByZXNvbHZlZCBkb2N1bWVudCBhZnRlciB0aGUgY2hhbmdlIGhhcyBiZWVuIGFwcGxpZWQuXG4gICAqL1xuICBkb2M/OiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUluZm9zIHtcbiAgcmVhZG9ubHkgZGJfbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkaXNrX2Zvcm1hdF92ZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IGRvY19jb3VudDogbnVtYmVyO1xuICByZWFkb25seSBkb2NfZGVsX2NvdW50OiBudW1iZXI7XG4gIHJlYWRvbmx5IGluc3RhbmNlX3N0YXJ0X3RpbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcHVyZ2Vfc2VxOiBzdHJpbmcgfCBudW1iZXI7XG4gIHJlYWRvbmx5IHNpemVzOiB7XG4gICAgcmVhZG9ubHkgYWN0aXZlOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgZXh0ZXJuYWw6IG51bWJlcjtcbiAgICByZWFkb25seSBmaWxlOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHVwZGF0ZV9zZXE6IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gZ3VuemlwKHJlYWRhYmxlOiBSZWFkYWJsZSk6IFJlYWRhYmxlIHtcbiAgY29uc3QgZ3ogPSBjcmVhdGVHdW56aXAoKTtcbiAgcmVhZGFibGUucGlwZShneiwgeyBlbmQ6IHRydWUgfSk7XG4gIHJldHVybiBnejtcbn1cbiJdfQ==
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291Y2gtY2hhbmdlcy5sYW1iZGEtc2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jb3VjaC1jaGFuZ2VzLmxhbWJkYS1zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXNDO0FBRXRDLGlDQUF1RDtBQUN2RCxxREFBNkM7QUFFN0MsNkJBQTBCO0FBQzFCLCtCQUFvQztBQUVwQyxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDO0FBRXZELE1BQU0sbUJBQW1CLEdBQUcsS0FBTSxDQUFDO0FBRW5DLE1BQU0sMEJBQTBCLEdBQUcsSUFBSyxDQUFDO0FBRXpDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBRS9CLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBRS9CLE1BQU0seUJBQXlCLEdBQUcsS0FBTSxDQUFDLENBQUMsYUFBYTtBQUV2RDs7O0dBR0c7QUFDSCxNQUFhLFlBQWEsU0FBUSxxQkFBWTtJQUs1Qzs7O09BR0c7SUFDSCxZQUFtQixPQUFlLEVBQUUsUUFBZ0I7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFDUix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGFBQUssQ0FBQztZQUNyQixTQUFTLEVBQUUsSUFBSTtZQUNmLGNBQWMsRUFBRSxJQUFLO1lBQ3JCLFVBQVUsRUFBRSxrQkFBa0I7WUFFOUIsb0VBQW9FO1lBQ3BFLG1DQUFtQztZQUNuQyxPQUFPLEVBQUUsS0FBTTtTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksU0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FB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bnRzJztcbmltcG9ydCB7IEluY29taW5nTWVzc2FnZSwgT3V0Z29pbmdIdHRwSGVhZGVycyB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IHsgQWdlbnQsIHJlcXVlc3QsIFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsganNvbiB9IGZyb20gJ25vZGU6c3RyZWFtL2NvbnN1bWVycyc7XG5pbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgY3JlYXRlR3VuemlwIH0gZnJvbSAnemxpYic7XG5cbmNvbnN0IE5QTV9SRUdJU1RSWV9VUkwgPSAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJztcblxuY29uc3QgUkVRVUVTVF9ERUFETElORV9NUyA9IDMwXzAwMDtcblxuY29uc3QgUkVRVUVTVF9BVFRFTVBUX1RJTUVPVVRfTVMgPSA1XzAwMDtcblxuY29uc3QgREVGQVVMVF9CQVRDSF9TSVpFID0gMTAwO1xuXG5jb25zdCBNQVhfQ09OTlNfUEVSX0hPU1QgPSAxMDA7XG5cbmNvbnN0IE1BWF9QQUNLQUdFX1NFUlZFUl9MQUdfTVMgPSAzMF8wMDA7IC8vIDMwIHNlY29uZHNcblxuLyoqXG4gKiBBIHV0aWxpdHkgY2xhc3MgdGhhdCBoZWxwcyB3aXRoIHRyYXZlcnNpbmcgQ291Y2hEQiBkYXRhYmFzZSBjaGFuZ2VzIHN0cmVhbXNcbiAqIGluIGEgcHJvbWlzZS1iYXNlZCwgcGFnZS1ieS1wYWdlIG1hbm5lci5cbiAqL1xuZXhwb3J0IGNsYXNzIENvdWNoQ2hhbmdlcyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWdlbnQ6IEFnZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IFVSTDtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhYmFzZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gYmFzZVVybCAgdGhlIENvdWNoREIgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gZGF0YWJhc2UgdGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGZvciB3aGljaCBjaGFuZ2VzIGFyZSBmZXRjaGVkLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGJhc2VVcmw6IHN0cmluZywgZGF0YWJhc2U6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gU2V0dGluZyB1cCBmb3Iga2VlcC1hbGl2ZSBjb25uZWN0aW9ucy5cbiAgICB0aGlzLmFnZW50ID0gbmV3IEFnZW50KHtcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICAgIGtlZXBBbGl2ZU1zZWNzOiA1XzAwMCxcbiAgICAgIG1heFNvY2tldHM6IE1BWF9DT05OU19QRVJfSE9TVCxcblxuICAgICAgLy8gVGhpcyB0aW1lb3V0IGlzIHNlcGFyYXRlIGZyb20gdGhlIHJlcXVlc3QgdGltZW91dCwgYW5kIGlzIGhlcmUgdG9cbiAgICAgIC8vIHByZXZlbnQgc3RhbGxlZC9pZGxlIGNvbm5lY3Rpb25zXG4gICAgICB0aW1lb3V0OiA2MF8wMDAsXG4gICAgfSk7XG4gICAgdGhpcy5iYXNlVXJsID0gbmV3IFVSTChiYXNlVXJsKTtcbiAgICB0aGlzLmRhdGFiYXNlID0gZGF0YWJhc2U7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3VtbWFyeSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGF0YWJhc2UuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW5mbygpOiBQcm9taXNlPERhdGFiYXNlSW5mb3M+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaHR0cHMoJ2dldCcsIHRoaXMuYmFzZVVybCkpIGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRhaW5zIGEgYmF0Y2ggb2YgY2hhbmdlcyBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQHBhcmFtIHNpbmNlICAgICB0aGUgc2VxdWVuY2UgdmFsdWUgc2luY2Ugd2hlbiBoaXN0b3J5IHNob3VsZCBiZSBmZXRjaGVkLlxuICAgKiBAcGFyYW0gYmF0Y2hTaXplIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBjaGFuZ2VzIHRvIHJldHVybiBpbiBhIHNpbmdsZSBwYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBhIHBhZ2Ugb2YgY2hhbmdlcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VzKFxuICAgIHNpbmNlOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgb3B0cz86IHsgcmVhZG9ubHkgYmF0Y2hTaXplPzogbnVtYmVyIH1cbiAgKTogUHJvbWlzZTxEYXRhYmFzZUNoYW5nZXM+IHtcbiAgICBjb25zdCBiYXRjaFNpemUgPSBvcHRzPy5iYXRjaFNpemUgPz8gREVGQVVMVF9CQVRDSF9TSVpFO1xuXG4gICAgY29uc3QgY2hhbmdlc1VybCA9IG5ldyBVUkwodGhpcy5kYXRhYmFzZSwgdGhpcy5iYXNlVXJsKTtcbiAgICBjaGFuZ2VzVXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2xpbWl0JywgYmF0Y2hTaXplLnRvRml4ZWQoKSk7XG4gICAgY2hhbmdlc1VybC5zZWFyY2hQYXJhbXMuc2V0KCdzaW5jZScsIHNpbmNlLnRvU3RyaW5nKCkpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gKGF3YWl0IHRoaXMuaHR0cHMoJ2dldCcsIGNoYW5nZXNVcmwpKSBhcyBhbnk7XG5cbiAgICBjb25zdCBsYXN0X3NlcSA9IHJlc3VsdC5sYXN0X3NlcTtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5mZXRjaEFuZEZpbHRlckFsbE1ldGFkYXRhKHJlc3VsdC5yZXN1bHRzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYXN0X3NlcSxcbiAgICAgIGFjdGlvbmFibGVSZXN1bHRzOiByZXN1bHRzLFxuICAgICAgdG90YWxDb3VudDogcmVzdWx0LnJlc3VsdHMubGVuZ3RoLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdGhlIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGNoYW5nZS4gVGhlIGNoYW5nZSBjb21lcyBhc3NvY2lhdGVkIHdpdGggYSByZXZpc2lvbiBudW1iZXIsXG4gICAqIHdoaWNoIGNhbiBiZSBjb21wYXJlZCB0byB0aGUgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBtZXRhZGF0YSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlcGxpY2EgaXNcbiAgICogbGFnZ2luZyBiZWhpbmQgdGhlIGNoYW5nZXMgc3RyZWFtLiBJZiBzbywgd2UgcmV0cnkgdW50aWwgdGhlIHJlcGxpY2EgaXMgdXAtdG8tZGF0ZSBvciB1bnRpbFxuICAgKiAzMCBzZWNvbmRzIGVsYXBzZWQgYWZ0ZXIgd2hpY2ggd2UgcmV0dXJuIHRoZSBwb3RlbnRpYWxseSBzdGFsZSBtZXRhZGF0YS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBbmRGaWx0ZXJNZXRhZGF0YShjaGFuZ2U6IERhdGFiYXNlQ2hhbmdlKSB7XG4gICAgLy8gRmlsdGVyIG91dCBkZWxldGVkIHBhY2thZ2VzIG9yIG51bGwgaWRzXG4gICAgaWYgKGNoYW5nZS5kZWxldGVkIHx8ICFjaGFuZ2UuaWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTa2lwcGluZyAke2NoYW5nZS5pZH06IGRlbGV0ZWQgb3IgbnVsbCBpZGApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxhdGVzdENoYW5nZXNSZXYgPSBnZXRNYXhTZXF1ZW50aWFsUmV2aXNpb24oY2hhbmdlKTtcbiAgICBjb25zdCBtZXRhZGF0YVVybCA9IG5ldyBVUkwoY2hhbmdlLmlkLCBOUE1fUkVHSVNUUllfVVJMKTtcbiAgICBjb25zb2xlLmxvZyhgRmV0Y2hpbmcgbWV0YWRhdGEgZm9yICR7Y2hhbmdlLmlkfTogJHttZXRhZGF0YVVybH1gKTtcblxuICAgIC8vIFJldHJ5IGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBiYXNlRGVsYXkgPSAxXzAwMDsgLy8gMSBzZWNvbmRcbiAgICBjb25zdCBtYXhEZWxheSA9IDhfMDAwOyAvLyA4IHNlY29uZHMgbWF4XG4gICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICB3aGlsZShEYXRlLm5vdygpIC0gc3RhcnRUaW1lIDwgTUFYX1BBQ0tBR0VfU0VSVkVSX0xBR19NUykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbWV0YSA9IGF3YWl0IHRoaXMuaHR0cHMoJ2dldCcsIG1ldGFkYXRhVXJsKTtcbiAgICAgICAgaWYgKCFtZXRhKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtZXRhZGF0YSBmb3IgJHtjaGFuZ2UuaWR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtZXRhLl9yZXYpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIF9yZXYgaW4gbWV0YWRhdGEgZm9yICR7Y2hhbmdlLmlkfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhdGVzdFJlcGxpY2FSZXYgPSBwYXJzZVNlcXVlbnRpYWxSZXZpc2lvbihtZXRhLl9yZXYgYXMgc3RyaW5nKTtcblxuICAgICAgICBjaGFuZ2UuZG9jID0gbWV0YTsgLy8gYWRkIG1ldGFkYXRhIHRvIHRoZSBjaGFuZ2Ugb2JqZWN0XG5cbiAgICAgICAgLy8gSGFwcHkgcGF0aDogcmVwbGljYSBpcyB1cC10by1kYXRlXG4gICAgICAgIGlmIChsYXRlc3RSZXBsaWNhUmV2ID49IGxhdGVzdENoYW5nZXNSZXYpIHtcbiAgICAgICAgICByZXR1cm4gY2hhbmdlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVW5oYXBweSBwYXRoOiByZXBsaWNhIGlzIGJlaGluZC4gQ2FsY3VsYXRlIGRlbGF5IGFuZCByZXRyeVxuICAgICAgICBjb25zdCBkZWxheSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIE1hdGgubWluKGJhc2VEZWxheSAqIE1hdGgucG93KDIsIGF0dGVtcHQpLCBtYXhEZWxheSkpO1xuICAgICAgICBjb25zb2xlLmxvZyhgJHtjaGFuZ2UuaWR9OiBwYWNrYWdlIF9yZXYgJHtsYXRlc3RSZXBsaWNhUmV2fSA8IGV4cGVjdGVkIHJlcGxpY2F0aW9uIHJldiAke2xhdGVzdENoYW5nZXNSZXZ9LCByZXRyeWluZyBpbiAke2RlbGF5fSBtc2ApO1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZGVsYXkpKTtcbiAgICAgICAgYXR0ZW1wdCsrO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGlmIChlLm1lc3NhZ2U/LmluY2x1ZGVzKCdIVFRQIDQwNCcpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgU2tpcHBpbmcgJHtjaGFuZ2UuaWR9IGJlY2F1c2Ugb2YgSFRUUCA0MDQgKE5vdCBGb3VuZCkgZXJyb3JgXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaW1lb3V0IHJlYWNoZWQsIHByb2NlZWQgd2l0aCBzdGFsZSBkYXRhXG4gICAgY29uc29sZS5sb2coYFRpbWVvdXQgcmVhY2hlZCBmb3IgJHtjaGFuZ2UuaWR9LCByZXBsaWNhIG1heSBiZSBzdGFsZWApO1xuICAgIHJldHVybiBjaGFuZ2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoQW5kRmlsdGVyQWxsTWV0YWRhdGEoXG4gICAgY2hhbmdlczogRGF0YWJhc2VDaGFuZ2VbXVxuICApOiBQcm9taXNlPERhdGFiYXNlQ2hhbmdlW10+IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGNoYW5nZXMubWFwKChjaGFuZ2UpID0+IHRoaXMuZmV0Y2hBbmRGaWx0ZXJNZXRhZGF0YShjaGFuZ2UpKVxuICAgICAgKVxuICAgICkuZmlsdGVyKChjaGFuZ2UpOiBjaGFuZ2UgaXMgRGF0YWJhc2VDaGFuZ2UgPT4gY2hhbmdlICE9PSB1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2VzIGFuIEhUVFBzIHJlcXVlc3QgdXNpbmcgdGhlIHByb3ZpZGVkIG1ldGhvZCwgdXJsLCBhbmQgb3B0aW9uYWxseSBwYXlsb2FkLiBUaGlzIGZ1bmN0aW9uXG4gICAqIHByb3Blcmx5IGhhbmRsZXMgaW5wdXQgdGhhdCBpcyByZWNlaXZlZCB3aXRoIGBDb250ZW50LVR5cGU6IGd6aXBgIGFuZCBhdXRvbWF0aWNhbGx5IHJldHJpZXNcbiAgICogdHlwaWNhbCB0cmFuc2llbnQgZXJyb3JzIChIVFRQIDVYWCwgRUNPTk5SRVNFVCwgZXRjLi4uKSB3aXRoIGxpbmVhciBiYWNrLW9mZiBhbmQgbm8gbWF4aW11bVxuICAgKiByZXRyeSBjb3VudCAodGhpcyBpcyB1c2VkIGluIExhbWJkYSBmdW5jdGlvbnMsIHdoaWNoIGRlLWZhY3RvIGNhcHMgdGhlIGFtb3VudCBvZiBhdHRlbXB0c1xuICAgKiB0aGF0IHdpbGwgYmUgbWFkZSBkdWUgdG8gdGhlIGZ1bmN0aW9uIHRpbWUgb3V0KS5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZCB0aGUgSFRUUCBtZXRob2QgdXNlZCBmb3IgdGhlIHJlcXVlc3QgKGUuZzogJ2dldCcsICdwb3N0JywgLi4uKS5cbiAgICogQHBhcmFtIHVybCAgICB0aGUgVVJMIHRvIHJlcXVlc3QuXG4gICAqIEBwYXJhbSBib2R5ICAgYW4gb3B0aW9uYWwgSFRUUCByZXF1ZXN0IHBheWxvYWQsIHdoaWNoIHdpbGwgYmUgSlNPTi1lbmNvZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gYXR0ZW1wdCB0aGUgcmVxdWVzdCBhdHRlbXB0IG51bWJlciAodXNlZCB0byBkZXRlcm1pbmUgYmFjay1vZmYgLyByZXRyeSkuXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSBKU09OLWRlY29kZWQgcmVzcG9uc2UgYm9keS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaHR0cHMoXG4gICAgbWV0aG9kOiAnZ2V0JyB8ICdwb3N0JyxcbiAgICB1cmw6IFVSTCxcbiAgICBib2R5PzogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH1cbiAgKTogUHJvbWlzZTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4ge1xuICAgIGNvbnN0IGhlYWRlcnM6IE91dGdvaW5nSHR0cEhlYWRlcnMgPSB7XG4gICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICdBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCcsXG4gICAgICAnbnBtLXJlcGxpY2F0aW9uLW9wdC1pbic6ICd0cnVlJywgLy8gY2FuIGJlIGRlbGV0ZWQgYWZ0ZXIgTWF5IDI5OiBodHRwczovL2dpdGh1Yi5jb20vb3Jncy9jb21tdW5pdHkvZGlzY3Vzc2lvbnMvMTUyNTE1XG4gICAgfTtcbiAgICBpZiAoYm9keSkge1xuICAgICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24vanNvbic7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgYWdlbnQ6IHRoaXMuYWdlbnQsXG4gICAgICBoZWFkZXJzLFxuICAgICAgbWV0aG9kLFxuICAgICAgcG9ydDogNDQzLFxuICAgICAgc2VydmVybmFtZTogdXJsLmhvc3RuYW1lLFxuICAgICAgLy8gVGhpcyBqdXN0IGxlYWRzIHRvIGEgJ3RpbWVvdXQnIGV2ZW50XG4gICAgICB0aW1lb3V0OiBSRVFVRVNUX0FUVEVNUFRfVElNRU9VVF9NUyxcbiAgICB9O1xuXG4gICAgY29uc3QgZGVhZGxpbmUgPSBEYXRlLm5vdygpICsgUkVRVUVTVF9ERUFETElORV9NUztcbiAgICBsZXQgbWF4RGVsYXkgPSAxMDA7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlcXVlc3RQcm9taXNlKHVybCwgcmVxdWVzdE9wdGlvbnMsIGJvZHkpO1xuICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBSZXRyeWFibGVFcnJvcignTm8gc3RhdHVzIGNvZGUgYXZhaWxhYmxlJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXJ2ZXIgZXJyb3JzLiBXZSBjYW4ndCBrbm93IHdoZXRoZXIgdGhlc2UgYXJlIHJlYWxseSByZXRyeWFibGUgYnV0IHdlIHVzdWFsbHkgcHJldGVuZCB0aGF0IHRoZXkgYXJlLlxuICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPj0gNTAwICYmIHJlcy5zdGF0dXNDb2RlIDwgNjAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJldHJ5YWJsZUVycm9yKFxuICAgICAgICAgICAgYEhUVFAgJHtyZXMuc3RhdHVzQ29kZX0gJHtyZXMuc3RhdHVzTWVzc2FnZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBlcm1hbmVudCAoY2xpZW50KSBlcnJvcnM6XG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA+PSA0MDAgJiYgcmVzLnN0YXR1c0NvZGUgPCA1MDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEhUVFAgJHtyZXMuc3RhdHVzQ29kZX0gJHtyZXMuc3RhdHVzTWVzc2FnZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBSZXNwb25zZTogJHttZXRob2QudG9VcHBlckNhc2UoKX0gJHt1cmx9ID0+IEhUVFAgJHtcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlXG4gICAgICAgICAgfSAoJHtyZXMuc3RhdHVzTWVzc2FnZX0pYFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCByZWFkUmVzcG9uc2VKc29uKHJlcyk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgaWYgKERhdGUubm93KCkgPiBkZWFkbGluZSB8fCAhaXNSZXRyeWFibGVFcnJvcihlKSkge1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmVycm9yKGBbUkVUUllBQkxFXSAke21ldGhvZH0gJHt1cmx9OiAke2V9YCk7XG5cbiAgICAgICAgYXdhaXQgc2xlZXAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbWF4RGVsYXkpKTtcbiAgICAgICAgbWF4RGVsYXkgKj0gMjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBIFByb21pc2lmaWVkIHZlcnNpb24gb2YgYGh0dHBzLnJlcXVlc3QoKWAgdGhhdCBhbHNvIGhhbmRsZXMgdGltZW91dCBldmVudHNcbiAqL1xuZnVuY3Rpb24gcmVxdWVzdFByb21pc2UoXG4gIHVybDogVVJMLFxuICBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyxcbiAgYm9keT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPEluY29taW5nTWVzc2FnZT4oKG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IHJlcSA9IHJlcXVlc3QodXJsLCBvcHRpb25zID8/IHt9LCBvayk7XG4gICAgcmVxLm9uKCdlcnJvcicsIGtvKTtcbiAgICByZXEub24oJ3RpbWVvdXQnLCAoKSA9PiB7XG4gICAgICByZXEuZGVzdHJveShcbiAgICAgICAgbmV3IFJldHJ5YWJsZUVycm9yKFxuICAgICAgICAgIGBUaW1lb3V0IGFmdGVyICR7b3B0aW9ucy50aW1lb3V0fW1zLCBhYm9ydGluZyByZXF1ZXN0YFxuICAgICAgICApXG4gICAgICApO1xuICAgIH0pO1xuICAgIHJlcS5lbmQoYm9keSAmJiBKU09OLnN0cmluZ2lmeShib2R5LCBudWxsLCAyKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkUmVzcG9uc2VKc29uKFxuICByZXM6IEluY29taW5nTWVzc2FnZVxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIHJlcy5vbmNlKCdlcnJvcicsIGtvKTtcblxuICAgIGNvbnN0IHBsYWluUGF5bG9hZCA9XG4gICAgICByZXMuaGVhZGVyc1snY29udGVudC1lbmNvZGluZyddID09PSAnZ3ppcCcgPyBndW56aXAocmVzKSA6IHJlcztcblxuICAgIHJldHVybiBqc29uKHBsYWluUGF5bG9hZClcbiAgICAgIC50aGVuKChwYXJzZWQpID0+IG9rKHBhcnNlZCBhcyBhbnkpKVxuICAgICAgLmNhdGNoKChlcnIpID0+IGtvKGVycikpO1xuICB9KTtcbn1cblxuY2xhc3MgUmV0cnlhYmxlRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG5mdW5jdGlvbiBpc1JldHJ5YWJsZUVycm9yKGU6IEVycm9yKTogYm9vbGVhbiB7XG4gIHJldHVybiBlIGluc3RhbmNlb2YgUmV0cnlhYmxlRXJyb3IgfHwgKGUgYXMgYW55KS5jb2RlID09PSAnRUNPTk5SRVNFVCc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaykgPT4gc2V0VGltZW91dChvaywgbXMpKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VTZXF1ZW50aWFsUmV2aXNpb24ocmV2OiBzdHJpbmcpOiBudW1iZXIge1xuICByZXR1cm4gcGFyc2VJbnQocmV2LnNwbGl0KCctJylbMF0pO1xufVxuXG5mdW5jdGlvbiBnZXRNYXhTZXF1ZW50aWFsUmV2aXNpb24oY2hhbmdlOiBEYXRhYmFzZUNoYW5nZSk6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLm1heCguLi5jaGFuZ2UuY2hhbmdlc1xuICAgIC5tYXAoY2hhbmdlID0+IHBhcnNlU2VxdWVudGlhbFJldmlzaW9uKGNoYW5nZS5yZXYpKVxuICAgIC5maWx0ZXIobnVtID0+ICFpc05hTihudW0pKVxuICApO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGUgbGFzdCBzZXF1ZW5jZSBJRCBmcm9tIHRoaXMgY2hhbmdlIHNldC4gVGhpcyBpcyB0aGUgdmFsdWUgdGhhdCBzaG91bGQgYmVcbiAgICogcGFzc2VkIHRvIHRoZSBzdWJzZXF1ZW50IGAuY2hhbmdlc2AgY2FsbCB0byBmZXRjaCB0aGUgbmV4dCBwYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFzdF9zZXE6IHN0cmluZyB8IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFjdGlvbmFibGUgY2hhbmdlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgYmF0Y2guXG4gICAqIFRoaXMgaGFzIGRlbGV0ZWQgYW5kIHVucmVhY2hhYmxlIHBhY2thZ2VzIHJlbW92ZWQuXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25hYmxlUmVzdWx0czogcmVhZG9ubHkgRGF0YWJhc2VDaGFuZ2VbXTtcblxuICAvKipcbiAgICogVGhlIHRvdGFsIGNvdW50IG9mIGNoYW5nZXMgaW4gdGhpcyBiYXRjaC4gVGhpcyBpbmNsdWRlcyB1bnByb2Nlc3NhYmxlIGNoYW5nZXMuXG4gICAqIDAgaW5kaWNhdGVzIHdlIGFyZSB1cCB0byBkYXRlIHdpdGggXCJub3dcIi5cbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsQ291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUNoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgc2V0IG9mIHJldmlzaW9ucyB0byB0aGUgb2JqZWN0IHRoYXQgd2VyZSByZXNvbHZlZCBhcyBwYXJ0IG9mIHRoaXNcbiAgICogY2hhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlczogUmVhZG9ubHlBcnJheTx7IHJlYWRvbmx5IHJldjogc3RyaW5nIH0+O1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGRvY3VtZW50IHRoYXQgaGFzIGNoYW5nZWQuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VxdWVuY2UgSUQgZm9yIHRoaXMgY2hhbmdlIGluIHRoZSBzdHJlYW0uIEl0IG1heSBub3QgYmUgcHJlc2VudCBmb3JcbiAgICogYWxsIChvciBhbnkpIGVudHJpZXMgaW4gdGhlIHJlc3VsdC5cbiAgICovXG4gIHJlYWRvbmx5IHNlcT86IHN0cmluZyB8IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGNoYW5nZSBjb3JyZXNwb25kcyB0byB0aGlzIGRvY3VtZW50IGJlaW5nIGRlbGV0ZWQuXG4gICAqL1xuICByZWFkb25seSBkZWxldGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBwcmVzZW50LCB0aGUgcmVzb2x2ZWQgZG9jdW1lbnQgYWZ0ZXIgdGhlIGNoYW5nZSBoYXMgYmVlbiBhcHBsaWVkLlxuICAgKi9cbiAgZG9jPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiB1bmtub3duIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VJbmZvcyB7XG4gIHJlYWRvbmx5IGRiX25hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGlza19mb3JtYXRfdmVyc2lvbjogbnVtYmVyO1xuICByZWFkb25seSBkb2NfY291bnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgZG9jX2RlbF9jb3VudDogbnVtYmVyO1xuICByZWFkb25seSBpbnN0YW5jZV9zdGFydF90aW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHB1cmdlX3NlcTogc3RyaW5nIHwgbnVtYmVyO1xuICByZWFkb25seSBzaXplczoge1xuICAgIHJlYWRvbmx5IGFjdGl2ZTogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGV4dGVybmFsOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgZmlsZTogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSB1cGRhdGVfc2VxOiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIGd1bnppcChyZWFkYWJsZTogUmVhZGFibGUpOiBSZWFkYWJsZSB7XG4gIGNvbnN0IGd6ID0gY3JlYXRlR3VuemlwKCk7XG4gIHJlYWRhYmxlLnBpcGUoZ3osIHsgZW5kOiB0cnVlIH0pO1xuICByZXR1cm4gZ3o7XG59XG4iXX0=
@@ -67525,6 +67525,12 @@ var CouchChanges = class extends import_events.EventEmitter {
67525
67525
  while (Date.now() - startTime < MAX_PACKAGE_SERVER_LAG_MS) {
67526
67526
  try {
67527
67527
  const meta = await this.https("get", metadataUrl);
67528
+ if (!meta) {
67529
+ throw new Error(`No metadata for ${change.id}`);
67530
+ }
67531
+ if (!meta._rev) {
67532
+ throw new Error(`No _rev in metadata for ${change.id}`);
67533
+ }
67528
67534
  const latestReplicaRev = parseSequentialRevision(meta._rev);
67529
67535
  change.doc = meta;
67530
67536
  if (latestReplicaRev >= latestChangesRev) {