@zcomb/programs-sdk 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/amm/utils.js CHANGED
@@ -165,7 +165,7 @@ function createSwapQuote(inputAmount, reserveIn, reserveOut, feeBps, decimalsIn,
165
165
  function calculateTwap(oracle) {
166
166
  const warmupEnd = oracle.createdAtUnixTime.add(new anchor_1.BN(oracle.warmupDuration));
167
167
  if (oracle.lastUpdateUnixTime.lte(warmupEnd)) {
168
- return null;
168
+ return oracle.startingObservation;
169
169
  }
170
170
  const elapsed = oracle.lastUpdateUnixTime.sub(warmupEnd);
171
171
  if (elapsed.isZero() || oracle.cumulativeObservations.isZero()) {
@@ -178,4 +178,4 @@ function isOracleInWarmup(oracle, currentTime) {
178
178
  const warmupEnd = oracle.createdAtUnixTime.add(new anchor_1.BN(oracle.warmupDuration));
179
179
  return now.lt(warmupEnd);
180
180
  }
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYW1tL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7O0FBU0gsc0NBVUM7QUFFRCw0Q0FTQztBQUVELDhDQVFDO0FBSUQsd0NBSUM7QUFJRCw0Q0FLQztBQU1ELGdEQWlCQztBQVFELDhDQXFDQztBQVFELDRDQThDQztBQUVELG9EQW1CQztBQUVELDBDQWlDQztBQUlELHNDQWNDO0FBRUQsNENBSUM7QUFqUUQsOENBQWdEO0FBQ2hELDZDQUE0QztBQUM1QywyQ0FBK0Y7QUFDL0YsbUNBQTZFO0FBRTdFLG9CQUFvQjtBQUVwQixTQUFnQixhQUFhLENBQzNCLEtBQWdCLEVBQ2hCLEtBQWdCLEVBQ2hCLEtBQWdCLEVBQ2hCLFlBQXVCLHNCQUFVO0lBRWpDLE9BQU8sbUJBQVMsQ0FBQyxzQkFBc0IsQ0FDckMsQ0FBQyxxQkFBUyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQ2pFLFNBQVMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUM5QixJQUFlLEVBQ2YsSUFBZSxFQUNmLFlBQXVCLHNCQUFVO0lBRWpDLE9BQU8sbUJBQVMsQ0FBQyxzQkFBc0IsQ0FDckMsQ0FBQyx3QkFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFDaEQsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQy9CLElBQWUsRUFDZixZQUF1QixzQkFBVTtJQUVqQyxPQUFPLG1CQUFTLENBQUMsc0JBQXNCLENBQ3JDLENBQUMsMEJBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFDakMsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDO0FBRUQsYUFB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RUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLFdBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUM5RSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgdGhlIEFNTSBwcm9ncmFtLlxuICogUERBIGRlcml2YXRpb24sIHN0YXRlIHBhcnNpbmcsIHByaWNlIGNhbGN1bGF0aW9ucywgYW5kIGFjY291bnQgZmV0Y2hpbmcuXG4gKi9cblxuaW1wb3J0IHsgUHJvZ3JhbSwgQk4gfSBmcm9tIFwiQGNvcmFsLXh5ei9hbmNob3JcIjtcbmltcG9ydCB7IFB1YmxpY0tleSB9IGZyb20gXCJAc29sYW5hL3dlYjMuanNcIjtcbmltcG9ydCB7IFBPT0xfU0VFRCwgUkVTRVJWRV9TRUVELCBGRUVfVkFVTFRfU0VFRCwgUFJPR1JBTV9JRCwgUFJJQ0VfU0NBTEUgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEFtbSwgUG9vbFN0YXRlLCBQb29sQWNjb3VudCwgVHdhcE9yYWNsZSwgU3dhcFF1b3RlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyogUERBIERlcml2YXRpb24gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZVBvb2xQREEoXG4gIGFkbWluOiBQdWJsaWNLZXksXG4gIG1pbnRBOiBQdWJsaWNLZXksXG4gIG1pbnRCOiBQdWJsaWNLZXksXG4gIHByb2dyYW1JZDogUHVibGljS2V5ID0gUFJPR1JBTV9JRFxuKTogW1B1YmxpY0tleSwgbnVtYmVyXSB7XG4gIHJldHVybiBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICBbUE9PTF9TRUVELCBhZG1pbi50b0J1ZmZlcigpLCBtaW50QS50b0J1ZmZlcigpLCBtaW50Qi50b0J1ZmZlcigpXSxcbiAgICBwcm9ncmFtSWRcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZVJlc2VydmVQREEoXG4gIHBvb2w6IFB1YmxpY0tleSxcbiAgbWludDogUHVibGljS2V5LFxuICBwcm9ncmFtSWQ6IFB1YmxpY0tleSA9IFBST0dSQU1fSURcbik6IFtQdWJsaWNLZXksIG51bWJlcl0ge1xuICByZXR1cm4gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgW1JFU0VSVkVfU0VFRCwgcG9vbC50b0J1ZmZlcigpLCBtaW50LnRvQnVmZmVyKCldLFxuICAgIHByb2dyYW1JZFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlRmVlVmF1bHRQREEoXG4gIHBvb2w6IFB1YmxpY0tleSxcbiAgcHJvZ3JhbUlkOiBQdWJsaWNLZXkgPSBQUk9HUkFNX0lEXG4pOiBbUHVibGljS2V5LCBudW1iZXJdIHtcbiAgcmV0dXJuIFB1YmxpY0tleS5maW5kUHJvZ3JhbUFkZHJlc3NTeW5jKFxuICAgIFtGRUVfVkFVTFRfU0VFRCwgcG9vbC50b0J1ZmZlcigpXSxcbiAgICBwcm9ncmFtSWRcbiAgKTtcbn1cblxuLyogUGFyc2VycyAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQb29sU3RhdGUoc3RhdGU6IGFueSk6IFBvb2xTdGF0ZSB7XG4gIGlmIChcInRyYWRpbmdcIiBpbiBzdGF0ZSkgcmV0dXJuIFBvb2xTdGF0ZS5UcmFkaW5nO1xuICBpZiAoXCJmaW5hbGl6ZWRcIiBpbiBzdGF0ZSkgcmV0dXJuIFBvb2xTdGF0ZS5GaW5hbGl6ZWQ7XG4gIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gcG9vbCBzdGF0ZVwiKTtcbn1cblxuLyogRmV0Y2ggKi9cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoUG9vbEFjY291bnQoXG4gIHByb2dyYW06IFByb2dyYW08QW1tPixcbiAgcG9vbFBkYTogUHVibGljS2V5XG4pOiBQcm9taXNlPFBvb2xBY2NvdW50PiB7XG4gIHJldHVybiBwcm9ncmFtLmFjY291bnQucG9vbEFjY291bnQuZmV0Y2gocG9vbFBkYSk7XG59XG5cbi8qIE1hdGggVXRpbGl0aWVzICovXG5cbmNvbnN0IFBSSUNFX1NDQUxFX0JOID0gbmV3IEJOKFBSSUNFX1NDQUxFLnRvU3RyaW5nKCkpO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlU3BvdFByaWNlKFxuICByZXNlcnZlQTogQk4sXG4gIHJlc2VydmVCOiBCTixcbiAgZGVjaW1hbHNBOiBudW1iZXIsXG4gIGRlY2ltYWxzQjogbnVtYmVyLFxuKTogQk4ge1xuICBpZiAocmVzZXJ2ZUIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCk7XG5cbiAgY29uc3QgZGVjaW1hbERpZmYgPSBkZWNpbWFsc0IgLSBkZWNpbWFsc0E7XG5cbiAgaWYgKGRlY2ltYWxEaWZmID49IDApIHtcbiAgICBjb25zdCBtdWx0aXBsaWVyID0gbmV3IEJOKDEwKS5wb3cobmV3IEJOKGRlY2ltYWxEaWZmKSk7XG4gICAgcmV0dXJuIHJlc2VydmVBLm11bChtdWx0aXBsaWVyKS5tdWwoUFJJQ0VfU0NBTEVfQk4pLmRpdihyZXNlcnZlQik7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGl2aXNvciA9IG5ldyBCTigxMCkucG93KG5ldyBCTigtZGVjaW1hbERpZmYpKTtcbiAgICByZXR1cm4gcmVzZXJ2ZUEubXVsKFBSSUNFX1NDQUxFX0JOKS5kaXYocmVzZXJ2ZUIpLmRpdihkaXZpc29yKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbXB1dGUgc3dhcCBvdXRwdXQgdXNpbmcgY29uc3RhbnQgcHJvZHVjdCBmb3JtdWxhLlxuICogRmVlIGlzIEFMV0FZUyBjb2xsZWN0ZWQgaW4gdG9rZW4gQTpcbiAqIC0gQSAtPiBCOiBmZWUgb24gaW5wdXQgKGJlZm9yZSBzd2FwKVxuICogLSBCIC0+IEE6IGZlZSBvbiBvdXRwdXQgKGFmdGVyIHN3YXApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlU3dhcE91dHB1dChcbiAgaW5wdXRBbW91bnQ6IEJOIHwgbnVtYmVyLFxuICByZXNlcnZlSW46IEJOLFxuICByZXNlcnZlT3V0OiBCTixcbiAgZmVlQnBzOiBudW1iZXIsXG4gIHN3YXBBVG9COiBib29sZWFuXG4pOiB7IG91dHB1dEFtb3VudDogQk47IGZlZUFtb3VudDogQk4gfSB7XG4gIGNvbnN0IGlucHV0ID0gdHlwZW9mIGlucHV0QW1vdW50ID09PSBcIm51bWJlclwiID8gbmV3IEJOKGlucHV0QW1vdW50KSA6IGlucHV0QW1vdW50O1xuXG4gIGlmIChyZXNlcnZlSW4uaXNaZXJvKCkgfHwgcmVzZXJ2ZU91dC5pc1plcm8oKSkge1xuICAgIHJldHVybiB7IG91dHB1dEFtb3VudDogbmV3IEJOKDApLCBmZWVBbW91bnQ6IG5ldyBCTigwKSB9O1xuICB9XG5cbiAgaWYgKHN3YXBBVG9CKSB7XG4gICAgLy8gQSAtPiBCOiBmZWUgb24gaW5wdXQgKHRva2VuIEEpXG4gICAgY29uc3QgZmVlQW1vdW50ID0gaW5wdXQubXVsKG5ldyBCTihmZWVCcHMpKS5kaXYobmV3IEJOKDEwMDAwKSk7XG4gICAgY29uc3QgaW5wdXRBZnRlckZlZSA9IGlucHV0LnN1YihmZWVBbW91bnQpO1xuXG4gICAgLy8gQ29uc3RhbnQgcHJvZHVjdDogb3V0cHV0ID0gcmVzZXJ2ZU91dCAqIGlucHV0QWZ0ZXJGZWUgLyAocmVzZXJ2ZUluICsgaW5wdXRBZnRlckZlZSlcbiAgICBjb25zdCBudW1lcmF0b3IgPSByZXNlcnZlT3V0Lm11bChpbnB1dEFmdGVyRmVlKTtcbiAgICBjb25zdCBkZW5vbWluYXRvciA9IHJlc2VydmVJbi5hZGQoaW5wdXRBZnRlckZlZSk7XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gbnVtZXJhdG9yLmRpdihkZW5vbWluYXRvcik7XG5cbiAgICByZXR1cm4geyBvdXRwdXRBbW91bnQsIGZlZUFtb3VudCB9O1xuICB9IGVsc2Uge1xuICAgIC8vIEIgLT4gQTogZmVlIG9uIG91dHB1dCAodG9rZW4gQSlcbiAgICAvLyBGaXJzdCBjb21wdXRlIGdyb3NzIG91dHB1dCB3aXRob3V0IGZlZVxuICAgIGNvbnN0IG51bWVyYXRvciA9IHJlc2VydmVPdXQubXVsKGlucHV0KTtcbiAgICBjb25zdCBkZW5vbWluYXRvciA9IHJlc2VydmVJbi5hZGQoaW5wdXQpO1xuICAgIGNvbnN0IGdyb3NzT3V0cHV0ID0gbnVtZXJhdG9yLmRpdihkZW5vbWluYXRvcik7XG5cbiAgICAvLyBUaGVuIGRlZHVjdCBmZWUgZnJvbSBvdXRwdXRcbiAgICBjb25zdCBmZWVBbW91bnQgPSBncm9zc091dHB1dC5tdWwobmV3IEJOKGZlZUJwcykpLmRpdihuZXcgQk4oMTAwMDApKTtcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSBncm9zc091dHB1dC5zdWIoZmVlQW1vdW50KTtcblxuICAgIHJldHVybiB7IG91dHB1dEFtb3VudCwgZmVlQW1vdW50IH07XG4gIH1cbn1cblxuLyoqXG4gKiBDb21wdXRlIHN3YXAgaW5wdXQgbmVlZGVkIHRvIGdldCBhIHNwZWNpZmljIG91dHB1dC5cbiAqIEZlZSBpcyBBTFdBWVMgY29sbGVjdGVkIGluIHRva2VuIEE6XG4gKiAtIEEgLT4gQjogZmVlIG9uIGlucHV0XG4gKiAtIEIgLT4gQTogZmVlIG9uIG91dHB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVN3YXBJbnB1dChcbiAgb3V0cHV0QW1vdW50OiBCTiB8IG51bWJlcixcbiAgcmVzZXJ2ZUluOiBCTixcbiAgcmVzZXJ2ZU91dDogQk4sXG4gIGZlZUJwczogbnVtYmVyLFxuICBzd2FwQVRvQjogYm9vbGVhblxuKTogeyBpbnB1dEFtb3VudDogQk47IGZlZUFtb3VudDogQk4gfSB7XG4gIGNvbnN0IG91dHB1dCA9IHR5cGVvZiBvdXRwdXRBbW91bnQgPT09IFwibnVtYmVyXCIgPyBuZXcgQk4ob3V0cHV0QW1vdW50KSA6IG91dHB1dEFtb3VudDtcblxuICBpZiAocmVzZXJ2ZUluLmlzWmVybygpIHx8IHJlc2VydmVPdXQuaXNaZXJvKCkgfHwgb3V0cHV0Lmd0ZShyZXNlcnZlT3V0KSkge1xuICAgIHJldHVybiB7IGlucHV0QW1vdW50OiBuZXcgQk4oMCksIGZlZUFtb3VudDogbmV3IEJOKDApIH07XG4gIH1cblxuICBpZiAoc3dhcEFUb0IpIHtcbiAgICAvLyBBIC0+IEI6IGZlZSBvbiBpbnB1dFxuICAgIC8vIFdlIG5lZWQ6IG91dHB1dCA9IChyZXNlcnZlT3V0ICogaW5wdXRBZnRlckZlZSkgLyAocmVzZXJ2ZUluICsgaW5wdXRBZnRlckZlZSlcbiAgICAvLyBTb2x2ZSBmb3IgaW5wdXRBZnRlckZlZTogaW5wdXRBZnRlckZlZSA9IChyZXNlcnZlSW4gKiBvdXRwdXQpIC8gKHJlc2VydmVPdXQgLSBvdXRwdXQpXG4gICAgY29uc3QgbnVtZXJhdG9yID0gcmVzZXJ2ZUluLm11bChvdXRwdXQpO1xuICAgIGNvbnN0IGRlbm9taW5hdG9yID0gcmVzZXJ2ZU91dC5zdWIob3V0cHV0KTtcbiAgICBjb25zdCBpbnB1dEFmdGVyRmVlID0gbnVtZXJhdG9yLmRpdihkZW5vbWluYXRvcikuYWRkKG5ldyBCTigxKSk7IC8vIFJvdW5kIHVwXG5cbiAgICAvLyBpbnB1dEFtb3VudCA9IGlucHV0QWZ0ZXJGZWUgKiAxMDAwMCAvICgxMDAwMCAtIGZlZUJwcylcbiAgICBjb25zdCBpbnB1dEFtb3VudCA9IGlucHV0QWZ0ZXJGZWUubXVsKG5ldyBCTigxMDAwMCkpLmRpdihuZXcgQk4oMTAwMDAgLSBmZWVCcHMpKS5hZGQobmV3IEJOKDEpKTtcbiAgICBjb25zdCBmZWVBbW91bnQgPSBpbnB1dEFtb3VudC5zdWIoaW5wdXRBZnRlckZlZSk7XG5cbiAgICByZXR1cm4geyBpbnB1dEFtb3VudCwgZmVlQW1vdW50IH07XG4gIH0gZWxzZSB7XG4gICAgLy8gQiAtPiBBOiBmZWUgb24gb3V0cHV0XG4gICAgLy8gVXNlciB3YW50cyBgb3V0cHV0YCBhZnRlciBmZWUsIHNvIGdyb3NzT3V0cHV0ID0gb3V0cHV0ICogMTAwMDAgLyAoMTAwMDAgLSBmZWVCcHMpXG4gICAgY29uc3QgZ3Jvc3NPdXRwdXQgPSBvdXRwdXQubXVsKG5ldyBCTigxMDAwMCkpLmRpdihuZXcgQk4oMTAwMDAgLSBmZWVCcHMpKS5hZGQobmV3IEJOKDEpKTtcbiAgICBjb25zdCBmZWVBbW91bnQgPSBncm9zc091dHB1dC5zdWIob3V0cHV0KTtcblxuICAgIC8vIE5vdyBjb21wdXRlIGlucHV0IG5lZWRlZCBmb3IgZ3Jvc3NPdXRwdXRcbiAgICAvLyBncm9zc091dHB1dCA9IChyZXNlcnZlT3V0ICogaW5wdXQpIC8gKHJlc2VydmVJbiArIGlucHV0KVxuICAgIC8vIGlucHV0ID0gKHJlc2VydmVJbiAqIGdyb3NzT3V0cHV0KSAvIChyZXNlcnZlT3V0IC0gZ3Jvc3NPdXRwdXQpXG4gICAgY29uc3QgbnVtZXJhdG9yID0gcmVzZXJ2ZUluLm11bChncm9zc091dHB1dCk7XG4gICAgY29uc3QgZGVub21pbmF0b3IgPSByZXNlcnZlT3V0LnN1Yihncm9zc091dHB1dCk7XG5cbiAgICBpZiAoZGVub21pbmF0b3IubHRlKG5ldyBCTigwKSkpIHtcbiAgICAgIHJldHVybiB7IGlucHV0QW1vdW50OiBuZXcgQk4oMCksIGZlZUFtb3VudDogbmV3IEJOKDApIH07XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRBbW91bnQgPSBudW1lcmF0b3IuZGl2KGRlbm9taW5hdG9yKS5hZGQobmV3IEJOKDEpKTsgLy8gUm91bmQgdXBcblxuICAgIHJldHVybiB7IGlucHV0QW1vdW50LCBmZWVBbW91bnQgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlUHJpY2VJbXBhY3QoXG4gIGlucHV0QW1vdW50OiBCTixcbiAgb3V0cHV0QW1vdW50OiBCTixcbiAgcmVzZXJ2ZUluOiBCTixcbiAgcmVzZXJ2ZU91dDogQk4sXG4gIGRlY2ltYWxzSW46IG51bWJlcixcbiAgZGVjaW1hbHNPdXQ6IG51bWJlcixcbik6IG51bWJlciB7XG4gIGlmIChyZXNlcnZlSW4uaXNaZXJvKCkgfHwgcmVzZXJ2ZU91dC5pc1plcm8oKSB8fCBpbnB1dEFtb3VudC5pc1plcm8oKSkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgY29uc3Qgc3BvdFByaWNlID0gY2FsY3VsYXRlU3BvdFByaWNlKHJlc2VydmVJbiwgcmVzZXJ2ZU91dCwgZGVjaW1hbHNJbiwgZGVjaW1hbHNPdXQpO1xuICBjb25zdCBleGVjdXRpb25QcmljZSA9IGNhbGN1bGF0ZVNwb3RQcmljZShpbnB1dEFtb3VudCwgb3V0cHV0QW1vdW50LCBkZWNpbWFsc0luLCBkZWNpbWFsc091dCk7XG5cbiAgaWYgKHNwb3RQcmljZS5pc1plcm8oKSkgcmV0dXJuIDA7XG5cbiAgY29uc3QgaW1wYWN0ID0gZXhlY3V0aW9uUHJpY2Uuc3ViKHNwb3RQcmljZSkubXVsKG5ldyBCTigxMDAwMCkpLmRpdihzcG90UHJpY2UpO1xuICByZXR1cm4gTWF0aC5hYnMoaW1wYWN0LnRvTnVtYmVyKCkpIC8gMTAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3dhcFF1b3RlKFxuICBpbnB1dEFtb3VudDogQk4gfCBudW1iZXIsXG4gIHJlc2VydmVJbjogQk4sXG4gIHJlc2VydmVPdXQ6IEJOLFxuICBmZWVCcHM6IG51bWJlcixcbiAgZGVjaW1hbHNJbjogbnVtYmVyLFxuICBkZWNpbWFsc091dDogbnVtYmVyLFxuICBzd2FwQVRvQjogYm9vbGVhbixcbiAgc2xpcHBhZ2VQZXJjZW50OiBudW1iZXIgPSAwLjUsXG4pOiBTd2FwUXVvdGUge1xuICBjb25zdCBpbnB1dCA9IHR5cGVvZiBpbnB1dEFtb3VudCA9PT0gXCJudW1iZXJcIiA/IG5ldyBCTihpbnB1dEFtb3VudCkgOiBpbnB1dEFtb3VudDtcblxuICBjb25zdCB7IG91dHB1dEFtb3VudCwgZmVlQW1vdW50IH0gPSBjb21wdXRlU3dhcE91dHB1dChpbnB1dCwgcmVzZXJ2ZUluLCByZXNlcnZlT3V0LCBmZWVCcHMsIHN3YXBBVG9CKTtcblxuICBjb25zdCBzbGlwcGFnZUJwcyA9IE1hdGguZmxvb3Ioc2xpcHBhZ2VQZXJjZW50ICogMTAwKTtcbiAgY29uc3QgbWluT3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50Lm11bChuZXcgQk4oMTAwMDAgLSBzbGlwcGFnZUJwcykpLmRpdihuZXcgQk4oMTAwMDApKTtcblxuICBjb25zdCBzcG90UHJpY2VCZWZvcmUgPSBjYWxjdWxhdGVTcG90UHJpY2UocmVzZXJ2ZUluLCByZXNlcnZlT3V0LCBkZWNpbWFsc0luLCBkZWNpbWFsc091dCk7XG4gIGNvbnN0IG5ld1Jlc2VydmVJbiA9IHJlc2VydmVJbi5hZGQoaW5wdXQpO1xuICBjb25zdCBuZXdSZXNlcnZlT3V0ID0gcmVzZXJ2ZU91dC5zdWIob3V0cHV0QW1vdW50KTtcbiAgY29uc3Qgc3BvdFByaWNlQWZ0ZXIgPSBjYWxjdWxhdGVTcG90UHJpY2UobmV3UmVzZXJ2ZUluLCBuZXdSZXNlcnZlT3V0LCBkZWNpbWFsc0luLCBkZWNpbWFsc091dCk7XG5cbiAgY29uc3QgcHJpY2VJbXBhY3QgPSBjYWxjdWxhdGVQcmljZUltcGFjdChpbnB1dCwgb3V0cHV0QW1vdW50LCByZXNlcnZlSW4sIHJlc2VydmVPdXQsIGRlY2ltYWxzSW4sIGRlY2ltYWxzT3V0KTtcblxuICByZXR1cm4ge1xuICAgIGlucHV0QW1vdW50OiBpbnB1dCxcbiAgICBvdXRwdXRBbW91bnQsXG4gICAgbWluT3V0cHV0QW1vdW50LFxuICAgIGZlZUFtb3VudCxcbiAgICBwcmljZUltcGFjdCxcbiAgICBzcG90UHJpY2VCZWZvcmUsXG4gICAgc3BvdFByaWNlQWZ0ZXIsXG4gIH07XG59XG5cbi8qIFRXQVAgVXRpbGl0aWVzICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVUd2FwKG9yYWNsZTogVHdhcE9yYWNsZSk6IEJOIHwgbnVsbCB7XG4gIGNvbnN0IHdhcm11cEVuZCA9IG9yYWNsZS5jcmVhdGVkQXRVbml4VGltZS5hZGQobmV3IEJOKG9yYWNsZS53YXJtdXBEdXJhdGlvbikpO1xuXG4gIGlmIChvcmFjbGUubGFzdFVwZGF0ZVVuaXhUaW1lLmx0ZSh3YXJtdXBFbmQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBlbGFwc2VkID0gb3JhY2xlLmxhc3RVcGRhdGVVbml4VGltZS5zdWIod2FybXVwRW5kKTtcblxuICBpZiAoZWxhcHNlZC5pc1plcm8oKSB8fCBvcmFjbGUuY3VtdWxhdGl2ZU9ic2VydmF0aW9ucy5pc1plcm8oKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG9yYWNsZS5jdW11bGF0aXZlT2JzZXJ2YXRpb25zLmRpdihlbGFwc2VkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzT3JhY2xlSW5XYXJtdXAob3JhY2xlOiBUd2FwT3JhY2xlLCBjdXJyZW50VGltZT86IEJOKTogYm9vbGVhbiB7XG4gIGNvbnN0IG5vdyA9IGN1cnJlbnRUaW1lID8/IG5ldyBCTihNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSk7XG4gIGNvbnN0IHdhcm11cEVuZCA9IG9yYWNsZS5jcmVhdGVkQXRVbml4VGltZS5hZGQobmV3IEJOKG9yYWNsZS53YXJtdXBEdXJhdGlvbikpO1xuICByZXR1cm4gbm93Lmx0KHdhcm11cEVuZCk7XG59XG4iXX0=
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYW1tL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7O0FBU0gsc0NBVUM7QUFFRCw0Q0FTQztBQUVELDhDQVFDO0FBSUQsd0NBSUM7QUFJRCw0Q0FLQztBQU1ELGdEQWlCQztBQVFELDhDQXFDQztBQVFELDRDQThDQztBQUVELG9EQW1CQztBQUVELDBDQWlDQztBQUlELHNDQWNDO0FBRUQsNENBSUM7QUFqUUQsOENBQWdEO0FBQ2hELDZDQUE0QztBQUM1QywyQ0FBK0Y7QUFDL0YsbUNBQTZFO0FBRTdFLG9CQUFvQjtBQUVwQixTQUFnQixhQUFhLENBQzNCLEtBQWdCLEVBQ2hCLEtBQWdCLEVBQ2hCLEtBQWdCLEVBQ2hCLFlBQXVCLHNCQUFVO0lBRWpDLE9BQU8sbUJBQVMsQ0FBQyxzQkFBc0IsQ0FDckMsQ0FBQyxxQkFBUyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQ2pFLFNBQVMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUM5QixJQUFlLEVBQ2YsSUFBZSxFQUNmLFlBQXVCLHNCQUFVO0lBRWpDLE9BQU8sbUJBQVMsQ0FBQyxzQkFBc0IsQ0FDckMsQ0FBQyx3QkFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFDaEQsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQy9CLElBQWUsRUFDZixZQUF1QixzQkFBVTtJQUVqQyxPQUFPLG1CQUFTLENBQUMsc0JBQXNCLENBQ3JDLENBQUMsMEJBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFDakMsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDO0FBRUQsYUFB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QUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHRoZSBBTU0gcHJvZ3JhbS5cbiAqIFBEQSBkZXJpdmF0aW9uLCBzdGF0ZSBwYXJzaW5nLCBwcmljZSBjYWxjdWxhdGlvbnMsIGFuZCBhY2NvdW50IGZldGNoaW5nLlxuICovXG5cbmltcG9ydCB7IFByb2dyYW0sIEJOIH0gZnJvbSBcIkBjb3JhbC14eXovYW5jaG9yXCI7XG5pbXBvcnQgeyBQdWJsaWNLZXkgfSBmcm9tIFwiQHNvbGFuYS93ZWIzLmpzXCI7XG5pbXBvcnQgeyBQT09MX1NFRUQsIFJFU0VSVkVfU0VFRCwgRkVFX1ZBVUxUX1NFRUQsIFBST0dSQU1fSUQsIFBSSUNFX1NDQUxFIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBBbW0sIFBvb2xTdGF0ZSwgUG9vbEFjY291bnQsIFR3YXBPcmFjbGUsIFN3YXBRdW90ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qIFBEQSBEZXJpdmF0aW9uICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVQb29sUERBKFxuICBhZG1pbjogUHVibGljS2V5LFxuICBtaW50QTogUHVibGljS2V5LFxuICBtaW50QjogUHVibGljS2V5LFxuICBwcm9ncmFtSWQ6IFB1YmxpY0tleSA9IFBST0dSQU1fSURcbik6IFtQdWJsaWNLZXksIG51bWJlcl0ge1xuICByZXR1cm4gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgW1BPT0xfU0VFRCwgYWRtaW4udG9CdWZmZXIoKSwgbWludEEudG9CdWZmZXIoKSwgbWludEIudG9CdWZmZXIoKV0sXG4gICAgcHJvZ3JhbUlkXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVSZXNlcnZlUERBKFxuICBwb29sOiBQdWJsaWNLZXksXG4gIG1pbnQ6IFB1YmxpY0tleSxcbiAgcHJvZ3JhbUlkOiBQdWJsaWNLZXkgPSBQUk9HUkFNX0lEXG4pOiBbUHVibGljS2V5LCBudW1iZXJdIHtcbiAgcmV0dXJuIFB1YmxpY0tleS5maW5kUHJvZ3JhbUFkZHJlc3NTeW5jKFxuICAgIFtSRVNFUlZFX1NFRUQsIHBvb2wudG9CdWZmZXIoKSwgbWludC50b0J1ZmZlcigpXSxcbiAgICBwcm9ncmFtSWRcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUZlZVZhdWx0UERBKFxuICBwb29sOiBQdWJsaWNLZXksXG4gIHByb2dyYW1JZDogUHVibGljS2V5ID0gUFJPR1JBTV9JRFxuKTogW1B1YmxpY0tleSwgbnVtYmVyXSB7XG4gIHJldHVybiBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICBbRkVFX1ZBVUxUX1NFRUQsIHBvb2wudG9CdWZmZXIoKV0sXG4gICAgcHJvZ3JhbUlkXG4gICk7XG59XG5cbi8qIFBhcnNlcnMgKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUG9vbFN0YXRlKHN0YXRlOiBhbnkpOiBQb29sU3RhdGUge1xuICBpZiAoXCJ0cmFkaW5nXCIgaW4gc3RhdGUpIHJldHVybiBQb29sU3RhdGUuVHJhZGluZztcbiAgaWYgKFwiZmluYWxpemVkXCIgaW4gc3RhdGUpIHJldHVybiBQb29sU3RhdGUuRmluYWxpemVkO1xuICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHBvb2wgc3RhdGVcIik7XG59XG5cbi8qIEZldGNoICovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFBvb2xBY2NvdW50KFxuICBwcm9ncmFtOiBQcm9ncmFtPEFtbT4sXG4gIHBvb2xQZGE6IFB1YmxpY0tleVxuKTogUHJvbWlzZTxQb29sQWNjb3VudD4ge1xuICByZXR1cm4gcHJvZ3JhbS5hY2NvdW50LnBvb2xBY2NvdW50LmZldGNoKHBvb2xQZGEpO1xufVxuXG4vKiBNYXRoIFV0aWxpdGllcyAqL1xuXG5jb25zdCBQUklDRV9TQ0FMRV9CTiA9IG5ldyBCTihQUklDRV9TQ0FMRS50b1N0cmluZygpKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVNwb3RQcmljZShcbiAgcmVzZXJ2ZUE6IEJOLFxuICByZXNlcnZlQjogQk4sXG4gIGRlY2ltYWxzQTogbnVtYmVyLFxuICBkZWNpbWFsc0I6IG51bWJlcixcbik6IEJOIHtcbiAgaWYgKHJlc2VydmVCLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDApO1xuXG4gIGNvbnN0IGRlY2ltYWxEaWZmID0gZGVjaW1hbHNCIC0gZGVjaW1hbHNBO1xuXG4gIGlmIChkZWNpbWFsRGlmZiA+PSAwKSB7XG4gICAgY29uc3QgbXVsdGlwbGllciA9IG5ldyBCTigxMCkucG93KG5ldyBCTihkZWNpbWFsRGlmZikpO1xuICAgIHJldHVybiByZXNlcnZlQS5tdWwobXVsdGlwbGllcikubXVsKFBSSUNFX1NDQUxFX0JOKS5kaXYocmVzZXJ2ZUIpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRpdmlzb3IgPSBuZXcgQk4oMTApLnBvdyhuZXcgQk4oLWRlY2ltYWxEaWZmKSk7XG4gICAgcmV0dXJuIHJlc2VydmVBLm11bChQUklDRV9TQ0FMRV9CTikuZGl2KHJlc2VydmVCKS5kaXYoZGl2aXNvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21wdXRlIHN3YXAgb3V0cHV0IHVzaW5nIGNvbnN0YW50IHByb2R1Y3QgZm9ybXVsYS5cbiAqIEZlZSBpcyBBTFdBWVMgY29sbGVjdGVkIGluIHRva2VuIEE6XG4gKiAtIEEgLT4gQjogZmVlIG9uIGlucHV0IChiZWZvcmUgc3dhcClcbiAqIC0gQiAtPiBBOiBmZWUgb24gb3V0cHV0IChhZnRlciBzd2FwKVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVN3YXBPdXRwdXQoXG4gIGlucHV0QW1vdW50OiBCTiB8IG51bWJlcixcbiAgcmVzZXJ2ZUluOiBCTixcbiAgcmVzZXJ2ZU91dDogQk4sXG4gIGZlZUJwczogbnVtYmVyLFxuICBzd2FwQVRvQjogYm9vbGVhblxuKTogeyBvdXRwdXRBbW91bnQ6IEJOOyBmZWVBbW91bnQ6IEJOIH0ge1xuICBjb25zdCBpbnB1dCA9IHR5cGVvZiBpbnB1dEFtb3VudCA9PT0gXCJudW1iZXJcIiA/IG5ldyBCTihpbnB1dEFtb3VudCkgOiBpbnB1dEFtb3VudDtcblxuICBpZiAocmVzZXJ2ZUluLmlzWmVybygpIHx8IHJlc2VydmVPdXQuaXNaZXJvKCkpIHtcbiAgICByZXR1cm4geyBvdXRwdXRBbW91bnQ6IG5ldyBCTigwKSwgZmVlQW1vdW50OiBuZXcgQk4oMCkgfTtcbiAgfVxuXG4gIGlmIChzd2FwQVRvQikge1xuICAgIC8vIEEgLT4gQjogZmVlIG9uIGlucHV0ICh0b2tlbiBBKVxuICAgIGNvbnN0IGZlZUFtb3VudCA9IGlucHV0Lm11bChuZXcgQk4oZmVlQnBzKSkuZGl2KG5ldyBCTigxMDAwMCkpO1xuICAgIGNvbnN0IGlucHV0QWZ0ZXJGZWUgPSBpbnB1dC5zdWIoZmVlQW1vdW50KTtcblxuICAgIC8vIENvbnN0YW50IHByb2R1Y3Q6IG91dHB1dCA9IHJlc2VydmVPdXQgKiBpbnB1dEFmdGVyRmVlIC8gKHJlc2VydmVJbiArIGlucHV0QWZ0ZXJGZWUpXG4gICAgY29uc3QgbnVtZXJhdG9yID0gcmVzZXJ2ZU91dC5tdWwoaW5wdXRBZnRlckZlZSk7XG4gICAgY29uc3QgZGVub21pbmF0b3IgPSByZXNlcnZlSW4uYWRkKGlucHV0QWZ0ZXJGZWUpO1xuICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IG51bWVyYXRvci5kaXYoZGVub21pbmF0b3IpO1xuXG4gICAgcmV0dXJuIHsgb3V0cHV0QW1vdW50LCBmZWVBbW91bnQgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBCIC0+IEE6IGZlZSBvbiBvdXRwdXQgKHRva2VuIEEpXG4gICAgLy8gRmlyc3QgY29tcHV0ZSBncm9zcyBvdXRwdXQgd2l0aG91dCBmZWVcbiAgICBjb25zdCBudW1lcmF0b3IgPSByZXNlcnZlT3V0Lm11bChpbnB1dCk7XG4gICAgY29uc3QgZGVub21pbmF0b3IgPSByZXNlcnZlSW4uYWRkKGlucHV0KTtcbiAgICBjb25zdCBncm9zc091dHB1dCA9IG51bWVyYXRvci5kaXYoZGVub21pbmF0b3IpO1xuXG4gICAgLy8gVGhlbiBkZWR1Y3QgZmVlIGZyb20gb3V0cHV0XG4gICAgY29uc3QgZmVlQW1vdW50ID0gZ3Jvc3NPdXRwdXQubXVsKG5ldyBCTihmZWVCcHMpKS5kaXYobmV3IEJOKDEwMDAwKSk7XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gZ3Jvc3NPdXRwdXQuc3ViKGZlZUFtb3VudCk7XG5cbiAgICByZXR1cm4geyBvdXRwdXRBbW91bnQsIGZlZUFtb3VudCB9O1xuICB9XG59XG5cbi8qKlxuICogQ29tcHV0ZSBzd2FwIGlucHV0IG5lZWRlZCB0byBnZXQgYSBzcGVjaWZpYyBvdXRwdXQuXG4gKiBGZWUgaXMgQUxXQVlTIGNvbGxlY3RlZCBpbiB0b2tlbiBBOlxuICogLSBBIC0+IEI6IGZlZSBvbiBpbnB1dFxuICogLSBCIC0+IEE6IGZlZSBvbiBvdXRwdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVTd2FwSW5wdXQoXG4gIG91dHB1dEFtb3VudDogQk4gfCBudW1iZXIsXG4gIHJlc2VydmVJbjogQk4sXG4gIHJlc2VydmVPdXQ6IEJOLFxuICBmZWVCcHM6IG51bWJlcixcbiAgc3dhcEFUb0I6IGJvb2xlYW5cbik6IHsgaW5wdXRBbW91bnQ6IEJOOyBmZWVBbW91bnQ6IEJOIH0ge1xuICBjb25zdCBvdXRwdXQgPSB0eXBlb2Ygb3V0cHV0QW1vdW50ID09PSBcIm51bWJlclwiID8gbmV3IEJOKG91dHB1dEFtb3VudCkgOiBvdXRwdXRBbW91bnQ7XG5cbiAgaWYgKHJlc2VydmVJbi5pc1plcm8oKSB8fCByZXNlcnZlT3V0LmlzWmVybygpIHx8IG91dHB1dC5ndGUocmVzZXJ2ZU91dCkpIHtcbiAgICByZXR1cm4geyBpbnB1dEFtb3VudDogbmV3IEJOKDApLCBmZWVBbW91bnQ6IG5ldyBCTigwKSB9O1xuICB9XG5cbiAgaWYgKHN3YXBBVG9CKSB7XG4gICAgLy8gQSAtPiBCOiBmZWUgb24gaW5wdXRcbiAgICAvLyBXZSBuZWVkOiBvdXRwdXQgPSAocmVzZXJ2ZU91dCAqIGlucHV0QWZ0ZXJGZWUpIC8gKHJlc2VydmVJbiArIGlucHV0QWZ0ZXJGZWUpXG4gICAgLy8gU29sdmUgZm9yIGlucHV0QWZ0ZXJGZWU6IGlucHV0QWZ0ZXJGZWUgPSAocmVzZXJ2ZUluICogb3V0cHV0KSAvIChyZXNlcnZlT3V0IC0gb3V0cHV0KVxuICAgIGNvbnN0IG51bWVyYXRvciA9IHJlc2VydmVJbi5tdWwob3V0cHV0KTtcbiAgICBjb25zdCBkZW5vbWluYXRvciA9IHJlc2VydmVPdXQuc3ViKG91dHB1dCk7XG4gICAgY29uc3QgaW5wdXRBZnRlckZlZSA9IG51bWVyYXRvci5kaXYoZGVub21pbmF0b3IpLmFkZChuZXcgQk4oMSkpOyAvLyBSb3VuZCB1cFxuXG4gICAgLy8gaW5wdXRBbW91bnQgPSBpbnB1dEFmdGVyRmVlICogMTAwMDAgLyAoMTAwMDAgLSBmZWVCcHMpXG4gICAgY29uc3QgaW5wdXRBbW91bnQgPSBpbnB1dEFmdGVyRmVlLm11bChuZXcgQk4oMTAwMDApKS5kaXYobmV3IEJOKDEwMDAwIC0gZmVlQnBzKSkuYWRkKG5ldyBCTigxKSk7XG4gICAgY29uc3QgZmVlQW1vdW50ID0gaW5wdXRBbW91bnQuc3ViKGlucHV0QWZ0ZXJGZWUpO1xuXG4gICAgcmV0dXJuIHsgaW5wdXRBbW91bnQsIGZlZUFtb3VudCB9O1xuICB9IGVsc2Uge1xuICAgIC8vIEIgLT4gQTogZmVlIG9uIG91dHB1dFxuICAgIC8vIFVzZXIgd2FudHMgYG91dHB1dGAgYWZ0ZXIgZmVlLCBzbyBncm9zc091dHB1dCA9IG91dHB1dCAqIDEwMDAwIC8gKDEwMDAwIC0gZmVlQnBzKVxuICAgIGNvbnN0IGdyb3NzT3V0cHV0ID0gb3V0cHV0Lm11bChuZXcgQk4oMTAwMDApKS5kaXYobmV3IEJOKDEwMDAwIC0gZmVlQnBzKSkuYWRkKG5ldyBCTigxKSk7XG4gICAgY29uc3QgZmVlQW1vdW50ID0gZ3Jvc3NPdXRwdXQuc3ViKG91dHB1dCk7XG5cbiAgICAvLyBOb3cgY29tcHV0ZSBpbnB1dCBuZWVkZWQgZm9yIGdyb3NzT3V0cHV0XG4gICAgLy8gZ3Jvc3NPdXRwdXQgPSAocmVzZXJ2ZU91dCAqIGlucHV0KSAvIChyZXNlcnZlSW4gKyBpbnB1dClcbiAgICAvLyBpbnB1dCA9IChyZXNlcnZlSW4gKiBncm9zc091dHB1dCkgLyAocmVzZXJ2ZU91dCAtIGdyb3NzT3V0cHV0KVxuICAgIGNvbnN0IG51bWVyYXRvciA9IHJlc2VydmVJbi5tdWwoZ3Jvc3NPdXRwdXQpO1xuICAgIGNvbnN0IGRlbm9taW5hdG9yID0gcmVzZXJ2ZU91dC5zdWIoZ3Jvc3NPdXRwdXQpO1xuXG4gICAgaWYgKGRlbm9taW5hdG9yLmx0ZShuZXcgQk4oMCkpKSB7XG4gICAgICByZXR1cm4geyBpbnB1dEFtb3VudDogbmV3IEJOKDApLCBmZWVBbW91bnQ6IG5ldyBCTigwKSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0QW1vdW50ID0gbnVtZXJhdG9yLmRpdihkZW5vbWluYXRvcikuYWRkKG5ldyBCTigxKSk7IC8vIFJvdW5kIHVwXG5cbiAgICByZXR1cm4geyBpbnB1dEFtb3VudCwgZmVlQW1vdW50IH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVByaWNlSW1wYWN0KFxuICBpbnB1dEFtb3VudDogQk4sXG4gIG91dHB1dEFtb3VudDogQk4sXG4gIHJlc2VydmVJbjogQk4sXG4gIHJlc2VydmVPdXQ6IEJOLFxuICBkZWNpbWFsc0luOiBudW1iZXIsXG4gIGRlY2ltYWxzT3V0OiBudW1iZXIsXG4pOiBudW1iZXIge1xuICBpZiAocmVzZXJ2ZUluLmlzWmVybygpIHx8IHJlc2VydmVPdXQuaXNaZXJvKCkgfHwgaW5wdXRBbW91bnQuaXNaZXJvKCkpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGNvbnN0IHNwb3RQcmljZSA9IGNhbGN1bGF0ZVNwb3RQcmljZShyZXNlcnZlSW4sIHJlc2VydmVPdXQsIGRlY2ltYWxzSW4sIGRlY2ltYWxzT3V0KTtcbiAgY29uc3QgZXhlY3V0aW9uUHJpY2UgPSBjYWxjdWxhdGVTcG90UHJpY2UoaW5wdXRBbW91bnQsIG91dHB1dEFtb3VudCwgZGVjaW1hbHNJbiwgZGVjaW1hbHNPdXQpO1xuXG4gIGlmIChzcG90UHJpY2UuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gIGNvbnN0IGltcGFjdCA9IGV4ZWN1dGlvblByaWNlLnN1YihzcG90UHJpY2UpLm11bChuZXcgQk4oMTAwMDApKS5kaXYoc3BvdFByaWNlKTtcbiAgcmV0dXJuIE1hdGguYWJzKGltcGFjdC50b051bWJlcigpKSAvIDEwMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN3YXBRdW90ZShcbiAgaW5wdXRBbW91bnQ6IEJOIHwgbnVtYmVyLFxuICByZXNlcnZlSW46IEJOLFxuICByZXNlcnZlT3V0OiBCTixcbiAgZmVlQnBzOiBudW1iZXIsXG4gIGRlY2ltYWxzSW46IG51bWJlcixcbiAgZGVjaW1hbHNPdXQ6IG51bWJlcixcbiAgc3dhcEFUb0I6IGJvb2xlYW4sXG4gIHNsaXBwYWdlUGVyY2VudDogbnVtYmVyID0gMC41LFxuKTogU3dhcFF1b3RlIHtcbiAgY29uc3QgaW5wdXQgPSB0eXBlb2YgaW5wdXRBbW91bnQgPT09IFwibnVtYmVyXCIgPyBuZXcgQk4oaW5wdXRBbW91bnQpIDogaW5wdXRBbW91bnQ7XG5cbiAgY29uc3QgeyBvdXRwdXRBbW91bnQsIGZlZUFtb3VudCB9ID0gY29tcHV0ZVN3YXBPdXRwdXQoaW5wdXQsIHJlc2VydmVJbiwgcmVzZXJ2ZU91dCwgZmVlQnBzLCBzd2FwQVRvQik7XG5cbiAgY29uc3Qgc2xpcHBhZ2VCcHMgPSBNYXRoLmZsb29yKHNsaXBwYWdlUGVyY2VudCAqIDEwMCk7XG4gIGNvbnN0IG1pbk91dHB1dEFtb3VudCA9IG91dHB1dEFtb3VudC5tdWwobmV3IEJOKDEwMDAwIC0gc2xpcHBhZ2VCcHMpKS5kaXYobmV3IEJOKDEwMDAwKSk7XG5cbiAgY29uc3Qgc3BvdFByaWNlQmVmb3JlID0gY2FsY3VsYXRlU3BvdFByaWNlKHJlc2VydmVJbiwgcmVzZXJ2ZU91dCwgZGVjaW1hbHNJbiwgZGVjaW1hbHNPdXQpO1xuICBjb25zdCBuZXdSZXNlcnZlSW4gPSByZXNlcnZlSW4uYWRkKGlucHV0KTtcbiAgY29uc3QgbmV3UmVzZXJ2ZU91dCA9IHJlc2VydmVPdXQuc3ViKG91dHB1dEFtb3VudCk7XG4gIGNvbnN0IHNwb3RQcmljZUFmdGVyID0gY2FsY3VsYXRlU3BvdFByaWNlKG5ld1Jlc2VydmVJbiwgbmV3UmVzZXJ2ZU91dCwgZGVjaW1hbHNJbiwgZGVjaW1hbHNPdXQpO1xuXG4gIGNvbnN0IHByaWNlSW1wYWN0ID0gY2FsY3VsYXRlUHJpY2VJbXBhY3QoaW5wdXQsIG91dHB1dEFtb3VudCwgcmVzZXJ2ZUluLCByZXNlcnZlT3V0LCBkZWNpbWFsc0luLCBkZWNpbWFsc091dCk7XG5cbiAgcmV0dXJuIHtcbiAgICBpbnB1dEFtb3VudDogaW5wdXQsXG4gICAgb3V0cHV0QW1vdW50LFxuICAgIG1pbk91dHB1dEFtb3VudCxcbiAgICBmZWVBbW91bnQsXG4gICAgcHJpY2VJbXBhY3QsXG4gICAgc3BvdFByaWNlQmVmb3JlLFxuICAgIHNwb3RQcmljZUFmdGVyLFxuICB9O1xufVxuXG4vKiBUV0FQIFV0aWxpdGllcyAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlVHdhcChvcmFjbGU6IFR3YXBPcmFjbGUpOiBCTiB8IG51bGwge1xuICBjb25zdCB3YXJtdXBFbmQgPSBvcmFjbGUuY3JlYXRlZEF0VW5peFRpbWUuYWRkKG5ldyBCTihvcmFjbGUud2FybXVwRHVyYXRpb24pKTtcblxuICBpZiAob3JhY2xlLmxhc3RVcGRhdGVVbml4VGltZS5sdGUod2FybXVwRW5kKSkge1xuICAgIHJldHVybiBvcmFjbGUuc3RhcnRpbmdPYnNlcnZhdGlvbjtcbiAgfVxuXG4gIGNvbnN0IGVsYXBzZWQgPSBvcmFjbGUubGFzdFVwZGF0ZVVuaXhUaW1lLnN1Yih3YXJtdXBFbmQpO1xuXG4gIGlmIChlbGFwc2VkLmlzWmVybygpIHx8IG9yYWNsZS5jdW11bGF0aXZlT2JzZXJ2YXRpb25zLmlzWmVybygpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gb3JhY2xlLmN1bXVsYXRpdmVPYnNlcnZhdGlvbnMuZGl2KGVsYXBzZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPcmFjbGVJbldhcm11cChvcmFjbGU6IFR3YXBPcmFjbGUsIGN1cnJlbnRUaW1lPzogQk4pOiBib29sZWFuIHtcbiAgY29uc3Qgbm93ID0gY3VycmVudFRpbWUgPz8gbmV3IEJOKE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApKTtcbiAgY29uc3Qgd2FybXVwRW5kID0gb3JhY2xlLmNyZWF0ZWRBdFVuaXhUaW1lLmFkZChuZXcgQk4ob3JhY2xlLndhcm11cER1cmF0aW9uKSk7XG4gIHJldHVybiBub3cubHQod2FybXVwRW5kKTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zcomb/programs-sdk",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "SDK for ZCombinator Programs",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/amm/utils.ts CHANGED
@@ -244,7 +244,7 @@ export function calculateTwap(oracle: TwapOracle): BN | null {
244
244
  const warmupEnd = oracle.createdAtUnixTime.add(new BN(oracle.warmupDuration));
245
245
 
246
246
  if (oracle.lastUpdateUnixTime.lte(warmupEnd)) {
247
- return null;
247
+ return oracle.startingObservation;
248
248
  }
249
249
 
250
250
  const elapsed = oracle.lastUpdateUnixTime.sub(warmupEnd);