text: import { operate } from '../util/lift';
  import { OperatorSubscriber } from './OperatorSubscriber';
  export function sequenceEqual(compareTo, comparator) {
      if (comparator === void 0) { comparator = function (a, b) { return a === b; }; }
      return operate(function (source, subscriber) {
          var aState = createState();
          var bState = createState();
          var emit = function (isEqual) {
              subscriber.next(isEqual);
              subscriber.complete();
          };
          var createSubscriber = function (selfState, otherState) {
              var sequenceEqualSubscriber = new OperatorSubscriber(subscriber, function (a) {
                  var buffer = otherState.buffer, complete = otherState.complete;
                  if (buffer.length === 0) {
                      complete ? emit(false) : selfState.buffer.push(a);
                  }
                  else {
                      !comparator(a, buffer.shift()) && emit(false);
                  }
              }, function () {
                  selfState.complete = true;
                  var complete = otherState.complete, buffer = otherState.buffer;
                  complete && emit(buffer.length === 0);
                  sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe();
              });
              return sequenceEqualSubscriber;
          };
          source.subscribe(createSubscriber(aState, bState));
          compareTo.subscribe(createSubscriber(bState, aState));
      });
  }
  function createState() {
      return {
          buffer: [],
          complete: false,
      };
  }
  //# sourceMappingURL=sequenceEqual.js.map